Oracle、NoSQL和NewSQL 数据库技术对比

关于做者 John Ryan是经验丰富的数据仓库架构师、开发人员和数据库管理员。他专门从事多太字节Oracle系统上的Kimball维度设计,在移动电话和投资银行等多个不一样的行业积累了超过30年的IT经验。 本文首次发表是做为有关数据库和大数据的系列文章中的一篇。数据库

01 世界已经变了

在过去的20年,世界发生了翻天覆地的变化。在2000年的时候,上网的人不过寥寥数百万,仍是用台式机连56k的猫来上网,那时候亚马逊还只卖书。今天,数十亿人用智能电话或平板电脑每周7天、天天24小时上 网,几乎什么都在网上买,另外还使用 Facebook、Twitter和Instagram 这些社交应用与人互动。势不可挡。 人们的心理预期也变了。若是网页几秒钟未法完成刷新,咱们立即失去耐心,换个别的网站。若是某个网站没法访问,咱们担忧那就是咱们所知文明的终结。若是某个大型网站没法访问,它会成为全球性的大新闻。 即刻知足都还不够! (Instant gratification takes too long!) — Ladawn Clare-Panton 注:若是您不是经验丰富的数据库架构师,则您可能须要先阅读我之前关于可扩展性和数据库架构的文章。缓存

02 哪些变了?

由上可得出下列几个结论:安全

  • 可扩展性 — 流量可能出现爆炸性的增加,IT系统须要迅速扩大规模, 以处理指数化增加的事务
  • 高可用性 — IT系统必须每周7天、天天24小时运行,而且必须具备故障容错性。(美国银行2011年发生一次故障,对2900万客户形成持续六天的影响)。
  • 高性能 —随着可扩展性的不断加强,性能也必须跟上,保持稳定和快速。据亚马逊估算,在极端状况下,页面加载时间每增长一秒,该公司每一年要损失16亿美圆。
  • 速度 — 设备自带的联网传感器愈来愈多(远的不说,智能电话就自带联网传感器),每秒可能会有数以百万计的事务须要处理。
  • 实时分析 —夜间进行批处理和业务智能化已通过时。分析与操做处理之间的界限变得模糊,对实时决策的需求愈来愈多。

物联网(Internet of Things)让速度急剧加快! — Stonebraker博士(MIT) . 上述需求催生极为精彩的营销术语Translytical数据库,意思是采用混合解决方案,即同一个解决方案既可处理海量事务,也可完成实时分析。服务器

03 问题是什么?

在下降成本的同时提供高性能(可能还要使用廉价服务器),是全部数据库厂商都面对的挑战。可是,需求之间相互冲突:网络

  • 性能—最大限度地缩短延迟,在毫秒级时间内完成事务处理。
  • 可用性—即便系统的一个或多个节点发生故障或与网络断开,也能保持运行的能力。
  • 可扩展性—可以不断地扩大规模,以知足海量数据和事务速度的要求。
  • 一致性—提供一致、准确的结果 — 特别是在发生网络故障时。
  • 耐久性—确保修改一旦实施后不会丢失。
  • 灵活性—提供通用的数据库解决方案,以支撑事务及分析方面的工做负荷。

要具有海量渐进扩展能力,惟一现实的办法就是部署横向扩展的分布式系统。一般状况下,为最大地限度提升可用性,对某个节点实施的修改会被当即复制至两个或更多个其余节点。可是,一旦将数据分配给多个服务 器,则面临利弊权衡。 例如:数据结构

3.1 性能与可用性和耐久性架构

许多NoSQL数据库将数据复制至集群内的其余节点,以提升可用性。若是 数据库节点在在写入操做后当即崩溃,则数据在其余机器上有备份,所以修改是持久的。可是,也可放松这个要求,不备份就当即返回。这可实现性能的最大化,但有丢失修改的风险。修改可能根本没法持久。 在这里插入图片描述 ▲ 地理分散式系统异步

3.2 一致性与可用性分布式

NoSQL数据库支持最终一致性。例如,在上图中,若是与纽约之间的网络 链接临时断掉,则有两个选择:oop

  • 中止处理 — 可是纽约的可用性就受到了影响
  • 接受读取/写入操做 —在恢复网络链接后消除差别。可是这么作的风险是提供过时或错误的结果,可能须要解决写

显然,NoSQL数据库是用一致性来换取可用性方面的能力。

3.3 灵活性与可扩展性 与Oracle和DB2等通用型关系数据库相比,NoSQL数据库的灵活性相对较 差,(例如)不支持Join(链接)操做。除了许多不支持SQL语言的数据库,有些数据库(例如Neo4J和MongoDB)是专为支持特定问题而设计的—图处理和JSON数据结构。 即便像HBase、Cassandra和Redis这样的数据库,也放弃关系链接操做, 但许多还限制访问单一主键,而且不支持辅助索引。 许多数据库都声称100%支持ACID事务, 实际上提供正式ACID保证者寥寥无几。 — Peter Bailis 博士(斯坦福大学)

04 ACID与最终一致性

数据库解决方案的扩展方面,主要挑战之一就是维持ACID一致性。亚马逊采用DynamoDB数据库,放松一致性约束,以换取速度,从而解决了性能问题,由此催生了大量NoSQL数据库。 另外,最成功的数据库(包括Oracle)也没法提供真正的ACID隔离性。本文研究了18个数据库,默认支持SerializabilITy(可串行性)的数据库只有三个(VoltDB、Ingres和Berkeley DB)。主要缘由是难以在保持性能的同时支持可串行性。 最终一致性是特别弱的一种模式。

系统可返回任何数据,依然能够作到最终一致。 — Peter Bailis 博士(斯坦福) 另外一方面,最终一致性几乎不提供一致性保证。下图说明了最终一致性所存在的问题。一个用户从银行帐户上扣款100万美圆,可是在帐户修改获得复制以前,又有一个别的用户检查这个帐户的余额。惟一的保证是,只要没有进一步的写入操做,系统最终会提供一致的结果。这又有什么用处呢?让人接受就更谈不上了。 在这里插入图片描述

▲ Cassandra — 最终一致性

05 从新设想OLTP数据库

十年前,Michael Stonebraker博士撰写了《架构时代的终结》(The End of an ArchITectural Era)这篇文章,认为Oracle、微软和IBM提出的1970年代的数据库架构已通过时。 他提出OLTP数据库应具有下列特色:

  • 专门用于解决某一个问题 — 快速执行短暂的预约义(非即席的)事务,查询计划相对简单。简而言之,就是专用的OLTP平台。
  • 符合ACID规范 — 全部事务均为单线程运行,默认提供所有可串行性。 老是可用 — 利用数据复制(而非热备)来提供高可用性,几乎不增长成本。
  • 地理分散 —在由分散多处的机器组成的网格上无缝运行(进一步提升韧性,并局部地提升性能)
  • 无共享架构 —多台机器经过对等网格联网,分担负荷。添加机器是不会形成停机的无缝操做,而且失去一个节点仅会形成性能略微降低,而不是全系统中止运行。
  • 基于内存 — 所有在内存中运行,以提升绝对速度,经过向其余节点进行内存中数据复制来保证耐久度。
  • 消除瓶颈 —完全从新设计数据库的内部构件,实现单线程运行,同时消除重作(Redo)日志以及锁定和锁存的必要性—这些都是数据库性能最为重大的制约。

为证实上述各项的可能性,他建了一个原型,即H-Store数据库,并证实使用相同的硬件, TPC-C基准性能是某商业竞争对手的82倍。H-Store原型成绩优异,实现了每秒处理70,000个事务,而尽管数据库管理员付出了大量努力进行调优,某商业竞争对手每秒仅850个。

06 世上无难事!

Stonebraker博士的成就使人侧目。此前的TCP-C世界纪录为每一个 CPU 核心大约1,000个事务,但H-Store采用双核2.8GHz台式机,速度是原世界纪录的35倍。他在2008年的文章《细探 OLTP 》(OLTP through the Looking Glass)中解释了为何商业数据库(包括Oracle)的性能为何如此差劲。 在这里插入图片描述

▲ 关系数据库的处理资源消耗

上图显示,有93%的系统开销是用于传统(历史遗留)的数据库系统,包括锁定、锁存和缓存管理。合计只有7%的机器资源是专门用于手头的任务。 H-Store只是经过消除上述瓶颈,使用基于内存的处理来代替基于磁盘的处理,就得以实现看似不可能的任务,即全面的ACID事务一致性,使速度提高了几个数量级。

07 NewSQL数据库技术

在这里插入图片描述

VoltDB最先发布于2010年,是H-Store原型的商业化产品,属于专用的OLTP平台,用于Web级的事务处理和实时分析。如这张信息图所示,目前有250种商业化数据库解决方案,其中只有13种被纳入NewSQL技术的行列。

08 VoltDB

与其余NewSQL数据库同样,VoltDB旨在彻底在内存中运行,提供按期拍摄磁盘快照的选择。它可在本地运行于64位Linux,也可以使用AWS、谷歌和Azure的云服务来运行,采用横向可扩展的架构。 传统的关系数据库将数据写入基于磁盘的日志文件。VoltDB则否则,是同时对内存内的多台机器进行修改。例如,即便两台机器发生故障, K-Safety系数为2时便可保证不会形成数据损失,由于数据至少存入三个内存节点。 事务做为Java存储过程(stored procedure)提交,可在数据库中异步执行,而且数据自动分区(分片),分配至系统内的节点,尽管可复制基准数据以最大限度地提升链接性能。VoltDB有一点不一样寻常,就是还以JSON数据结构的形式,支持半结构化数据。 就性能而言,2015年进行的一次基准测试显示,VoltDB的处理速度至少是NoSQL数据库Cassandra的两倍,但成本只有AWS云处理成本的六分之 一。 最后,VoltDB 6 .4版经过了极为苛刻的 Jepsen分布式安全性测试。 相比之下,此前对NoSQL数据库Riak进行的测试代表,即便采用最强的一 致性设置,写入也会降低30-70%。与此同时,采用轻量级事务时,Cas- sandra 最多损失5%的写入。

09 MemSQL

与VoltDB相同的是,MemSQL是横向扩展的内存型分布式数据库,专为快速获取数据和实时分析而设计。另外,既可在本地运行,也可在云上运行,并可在不一样节点之间自动分片,在每一个CPU核心上并行执行查询。 在这里插入图片描述

▲ 关系数据库的处理资源消耗 尽管与VoltDB有许多类似点,但上图代表了一个重要的差别。MemSQL 试图在实时事务与数据仓库式历史数据处理这两种相互冲突的需求之间寻求平衡。为此,MemSQL以行存储(row store)的方式在内存中存储数据, 并用面向列的磁盘存储做为备份,从而将实时(最近)数据与历史结果结合在一块儿。 这使其在OLTP和数据仓库(Data Warehouse)领域得到了稳固的位置,尽管这两种解决方案都是瞄准实时数据获取和分析市场。

10 哪些应用须要NewSQL技术?

要求采集速度和响应速度很是快(平均1-2毫秒),同时要求ACID保证所提供的事务准确性的任何应用—例如客户计费。 典型的应用包括:

  • 实时受权 — 例如,为了分析和计费而验证、记录和受权移动电话呼叫。一般,99 .999%的数据库操做都必须在50毫秒内完成。
  • 实时欺诈侦测— 用于完成复杂的分析查询,以在交易受权以前,准确地肯定欺诈的可能性。
  • 游戏分析 —用于根据玩家的能力和玩家的典型行为,实时动态修改游戏难度。目标是留住现有玩家,以及将免费客户转化为付费玩家。在速度、可用性和准确性要求很高的状况下,某客户经过运用这些手段,将玩家的游戏支出提升了40%。
  • 个性化Web广告 — 实时动态地选择基于 Web 的个性化广告,记录广告呈现事件以用于计费,同时记录广告结果以用于后续分析。

与绝大多数OLTP应用相比,这些起初看来都不起眼,可是在每周7天、天天24小时联网的世界,这些为实时分析提供了新的疆域,而且随着物联网的兴起,也带来了巨大的机会。

11 结论

虽然Hadoop与大数据的关联更为密切,而且近来得到巨大的关注,但数据库技术是任何IT系统的基石。 相似地,NoSQL数据库为替代关系数据库提供了一个快速、可扩展的选 择,可是尽管有免许可开源数据库的诱惑,事实上仍是一分钱一分货。另外,正如VoltDB所显示的那样,实际上长期来看,可能比NoSQL类的选择更为便宜。 总的说来,若是有Web规模、OLTP和(或)实时分析的要求,则须要认真考虑NewSQL类数据库。

若是您对VoltDB的工业物联网大数据低延迟方案、全生命周期的实时数据平台管理等感兴趣,欢迎私信,进入到咱们的官方交流群。

相关文章
相关标签/搜索