一种时间序列数据库的构造方法及系统技术领域
本发明涉及大数据处理的技术领域,尤其涉及一种时间序列数据库的构造方法,
以及时间序列数据库的构造系统。
背景技术
时间序列数据库,一般主要用于监控系统中数据的存储和查询,比如在一些大公
司,运维团队会从各种应用服务和集群服务器节点收集各种监控数据,包括网络设备、操作
系统、应用程序状态等,并需要对这些监控数据进行存储和查询以跟踪问题,由于数据量巨
大,在存储和查询时会遇到各种严重挑战,为了解决存储和查询性能,现有的时间序列数据
库一般都采用RRD(Round Robin Database环状数据库),这种时间序列数据库会对存储的
数据定期进行采样(采样策略包括最大值、最小值和平均值进行采样),并将这些采样的数
据以作为监控历史数据存储起来,也就是RRD并不会存储收集到的详细的历史数据,这样主
要是位了减少数据存储的量,同时在响应查询时,由于数据量不是很多,也不会太慢。
以下是对RDD结构的详细说明:
RDD使用固定大小的空间来存储数据,并有一个指针指向最新的数据的位置。可以
把用于存储数据的数据库的空间看成一个圆,上面有很多刻度。这些刻度所在的位置就代
表用于存储数据的地方。所谓指针,可以认为是从圆心指向这些刻度的一条直线。指针会随
着数据的读写自动移动。要注意的是,这个圆没有起点和终点,所以指针可以一直移动,而
不用担心到达终点后就无法前进的问题。在一段时间后,当所有的空间都存满了数据,就又
从头开始存放。这样整个存储空间的大小就是一个固定的数值。
相关地,中国专利申请(申请号:CN201610287546.9)就提供了一种基于时间序列
数据库InfluxDB的监控数据存储方法。
现有的时间序列数据库一般都是使用RRD(Round Robin Database环状数据库),
进入RRD中的数据,首先会进行采样,然后对这些采样数据进行真正的存储,所以RRD中存储
的历史数据实际上是采样之后的数据,并非真实的数据,在遇到一些需要真实的明细数据
应用场景,或需要对历史错误数据进行修改回溯的情况下,RRD并不能很好的满足需求。
发明内容
为克服现有技术的缺陷,本发明要解决的技术问题是提供了一种时间序列数据库
的构造方法,其支持存储监控数据明细,便于监控问题追踪,数据存储空间随hbase集群的
扩展而线性扩展,不用担心存储问题。
本发明的技术方案是:这种时间序列数据库的构造方法,该方法包括以下步骤:
(1)hbase集群准备:以监控数据特征来设计,时间序列数据库基于hbase来实现;
(2)hbase表创建:创建表tsdb-uid、tsdb;
(3)监控数据接入;
(4)将字典数据存入tsdb-uid,并建立字典映射;
(5)将数据以映射值整数的形式存入tsdb;
(6)用户查询hbase,获取监控数据。
本发明以监控数据特征来设计,时间序列数据库基于hbase来实现,所以支持存储
监控数据明细,便于监控问题追踪;而且这样就利用了hbase的特点,存储性能和计算性能
都可以随着hbase集群的扩展也扩展,所以数据存储空间随hbase集群的扩展而线性扩展,
不用担心存储问题。
还提供了一种时间序列数据库的构造系统,该系统包括:
hbase集群准备模块,其配置来以监控数据特征来设计,时间序列数据
库基于hbase来实现;
hbase表创建模块,其配置来创建表tsdb-uid、tsdb;
监控数据接入模块,其配置来接入监控数据;
映射模块,其配置来将字典数据存入tsdb-uid,并建立字典映射;
存储模块,其配置来将数据以映射值整数的形式存入tsdb;
查询模块,其配置为用户查询hbase,获取监控数据。
附图说明
图1所示为根据本发明的时间序列数据库的构造方法的流程图。
图2所示为根据本发明的表tsdb-uid的示意图。
图3所示为根据本发明的表tsdb的示意图。
具体实施方式
如图1所示,这种时间序列数据库的构造方法,该方法包括以下步骤:
(1)hbase集群准备:以监控数据特征来设计,时间序列数据库基于hbase来实现;
(2)hbase表创建:创建表tsdb-uid、tsdb;
(3)监控数据接入;
(4)将字典数据存入tsdb-uid,并建立字典映射;
(5)将数据以映射值整数的形式存入tsdb;
(6)用户查询hbase,获取监控数据。
本发明以监控数据特征来设计,时间序列数据库基于hbase来实现,所以支持存储
监控数据明细,便于监控问题追踪;而且这样就利用了hbase的特点,存储性能和计算性能
都可以随着hbase集群的扩展也扩展,所以数据存储空间随hbase集群的扩展而线性扩展,
不用担心存储问题。
另外,如表1所示,所述步骤(1)中,字段包括:描述监控指标名称的metric,描述监
控数据的属性标签的tagk、tagv,描述监控指标值的value,描述监控时间的timestamp。
字段
描述
metric
监控指标名称
tags
监控数据的属性标签
value
监控指标值
timestamp
监控时间
表1
另外,所述步骤(2)中,tsdb-uid表作为字典表,保存metric、tagk、tagv的映射关
系,将metric、tagk、tagv映射成数字,在实际存储数据时,不保存metric,tagk,tagv的具体
值,而只是保存映射成的数字。为了更加的形象,这里以一个监控项数据为例:
metric:proc.loadavg.1m
timestamp:1234567890
value:0.42
tags:host=web42,pool=static
如图2所示,tsdb-uid表结构如下:
该表作为字典表,主要保存一些metric,tagk,tagv的一些映射关系,将metric、
tagk、tagv映射成数字:metric—>3字节整数、tagk—>3字节整数、tagv—>3字节整数,在实
际存储数据时,不保存metric,tagk,tagv的具体值,而只是保存映射成的数字,这样减少了
存储数据量,这一点在下表中体现。
另外,所述步骤(2)中,tsdb表包括rowkey和column;rowkey包含字段:metric|
timestamp|value|host=web42|pool=static,在存储的时候是使用tsdb-uid中对应的3
字节整数;column构造为将一个小时的数据,保存在一行里面。
如图3所示,tsdb表结构如下:
1)、rowkey设计
为了便于查询,rowkey设计包含字段:
metric|timestamp|value|host=web42|pool=static,不过在存储的时候不是
存储具体的值,而是使用第一个字典表tsdb-uid中对应的3字节整数,比如这里的映射关系
为:proc.loadavg.1m—>052、host—>001、web42—>028、pool—>047、static—>001
2)column的设计
为了方便后期更进一步的节省空间。这里设计的时候将一个小时的数据,保存在
一行里面。所以上面的timestamp 1234567890,会先模一下小时,得出1234566000,然后得
到的余数为1890,表示的是它是在这个小时里面的第1890秒;然后将1890作为column
name,而0.42即为column value。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以
通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,
该程序在执行时,包括上述实施例方法的各步骤,而所述的存储介质可以是:ROM/RAM、磁
碟、光盘、存储卡等。因此,与本发明的方法相对应的,本发明还同时包括一种时间序列数据
库的构造系统,该系统通常以与方法各步骤相对应的功能模块的形式表示。使用该方法的
系统包括:
hbase集群准备模块,其配置来以监控数据特征来设计,时间序列数据
库基于hbase来实现;
hbase表创建模块,其配置来创建表tsdb-uid、tsdb;
监控数据接入模块,其配置来接入监控数据;
映射模块,其配置来将字典数据存入tsdb-uid,并建立字典映射;
存储模块,其配置来将数据以映射值整数的形式存入tsdb;
查询模块,其配置为用户查询hbase,获取监控数据。
另外,所述hbase集群准备模块中,字段包括:描述监控指标名称的metric,描述监
控数据的属性标签的tagk、tagv,描述监控指标值的value,描述监控时间的timestamp。
另外,所述hbase表创建模块中,tsdb-uid表作为字典表,保存metric、tagk、tagv
的映射关系,将metric、tagk、tagv映射成数字,在实际存储数据时,只是保存映射成的数
字。
另外,所述hbase表创建模块中,tsdb表包括rowkey和column;rowkey包含字段:
metric|timestamp|value|host=web42|pool=static,在存储的时候是使用tsdb-uid中
对应的3字节整数;column构造为将一个小时的数据,保存在一行里面。
本发明的有益效果如下:
1.支持存储监控数据明细,便于监控问题追踪;
2.数据存储空间随hbase集群的扩展而线性扩展,不用担心存储问题;
3.数据查询随hbase集群的扩展而扩展,可以充分利用hbase的特性。
以上所述,仅是本发明的较佳实施例,并非对本发明作任何形式上的限制,凡是依
据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属本发明
技术方案的保护范围。