MongoDB学习引入

NoSQL - 图1
MongoDB生态

NoSQL - 图2

什么是NoSQL?

NoSQL是一种非关系型DMS,不需要固定的架构,可以避免joins链接,并且易于扩展。NoSQL数据库用于具有庞大数据存储需求的分布式数据存储。NoSQL用于大数据和实时Web应用程序。例如,像Twitter,Facebook,Google这样的大型公司,每天可能产生TB级的用户数据。
NoSQL数据库代表“不仅仅是SQL”或“不是SQL”。虽然NoRELNoSQL会是一个更好的名词。Carl Strozz在1998年引入了NoSQL概念。
传统的RDBMS使用SQL语法来存储和查询数据。相反,NoSQL数据库系统包含可存储结构化,半结构化,非结构化和多态数据的多种数据库技术
NoSQL - 图3

为什么使用NoSQL?

NoSQL数据库的概念在处理大量数据的互联网巨头(例如Google,Facebook,Amazon等)中变得很流行。使用RDBMS处理海量数据时,系统响应时间变慢。
为了解决此问题,当然可以通过升级现有硬件来“横向扩展”我们的系统。但这个成本很高
这个问题的替代方案是在负载增加时将数据库负载分配到多个主机上。这种方法称为“横向扩展”
NoSQL - 图4
NoSQL数据库是非关系数据库,因此在设计时考虑到Web应用程序,比关系数据库更好地扩展。

NoSQL的功能

  • 非关系
    • NoSQL数据库从不遵循关系模型
    • 切勿为tables 提供固定的固定列记录
    • 使用自包含的聚合或BLOB
    • 不需要对象关系映射和数据规范化
    • 没有复杂的功能,例如查询语言,查询计划者,
    • 参照完整性联接,ACID
  • 动态架构
    • NoSQL数据库是无模式的或具有宽松模式的数据库
    • 不需要对数据架构进行任何形式的定义
    • 提供同一域中的异构数据结构

NoSQL - 图5

  • 简单的API
    • 提供易于使用的界面,用于存储和查询提供的数据
    • API允许进行低级数据操作和选择方法
    • 基于文本的协议,通常与带有JSON的HTTP REST一起使用
    • 多数不使用基于标准的查询语言
    • 支持Web的数据库作为面向互联网的服务运行
  • 分布式
    • 可以以分布式方式执行多个NoSQL数据库
    • 提供自动缩放和故障转移功能
    • 通常可牺牲ACID概念来实现可伸缩性和吞吐量
    • 分布式节点之间几乎没有同步复制,多为异步多主复制,对等,HDFS复制
    • 仅提供最终的一致性
    • 无共享架构。这样可以减少协调并提高分布。

NoSQL - 图6