GYChen 发表于 2013-1-4 02:26:14

转载-----Martin Fowler的NoSQL精粹一书中知识关键点的翻译整理

<div id="cnblogs_post_body">  Martin Fowler是国际著名的OO专家,敏捷开发方法的创始人之一,现为ThoughtWorks公司的首席科学家. 福勒(Martin Fowler),在面向对象分析设计、UML、模式、软件开发方法学、XP、重构等方面,都是世界顶级的专家,现为Thought Works公司的首席科学家。Thought Works是一家从事企业应用开发和集成的公司。早在20世纪80年代,Fowler就是使用对象技术构建多层企业应用的倡导者,他著有几本经典书籍:《分析模式》、《UML精粹》和《重构》等。他改变了人类开发软件的模式,他被开发者们尊为“教父”,他从不与媒体谈论技术以外的事情。这个谜一样的科学家Martin Fowler,终于首次敞开心扉,讲述自己的故事。
-----------------------------------------转载原文----------------------------------------------
1.       Nosql没有一个法定的定义。关系数据库虽然成功应用了20年,但是它们并不是为了设计有效的在集群存储上运行。Nosql虽然没有一个统一的定义,但是却有以下共同的特征:

[*]不使用关系模型
[*]运行在集群上
[*]开源
[*]为现在的web而生
[*]无模式Schemaless
2.       提出了聚集aggregate的概念,并认为Key-value, document 和 column-family 数据库都是面向聚集的数据库aggregate-oriented database
3.       对nosql数据模型的特点做了进一步的分析,包括Graph数据库
4.       分布式模型包括两种方式:Sharding和Replication. 一般系统都会实现一种或者两种方式。
Replication又分为两种:Master-slave和peer-to-peer.
5.       一致性.

[*]Write-write和read-write冲突
[*]悲观锁可以阻止冲突,乐观锁可以检测到冲突并可以解决冲突
[*]虽然会有read-write冲突(部分节点还没有同步数据),但是最终一致性会保证数据一致。
[*]Client可能想避免read-write冲突,但是如果读写正好落在不同的节点上,很难避免
[*]所以如果想保证一致性,可能在一个操作中涉及多个节点,但这就增加了延迟时间latency. 有时候,鱼与熊掌不可兼得。
[*]著名的CAS理论已经表明,在保证集群的情况下,你必须权衡数据可用性和数据一致性
[*]保证耐久性Durability也意味着你增加延迟时间,尤其在复制时。
[*]你不需要通知所有的复制节点以保证完全一致性,只要保证足够的一致性即可
6.       版本戳Version Stamps
利用version可以检测并发冲突,一旦更新一个数据,就更改版本戳.
可以用计数器,GUID,hash,时间戳或者它们的组合来做版本戳.
分布式情况下版本戳向量表可以检测不同的节点是否有冲突的更新操作.
----------------------------------------------------------------------------
原文转载地址:Martin Fowler的NoSQL精粹一书中知识关键点的翻译整理
英文地址:Key Points from NoSQL Distilled
页: [1]
查看完整版本: 转载-----Martin Fowler的NoSQL精粹一书中知识关键点的翻译整理