


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL数据库与 NoSQL数据库的对比迈克尔斯通布雷克考虑了几个支持NoSQL数据库的性能参数并且发现它们的不足之处最近,出现了很多关于NoSQL数据库的声音。事实上,在2009年至少有两个关于这个主题的顶级会议,东西海岸各有一个。表面来看,这些声音来自以下技术的支持者:文档样式存储的数据库记录由键-值对的集合和一个负载组成。这类系统的例子有CouchDB 和MongoDB,为了简单起见,我们称这样的存储为系统文档存储。键值存储的记录由key-payload对组成。通常,这些都是由分布式哈希表实现,为了简单起见,我们称它为键值存储。这类例子有MemcacheDB和Dynamo。在这两种情况下,通常得到一个低级、一次一记录的数据库管理系统(DBMS)接口而不是SQL系统。因此,这群人将自己标识为NoSQL的追随者。有这两种可能的原因倾向于这两种可交替的DBMS技术:性能和灵活性。性能方面的争论大致如下:刚开始时我为了数据存储需求完全使用MySQL,随着时间的推移发现性能不合适。我的选择是:1. 将数据分区横跨多站点处理,但在应用程序上管理分布式数据十分困难。2.狂热追求MySQL并向SQL数据库管理系统企业支付大额许可费或使用除了SQL数据库管理系统的平台。弹性方面的争论大致如下:我的数据不符合严格的关系模式。因此,我不能受RDBMS的结构的约束,需要更高的灵活性。这篇博文介绍了性能方面的争议,随后将详细说明在灵活性方面的争议。为简单起见,我们将重点讨论NoSQL数据库通常被认为的工作负载:更新,密集查找,在线事务处理,非密集查询,数据仓库的工作量。我们不考虑文档存储库或其他专门的NoSQL系统可能适合的工作负载。有两种方法可以提高在线事务处理(OLTP)的性能;即,在无共享处理环境下提供自动分片处理和提高单台服务器的在线事务处理(OLTP)性能。第一种情况,是通过向计算环境里添加节点提高扩展性来增加性能。第二种则是提高各个节点的性能。每一个像Greenplum, Aster Data, Vertica,ParAccel的正式的SQL DBMS,如果不这样做的话在过去十年里就不会共享伸缩技术,任何新的进步也会变迟缓。因此,该组件的性能应该是DBMS的赌注。在我看来,没有人能够运行一个越过计算节点,不提供自动切分的数据库管理系统。所以,该帖继续分析其他的组件。也就是,单节点OLTP的性能。在传统数据库中与OLTP数据库有关的总开销跟系统没有关系,这就是为什么说“NoSQL”这个词用的不当的原因。相反,OLTP SQL DBMS的主要开销是通过使用ODBC或JDBC用在与DBMS进行通信上。基本上所有的性能敏感的应用都使用存储程序接口去运行DBMS内的逻辑,避免在应用程序和DBMS间来来回回交流带来的损失。别的替代方案是在一个相同的地址空间里像运行一个应用程序一样去运行DBMS,从而放弃了访问控制和安全的借口,这样的嵌入式数据库管理系统在一些环境中是合理的,但不是对主流的OLTP而言的,因为在那安全是个很热闹重要的事。不论是使用存储程序还是嵌入方式,有效的负载成分只占OLTP数据库总的事物成本的很少的一部分,它通常适合在内存里运行。另外,一个最近发表的论文计算出总的OLTP时间在以下四部分开销的分配几乎是相同的:日志记录传统的数据库把东西都写两遍,一次写到数据库,另一次写到日志。此外,日志必须写到磁盘上以保证事物的持久性。所以,日志记录是一个高花费的操作。加锁在接触记录前,一个事物必须在锁表里为它加一个锁。这也是一个开销集中的操作。封锁更新到共享的数据结构,像B树,锁表和资源表,在一个多线程的环境中一定要小心。典型的是,这里会有短时间的封锁,这是另外一个开销。缓冲区管理 传统系统中的数据存储在固定大小的磁盘页中。一个缓冲池管理在内存中任何时刻的缓冲的磁盘页记录。另外,记录必须位于分页上,边界是确定的。还有,这样的操作也是开销集中的。如果能够消除以上的开销中的任何一种,DBMS能提速25%。消除三个DBMS的速度会被两个因素中的一个限定。必须把这四个都消除才能更大幅度的提高速度。尽管NoSQL系统有各种各样的与众不同的特征,但还是有一些常见的特性,第一,许多的NoSQL系统管理分布在多个站点的数据,提供上面提及的赌注。显然,一个设计好的多位点的系统,不管是不是基于SQL的,比单位点系统有更好的可扩展性。第二,许多的NoSQL系统以磁盘为基础并保留了缓冲池和多线程的体系结构。这样就会使上面提到的四分之二的开销保持完整。 就事物而言,通常是支持单事物和最终一致性的系统,认定事物是可以交替的。为了效率,ACID黄金标准做出了牺牲。 然而,网络到网络是NoSQL单节点的性能表现,基于磁盘的,不遵循ACID,多线程是它比一个设计好的存储过程SQL OLTP快的原因。本质上,为了性能的提高,ACID事物被放弃,这个性能的提高和SQL没有关系。 但是,鱼与熊掌都可兼得。为了更快速,需要有一个链接到执行时系统存储过程,它能编译高级语言到低级语言代码。另外,还需要消除那四个开销。 最近的一个项目清楚地表明这是可行的,并且在TPG-G展示了很好的性能。期待会有商业的版本和开源的封装。所以,我期待高速,开源的能够提供自动分片功能的SQL引擎在不久的将来会出现。另外,将会随着编程生产率的提高继续提供ACID事物特性,SQL提供的低维护成本和更好的数据独立性。因此,获取高性能没必要抛
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 供水供热方案制定
- 天然气节能减排政策措施方案
- 中学英语综合教学规范
- UML锁定图细则和应用规范
- 健康保险总结规定
- 煤矿气动安全管理制度
- 养殖业市场调查报告
- 房地产项目营销策划与推广合作协议
- 园林绿化设计与养护协议
- 网络教育与在线培训服务承诺函3篇范文
- 新教科版小学1-6年级科学需做实验目录
- GB/T 8492-2024一般用途耐热钢及合金铸件
- 旅游服务礼仪PPT第4版高职PPT完整全套教学课件
- EPC模式承包人建议书与承包人实施方案
- 江苏省临检中心 临床化学继教班 7.质控规则及IQCP概述欧元祝
- 主动防护网施工方案
- StarterUnits 1-3学历案 人教版七年级英语上册
- 客诉客退产品处理流程
- 自来水厂操作规程手册范本
- 碾压式土石坝施工技术规范
- 冀教版 英语六年级上册Unit 1 Lesson4 教学课件PPT小学公开课
评论
0/150
提交评论