GIAC专访丨DolphinDB研发总监周信静:实时计算,连接时序数据库和核心业务
随着物联网IoT场景的兴起,大量的时序数据需要存储与计算。时序场景不同于传统OLTP,其写入吞吐要求极高,同时数据量也远大于OLTP场景,必须要进行多机分布式存储;同时事务又是一个很好的特性,许多工业控制IoT场景和金融场景需要事务,而现有时序数据库产品鲜有事务的支持。如何构建一个支持读写事务、高写入吞吐、读不影响写吞吐的分布式时序数据库是一个很大的挑战。
DolphinDB时序数据库集成了功能强大的编程语言和高容量高速度的流数据分析系统,为海量结构化数据的快速存储、检索、分析及计算提供一站式解决方案,很好的解决了上述难题。
在今年召开的全球互联网架构大会(简称“GIAC”)上,DolphinDB研发总监周信静受邀出席会议,并在“基础架构”主题专场作《强一致、高吞吐的分布式时序数据库架构设计》演讲。讲解了DolphinDB如何引入MVCC多版本控制+2PC分布式事务,实现数据写入强一致性,读不影响写;同时利用时序数据插入多,更新极少的特点,设计实现了基于LSM的存储引擎,达到了写入高吞吐。
会后周信静接受了GIAC大会的专题采访,以下内容为采访原文。(转载自公众号:高可用架构)
1. 简单介绍自己
我叫周信静,硕士毕业于浙江大学,毕业后在腾讯云数据库做CynosDB/CDB内核研发工作,目前在DolphinDB从事存储引擎研发工作。
2. 聊聊你近一年正在做的项目,它的技术价值怎样?它的行业发展状况是怎样?你负责项目的技术亮点和挑战能否展开讲讲?
从事DolphinDB的数据存储引擎项目,主要解决大规模时序数据的高效存储和检索问题。很多人认为时序数据库不支撑核心业务,数据的一致性,以及支不支持事务都无所谓。因此现有时序数据库普遍存在的问题是大多数不支持事务,比如influxdb。如果我们只是用于可视化,一些简单的统计,的确不重要。但是希望通过数据来决策,反控我们的交易,我们的设备,就很重要。举个例子,股票市场的快照数据3秒钟一批,同时数据量很大的话我们往往会把数据进行分布式存储存储在多机。那么如果我们在交易决策的时候,一部分分股票是3秒钟前的数据,一部分股票是现在的数据,那肯定会出大问题。DolphinDB 用两阶段提交协议实现了分布式事务,为写入提供了事务支持,能很好的解决这个问题。同时时序数据库具有写入量巨大的挑战,我们的客户希望写入量巨大的同时下还能够执行大规模的数据分析,这要求读写不相互影响。为了解决这个问题DolphinDB在两阶段提交基础上实现了MVCC 机制,提供了全局快照读的隔离级别,同时读取不会影响写入,写入也不会影响读取。
3. 在技术方案落地的过程中,你通常关注哪些问题?如何保证技术方案顺利实施? 技术方案顺利实施
1. 注重早进行方案review,早讨论:技术方案出来的时候先和团队成员进行讨论,集百家之所长。因为每个人看一个问题角度不一样,一个人刚想出来的方案往往也不是面面俱到的。但是多个人的思维组合起来一般是比较全面的,因此方案的及时review和讨论是很重要的,能确保方案考虑的点比较全面,减少返工。
2. 代码review
3. 测试:单元测试、 regression测试,集成测试
4. 架构师在近的技术变化的浪潮中,需要面对的挑战都有哪些?如何应对这些挑战?
近的应用程序云原生化趋势越来越明显,甚至有很多这是未来,也是每个架构师需要了解和掌握的。新技术层出不穷,为了保持竞争力,一方面是要经常了解业界新动态,通过博客,公众号,Twitter,学术会议等等;另一方面则是继续磨练基本功,算法与数据结构、操作系统、数据库内核等原理性技术永远都不会过时,特别是基础软件领域,新技术往往也是这些基础的组合创新,因此经常关注这方面基础内容也是非常重要的。
5. 在做技术选型的过程中,你经常考虑的问题有些?
1. 是否是软件的关键路径。
a. 非关键路径注重简单和可靠:基础软件大部分代码是非关键路径,为了让软件工程更加容易,往往会选择注重方案的简单性, 同时简单的代码往往是可靠的。
b. 关键路径注重性能:因为关键路径往往只占据代码的一小部分,但是又是会被经常执行的部分,这个时候选择的方案会偏向于性能大化。
2. 伸缩性:数据库软件支持的数据量可大可小,但是一些问题可能只在大数据量下才会显现。因此在方案设计的时候会考虑算法针对数据量是否有足够高的伸缩性,比如选择的一个算法针对数据量是否有足够高的伸缩性,关键路径上的算法能选择O(LogN)的,绝不会选O(N)。
6. 相比于其他开源的时序数据库和国内竞争产品如阿里云的产品,TDENGINE等,DolphinDB的优势在哪里?
首先DolphinDB的时序存储引擎伸缩性高,解决了海量时序序列存储和检索的问题;其次, DolphinDB的事务特性是现有时序数据库产品中少有的,也是我们的客户非常喜欢的特性;再者, 现有时序数据库往往只提供了存储引擎的实现,计算能力较薄弱,但是时序数据库往往重要的部分其实是能从海量的时序数据中发掘洞察,这就要求数据库有丰富的计算功能。DolphinDB计算引擎功能则非常丰富,提供了超过1000多个计算函数,极大简化与加速物联网领域的数据挖掘。同时DolphinDB的计算引擎另外一个非常有特色的功能是流批一体流计算能力。在金融和物联网领域,研发环境中,看到的是全量数据。在生产环境中,我们往往看到的是增量数据,这两者的计算方式有很大不同。DolphinDB为此提供了用于生产的流计算引擎,生产和研发可以共用代码,这是我们金融券商、私募、物联网客户非常喜欢的计算功能,经常被用在交易策略、实时物联网数据分析上。我们客户普遍希望降低研发周期长度,减少研发成本,DolphinDB这套流计算系统大大缩短了从原始数据到研发到生产的总体周期,非常好的解决了这个问题。
7. 云原生领域你看好哪个项目或技术,为什么?
Serverless技术,越来越多的应用都在上云,但是云计算想要达到的elasticity和ease of management 在现有的云上还没有完全实现,比如用户还是需要自己维护虚拟机上的内容,伸缩虚拟机还是需要用户自己手动操作,只是把物理服务器的运维工作交给了由云厂商。Serverless技术的愿景是让用户尽量不关注虚拟机资源分配等运维工作,而是尽量只关注应用本身,同时按应用调用量和流量来做弹性计费和自动伸缩,降低用户的运维负担,我觉得这才是云计算的终形态和未来。
8. 请介绍下你这次在giac演讲的议题或者负责的专题内容
主要会谈一下DolphinDB是怎么设计时序数据库,包括事务在分布式时序数据库中的重要性以及DolphinDB这方面的观点,还会涉及到DolphinDB下一代时序数据库存储引擎的设计。
来源 https://zhuanlan.zhihu.com/p/413880133
相关文章