时间序列数据库简称时间序列数据库(Time Series Database ),用于处理按时间顺序变化的数据(带有时间标签),带有时间标签的数据也称为时间序列数据。
时间序列数据的几个特征
1 .基本是插件,没有更新的需求。
2 .数据基本上有时间属性,随着时间的推移,新的数据会不断产生。
3 .数据量大,每秒需要写入千万条以上的数据
商业方面的一般需求
1 .获得最新状态并查询最近的数据(例如,传感器的最新状态) )。
2 .表示区间统计,指定时间范围,调查统计信息,例如平均值、最大值、最小值、计数等。
3 .获取异常数据,基于指定条件筛选异常数据
一般业务场景
监控软件系统:虚拟机、容器、服务、APP应用
监测物理系统:水文监测、工厂设备监测、国家安全数据监测、通信监测、传感器数据、血糖仪、血压变化、心率等
资产跟踪APP应用:汽车、卡车、实体集装箱、货物托盘
金融交易系统:传统证券,新型加密数字货币
事件APP :跟踪用户、客户的交互数据
商务智能工具:跟踪关键指标和业务总体健康状况
互联网行业有非常多的时间序列数据,包括用户访问网站的行为轨迹、APP产生的日志数据等。
一些基本概念(不同的时间序列数据库的名称略有不同) )。
Metric:度量相当于关系数据库中的表。
Data point:数据点相当于关系数据库中的行。
时间标记:时间戳。 表示生成数据点的时间。
Field:度量下的不同字段。 例如,位置测量有经度和纬度两个字段。 一般保存着随时间戳变化的数据。
Tag:标签。 一般来说,不随时间戳变化的信息被存储。 timestamp加上所有的tags就可以看作table的主密钥。
例如,收集有关风的数据。 测量值为Wind,每个数据都有时间戳timestamp。 两个场风速(风向速度)和两个传感器编号(city )城市)。 第一行和第三行存放着sensor编号86F-2RT8的设备,城市是深圳。 随着时间的变化,风向和风速发生变化,风向从56.4变为45.6,风速从2.9变为3.6。
需要解决的几个问题
时序数据写入:支持每秒写入1,000亿条以上数据的方法。
时序数据读取:支持在秒级别分组和聚合数亿数据的运算的方法。
成本敏感:大量数据存储的成本问题。 以较低的成本存储数据是时序数据库要解决的关键。
一般时间序列数据库
时间序列数据库出现的时间较晚,目前成熟的时间序列数据库都只有一两年的历史。
InfluxDB (免费独立版、集群版收费)是最成熟的,Kairosdb (基础使用Cassandra )、OpenTsdb (基础使用Hbase )、Beringei )、FB开源)、TTS