Oracle、NoSQL和NewSQL 数据库技术对比(二)- 终结

本文作者:约翰·瑞恩 - 瑞银集团数据仓库解决方案架构师

(接上篇)

重新设想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个。

世上无难事!

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

关系数据库的处理资源消耗
Oracle、NoSQL和NewSQL 数据库技术对比(二)- 终结

上图显示,有93%的系统开销是用于传统(历史遗留)的数据库系统,包括锁定、锁存和缓存管理。合计只有7%的机器资源是专门用于手头的任务。

H-Store只是通过消除上述瓶颈,使用基于内存的处理来代替基于磁盘的处理,就得以实现看似不可能的任务,即全面的ACID事务一致性,使速度提升了几个数量级。

NewSQL数据库技术

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

VoltDB

与其他NewSQL数据库一样,VoltDB旨在完全在内存中运行,提供定期拍摄磁盘快照的选择。它可在本地运行于64位Linux,也可使用AWS、谷歌和Azure的云服务来运行,采用横向可扩展的架构。

传统的关系数据库将数据写入基于磁盘的日志文件。VoltDB则不然,是同时对内存内的多台机器进行修改。例如,即使两台机器发生故障,K-Safety系数为2时即可保证不会造成数据损失,因为数据至少存入三个内存节点。

事务作为Java存储过程(stored procedure)提交,可在数据库中异步执行,并且数据自动分区(分片),分配至系统内的节点,尽管可复制基准数据以最大限度地提高连接性能。VoltDB有一点不同寻常,就是还以JSON数据结构的形式,支持半结构化数据。

就性能而言, 2015年进行的一次基准测试 显示,VoltDB的处理速度至少是NoSQL数据库Cassandra的两倍,但成本只有AWS云处理成本的六分之一。

最后,VoltDB 6 . 4版通过了极为苛刻的 J epsen分布式安全性测试 。

相比之下,此前对NoSQL数据库Riak进行的 测试 表明,即使采用最强的一致性设置,写入也会下降30 - 70%。与此同时,采用轻量级事务时,Cassandra最多损失5%的写入。

MemSQL

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

MemSQL数据库架构
Oracle、NoSQL和NewSQL 数据库技术对比(二)- 终结

尽管与VoltDB有许多相似点,但上图表明了一个重要的差异。MemSQL试图在实时事务与数据仓库式历史数据处理这两种相互冲突的需求之间寻求平衡。为此,MemSQL以行存储(row store)的方式在内存中存储数据,并用面向列的磁盘存储作为备份,从而将实时(最近)数据与历史结果结合在一起。

这使其在OLTP和数据仓库(Data Warehouse)领域获得了稳固的位置,尽管这两种解决方案都是瞄准实时数据获取和分析市场。

哪些应用需要NewSQL技术?

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

典型的应用包括:

  • 实时授权 — 例如,为了分析和计费而验证、记录和授权移动电话呼叫。通常,99 . 999%的数据库操作都必须在50毫秒内完成。
  • 实时欺诈侦测 — 用于完成复杂的分析查询,以在交易授权之前,准确地确定欺诈的可能性。
  • 游戏分析 — 用于根据玩家的能力和玩家的典型行为,实时动态修改游戏难度。目标是留住现有玩家,以及将免费客户转化为付费玩家。在速度、可用性和准确性要求很高的情况下,某客户通过运用这些手段,将玩家的游戏支出提高了40%。
  • 个性化Web广告 — 实时动态地选择基于 Web的个性化广告,记录广告呈现事件以用于计费,同时记录广告结果以用于后续分析。与绝大多数OLTP应用相比,这些起初看来都不起眼,但是在每周7天、每天24小时联网的世界,这些为实时分析提供了新的疆域,并且随着物联网的兴起,也带来了巨大的机会。

结论

虽然Hadoop与大数据的关联更为密切,并且近来获得巨大的关注,但数据库技术是任何IT系统的基石。

类似地,NoSQL数据库为替代关系数据库提供了一个快速、可扩展的选择,但是尽管有免许可开源数据库的诱惑,事实上还是一分钱一分货。另外,正如VoltDB所显示的那样,实际上长期来看,可能比NoSQL类的选择更为便宜。

总的说来,如果有Web规模、OLTP和(或)实时分析的要求,则需要认真考虑NewSQL类数据库。

作者简介

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

“我们预测未来十五年将迎来激烈的争论和巨大的变化。

—— Michael Stonebraker 博士(2007)”

(终)