通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

有了Kafka+流处理框架,为什么还需要时序数据库

在物联网实际部署中,消息中间件(kafka,emq等)和时序数据库通常是上下游的关系。消息中间件有非常高的并发能力,能够同时接受百万级的网络连接。一个数据库创建一个会话(客户端连接)的成本比较高。

一、有了Kafka+流处理框架,为什么还需要时序数据库

在物联网实际部署中,消息中间件(kafka,emq等)和时序数据库通常是上下游的关系。

消息中间件有非常高的并发能力,能够同时接受百万级的网络连接。一个数据库(包括关系数据库和时序数据库)创建一个会话(客户端连接)的成本比较高,能接受的连接数量也就在几百和几千这样的级别(分布式数据库可以按节点数增加,但数量远远小于消息中间件)。当面对大量的物联网传感器,消息中间件架设在中间,接受传感器的数据,然后再批量写入到时序数据库中。时序数据库的写入吞吐量远远高于关系数据库,每秒写入百万级和千万级的数据点都不是问题。以分布式时序数据库DolphinDB为例,6个服务器构成的集群,每秒能达到千万测点的三副本写入。可以这么说,消息中间件的高并发能力和时序数据库的高吞吐量联合起来,解决了物联网海量数据的实时处理和存储问题。

至于时序数据库的用途,参考其它回答,包括:提供永久的数据存储和管理能力,数据查询和分析等。

抽象来看,消息队列与时序数据库没有本质的区别,都是对时间序列数据的处理。但功能上,时序数据库要有查询、计算,而消息队列只是简单的生产、消费,先进先出。由于要有计算、分析,无论是结构化写入还是schemaless写入,时序数据库内部一定要把数据结构化处理,否则没法进行计算和分析的。而消息队列完全不用考虑这个,完全做非结构化数据处理就行。从存储设计的角度来看,两者是没有区别的,都需要有数据的保留策略,都需要对数据进行分区分片。一个时间线的ID可以作为kafka来的key, 对数据指定partition.

两者正在融合,开源的TDengine就是这样的,它不仅是时序数据库,但同时又具备消息队列的功能。这样在大数据框架下,就能减少一个环节,降低系统复杂度,降低运维成本。Kafka的企业版也在做类似的事情,除消息队列功能外,对外还提供SQL查询,提供各种分析计算功能。

更进一步,流式计算也可以融合进来。流式计算也是基于时序数据的,因此TDengine从设计的名列前茅天起,就考虑了流式计算,但目前还仅仅提供时间驱动的流式计算,后续版本会提供基于事件驱动的流式计算。这样对于物联网、车联网、IT运维等场景,系统架构将更进一步简化,运维成本进一步降低。

延伸阅读:

二、时间序列数据库TSDB

TSDB(Time Series Database):一系列数据点按照时间顺序排列;时间序列数据就是历史烙印,具有不变性、时间排序性。

(基于时间的一系列数据,在有时间的坐标中将这些数据点连成线,往过去看可以做成多维度报表,揭示其趋势性、规律性、异常性;往未来看可以做大数据分析、机器学校、实现预测和预警。

时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入、持久化、多维度的聚合查询等基本功能)。

相关文章