《NoSQL精粹》各章要点

来源:互联网 发布:网达软件 编辑:程序博客网 时间:2024/05/02 00:33

第一章 为什么使用NoSQL

1、关系型数据库二十多年来一直很成功,它能够持久保存数据,控制并发访问,同时也提供了一套集成机制。

2、由于关系模型与内存中的数据结构不匹配,所以应用程序开发人员一直为这种阻抗失谐问题所困扰。

3、数据库领域的迁移趋势:原来,各个应用程序都把同一份数据库当成共用的集成点(integration point),而现在,各个应用程序都会封装自己的数据库,并通过服务彼此集成。

4、促使数据存储方式发生变化的重要原因是:需要在集群上运行大量数据,而关系型数据库不能在集群中高效运行。

5、NoSQL是偶然出现的新名词。它没有规范的定义,我们只能描述此类数据库所共用的特征。

6、各种NoSQL数据库的共同特性是:

(1)不使用关系模型

(2)在集群中运行良好

(3)开源

(4)适用于21世纪的互联网公司

(5)无模式

7、NoSQL崛起所产生的重要影响就是混合持久化

 第二章 聚合数据模型

1、聚合是作为交互单元的数据集合。数据库中的ACID操作以聚合为界。

2、键值数据库、文档数据库、列族数据库都属于面向聚合的数据库

3、聚合使数据库在集群上管理数据存储更为方便

4、如果数据交互大多在同一聚合内执行,则应使用面向聚合的数据库;若交互操作需要使用多种不同格式的数据,那么最好使用|“聚合无知式数据库”

第三章 数据模型详解

1、使用面向聚合的数据库处理不同聚合之间的关系,要比处理同一聚合内部的关系更难。

2、图数据库强数据组织成一张由节点和边所组成的图,它们适合处理关系复杂的数据结构。

3、在无模式数据库中,可以给记录随意新增字段,然而用户在使用数据时,通常还是要遵循一套隐式模式。

4、面向聚合的数据库通常能够用不同方式重组主聚合(primary aggregate)的数据,以计算出各种“物化视图”。计算过程一般通过“映射化简”来实现。

第四章 分布式模型

1、数据分布有两种方式:

(1)将不同的数据分片存放在多个服务器中,每一个数据子集(subset of data)都专门由一台服务器负责。

(2)将数据复制到多个服务器上,每份数据都能在多个节点中找到。

数据库系统可以只选用其中一种技术,也可以两种都用。

2、“复制”技术又有两种形式:

(1)“主从复制”:将其中一个节点当做权威数据源,并负责写入操作;其他从节点都要和主节点保持同步,它们可以负责读取操作。

(2)“对等复制”:任何节点均可写入,节点间相互协调以同步其数据。

“主从复制”减少了更新数据时的冲突几率,但它却会让主节点成为写入操作的瓶颈,而“对等复制”则避免了这一点。

第五章 一致性

1、当两个客户端试图同时修改一份数据时,会发生“写入冲突”。而当某客户端在另一个客户端执行写入操作的过程中读取数据时,则会发生“读写冲突”。

2、悲观方式以锁定数据记录来避免冲突,而乐观方式则在事后检测冲突并将其修复。

3、在分布式系统中,如果某些节点收到了更新数据,而另外一些节点却尚未收到,那么这种情况就视为“读写冲突”。若写入操作已经传播至所有节点,则此刻的数据库就具备“最终一致性”。

4、客户端通常希望具备“照原样独处所写内容”的一致性,也就是说,客户在执行完写入操作之后,要能够立刻看到新值。如果读取与写入操作分别发生在不同节点,那么想保证这一点会比较困难。

5、想取得较好的“一致性”,就要用许多节点来执行数据操作,而这又会增大延迟。所以说,经常需要在“一致性”与延迟之间权衡。

6、“CAP定理”宣称,当有可能发生“网络分区”现象时,必须在数据的“可用性”与“一致性”之间权衡。

7、可以舍弃一部分“持久性”以减小延迟,如果想让数据库在复制数据出错的情况下依然可用,那么更应该考虑 这种权衡的方式了。

8、在采用“复制”技术的分布式模型中执行数据操作时,无需联系所有副本,只要为足够多的副本所认可,就能够保持“强一致性”了。



摘自《NoSQL精粹》

0 0
原创粉丝点击