Basho 科技公司发布了Riak TS 1.3 的开源版本。Riak TS 是专门面向时序数据处理的产品。它支持时序数据的快速写入和查询。此外,Riak TS 的特性还包括:支持数据聚集和算术运算操作,通过Spark 连接器与Apache Spark 的集成,对Java、Erlang 和Python 等语言的客户端支持,基于标准SQL 的查询系统。Riak TS 1.3 EE(企业版)是基于支持多集群复制的开源版本而构建。在它的发行说明中,给出了其所有特性的完整列表。
针对本次发布,InfoQ 择机访谈了Basho 公司的CTO,Dave McCrory 先生。
InfoQ:您能对 Riak 产品套装,尤其是 Riak TS 产品,做一个概要介绍吗?套装产品的开发将依然延续彼此独立的方式吗?
McCrory: Riak 产品家族都是围绕着 Riak 内核构建的,Riak 内核是过去七年中 Basho 公司一直致力于开发的开源集群解决方案。
Riak KV 产品构建于 Riak 内核之上,提供了一种高弹性、高可用的键值数据库。Riak KV 产品当前正在持续改进中,专注于数据正确性、预防数据损失和破坏等特性。
Riak TS 产品源于 Riak KV 数据库,是一种为时序数据仓库而专门构建的产品。其中集成了 Riak KV 产品的所有强大功能,并使用这些功能去解决用户在处理时序数据中所遇到的问题。我们在该产品中确实地实现了哪些特性呢?这里我列出了其中的一部分:
- 数据的快速写入路径;
- 为数据桶建立模式;
- 查询规划及查询子系统;
- 对虚拟节点的并行数据抽取;
- 灵活的复合键值;
InfoQ:Riak TS 产品的开发已持续近 18 个月了,你能介绍一下这个开发经历吗?
McCrory: 在早期,我们看到客户用 Riak KV 产品去保存时序数据。当我们审视其中的需求时,发现为使这样的系统顺利运行,需要做很多的产品定制工作。我们也查看了时序数据库产品的市场情况,当时只见到了寥寥可数的几个解决方案,并且所有这些解决方案的质量都不足以承担企业级的生产工作负荷。已有的时序数据解决方案或者是缺乏可扩展集群或弹性,或者是管理和操作非常繁琐。所有这些使得它们成为糟糕的选择。
为讨论解决这个问题的创意,我们进而开了一次架构会议。最终,我们的一个工程师提出了一个有意思的创意,即使用量子(时间范围)将数据围绕哈希环分布,并基于此创意构建了一个看上去运行良好的概念验证原型。依此我们开始了 Riak TS 产品的开发过程,力图去解决许多时序数据处理中更加困难的问题。
开发过程中还有其它一些限制需要处理,包括对性能的需求。譬如要在八台机器组成的集群中支持每秒百万级别数据点的性能。为实现该性能需求,需要对从涌入集群中直至磁盘存储过程中的数据流进行描述分析,并返回数据读取的路径信息。当我们开始注意这个问题时,我们就认识到需要有一个专注于性能问题的专门团队。这样,我们就成立了性能团队。
性能团队力图找出项目中效率低下的部分,这些部分很大程度上是在项目早期的开发中产生的,它们是紧随着对如何做端到端程序概要分析的学习过程。这样可给出一组问题,重点去解决这些问题就能为性能提高的工作带来最大的回报。其中我们所发现的一个重要问题是,我们正在做多重的解码编码,这消耗了 CPU 周期,并增加了许多延迟,这样我们就开始去消除这些问题。
同时我们也寻求在无需依赖于二级索引的条件下,迅速响应各种时序数据查询的方法。因为时序数据具有内在的结构,我们于是着眼于对数据构建模式。该做法也为我们实现查询引擎和查询语言等开启了大门。最终我们决定使用 SQL 查询语言,而非像其它供应商那样选择自定义的 SQL,因为我们发现那样会使得事情更加复杂。相比较于从所有包含数据的节点或从整个集群中所有的节点请求数据的方法,我们仅从拥有指定数据的节点集中请求数据。这种实现必须去重构查询解析器和查询规划器,这种做法被证实是具有挑战性的。但是该方法所给出的弹性和性能指标说明了一切。
InfoQ:除了在物联网中的使用案例之外,还有哪些使用 Tiak TS 产品的好的案例?
McCrory: 一些顾客和潜在客户已全面使用该产品去解决与时间相关的数据问题。这些问题包括信息报告和审计、分数和下注记录、度量信息的存储等。几乎每个星期我都能听到一些 Riak TS 产品的新应用。
InfoQ:Basho 公司是 Riak TS 产品的最大贡献者吗?还有哪些公司对此也有贡献?代码开源的目标是什么?
McCrory: Basho 公司当然是 Riak TS 的首要贡献者,主要原因在于为了实现时序解决方案的构建,必须由我们自己去实现许多增改。我们当前正就如何一起构建 Riak TS 的一系列功能的问题与一些公司会谈,以解决在时序数据处理领域中一些更广泛的问题。
对于代码开源的目标,我们相信对于分布式系统中的创新性方法、创意和领导力等问题,我们有许多可以贡献给开源社区的东西,我们也希望能与更好的解决方案合作。当将借助于开源代码作为产品实现路径时,几乎总是会加速你的实现过程的。我们在自家软件的开源上具有很悠久的历史,也在创造更好的解决方案过程中得到了社区的支持。
InfoQ:Apache Spark 连接器是使用 Riak TS 解决大数据问题中的一个重要组件,我说的没错吧?你能介绍一下这个连接器,以及它与其它 Apache Spark 的 NoSQL 连接器相比究竟如何?
McCrory: 自 Apache Spark 进入大数据分析行业以来,在我们所接触的大多数客户中,它都当然是行业翘首。当然我们的使用 Riak TS 的大数据解决方案的客户中,也有一些并没有使用 Apache Spark 的案例。这些案例都是不需要复杂分析、集群学习及其它一些 Apache Spark 所提供的特性的。这意味着,我们的大数据客户中的大多数是使用具有 Spark 连接器的 Riak TS 和 Apache Spark 的。
我们开发 Riak 的 Spark 连接器已经有一段时间了,当前该功能的实现已经历了至少三轮测试。我们所做的事情之一是,允许 Spark 连接器使用我们所开发的并行抽取特性。通过这个实现方法,我们具有了同时从所有节点并行地拉取所有的请求数据的能力。这加速了数据到 Spark 的加载,并且当借助于 Apache Spark 和 Spark 连接器时,通过我们所实现的写性能提高功能,使得 Riak TS 成为的一个优秀的解决方案。
InfoQ:你能提供包括 HTTP API 安全支持和聚焦于物联网在内的 Riak TS 产品的路线图吗?
McCrory: 我们期望在即将推出的 Riak TS 1.4 版中具有 HTTP API 安全等一些特性,其中包括:更全面的 SQL 命令支持、初步的结果流支持及其它一些功能。
使 Riak TS 聚焦于物联网的核心问题,是我们如何提供非常易于操作和使用的时序数据库。通过聚焦于物联网数据,我们看到了对于持续小规模数据块的越来越高的数据通量的需求。我们将继续性能优化,并与其它互补的技术对接。当前我们正在探寻的领域是数据可视化,即我们如何能使 Riak TS 与在开源领域和工业界十分流行的可视化解决方案合作或一起工作。通常,采集和存储所有这些物联网数据的关键在于如何去识别所需采取的动作。
入门指南材料可以在 Basho 文档中获取。
查看英文原文: Basho Open Sources Time Series Database Riak TS 1.3
感谢张龙对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论