早在2000年代中期,H-Store第一次在M.I.T.被我们提出来,VoltDB是H-Store的商业化产品,它表示结构相似的数据会被连续存放到一起。在本文的后续描述中,我们将使用V-H来缩写。

V-H的设计(始于2004年)强调了在每秒可观的低延迟(以毫秒为单位)的情况下,以每秒大规模事务(TPS)的方式实现最大性能。 这样做的理由是,随着更快的辅助存储(例如SSD和NVRAM)的出现,基于磁盘的DBMS的性能将会提高。

综上,必须设计基于RAM的DBMS,这样相对于传统的DBMS系统而言,才具有明显的性能优势。

V-H采用了3个关键的技术聚焦点:

2.1 聚焦单分区事务性

多节点主内存DBMS必须跨各个节点对数据进行分区。多节点事务不可避免地涉及负载很大的分布式并发控制协议。正如在[Harding]所描述,分布式并发控制大大降低了操作执行速度。如果事务之间存在重大资源等待,吞吐量也会大大降低。为了避免这种开销,V-H专注于优化所谓的单分区事务。

在这种情况下,应用程序设计人员应组织其数据,以便几乎所有事务都不会跨越多个节点上的数据。许多应用程序自然是“单个部分”,例如更新单个用户的余额,并检查其授权电话呼叫权限。换句话说,将用户帐户划分为多个节点将使上述交易仅跨越一个分区。另一方面,将资金从一个帐户转移到另一个帐户通常不能成为单一分区,因为通常无法将两个帐户都聚集在一个分区中。

总而言之,许多应用程序可以做成单个分区,而有些则不能。另外,几个非常大的应用程序都坚持认为所有事务都是单个分区的。因此,他们禁止将多分区事务作为应用程序体系结构的最佳实践,以使性能最大化。

V-H选择针对“单分区”事务进行优化,使其可以达到很高的运行性能。

尽管V-H也可以执行“多分区”事务,但它们的性能并不高。我们应该在主要是单个分区的场景中使用VoltDB。

2.2 聚焦在存储过程

大多数OLTP用例主要包含重复性事务,因此,有一些大批量交易类型。因为执行单个事务需要服务器与客户端中的多次通信,所以使用ODBC / JDBC执行这些操作不是最佳选择。

NoSQL中单次访问接口的应用程序,其中值被一对一地检索到客户端处理,也会有类似的通信开销,这不仅会导致多次客户端-服务器通信开销,而且还会导致对网络带宽使用造成不必要的压力。相反,如果使用存储过程接口,在这种情况下,事务执行代码(Java和SQL的混合)被移入DBMS,可以仅用一条通信消息执行它。1980年代中期Sybase引入存储过程时,相比到ODBC / JDBC接口数据访问,大约有5倍的性能优势。

因此,V-H使存储过程接口以获得更高的运行性能。

2.3 聚焦在主动-主动数据复制

基本上所有OLTP应用程序都需要高可用性(HA)。这要求每个对象被复制多次,并且崩溃时要求系统故障转移到备份。在正常处理期间,V-H必须确保处理所有副本都执行相关事务,或都不处理任何事务。只有这样,V-H才会实现“故障转移”而不会导致数据损坏。

执行副本更新有两种可行的策略:

2.3.1 主动-主动复制

即:事务在所有副本上执行,并在所有节点上本地提交。

在这种情况下,所有副本都是“活动的”,并且每个具有副本的站点都将进行事务处理。

例如,AT&T将让东海岸和西海岸的客户与最近的集群进行对话,并在后台进行主动复制同步。

2.3.2 主动-被动复制

即将一个副本指定为主副本,并首先在其中执行每个事务。日志记录写入此节点,然后通过网络移至备份节点。

在每个备份中,日志都会前滚以使辅助数据库与主数据库同步。

鉴于有两种可行的策略,应选择哪一种?

几年前,[Malvaiya]在VoltDB中实现了单副本崩溃恢复。他比较了两种策略:

1.在恢复时编写命令日志并重新运行命令

2.写入数据日志,并在恢复时将日志前滚。

他发现命令日志在执行期间的开销可以忽略不计,因此比数据记录方法快得多。[Yu]将此代码扩展到了复制,并实现了主动-主动和主动-被动复制。他发现主动-主动是性能优胜者,几乎是两倍。

所以VoltDB专注于主动-主动复制,这需要V-H偶然使用的确定性的并发控制策略。相反,大多数V-H竞争对手使用不确定的并发控制策略(例如,动态锁定,乐观并发控制,多版本并发控制)。因此,主动-主动不是这些系统的选择,它们也没有两倍速度优势。

总体而言,这三个决策使V-H可以比其他主要内存DBMS在事务处理上甚至可以快到一个数量级。在基准([Somagani],[Acme])测试中,V-H在合理大小的群集上每秒运行1M事务。到目前为止,这比我们所知道的任何客户工作负载都要快。因此,V-H竞争者可以按订单运行这些工作负载,但是需要投入更多的硬件成本。

不过伴随5G应用的兴起,这种竞争格局将发生巨大变化。

5G有望提供更高的带宽,更高的密度(每平方千米最多一百万个设备)和毫秒级延迟。设备的这种密度迫使新的无线接入网(RAN)小区技术避免饱和现有网络。反过来,这将成倍增加数据库TPS的数量,以便:

更新网络中每个设备的状态更改信息

对每个新设备通信都执行实时身份验证和授权策略此外,网络切片是5G要求,一部分网络专用于每个用例,例如:工业物联网,视频,VR等。每种情况都需要即时决策,以实现负载平衡和服务质量保证,以增加用户数量(人员+物联网设备)。

为了演示更高TPS的需求,让我们考虑一个典型的无线运营商示例:一个中等大小的运营商可能支持1000万部电话;较大的可能有1.5亿。典型的无线运营商具有大量事务交易型的应用程序。这里有一些例子:

计费和收费:当前的网络以6秒为增量计费,即每分钟10次。如果普通电话的占空比为10%,则小型网络每分钟有600万个计费事件,或每秒100,000个。对于较大的网络,该数目要高得多。随着时间的流逝,物联网设备的数量预计至少会翻两番。这样,计费将是一个非常高的TPS应用程序,并且在毫秒级的延迟下不会降低一致性要求。

新服务:物联网设备预计将继续在5G世界中启用新服务。这些将包括医疗警报应用程序,当人跌倒或摔倒时可连接到紧急人员救援。由于足球场中的订户非常集中,因此动态地旋转地理围栏子网以应对连接高峰。智能计量将实现个性化的客户体验和沟通,并促进对电网消耗,能源需求的分析,并符合新的法规要求。在风能和太阳能农场,5G还可以对IOT传感器进行连续监控和预测性维护。

总而言之,由于5G的特性,让很多应用的事务性操作需求飞速增长。

另外,大多数无线应用程序(例如计费)是单分区事务,可以充分发挥VoltDB的架构设计优势。对于这类应用程序,即便是中等大小的无线运营商,也必须每秒支持数百万个事务。大多数内存DBMS并不能支持这种数量的事务。

VoltDB是一个例外,我们一些准测试也显示了架构理念上的领先性。如果您是KTPS应用程序(每秒数千个事务),那么有很多解决方案。但如果您期待MTPS(每秒数百万个事务),请尝试一下VoltDB。

作者:Michael Stonebraker

参考引用

[Harding] http://www.vldb.org/pvldb/vol10/p553-harding.pdf

[Malvaiya] http://hstore.cs.brown.edu/papers/voltdb-recovery.pdf

[Yu] http://www.cs.cmu.edu/~pavlo/blog/2013/12/fall-2013-research.html

[Somagani] https://www.voltdb.com/blog/2018/11/06/benchmarking-voltdb-on-the-cloud/

[Acme] https://www.voltdb.com/blog/2015/11/17/comparing-cloud-performance-ycsb/

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

5G革命:如何让「数据」实现最大性能?的更多相关文章

  1. Linux 小知识翻译 - 「packet」(网络数据包)

    用手机接收邮件或者访问网页的时候,一般会说有「packet费用」(这是日本的说法,在中国好像一般都说 “流量费”),即使对网络不太熟悉的人也知道「packet」这个词(这里也是日本的情况). 那么,「 ...

  2. 将 Azure SQL 内数据下载到本地,满足企业的「数据收集」

    嫌长不看版 本文介绍了通过复制和导出两个操作,将 Azure SQL 数据库中的内容转移至其他位置(例如本地环境)的具体做法.借此可以帮助用户在 Azure 中运行数据库的同时,在本地或指定的其他位置 ...

  3. 「Sqlserver」数据分析师有理由爱Sqlserver之二-像使用Excel一般地使用Sqlserver

    大家一谈数据库,就觉得非常高深莫测,深不见底,非凡人敢去触摸.但Excel的话,没人敢说自己不会使用吧(相反一大堆人的简历上写着精通OFFICE所有软件套件).换作其他非微软厂商的数据库,的确很容易产 ...

  4. 「Sqlserver」数据分析师有理由爱Sqlserver之九-无利益关系推荐Sqlserver书单

    在前面系列文章的讲述下,部分读者有兴趣进入Sqlserver的世界的话,笔者不太可能在自媒体的载体上给予全方位的带领,最合适的方式是通过系统的书籍来学习,此篇给大家梳理下笔者曾经看过的自觉不错值得推荐 ...

  5. 「Azure」数据分析师有理由爱Azure之一-Azure能带给我们什么?

    前面我们以相同的方式从数据分析师的视角介绍了Sqlserver,本系列亦同样地延续下去,同样是挖掘数据分析师值得使用的Azure云平台的功能.因云平台功能太多,笔者所接触的面也十分有限,有更专业的读者 ...

  6. SpringBoot图文教程10—模板导出|百万数据Excel导出|图片导出「easypoi」

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...

  7. 「MoreThanJava」机器指令到汇编再到高级编程语言

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  8. 「译」JUnit 5 系列:扩展模型(Extension Model)

    原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Lin ...

  9. JavaScript OOP 之「创建对象」

    工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程.工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题. function createPers ...

随机推荐

  1. centos8平台:举例讲解redis6的ACL功能(redis6.0.1)

    一,为什么redis6要增加acl功能模块? 什么是acl? 访问控制列表(ACL)是一种基于包过滤的访问控制技术, 它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃 redis6增加了 ...

  2. centos8平台使用iotop监控磁盘io

    一,iotop的作用: iotop是监视磁盘I/O使用状况的top类工具, 可以针对进程和线程统计io的使用情况 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblog ...

  3. javascript arcgis 取区域中心点

    javascript arcgis 取区域中心点 //graphic是绘制完多边形之后返回的对象 //获得多边形的中心点坐标 var centerPoint=graphic.geometry.getE ...

  4. 小tip:CSS计数器+伪类实现数值动态计算与呈现【转】

    [原文]http://www.zhangxinxu.com/wordpress/2014/12/css-counters-pseudo-class-checked-numbers/ 一.CSS计数器为 ...

  5. windows注册redis为服务,zookeeper为服务

    windows注册redis为服务,zkserver为服务 1.redis部分 通过redis内置工具安装 进入redis安装目录 1.shift+鼠标右键打开菜单,点击"在此处打开命令窗口 ...

  6. 超简单集成HMS ML Kit文字超分能力,一键提升文本分辨率

    前言 大家有没有遇到过这种情况,在浏览微博或者公众号时看到一段有趣的文字,于是截图发到朋友圈想和好友分享.但是在发布图片时,软件会对图片强制进行压缩,导致图片分辨率下降,文字变得模糊难以阅读.那么有没 ...

  7. app反编译遇到360加固,傻瓜式脱壳

    转载https://blog.kieng.cn/2051.html 第一步 电脑安装安卓模拟器,我使用的是雷电模拟器(推荐). 第二步 打开模拟器,准备安装软件: 1.需要脱壳的软件 2.XP 框架. ...

  8. AQS 自定义同步锁,挺难的!

    AQS是AbstractQueuedSynchronizer的简称. AbstractQueuedSynchronizer 同步状态 AbstractQueuedSynchronizer 内部有一个s ...

  9. 观察者模式EventBus

    EventBus能够简化各组件间的通信,让我们的代码书写变得简单,能有效的分离事件发送方和接收方(也就是解耦的意思),能避免复杂和容易出错的依赖性和生命周期问题. implementation 'or ...

  10. 开源!一款功能强大的高性能二进制序列化器Bssom.Net

    好久没更新博客了,我开源了一款高性能的二进制序列化器Bssom.Net和新颖的二进制协议Bssom,欢迎大家Star,欢迎参与项目贡献! Net开源技术交流群 976304396,禁止水,只能讨论技术 ...