在实时场景,该用时序数据库、实时数据库还是实时数仓?

2023-05-24 0 629

原副标题:在动态情景,该用排程资料库、动态资料库却是动态数仓?

在实时场景,该用时序数据库、实时数据库还是实时数仓?

排程资料库, 动态资料库, 动态统计基础构架, 此二者,Maubourguet,失之千里。若弄不确切它们之间的差异,动态情景中与顾客沟通交流, 就难出现Escrow,驴唇不对马嘴。

译者 | 祁国辉

白眉林 | 韩 楠

前段时间在很多项目中, 顾客严厉批评明确要求做动态数仓?但是当探讨到技术细节市场需求的时候, 使用者常常会掏出全力支持动态统计压缩算法储存, 全力支持时间询问处排序, 明确要求上百个技术指标的统计数据支撑力, 然后一瞬间几口老血渗出, 这不是排程资料库的市场需求吗?是我搞错了?却是顾客搞错了?

带着这个困惑, 我开始了新一波的各种Google 和自学, 在此期间还进行咨询了超人气的GPT,因此才有了这首诗。

一、为满足动态积极响应而生的动态资料库

动态资料库(Real-time Database)是一种能够动态处理统计数据查阅和预览的资料库。这类资料库的目标是在统计数据产生或预览后尽早地提供统计数据出访。动态资料库具有低延后和高并发操控性,一般来说应用于须要动态查阅和统计数据挖掘的情景,如城市交通控制技术、新浪网格斗游戏或者电子货币系统等。

一般来说, 动态资料库因为对积极响应有很高明确要求, 因此使用全缓存的构架比较多,因此也有不少缓存资料库也可以看做是动态资料库。

(一)动态资料库众所周知情景

1、城市交通控制技术:

市场需求:城市交通控制技术须要动态监视城市交通统计数据,如工程车边线、速率和地形信息,并根据动态统计数据进行智能化运维和强化。

操控性分项:统计数据加载延后、统计数据预览延后、查阅并发潜能、分布式系统外交事务操控性。

在城市交通控制技术情景中,动态资料库的统计数据加载延后、统计数据预览延后、查阅mammalian潜能和分布式系统外交事务操控性是关键性分项。这些分项能保证动态资料库能够满足用户高mammalian、低延后的动态统计数据处理市场需求。

以高铁的列车控制技术来说, 列车时速超过200km/小时, 司机已经难以辨别地面信号进行控制, 因此所有的突发情况, 都须要通过对地形,工程车运行情况等进行动态判断,然后快速做出积极响应。

2、新浪网格斗游戏:

市场需求:新浪网游戏须要动态处理大量玩家统计数据,如角色状态、格斗游戏排行榜和虚拟物品交易等,以保证格斗游戏体验和公平性。

操控性分项:统计数据加载延后、统计数据预览延后、查阅mammalian潜能、分布式系统锁操控性。

(二) 动态资料库主要代表产品

Redis:一款开源的、高操控性的缓存统计数据结构储存,全力支持多种统计数据结构,并可用作动态资料库。

Amazon DynamoDB:一款完全托管的NoSQL资料库服务,提供快速、可靠的操控性和无缝扩展潜能,适用于动态应用。

Google Cloud Firestore:一款基于Google Cloud的动态资料库,全力支持动态同步和离线出访。

Apache Cassandra:一款分布式系统、高操控性的NoSQL资料库,适用于动态统计数据处理和大规模统计数据储存。

Oracle TimesTen:这是Oracle生产的一款动态资料库, 从名字可以看出来, 操控性可以达到10倍速, 市场上主要用于通信,金融行业的动态信用控制等情景。

二、因IOT而大行其道的排程资料库

排程资料库(Time Series Database)是一种专门用于处理时间序列统计数据的资料库。时间序列统计数据是按照时间顺序进行储存和管理的统计数据,一般来说包括时间戳和相应的统计数据值。排程统计数据库具有高效的统计数据插入和查阅操控性,以及良好的统计压缩算法潜能。它们一般来说用于储存和分析时间序列统计数据,如金融市场统计数据、物联网传感器统计数据或系统操控性分项等。

例如下图是某支股票一天的动态走势图,纵坐标是股价,横坐标是时间,这条线就是一条时间序列。可视化之后我们得以直观地观测股票价格。

在实时场景,该用时序数据库、实时数据库还是实时数仓?

某支股票一天的动态走势图

排程资料库一般是无 Schema 的。类似于关系型资料库中的 table 被成为 度量统计数据集(measurement)。一个统计数据集包含如下概念:

1.统计数据点(point),类似于关系型资料库中的 row;

2.时间戳(timestamp),表征采集到统计数据的时间点;

3.维度列(tag),代表统计数据的归属、属性,表明是哪个设备/模块产生的,一般不随着时间变化,供查阅使用;

4.分项列(field),代表统计数据的测量值,随时间平滑波动。

从概念上讲,你可以将 measurement 视为一个SQL表,其中主索引始终是时间。tags和fields是表中的有效列。tags一般采用倒排索引。

(一) 排程资料库众所周知应用情景

1、物联网传感器统计数据挖掘:

市场需求:物联网设备产生大量的传感器统计数据,须要进行动态储存、查阅和分析,以监视设备状态、检测异常和强化设备操控性。

操控性分项:统计数据插入速率、统计压缩算法率、时间序列查阅速率、时间询问处聚合操控性。

询问处聚合操控性。这些分项能帮助保证统计数据能够快速地储存和检索,并且占用较少的储存空间。

工业排程统计数据本身存在的特点。它不仅有传统大统计数据的特征,如统计数据量大(海量性)、统计数据上报频繁(高频性),对动态性、准确性的明确要求也越来越高。

某风能发电企业有超过 2 万个风能发电机,一个风机有 120 – 510 个传感器,采集频率高达 50 Hz,也就是每个传感器可达到 1 秒 50 个统计数据点的采集峰值,总量每秒采集 5 亿个点的统计数据,吞吐量极大,且因为有用统计数据做监视和报表等市场需求,动态性明确要求高。理想的资料库应做到写入及聚合查阅低延后,例如查阅某段时间内的风速。此外,这些统计数据还具有价值密度低的特点,因此也应强调高压缩率,降低企业储存成本。

2、金融市场统计数据挖掘:

市场需求:金融市场产生大量的动态交易统计数据,须要进行动态储存、查阅和分析,以进行市场监视、交易策略强化和风险管理。

操控性分项:统计数据插入速率、统计压缩算法率、时间序列查阅速度、滚动聚合操控性。

(二) 排程资料库主要代表

1、InfluxDB:一款开源的、高操控性的排程资料库,适用于储存和查阅时间序列统计数据。InfluxDB由Golang语言编写,也是由Golang编写的软件中比较著名的一个,在很多Golang的沙龙或者文章中可能都会把InfluxDB当标杆来介绍,这也间接帮助InfluxDB提高了知名度。InfluxDB的主要特点包括:

schemaless(无结构),可以是任意数量的列; 可扩展(集群); 方便、强大的查阅语言; Native HTTP API; 集成了统计数据采集、储存、可视化功能; 动态统计数据Downsampling; 高效储存,使用高压缩比算法,全力支持retention polices; 统计数据采集全力支持多种协议和插件:行文本、UDP、Graphite、CollectD、OpenTSDB。

2、OpenTSDB:基于HBase的分布式系统开源排程资料库,适用于大规模时间序列统计数据储存和查阅。

这是一个Apache开源软件,是在HBase的基础上开发的,底层储存是HBase,但其依据排程统计数据的特点做了一些强化。其最大的好处就是建立在Hadoop体系上,各种工具链成熟,但这也是它最大的缺点,因为Hadoop不是为排程统计数据打造的,导致其操控性很一般,而且须要依赖很多组件,安装部署相当复杂。

OpenTSDB采用Schemaless模式,不用预先定义统计数据结构,因此写入灵活,但每个时间序列只能写入一个采集量,不全力支持多列写入。每个序列可以被打上多个标签,以方便聚合操作。

总的来讲,OpenTSDB的操控性无论是写入却是查阅,都很一般,而且系统的稳定性欠佳。但吸引人的是,它全力支持集群部署和全力支持水平扩展。

3、Graphite:一款用于监视和储存动态分项统计数据的开源排程资料库。Graphite是分布式系统排程列统计数据储存资料库,容易扩展,具备功能强大的画图Web API,提供了大量的函数和输出方式。主要功能包括:

储存数值型排程列统计数据 根据请求对统计数据进行可视化(画图)

Graphite本身不带统计数据采集功能,但是你可以选择很多第三方插件,比如适用于collectd、Ganglia或Sensu的插件等。同时,Graphite也全力支持Plaintext、Pickle和AMQP这些统计数据输入方式。

Graphite使用了类似RRDtool的RRD文件格式,它也不像C/S结构的软件一样,没有服务进程,只是作为Python library使用,提供对统计数据的create/update/fetch操作。Google、Etsy、GitHub、豆瓣、Instagram、Evernote和Uber等很多知名公司都是Graphite的使用者。

4、TDengine:这是来自中国的开源软件,由涛思统计数据研发推出。它不仅是一款排程资料库,而且还提供缓存、消息队列、统计数据订阅、流式排序等系列功能,是排程统计数据的全栈技术解决方案。而且它不依赖任何第三方软件,安装包只有1.5MB,使系统设计、安装、部署和维护都变得极为简单。

在实时场景,该用时序数据库、实时数据库还是实时数仓?

三、为满足用户动态业务分析和决策而产生的动态统计基础构架

库一般来说包含一组工具和技术,如统计数据集成、统计数据储存和动态分析引擎等。这类统计基础构架适用于须要快速分析和决策的情景,如动态个性化推荐、金融风险管理或物联网分析等。

在实时场景,该用时序数据库、实时数据库还是实时数仓?

(一)动态统计基础构架众所周知情景

动态统计基础构架众所周知情景 – 动态个性化推荐:

操控性分项:统计数据导入延后、统计数据查阅延后、动态聚合操控性、动态模型预览速率。

动态统计基础构架众所周知情景 – 金融风险管理:

迟、统计数据查阅延后、动态报表生成速率、动态统计数据挖掘操控性。

对于动态个性化推荐情景,动态统计基础构架须要具备较低的统计数据导入延后、统计数据查阅延后、动态聚合操控性和动态模型预览速率。这些分项能保证动态统计基础构架能够全力支持实时统计数据处理和分析,从而为使用者提供精准的个性化推荐。

(二) 动态统计基础构架主要代表

Google BigQuery:一款完全托管的、高操控性的动态统计基础构架,全力支持动态统计数据处理和大规模统计数据挖掘。 Amazon Redshift:一款完全托管的、高操控性的统计基础构架服务,全力支持动态统计数据处理和分析。 Snowflake:一款基于云的统计基础构架平台,全力支持动态统计数据处理、分析和机器自学。 Azure Synapse Analytics:一款基于Microsoft Azure的动态统计基础构架服务,提供动态统计数据处理和大规模统计数据挖掘潜能。 Doris:Doris 是一个基于 MPP(大规模并行处理)构架的高操控性分析型资料库,由百度公司开发。它具有高操控性、低延后、易扩展、高可用等特点。适用于动态统计基础构架、报表分析和大统计数据挖掘情景。 StoneData:杭州石原子科技生产的动态统计基础构架产品,提供动态数仓建设潜能,卓越的单表和多表查阅操控性,百亿级多表统计数据查阅秒级结果返回。

同时也有些其他开源技术和框架可以用于构建动态统计基础构架。例如:

Apache Flink:一款分布式系统、动态的统计数据处理框架,支持动态统计数据流处理和批处理。虽然 Flink 并非国内独立开发的项目,但它在国内有很大的使用者群和贡献者社区。

ClickHouse:一款分布式系统、列式的资料库,适用于动态统计数据挖掘和报表生成。ClickHouse 虽然是由俄罗斯的 Yandex 公司开发的,但在国内也有很多使用者和贡献者。

四、二者之间的联系与区别

统计数据类型和处理析。动态资料库主要用于动态查阅和统计数据预览,而动态统计基础构架则是在统计基础构架的基础上增加了动态统计数据处理和分析的潜能。

应用情景:排程资料库适用于处理和分析时间序列统计数据的情景,如物联网统计数据挖掘和金融市场分析等。

在实时场景,该用时序数据库、实时数据库还是实时数仓?

技术构架:排程资料库、动态资料库和动态

统计数据挖掘和查阅潜能:排程资料库主要针对时间序列统计数据的查阅和分析,例如滚动聚合、时间询问处查阅等。动态资料库注重动态查阅和统计数据预览,例如动态查阅新浪网使用者的信息或动态预览格斗游戏分数等。动态统计基础构架则提供动态统计数据处理和分析能力,例如动态聚合、动态报表和动态统计数据挖掘等。

统计数据延后新到统计数据出访之间的延后。

扩展性

五、写在最后

通过对动态资料库,排程资料库,和动态统计基础构架的分析, 我想大家会对这三种资料库的使用情景有了更进一步的了解, 二者之间, 有相通之处在于, 都是和时间紧密耦合,但是针对不同的细分情景, 在细分情景下由于市场需求有细微差异, 从而导致了不同的技术路线。当然,之后随着技术发展和使用者市场需求的变化, 肯定还会出现更多预览的融合情景, 也可能会有更多的新产品出现。

本期嘉宾

在实时场景,该用时序数据库、实时数据库还是实时数仓?

祁国辉

前Oracle云平台事业部电信行业技术总监

现就职于杭州石原子科技有限公司

网名”atiger”,前 Oracle 云平台事业部电信行业技术总监。拥有超过25年资料库和统计基础构架HK经验。曾创办著名统计基础构架网站:www.dwway.com (统计基础构架之路)。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务