有了Kafka+流处理框架,为什么还需要时序数据库?
一、有了Kafka+流处理框架,为什么还需要时序数据库
在物联网实际部署中,消息中间件(kafka,emq等)和时序数据库通常是上下游的关系。
消息中间件有非常高的并发能力,能够同时接受百万级的网络连接。一个数据库(包括关系数据库和时序数据库)创建一个会话(客户端连接)的成本比较高,能接受的连接数量也就在几百和几千这样的级别(分布式数据库可以按节点数增加,但数量远远小于消息中间件)。当面对大量的物联网传感器,消息中间件架设在中间,接受传感器的数据,然后再批量写入到时序数据库中。时序数据库的写入吞吐量远远高于关系数据库,每秒写入百万级和千万级的数据点都不是问题。以分布式时序数据库DolphinDB为例,6个服务器构成的集群,每秒能达到千万测点的三副本写入。可以这么说,消息中间件的高并发能力和时序数据库的高吞吐量联合起来,解决了物联网海量数据的实时处理和存储问题。
至于时序数据库的用途,参考其它回答,包括:提供永久的数据存储和管理能力,数据查询和分析等。
抽象来看,消息队列与时序数据库没有本质的区别,都是对时间序列数据的处理。但功能上,时序数据库要有查询、计算,而消息队列只是简单的生产、消费,先进先出。由于要有计算、分析,无论是结构化写入还是schemaless写入,时序数据库内部一定要把数据结构化处理,否则没法进行计算和分析的。而消息队列完全不用考虑这个,完全做非结构化数据处理就行。从存储设计的角度来看,两者是没有区别的,都需要有数据的保留策略,都需要对数据进行分区分片。一个时间线的ID可以作为kafka来的key, 对数据指定partition.
两者正在融合,开源的TDengine就是这样的,它不仅是时序数据库,但同时又具备消息队列的功能。这样在大数据框架下,就能减少一个环节,降低系统复杂度,降低运维成本。Kafka的企业版也在做类似的事情,除消息队列功能外,对外还提供SQL查询,提供各种分析计算功能。
更进一步,流式计算也可以融合进来。流式计算也是基于时序数据的,因此TDengine从设计的名列前茅天起,就考虑了流式计算,但目前还仅仅提供时间驱动的流式计算,后续版本会提供基于事件驱动的流式计算。这样对于物联网、车联网、IT运维等场景,系统架构将更进一步简化,运维成本进一步降低。
延伸阅读:
二、时间序列数据库TSDB
TSDB(Time Series Database):一系列数据点按照时间顺序排列;时间序列数据就是历史烙印,具有不变性、时间排序性。
(基于时间的一系列数据,在有时间的坐标中将这些数据点连成线,往过去看可以做成多维度报表,揭示其趋势性、规律性、异常性;往未来看可以做大数据分析、机器学校、实现预测和预警。
时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入、持久化、多维度的聚合查询等基本功能)。
猜你喜欢LIKE
相关推荐HOT
更多>>什么是webpack?
一、webpack的概念 webpack 是代码编译工具,有入口、出口、loader 和插件。webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具。...详情>>
2023-10-20 22:17:55公司管理者的角色定位是什么?
1、业务指挥者管理者处于工作最前线,企业的工作任务,都要分解落实到各个部门甚至班组。通过管理者的正确指挥,才能得以实现。管理者的指挥作...详情>>
2023-10-20 20:14:29trello干什么的?
一、创建任务列表Trello的核心功能是帮助用户创建任务列表。您可以创建一个新的“看板”,然后将任务分配到各个列表中。例如,在一个应用程序开...详情>>
2023-10-20 19:40:39MySQL分表后怎么查询效率高?
一、MySQL分表后提高查询效率的方法1、查询路由根据分表规则将查询路由到特定的分表,只查询所需的分表,避免全表扫描。这可以通过应用程序或数...详情>>
2023-10-20 18:35:22热门推荐
node是什么?
沸程序员都上什么网站?
热#!/usr/bin/env python有什么用?
热什么是webpack?
新什么是模块化编程什么是module?
Python内置函数有哪些?
HTML、CSS、JavaScript分别实现什么功能?
公司管理者的角色定位是什么?
trello干什么的?
ddl文件用什么软件打开?
MySQL分表后怎么查询效率高?
mysql 不加条件查询速度挺快,加上过滤条件就特别慢是为什么?
Mybatis中,resultMap collection的应用场景是什么样子的?
endnote9的online search没有数据库选项是怎么回事?