1
NoSQL是一种非关系型DMS,不需要固定的架构,可以避免joins链接,并且易于扩展。NoSQL数据库用于具有庞大数据存储需求的分布式数据存储。NoSQL用于大数据和实时Web应用程序。例如,像Twitter,Facebook,Google这样的大型公司,每天可能产生TB级的用户数据。
NoSQL数据库代表“不仅仅是SQL”或“不是SQL”。虽然NoRELNoSQL会是一个更好的名词。Carl Strozz在1998年引入了NoSQL概念。
传统的RDBMS使用SQL语法来存储和查询数据。相反,NoSQL数据库系统包含可存储结构化,半结构化,非结构化和多态数据的多种数据库技术。
通过本节教程,我们将学习如下内容——
2
每个数据库都包含集合,而集合又包含文档。每个文档可以有不同的字段数。每个文档的大小和内容可以彼此不同。
文档结构更符合开发人员如何用各自的编程语言构造类和对象。开发人员通常会说,他们的类不是行和列,而是有一个带有键值对的清晰结构。
正如NoSQL数据库简介中所看到的,行(或MongoDB中调用的文档)不需要预先定义模式。相反,可以动态创建字段。
NoSQL数据库是非关系数据库,因此在设计时考虑到Web应用程序,比关系数据库更好地扩展。
3
4
非关系
参照完整性联接,ACID
动态架构
简单的API
分布式
NoSQL不共享
5
下面是为什么应该开始使用MongoDB的几个原因
NoSQL数据库主要有四类。这些类别中的每一个都有其独特的属性和局限性。没有特定的数据库可以更好地解决所有问题。您应该根据您的产品需求选择一个数据库。
让我们看看所有这些:
数据存储在键/值对中。它以这种方式设计,可以处理大量数据和繁重的工作。
键值对存储数据库将数据存储为哈希表,其中每个键都是唯一的,并且值可以是JSON,BLOB(二进制大对象),字符串等。
例如,键值对可能包含与“Guru99”的值,相关联到包含“Website”的键。
它是NoSQL数据库的最基本类型之一。这种NoSQL数据库用作集合,dictionaries,关联数组等。键值存储可帮助开发人员存储较少架构的数据。它们最适合购物车中的物品。
Redis,Dynamo,Riak是键值存储数据库的一些示例。它们全部基于亚马逊的Dynamo论文
面向列的数据库在列上工作,基于Google的BigTable论文。每列都单独处理。单列数据库的值连续存储。
在聚合查询(例如SUM,COUNT,AVG,MIN等)上提供了高性能,因为数据在列中随时可用。
基于列的NoSQL数据库被广泛用于管理数据仓库,商业智能,CRM,图书馆书籍目录,
Base,Cassandra,HBase,Hypertable是基于列的数据库。
面向文档的NoSQL DB将数据存储和检索为键值对,但值部分存储为文档。该文档以JSON或XML格式存储。DB可以理解该值,并且可以查询该值。
在上图中的左侧,我们溃疡看到有行和列,而在右侧,我们有一个文档数据库,该数据库的结构与JSON类似。现在,对于关系数据库,必须知道拥有哪些列,依此类推。但是,对于文档数据库,具有JSON对象之类的数据存储。我们不需要定义,以便使其灵活。
文档类型主要用于CMS系统,博客平台,实时分析和电子商务应用程序。它不应用于需要多种操作或针对不同聚合结构进行查询的复杂交易。
Amazon SimpleDB,CouchDB,MongoDB,Riak,Lotus Notes,MongoDB是流行的基于文档的DBMS系统。
图类型数据库存储实体以及这些实体之间的关系。实体存储为节点,关系作为边。一条边给出了节点之间的关系。每个节点和边缘都有唯一的标识符。
与关系数据库中表的松散连接相比,Graph数据库本质上是多关系的。遍历关系很快,因为它们已被存在于数据库中,因此无需计算它们。
基于图形数据库主要用于社交网络,物流,空间数据。
Neo4J, Infinite Graph, OrientDB, FlockDB是一些比较流行的基于图形的数据库。
6
NoSQL的查询机制工具
最常见的数据检索机制是基于REST 的值检索,该值基于其key/ID,获取数据。
文档存储数据库提供了更困难的查询,因为他们了解键值对中的值。例如,CouchDB允许使用MapReduce定义视图。
7
CAP定理也称为Brewer定理。它指出,分布式数据存储不可能同时满足CAP,只能满足CAP其中的两部分。
1. 一致性
2. 可用性
3. 分区容错性
一致性:
即在执行操作之后,数据也应保持一致。这意味着一旦写入数据,以后的任何读取请求都应包含该数据。例如,更新订单状态后,所有客户端都应该能够看到相同的数据。
可用性:
该数据库应始终可用且响应迅速。它不应有任何宕机时间。
分区容限:
分区容限意味着即使服务器之间的通信不稳定,系统也应继续运行。例如,可以将服务器划分为可能无法相互通信的多个组。在此,如果数据库的一部分不可用,则其他部分始终不受影响。
8
“最终一致性”是指在多台计算机上具有数据副本,以获得高可用性和可伸缩性。因此,必须将在一台计算机上对任何数据项所做的更改复制到其他副本。
数据复制可能不是瞬时的,因为某些副本将在适当的时间范围内立即更新,而另一些副本将在一段时间内更新。这些副本可能是相互的,但随着时间的推移,它们将变得一致。所以,称为最终保持一致。
BASE: Basically Available, Soft state, Eventual consistency
9
10
11 摘要
译者
徐杨