与Andrei Gorine讨论大数据的时间序列

作者:Roberto V. Zicari

“Time series data” are sequential series of data about things that change over time, usually indexed by a timestamp. The world around us is full of examples –Andrei Gorine. “时间序列数据”是随时间变化的连续数据序列,通常由时间戳索引。 我们周围的世界充满了这样的例子 ”- Andrei Gorine。

2018年5月6日,我采访了McObject联合创始人兼首席技术官Andrei Gorine。
访谈的主要内容包括:时间序列分析,“片上”分析,大数据的高效处理以及STAC M3 Kanaga基准。
Q1.谁在使用时间序列分析?
Andrei Gorine:  “时间序列数据”是随时间变化的连续数据序列,通常由时间戳索引。 我们周围的世界充满了这样的例子:
• 自驾车辆不断从周围环境读取数据点 - 距离,速度限制等。这些读数通常以时间序列数据的形式收集,分析并与其他测量数据或机载数据(如当前速度 )使汽车转弯以避开障碍物,减速或加速等。
•零售行业的销售点系统收集每笔交易的数据,并将这些数据传达给实时分析的后端:允许或拒绝信用,调度货物并延伸到接下来的相关零售优惠。 每次使用信用卡时,信息将被放入时间序列数据存储中,并通过复杂的市场算法与其他相关数据相关联。
• 金融市场交易算法不断收集着时刻变化的市场的实时数据,运行算法评估策略并最大化投资者的回报(或者最小化损失)。
•  Web服务和其他Web应用程序每秒会瞬时注册数以亿计的事件,并通过分析时间序列数据集形成响应。
• 工业自动化设备从各种工业环境中的数百万传感器收集数据 - 工厂,设备,机械,环境。 控制器运行分析来监控生产过程的“健康”,做出即时的控制决策,有时防止灾难,但更常见的是简单地确保平稳生产。

Q2.为什么列式数据布局对时间序列分析很重要?
Andrei Gorine: 时间序列数据库具有一些由它们存储的数据性质决定的独特属性。 其中之一是时间序列数据可以快速积累的简单事实,例如, 交易应用程序可以每秒添加数百万的交易和报价(trade-and-quote “TAQ”)元素,而基于高分辨率计时器的传感器可生成堆和堆数据。 另外,时间序列数据元素通常由时间戳顺序接收并写入数据库。 具有连续时间戳的元素在存储介质上线性排列,彼此相邻。 此外,对于时间序列数据的典型查询是基于数据时间戳的分析查询或聚合(例如,计算简单移动平均数或某个时间段内股票的成交量加权平均价格)。 换句话说,通常数据请求必须能够访问同一时间序列中的大量元素(实际上通常是数百万个元素)。
数据库查询的性能与满足请求所需的I / O调用数量直接相关:较少的I / O有助于提高性能。列式数据布局显著缩小工作集数据大小 - 与每行开销相比,假设的每列开销可以忽略不计。例如,给定每行保守20字节的开销,在行式布局中存储4字节度量(每行1个时间序列条目)比列式布局多6倍的空间(例如,每行消耗24个字节,而一个列式布局中的附加元素只需要4个字节)。由于在列式布局中存储时间序列数据所需的存储空间较少,因此需要较少的I / O调用来获取任意数量的实际(非开销)数据。列式布局另一个节省空间的特性是内容压缩 - 列排列允许更高效且算法更简单的压缩算法(例如对列进行运行长度编码)。最后,基于行的布局包含许多列。换句话说,当数据库运行时读取一行数据(或者更常见的是一行行)时,它正在读取许多列。当仅需要分析一列

列式数据库中存储和检索时间序列数据的顺序模式(通常称为“空间位置”)使得各种缓存子系统的内容(包括所有级别的CPU缓存)的保留性更高,同时运行查询。将相关数据靠近处理器对性能至关重要:L1缓存访问比L2缓存访问快3倍,比L3非共享线访问快10倍,比访问RAM(i7 Xeon)快100倍。同样的状态下,利用各种向量操作的能力以及日益增长的SIMD指令集(单指令多数据)尤其有助于加速聚合计算。例子包括同时对一个大寄存器中包含的多个值进行操作的SIMD向量指令,Intel上的SSE(Streaming SIMD Extensions)指令集和PowerPC上的AltiVec指令,流水线(即CPU内部分阶段完成的计算),以及更多。

Q3.什么是“片上”分析?它与其他任何数据分析有何不同?
Andrei Gorine: 这也称为“芯片内”分析。几十年来,流水线的技术概念已成功应用于计算领域。流水线操作是指一系列数据处理元素,其中一个元素的输出是下一个元素的输入。自从引入RISC CPUs以来,指令流水线已经用于CPU设计,而现代GPUs(图形处理器)流水线常见渲染操作的各个阶段。软件流水线优化的元素也可以在操作系统内核中找到。

时间序列数据布局是使用流水线方法的理想选择。时间序列数据上的操作(函数)(在我们的产品时间序列数据中称为“序列”)通过“迭代器”实现。迭代器携带与函数执行相关的数据块(我们将这些数据块称为“片状数据”)。序列函数接收一个或多个迭代器输入,执行所需的计算并将结果写入迭代器输出。接着,该迭代器输出传输到流水线上下一个函数的作为迭代器输入,通过一组操作将数据从数据库存储移动到内存中的结果集,构建一个流水线。此流水线中的“节点”是操作,而边(“通道”)是迭代器。临时操作结果未在内存中实现。相反,元素的“片状数据”通过流水线传递,其中每个片状数据由迭代器引用。片状数据是流水线中运营商之间数据交换的单位。片状数据小到可以保持在顶级L1 CPU缓存中,但又足够大可有效地使用现代CPU的超标量和矢量功能。例如,128个时间序列元素适合32K缓存。因此,术语“片上”分析也称“芯片内”分析。如上所述,顶级缓存访问速度比二级(L2)缓存访问速度快3倍。
为了说明该方法,请考虑x * y + z操作,其中x,y和z是大序列,或者如果你愿意,可以考虑向量(可能是兆字节甚至千兆字节)。 如果创建了第一个操作(x * y)的完整中间结果,则在接收到它的最后一个元素时,临时序列的第一个元素已经被推出缓存; 第二个操作(+ z)必须从内存加载它。 基于平铺的流水线操作则避免了这种情况。

Q4. 在执行分布式查询处理时,面临的主要技术挑战是什么,并确保在使用大数据时同时具有高可扩展性和低延迟?
Andrei Gorine:
高效的大数据处理几乎总是需要数据分区。在多个物理节点上分布数据,甚至在同一节点上分区,并行执行软件算法,通过最大化CPU负载和利用存储介质I / O并发性来实现更好的硬件资源利用。软件查找和分析算法通过最小化运行查询所需的内存分配等来利用每个节点的简化数据集。但是,分布式数据处理带来了许多挑战。从数据库管理系统的角度来看,挑战是双重的:分布式查询优化和数据分发。
首先是优化分布式查询执行计划,以便调整在本地节点上运行的每个查询实例,以最小化I / O,CPU,缓冲区空间和通信成本。复杂查询会导致复杂的执行计划。复杂计划需要通过收集,共享和分析分布式设置中的统计信息来有效地分发查询。分析统计数据即使在本地也不是一项简单的任务,但在分布式系统环境中,任务的复杂性要高出一个数量级。
其次,在分布式设置中需要引起很多关注的另一个问题是运行时分区修剪。 分区修剪是一项重要的性能特征。 简而言之,为了避免每次编译查询,查询已经准备好了表单(例如,“select..where x = 10”被替换为“select..where x =?”)。 问题是,在未准备好的表单中,SQL编译器能够确定查询最好在某个已知节点上执行。 然而在第二种准备形式中,编译器不知道“最佳”节点。 因此,要么将查询发送到每个节点,要么在执行阶段期间使用给定的键值定位节点。即使SQL执行计划针对分布式处理进行了优化,分布式算法的效率也很大程度上取决于数据分布。 因此,第二个挑战通常是找出数据分布算法,以便优化给定的一组查询。
数据分发对于JOIN查询尤其重要 - 这可能是分布式SQL开发人员面临的最大挑战之一。 为了构建真正可扩展的分布式连接,最佳策略是使所有相关表中的记录具有位于同一节点上的相同键值。 在这种情况下,所有连接实际上都是本地连接。 但是,在实践中,这种分布很少见。 一种流行的JOIN技术是在分割大型表时在所有节点上使用“fact”和“dimension”表。 但是,构建维度表需要应用程序开发人员的特别关注。 分布式JOIN问题的最终解决方案是实现“shuffle join”算法。 然而,高效的随机连接很难组合在一起。

Q5.什么是STAC M3 Kanaga基准测试,它有什么用?
Andrei Gorine:  STAC M3 Kanaga模拟金融应用程序在大型数据集上的模式。数据通过简化的历史随机数据集表示,反映了十年的交易和报价(trade and quote data TAQ)数据。整个数据集大小约为30太字节。 Kanaga测试套件包含许多基准测试,旨在比较其“System Under Test被测系统”(SUT)的不同方面,但主要是为了突出所使用的硬件和DBMS软件的性能优势。 Kanaga基准规范由全球银行和贸易公司的从业者编写,以模仿交易分析的现实模式。我们对STAC-M3基准测试的实现旨在通过将基准测试的大数据集划分为多个称为“分片”的较小部分来充分利用底层物理存储I / O通道和来最大化CPU负载。基于可用的硬件资源,即CPU核心和物理服务器的数量,I / O信道,有时是网络带宽,分片的数量可以从几十到几百不等。然后,数据库系统并行处理每个分片的数据,通常使用专用CPU核心和媒体通道,并且该处理的结果(计算的平均值等)由我们的分布式数据库管理系统组合成单个结果集。

Kanaga测试套件包括许多基准金融市场应用模式的基准:
一个I / O绑定的HIBID基准,计算一段时间内(在Kanaga中指一年内)的高出价报价。 数据库管理系统通过并行化时序处理和大量使用单指令,多数据(SIMD)指令来优化处理,但物理存储能够实现的总IOPS(每秒输入/输出)是接收的重要因素 更好的结果。
“市场快照”基准强调了SUT--数据库和底层硬件存储介质,要求它们在模拟真实世界金融应用程序的多用户数据访问模式的高负载并行工作负载下运行良好。 在此测试中,(A)并行执行列存储操作的能力,(B)有效索引和(C)低存储I / O延迟在获得更好结果方面起着重要作用。
一天内的成交量加权平均出价(VWAB)基准。 在软件方面,VWAB基准测试受益于上面讨论的列式存储和分析功能流水线技术的使用,以最大限度地提高CPU缓存利用率和CPU带宽,并降低主存储器需求。 硬件方面,I / O带宽和延迟起着显着的作用。

————————–
首席技术总监—Andrei Gorine
Andrei Gorine是McObject的创始人之一,也是公司的CTO。Gorine主要负责产品技术,推动实现了eXtremeDB实时嵌入式数据库系统从产品概念到如今广泛被用于嵌入式系统市场的跨越。Gorine曾在领先的嵌入式系统和数据库软件公司任要职,有丰富的技术经验。他在工业控制、工业预防性维护、卫星和有线电视,及电信设备提供的嵌入式存储解决方案得到业界的广泛认可。Gorine曾多次在关于实时数据库系统、高可用性和内存管理的相关会议上发表文章及言论。在他的职业生涯中,Gorine参与了实时数据库领域的学术和工业研究计划,并持有电机设备莫斯科研究所的计算机科学硕士学位,还是电器和电子工程师协会和美国计算机协会的成员。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值