2012 年NOSQL学习笔记之三
2012 年NOSQL学习笔记之三 十一、如何理解最终一致性最终一致性 一言以蔽之:过程松,结果紧,最终结果必须保持一致性 为了更好的描述客户端一致性,我们通过以下的场景来进行,这个场景中包括三个组成部分:
存储系统可以理解为一个黑盒子,它为我们提供了可用性和持久性的保证。
ProcessA主要实现从存储系统write和read操作
ProcessB和C是独立于A,并且B和C也相互独立的,它们同时也实现对存储系统的write和read操作。
下面以上面的场景来描述下不同程度的一致性:
强一致性(即时一致性)假如A先写入了一个值到存储系统,存储系统保证后续A,B,C的读取操作都将返回最新值
假如A先写入了一个值到存储系统,存储系统不能保证后续A,C的读取操作能读取到最新值。此种情况下有一个“不一致性窗口”的概念,它特指从A写入值,到后续操作A,C读取到最新值这一段时间。
最终一致性是弱一致性的一种特例。假如A首先write了一个值到存储系统,存储系统保证如果在A,C后续读取之前没有其它写操作更新同样的值的话,最终所有的读取操作都会读取到最A写入的最新值。此种情况下,如果没有失败发生的话,“不一致性窗口”的大小依赖于以下的几个因素:交互延迟,系统的负载,以及复制技术中replica的个数(这个可以理解为master/salve模式中,salve的个数),最终一致性方面最出名的系统可以说是DNS系统,当更新一个域名的IP以后,根据配置策略以及缓存控制策略的不同,最终所有的客户都会看到最新的值。 十二、NOSQL与传统数据库系统设计上的区别关系型数据库中的表都是存储一些格式化的数据结构,每个元组字段的组成都一样。 这样做的好处就是:这样的结构非常方便进行表与表之间连接等操作。
但从另一个角度来说它也是关系型数据库性能瓶颈的一个因素。为什么呢? 因为不是每个元组都需要所有的字段,但是关系型数据库会为每个元组分配所有的字段。
而非关系型数据库以键值对存储,它的结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。 十三、NOSQL的特点(或者叫优点)是什么?n 它们可以处理超大量的数据。 n 它们运行在便宜的PC服务器集群上。 PC集群扩充起来非常方便并且成本很低,避免了“sharding”操作的复杂性和成本。 n 它们击碎了性能瓶颈。 NoSQL的支持者称,通过NoSQL架构可以省去将Web或Java应用和数据转换成SQL友好格式的时间,执行速度变得更快。 “SQL并非适用于所有的程序代码,” 对于那些繁重的重复操作的数据,SQL值得花钱。但是当数据库结构非常简单时,SQL可能没有太大用处。 n 没有过多的操作。 虽然NoSQL的支持者也承认关系数据库提供了无可比拟的功能集合,而且在数据完整性上也发挥绝对稳定,他们同时也表示,企业的具体需求可能没有那么多。 n Bootstrap支持 因为NoSQL项目都是开源的,因此它们缺乏供应商提供的正式支持。这一点它们与大多数开源项目一样,不得不从社区中寻求支持。 十四、Google、Facebook、Amazon等大公司用的什么NOSQL产品
十五、 NOSQL产品的按用途和环境分类NoSQL数据库根据不同的用途和环境大致可以分为以下的三类: 1.满足极高读写性能需求的Kye-Value数据库:代表性产品有: Redis,Tokyo Cabinet, Flare 2.满足海量存储需求和访问的面向文档的数据库:代表性产品有: MongoDB,CouchDB 3.满足高可扩展性和可用性的面向分布式计算的数据库:代表性产品有: Cassandra,Voldemort
十六、 NOSQL产品的按数据存储模型分类
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |