要知道,数据库的开发难度仅次于操作系统,要花上七八年甚至更久的周期,所以将一个数据库的原型转变成真正可商业化落地的项目,是一个漫长且充满困难的过程。然而,周小华做到了。他从华尔街顶级投资银行发现商机,用四年时间从零开始打造了分布式时序数据库 DolphinDB 的原型,然后回国创业,将先进的时序数据库技术引入国内。本文,InfoQ 采访了浙江智臾科技有限公司(DolphinDB 智臾科技)CEO 周⼩华,以期深入了解这个处在爆发前夜的技术。
为什么说这个时代需要分布式时序数据库?
在国外的金融行业,时序数据库已经应用了很长一段时间,华尔街上的很多公司在 2000 年之前就开始使用时序数据库来解决金融行业的问题了。国内金融领域,特别是券商、私募、公募等行业,差不多最近三年在 DolphinDB 的带动下才开始使用时序数据库。
在物联网行业,全球范围内使用时序数据库的时间还不到 10 年,国内差不多有 3 到 5 年的时间,基本都停留在第一阶段:通过大量使用单机版时序数据库完成数据采集、数据查询、监控等简单工作。周小华预计,在未来 5 年内,时序数据库会迎来爆发性增长。
在物联网领域,随着传感器采集数据量的爆炸式增长,越来越多的场景每秒超过 50 万测点甚至 1000 万测点。对于这个量级的数据,单机版时序数据库已经无法满足业务要求了。与此同时,最近几年,分布式时序数据库技术越来越成熟和完善,已经进入到大规模落地应用阶段。虽然物联网领域对于时序数据库的应用还处于比较浅的阶段,但是企业逐渐意识到数据的价值,未来会有越来越多的企业希望利用时序数据库挖掘出更多有价值的信息。
在金融领域,由于使用时序数据库的第一批头部客户的示范作用,大部分金融机构会很快意识到采用高性能时序数据库所带来的竞争优势。5 年后,时序数据库会在金融机构成为标配。
当然,任何一项技术的成熟都离不开资本的进入。周小华表示,投资机构今年对时序数据库赛道的热情高涨。据周小华介绍,投资机构对时序数据库的调研,主要关注的是短期内能否在金融领域实现快速增长,以及中长期时序数据库在物联网的应用场景的变现能力。
周小华认为,只有当时序数据库可以根据采集的数据智能控制设备,优化流程和工艺,或者影响交易和决策,其价值才会被体现,更多的客户也才会接受这一新型数据库。这也是未来时序数据库发展的重要方向。此外,投资机构也比较关注产业的上下游问题。在物联网领域,时序数据库的推广离不开集成厂商的支持。国内有大量做系统集成的软件企业,如果可以和这些厂商进行深度合作,将会对时序数据库的未来推广起到非常重要的作用。
以 C++ 开始,历经十年打磨
在华尔街工作的时候,周小华就发现,很多顶级券商与对冲基金处理高频数据的一款时序数据库存在一些非常明显的缺点。例如,由于其开发时所处时代的局限,没有内置分布式功能,无法实现分布式计算;语言晦涩难懂,学习与维护成本极高。周小华敏锐地意识到,如果能解决分布式问题,并且更容易使用,无疑会有广阔的市场。
在这样的时代背景下,加之在华尔街的亲身所感,周小华与几位志同道合的旅美博士,从 2012 年开始从事分布式时序数据库的原型开发。当时数据库开发的主流编程语言基本都是 C 和 C++。由于 C++ 的开发效率比 C 高很多,所以 DolphinDB 就自然地选择了 C++。由于 Java 的开发人员比 C++ 还要多一些,也有一些其他的时序数据库开发选择的是 Java。
周小华表示,DolphinDB 的开发过程可以分为四个阶段。第一个阶段是原型开发,主要是单机版原型,包括了时序存储引擎、编程语言和计算引擎。这个过程大概用了四年时间。花费如此长时间打磨的主要原因是绝大多数单机版数据库原型不包含编程语言和函数库,而周小华认为与关系型数据库不同,对时序数据库而言,函数库和编程语言是非常重要的。关系型数据库要确保业务流程的正常运转,并保证数据的正确性,这是关系数据库最主要的可信功能;但是时序数据库最核心的功能是从海量数据中发掘价值,为业务提供帮助。数据分析的必要条件是编程语言与函数库,因此周小华在这个阶段就主持开发了一门完整的编程语言和非常强大的函数库。
第二阶段,DolphinDB 引入了分布式的功能,包括分布式存储和分布式计算。
第三阶段主要是对流计算的重要支持。项目发展之初主要是为了解决数据存取和历史数据分析问题。到第三阶段,整个团队发现流数据是大量客户的刚需,所以在流数据分发与计算方面投入大量资源。客户不需要开发大量代码,只要对 DolphinDB 内置的流数据引擎做一些简单配置,即可进行流数据实时计算,满足业务上的计算需求。
第四阶段也是 DolphinDB 目前的阶段,主要是提供对多模数据库的支持。DolphinDB 希望在时序数据存储引擎基础上,提供多个存储引擎。这是由于 DolphinDB 在开拓市场的过程中,发现众多企业需要开发数据中台,集成时序数据、业务数据、半结构化数据等多种类型的数据,因此需要多模数据库引擎。
最终,经历了多轮迭代的 DolphinDB 内置了分布式文件系统、多种流数据引擎,拥有强大的计算能力,并且采用强一致性协议,满足基本的事务支持,足以支撑超大规模数据量的计算以及 7x24 小时的稳定运行。2018 年初,DolphinDB 首先在国外一些投行、基金公司、量化对冲基金试用。从 2018 年下半年开始,DolphinDB 推向国内金融行业与物联网行业,并迅速收获了一大批各领域的头部客户。
周小华表示,DolphinDB 希望为用户输出四方面的价值:一是希望为客户提供稳定的分布式集群,满足物联网 24 小时不间断运行的应用需求,即便是对稳定性要求极高的能源行业、电力行业也可以完美支撑;二是为客户提供强大的计算引擎,满足客户对历史数据、实时数据计算和建模的需要,从数据中挖掘价值,进而控制设备,并优化流程和工艺,影响交易及决策;三是持续与行业客户和集成商合作,打造各行业的函数库,或者说算法库,只有这样才能让各行各业都用起来,创造更多的价值;四是提供轻量级的一站式解决方案,降低企业使用大数据的综合应用成本,让大量的传统企业也能够高效使用大数据。
至关重要的低成本数据存储
在物联网时代,数据量日益增大,谁能真正将低成本数据存储做好,才有希望突出重围。
在设计思路上,DolphinDB 针对这个问题进行了特别优化。周小华表示,除了列式存储的设计思路之外,DolphinDB 还增加了对多值模型的支持。多值模型可以降低存储成本,大大缩小数据冗余。
DolphinDB 支持多层数据介质,不对客户的数据存储介质有特殊要求,企业可以按照自己的需求进行选择。为了降低数据库延迟,提升吞吐量,DolphinDB 最多是在数据库日志和元素程度上使用部分 SSD。但这部分非常小,一个服务器配一个 256G 的磁盘就足够。具体的数据存储都可以使用 HDD 磁盘,这样用户的承租成本可以降到最低。
在压缩算法层面,DolphinDB 使用的最主要算法是 LZ4 算法及其变种。时间类型上,采用 Delta of Deta 算法,因为这个算法对时间的压缩比非常高。此外,DolphinDB 对字符串类型的字典压缩算法也做了创新。由于字符串的存储成本与数据查询成本都非常高,所以团队自研了压缩算法,该算法对字符串类型的压缩效率和查询效率都有很大提升。
流批一体
我们应该如何理解流批一体呢?批量计算主要用于研发环境,离线对数据库中的历史数据进行分析和建模。流主要用于生产环境,研发阶段得到的核心代码和模型可以直接用于时序数据进行预测、预警或者交易决策,二者使用同一批代码,我们称之为“流批一体”。
无论是金融行业还是物联网行业,流批一体都非常重要。一个企业是否能及时响应用户需求会直接影响企业的价值增长。在很多场景中,实时计算的需求已经高于传统的计算需求了。
具体来说,在研发阶段得到的代码直接用于生态环境进行预测,其好处如下:
第一,赢得了先发优势。研发结束以后,代码就可以直接用到生产环境中,不需要在生产环境重新实现。
第二,解决了 PDO 两套开发成本的问题;
第三,规避两套体系可能带来的不一致风险。如果流计算的结果与批计算的结果不一致,会带来很多问题。
当下,DolphinDB 的“流批一体”方案已经在金融行业进行了大规模落地,可以将量化回测开发的大量因子用在流数据场景中,只需要很低的延时就可以把这些因子计算出来,这也是金融领域非常高频的应用场景。
未来 3 到 5 年将会是分布式时序数据库的爆发期
周小华认为,“如果没有合适的应用场景,技术将没有用武之地。中国拥有大量的金融机构,也是制造业大国,存在着大量的应用场景。伴随着中美之间的科技竞争,整个社会的数字化转型步伐加快,这是一个非常好的机会。风险投资同样对基础软件非常看好。我认为时序数据库当下处在最好的发展时代。未来 3 到 5 年,有可能在金融、物联网等领域迎来爆发性的发展”。
但是,挑战与机遇并存。首先,当前国内在数据库领域的人才资源非常匮乏,在寻找数据库内核研发等相关人才上会比较困难;二是国产化的浪潮下可能会出现一些利用政策红利而过少参与市场竞争的企业。在周小华看来,过度利用政策红利并不利于产品质量的持续提升,这是需要企业尽量避免的;三是企业应该走出去,跟国际上最顶尖的产品和团队去竞争。
对身处其中的时序数据库厂商而言,周小华认为最大的难点在于如何在物联网领域持续创造价值。目前很多传统企业的数字化转型是因为政府或者公司领导层在推动,而不是基于项目本身的价值,这是不可持续的。为了解决这个问题,DolphinDB 开始积极与集成商合作,双方共同建立行业的算法库或者函数库,进而帮助各领域的企业快速利用数据创造价值;对外开放,构建自己的生态,积极与第三方共同合作开发插件或者算法,让其可以更好地与传统企业内部的其他组件进行适配,真正做到降本增效;多模数据库支持,做到一门编程语言,一套计算引擎和多个存储引擎;增强实时流计算功能,包括增量机器学习;进行云适配,增强伸缩性和易用性。
嘉宾介绍:
周⼩华,浙江智臾科技有限公司(DolphinDB 智臾科技)CEO,上海交通⼤学⼯学学⼠和⼯学硕⼠,美国德雷克塞尔⼤学信息科学和技术博⼠。2008 年毕业后⾄2016 年 6⽉期间曾先后在 LYZ 基⾦、巴克莱资本、摩根史丹利从事程序化交易策略和⾼频交易系统的研发。主要研究⽅向为⼤数据、数据库、⽂本检索和数据挖掘,是⾦融⼤数据存储、检索、分析和建模⽅⾯的资深专家。在相关领域的国际顶级期刊和顶级学术会议(TKDE,SIGIR,SIGKDD,CIKM 等)发表论⽂30 余篇,被来⾃50 多个国家的独⽴专家学者引⽤1200 多次。
评论