时序数据库在IBMS系统集成中的应用
一、什么是时序数据库
时间序列数据库(TSDB)是针对带时间戳或时间序列数据优化的数据库。时间序列数据只是随时间跟踪,监控,下采样和聚合的测量或事件。这可以是服务器指标,应用程序性能监控,网络数据,传感器数据,事件,点击,市场交易以及许多其他类型的分析数据。
时间序列数据库专门用于处理带时间戳的度量和事件或度量。TSDB针对测量随时间的变化进行了优化。使时间序列数据与其他数据工作负载非常不同的属性是数据生命周期管理,汇总和许多记录的大范围扫描。
二、为什么时间序列数据库现在很重要?
时间序列数据库并不新鲜,但第一代时间序列数据库主要侧重于查看财务数据,股票交易的波动性以及为解决交易而构建的系统。但是,财务数据不再是时间序列数据的唯一应用 - 实际上,它只是各行各业众多应用程序中的一种。在过去十年中,计算的基本条件发生了巨大变化。一切都变得分开了。单片大型机已经消失,取而代之的是无服务器服务器,微服务器和容器。
今天,可以作为组件的所有东西都是一个组件。此外,我们正在见证物质世界中每个可用表面的仪器 - 街道,汽车,工厂,电网,冰帽,卫星,服装,电话,微波炉,牛奶容器,行星,人体。一切都有或将有传感器。所以现在,公司内外的一切都在发出无情的指标和事件或时间序列数据流。
这意味着底层平台需要不断发展以支持这些新工作负载 - 更多数据点,更多数据源,更多监控,更多控制。我们正在目睹的,以及时代的需求,是我们如何处理数据基础架构以及如何构建,监控,控制和管理系统的范式转变。我们需要的是一个高性能,可扩展,专用的时间序列数据库。
三、时序数据库和普通数据库的区别是什么?
时间序列数据库具有关键的架构设计属性,使它们与其他数据库非常不同。其中包括时间戳数据存储和压缩,数据生命周期管理,数据汇总,处理许多记录的大量时间序列相关扫描的能力以及时间序列感知查询。
例如:对于时间序列数据库,通常会在很长一段时间内请求数据摘要。这需要通过一系列数据点来执行一些计算,例如在过去六个月的同一时期内按月百分比增加百分比,按月汇总。对于分布式密钥值存储,这种工作负载很难优化。TSDB针对此用例进行了优化,可在数月的数据内提供毫秒级查询时间。另一个例子:对于时间序列数据库,通常会在短时间内保持高精度数据。该数据被汇总并下采样为长期趋势数据。这意味着对于进入数据库的每个数据点,必须在其一段时间后将其删除。应用程序开发人员很难在常规数据库之上实现这种数据生命周期管理。他们必须设计廉价驱逐大量数据的方案,并不断大规模地总结这些数据。使用时间序列数据库,此功能是开箱即用的。
四、时序数据库在IBMS系统集成中应用
IBMS系统集成中历史数据记录、实时数据趋势、报警记录、能源管理中的抄表记录都是带有时间戳数据,因此非常适用采用时序数据库进行记录,古河IBMS软件采用InfluxDB作为历史数据记录。
Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。
它有三大特性:
1. 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等);
2. 度量(Metrics):对实时大量数据进行计算;
3. 事件(Event):支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作。
同时,它有以下几大特点:
* schemaless(无结构),可以是任意数量的列;
* min, max, sum, count, mean, median 一系列函数,方便统计;
* Native HTTP API, 内置http支持,使用http读写;
* Powerful Query Language 类似sql;
* Built-in Explorer 自带管理工具。
InfluxDB和普通数据库(mysql)的读写比测试:
以1000万条数据为例:
InfluxDB:
原始数据 : 286M
整体磁盘占用:214M
最终磁盘占用:189M 写入速度: 70165 / s
读取速度: 45249 / s
Mysql:
原始数据 : 286M
du方式 : 2.4G
sql查询方式: 572MB
写入速度: 22988 / s
读取速度: 1516 / s
相比MySQL来说,InfluxDB在磁盘占用和数据读取方面很占优势,而且随着数据规模的扩大,查询速度没有明显的下降。
针对时序数据来说,InfluxDB有明显的优势。