




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、根据CAP理论,一致性(C),可用性(A),分区容错性(P),三者不可兼得,必须有所取舍。 而传统数据库保证了强一致性(ACID模型)和高可用性,所以要想实现一个分布式数据库集 群非常困难,这也解释了为什么数据库的扩展能力十分有限。而近年来不断发展壮大的 NoSQL运动,就是通过牺牲强一致性,采用BASE模型,用最终一致性的思想来设计分布 式系统,从而使得系统可以达到很高的可用性和扩展性。但是,对于CAP理论也有一些不同的声音,数据库大师Michael Stonebraker就撰文Errors in Database Systems, Eventual Consistency, and the
2、 CAP Theorem,表示为了 P 而牺牲 C 是不 可取的。事实上,数据库系统最大的优势就对一致性的保证,如果我们放弃了一致性,也许 NoSQL比数据库更有优势。那么,有没有可能实现一套分布式数据库集群,即保证可用性 和一致性,又可以提供很好的扩展能力呢?回答是:有的。目前,有很多分布式 数据库的产品,但是绝大部分是面向DSS类型的应用,因为相比较 OLTP应用,DSS应用更容易做到分布式扩展。Michael Stonebraker提到了一种新型的数据 库 VoltDB,它的定义是 Next-Generation SQL Database for Fast-Scaling OLTP Ap
3、plications 虽 然产品还没有问世,但是从技术资料上来看,它有几个特点:采用Share nothing架构,将物理服务器划分为以CPU core为单位的Virtual node,采用 Sharding技术,将数据自动分布到不同的Virtual node,最大限度的利用机器的计算资源;采用内存数据访问技术,类似于内存数据库(In-memory database),区别于传统的数据库 (Disk-based database),消除了传统数据库内存管理的开销,而且响应速度非常快;每个Virtual node上的操作是自治的,利用队列技术将并发访问变为串行访问,消除了传 统数据库串行控制的开
4、销(比如Latch和Lock);数据同步写多个副本,不存在单点故障,而且消除了传统数据库需要记录redo log的开销。Sharednothing OLTP DBMS Rijn?5CindLJSrcif nodes connectedbyLANSingie4hreaded execution engines3 deployed to each coreTables automatically partitioned & distributed to engines where theyre processed at main memory speedDistributed execution
5、planner assigns work to engines, which ope rate exclusively on their assigned partitionsAuto replicabon & recovery across nodes for high availability d across casters for disaster recoveryVoltDB与传统数据库的对比,可以看到VoltDB即支持传统数据库的ACID模型,又提供了 类似NoSQL产品很高的扩展能力。mysqldmysqldCastons Ciients CNDBAPI)这个产品,让我想到了 M
6、ySQL cluster,同样是shared-nothing架构,NDB存储引擎也要求 将数据存放在内存中,数据根据PK被分布到多个不同的节点上,同一份数据可以保存多个 副本,防止单点故障。(NDBManagement I-勰mJMySQLC APINDB Management Server ndb_ingmdClients / APIsPHPmysqldData NodesI iCon nector/ N ET| / /J Connector/JNoSQLVoltDBTraditionalDBMSScale-outgrowth Clustered high availability Inte
7、grated replication ACID compliant SQL interface Single-threadedAgile schema.Cross-partition joinsIn app codeIn app code AutomaticCost at web scaleB中MySQL cluster目前的主要问题是性能不佳,但是我认为MySQL cluster的架构是分布式数 据库未来的趋势,Oracle收购MySQL后,很多人对MySQL的前途表示担忧,而我作为一 个用户,除了可能会收费这件事以外,我一点也不担心MySQL的前景,反而有所期待,因 为在数据库领域没有任何
8、一个公司比Oracle更懂数据库,而Oracle也正在大力发展MySQL cluster,MySQL cluster一定会成为分布式数据库领域内最好的解决方案之一。NoSQL数据库异军突起,随着Digg和大型应用不断采取NoSQL,NoSQL运动 已经蓬勃发展,NoSQL数据库很多,如何对他们分类,以便方便地根据自己应用特色选择 不同的NoSQL数据库呢?NoSQL = HVSP无(传统关系数据库的)join或明显事务的高容量简单处理。按照数据模型保存性质将当前NoSQL分为四种:Key-value stores 键值存储,保存 keys+BLOBs (二进制大对象 Binary Large
9、OBjects)Table-oriented 面向表,主要有 Google 的 BigTable 和 Cassandra.Document-oriented面向文本,文本是一种类似XML文档,MongoDB和CouchDBGraph-oriented 面向图论.如 Neo4J.NoSQL 一般都是分布式数据库,高性能是其特点,因此,数据是如何被分布、复制/碎片 以及合成就成为关键,这其中涉及你的应用对数据一致性的要求,见CAP原理,不同一致 性处理方式决定不同类型:基本上基于Dynamo.核心思想就是在多个节点之间获得最终一致性就可以,即使你有 时会读到脏数据.好处是写数据时从来不会阻塞。那种
10、强制性节点一致性,如2PC,两段事 务提交将会让你的写关闭停顿,使用Dynamo-like风格你能将数据写到多个节点中,通过 一致hashing,然后你可以从这些节点读取数据,返回正确结果给用户。基本基于BigTable.这种模型中,使用常用方式保持节点充分的一致性。比如同步复制, 由数据自己活或数据所在位置来实现一致性,不同产品实现细节不一样。比如:MongoDB有一个面向文本类型的数据模型,它采取类似BigTable-like复制策略; Cassandra有面向表table-like数据模型,采取的是Dynamo-like风格.以后应该有数据是如何被持久化保存到磁盘上的区分,不同NoSQL
11、处理策略不一样,有 的是写一次保存一次;有的是定期保存,后者性能要好些。_ NoSQL数据库最终一致性/BASE VS ACIDCAP理论六月 22nd, 2010 No Comments 存储&NoSQL作者:阎斌|可以转载,但必须以超链接形式标明文章原始出处和作者信息网址:http:/UltimateA10年前,Eric Brewer教授提出了非常著名的CAP理论,后人也论证了 CAP理论的正确性。CAP理论指出:一个分布式系统不可能同时满足一致性(Consistency),可用性(Availibility) 和分区容忍性(Partition Tolerance)这三个需求。最多只能同时满
12、足其中的两个。 一致性(Consistency):对于分布式的存储系统,一个数据往往会存在多份。简单的说,一致性会让 客户对数据的修改操作(增/删/改)要么在所有的数据副本(在英文文献中 常称为Replica)全部成功,要么全部失败。即,修改操作对于一份数据的所 有副本而言,是原子(Atomic)的操作。如果一个存储系统可以保证一致性,那么则客户读写的数据完全可以保证是 最新的。不会发生两个不同的客户端在不同的存储节点中读取到不同副本的 情况。 可用性(Availability):可用性很简单,顾名思义,就是指在客户端想要访问数据的时候,可以得到 响应。但是注意,系统可用(Available)
13、并不代表存储系统所有节点提供的 数据是一致的。比如客户端想要读取文章评论,存储系统可以返回客户端数 据,但是评论缺少最新的一条。这种情况,我们仍然说系统是可用的。往往我们会对不同的应用设定一个最长响应时间,超过这个响应时间的服务 我们仍然称之为不可用的。分区容忍性(Partition Tolerance):如果你的存储系统只运行在一个节点上,要么系统整个崩溃,要么全部运行 良好。一旦针对同一服务的存储系统分布到了多个节点后,整个存储系统就 存在分区的可能性。比如,两个存储节点之间联通的网络断开(无论长时间 或者短暂的),就形成了分区。对当前的互联网公司(例如Google)来说,为了提高服务质量
14、,同一份数据 放置在不同城市乃至不同国家是非常正常的。因此节点之间形成分区也很正 常。Gilbert和Lynch将分区容忍性定义如下:No set of failures less than total network failure is allowed to cause the system to respond incorrectly除全部网络节点全部故障以外,所有子节点集合的故障都不允许导致整个系 统不正确响应。我在另外一篇文章(BASE: An Acid Alternative)中找到了一个对分区容忍性更为恰当好理解的解释:Operations will complete, even
15、 if individual components are unavailable.(即使部分的组件不可用,施加的操作也可以完成)CAP说明:在设计一个分布式存储系统时,你不得不在三个特性中选择放弃 一个。如果选择Partition Tolerance和Consistency,那么即使坏了节点,操作必须 又一致,又能顺利完成。所以就必须100%保证所有节点之间有很好的连通 性。这是很难做到的。最好的办法就是将所有数据放到同一个节点中。但是 显然这种设计是不满足Availability的。如果要满足Availability和Consistency,那么,为了保证可用,数据必须要 有Replica。这样,系统显然无法容忍Partitiono当同一数据的两个副本(Replica)分配到了两个无法通信的Partition上时,显然会返回错误的数据。最后看一下满足Availability和Partition Tolerance的情况。满足可用,就说 明数据必须要在不同节点中有replica。然而还必须保证在产生Partition的时 候仍然操作可以完成。那么,必然操作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 预防早产知识指南
- 教育服务行业
- 八年级上册《直角三角形的性质和判定》课件与练习
- 八年级上册《等边三角形性质和判定》课件与练习
- 挤掉脓包卡介疫苗白打了
- 金融分析师考试资料分析试题及答案
- 【名师课件】1.6.2 课件:人船模型-2025版高一物理必修二
- 第四章 2 全反射-2025版高二物理选择性必修一
- 第八章 作业37 动能定理和机械能守恒定律的综合应用-2025版高一物理必修二
- 2024年特许金融分析师考试社交学习的优势试题及答案
- 公司绿化维护及保洁服务方案
- 鹭翔杯往年真题-数学(试卷)
- 肥胖症外科治疗
- 动画绘制员(高级)理论
- 2024年10月自考13683管理学原理中级试题及答案含评分参考
- 路径规划与导航
- 《汽车故障诊断与排除》复习题及答案
- 幼儿园孩子受伤赔偿协议书范文
- 20222023银行招聘考试题库1000题第4372期含答案解析
- 传染病报告卡
- 单片机原理及应用期末考试题试卷大全(含答案)
评论
0/150
提交评论