数据库设计
tsdb表,存放具体的时间序列数据
tsdb-uid表,存放metric、tagk、tagv与id之间的映射关系
基础知识
数据查询
查询数据时必须指定开始时间,若不指定结束时间,则默认查询到当前时间的数据聚合和采样
聚合:将相同时间戳的多个时间序列值(metric)聚合(sum,avg,etc.)成一个值
采样:将一段时间同一个时间序列值(metric)计算(sum,avg,etc.)成一个值。
新数据的采样时间为当前时间mod采样周期,即timestamp%interval
填充策略
聚合或采样时,对于丢失的数据opentsdb默认采用线性插值法
填充丢失的数据,也可以配置其他的填充策略,例如0,null,nan时间矫正
opentsdb不对数据进行时间矫正,时间可以精确到毫秒,因此数据上传的时间戳是多少就保存为多少。
从OpenTSDB的处理上我们可以总结出一点:在处理时间序列数据时,如果系统中存在“理想的”“天然的”起哈希作用的字段应该优先考虑其作为rowkey的起始组成部分,后接时间字段,但如果找不到这样的字段再设置人工的哈希字段
HBASE
参考网址
HBASE的数据存储原则:
1) 需要一起访问的数据存储在一起。
比如一个月内某个metric的监控数据,集中保存在hbase的内部。
hbase meta表结构:
HDFS
HDFS数据以块存储,默认块大小64MB