事务分析(Translytic)仅仅是换了个名字的OLTP吗?

在这里插入图片描述
最近,Forrester开始关注事务分析(translytics)和事务分析数据库(Translytical Database)。所谓事务分析数据库,就是“事务发生的瞬间即可提供分析”的数据库。这是营销炒作?还是真有其事?

传统的OLTP数据库处理大量火烧眉毛的快速事务,但实际上并没做多少。一个OLTP数据库应用程序通常涉及:

  • “共享有限资源”——
    正被评估、分配或使用着的有价值的对象。有时,多个事务将尝试使用相同的“共享有限资源”。在传统的RDBMS中,这是通过行级锁定来处理的。

  • 大量类似的ACID交易。

  • 低延迟,通常在单位数毫秒范围内。

术语“Translytics”(事务分析)是指具有附加功能的OLTP- 因此OLTP是Translytics的子集,它增加了

  • “计数”- 事务分析数据库需要准确保持由任意事务组不断更改的运行总计。“现在这个邮编区域内有多少辆汽车?”就是一个例子。
  • “聚合”与获取传入事务流并生成新数据有关,这些数据可跨多个事务合并多个数据。您的家庭DSL连接每小时使用多少带宽就是聚合的一个示例,因为我们将每天不可预测的输入记录转换为日均24个输出记录。在某些用例中,我们可以靠猜蒙混过关,在其他用例中,我们可能被法律要求必须具有100%的准确性。
  • “Telling”是向下游系统发送数据的过程。在某些时候,世界上其他地方需要知道你正在做的OLTP内容,但外界如何知道要看些什么?通常会看到花费大量时间和精力来轮询OLTP系统以查看已发生变化的情况。

现在能肯定这一切都很容易吗?如果是每秒少量交易的小规模,这不是问题。但随着工作量的增加,这将变成一个重要的计算问题。

传统的RDBMS产品无法处理重要的事务分析工作负载。

当您在旧版RDBMS中发出查询时,它会尝试根据您执行查询时的数据的样子给出答案。对于快速运行的查询,这不是一个因素,但是查询保持运行的时间越长,服务器就越难以“记住”查询发出时所有行的样子,因为它们可能从查询发布的那一刻起已经反复更改。

为一个查询执行此操作是可管理的,但是当为了“计数”和“聚合”而每秒发出数百个这样的查询时,开销就变得完全无法管理。

NoSQL产品无法实时准确地进行聚合和计数

扫描二维码关注公众号,回复: 5488715 查看本文章

NoSQL产品更难以发现“计数”和“聚合”,因为它们的ACID实现通常仅限于单个记录或键/值对。这使得很难以任何精度计算或聚合多个“事物”。“Telling”也可能非常困难,因为有些产品(例如Cassandra)不喜欢您需要发出的范围查询,以获取记录块以供给下游系统。

VoltDB的架构非常适合事务分析(Translytics)

VoltDB非常擅长传统的OLTP工作负载,客户工作负载通常超过100KTPS,有时甚至超过这个数量。但它也具有对Translytics非常有用的功能:

物化观点

VoltDB的物化视图与传统的RDBMS中的工作方式不同。在传统的RDBMS中,视图是伪装成表的SQL查询。

当您查询“视图”时,您会发出基础查询,可能还有一些基于WHERE子句的其他复杂情况。虽然“视图”的实现不会减慢插入速度,但是读取它可能非常昂贵,导致我们上面讨论过的“计数”,“聚合”和“Telling (告诉)”问题。

在VoltDB中,物化视图实际上是一个真实的表,每次更新它所基于的基础表时都会更新。事实证明,在VoltDB中执行此操作的增量成本很小- 执行时间增加了几个百分点。但是当您从VoltDB物化视图中“选择”时,您可以简单地读取所需的答案,而无需发出触及基础表中数千个易失行的昂贵的读取一致性查询。

导出流

OLTP系统的一个典型问题是告诉其他连接系统在聚合级别上发生了什么。如果我们在某个时刻跟踪预付费电话的使用情况,我们需要报告拨打电话的次数,费用等等。正如我们上面提到的,这不易扩展。

VoltDB具有“导出流”的概念。它就像一张桌子,只是这张桌子只允许你"插入"。当您插入一行时,它会被放置在一个“至少一次”队列中,该队列连接到任何有效的外部目标,无论是HDFS,Kafka,HTTP还是您自己实现的目标。

INSERT(插入)具有其他语句所做的所有ACID语义,因此INSERT既可以作为事务的一部分发生,也可以根本不发生。

导出流因为它们存在于分区级别而具有缩放性,因此如果您有12个分区和2个导出流,则总共将有24个导出流。

记录到达目的地的速度在很大程度上取决于您导出的平台- 例如,如果您写入HDFS,与写入数据库服务器上的CSV文件相比,记录将显示更长时间。

导出流也可以与物化视图结合使用,因此您可以在保留有用的状态摘要的同时向下游写入信息,例如上次查看客户时。

从开发人员的角度来看,导出流允许将任意消息发送到具有高性能,最小麻烦和ACID语义的下游系统。它还允许我们执行Translytics工作负载的关键“Telling”部分,因为如果您无法告诉任何人,那么实时进行聚合计算毫无意义。

结论

“Translytics”不仅仅是OLTP的一个奇特名称。它将OLTP系统的传统和易于理解的功能与现代要求相结合,实时生成聚合和总计数据,从而满足业务需求。传统的RDBMS和NoSQL产品都很难很好地实现这一目标,而VoltDB具有重要的架构优势。欢迎大家下载并查看。

关于VoltDB

VoltDB是唯一适用要求将前所未有的数据规模,实时分析,数量和准确性进行完美结合的应用程序的内存关系数据库。VoltDB支持所有三种现代应用程序数据要求:百万级用户和数据源的数据点处理能力;以毫秒为单位摄取、分析和处理数据;对所有决策的管理数据始终保持准确。单位组织依靠VoltDB来构建和现代化其应用程序,推动其业务和运营洞察力。VoltDB由世界级数据库专家团队创建,其中包括ACM图灵奖获得者 Michael Stonebraker 博士。

更多请访问:www.voltdb.asia
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43965756/article/details/87701390