OpenTSDB元数据模型

举报
RamboZhong 发表于 2018/05/26 09:46:39 2018/05/26
【摘要】 OpenTSDB的元数据记录了指标名(Metrics)、标签名、标签值等信息的UID等信息。把多样的信息转换为统一长度的UID,可以简化数据模型的设计,也可以有效节约存储空间。

         OpenTSDB的元数据记录了指标名(Metrics)、标签名、标签值等信息的UID等信息。把多样的信息转换为统一长度的UID,可以简化数据模型的设计,也可以有效节约存储空间。

 

1       UID设计

UID(Unique Identifier):当写入新的指标名(或标签名、标签值)的时候,OpenTSDB会为为其分配一个唯一的标识码,把这个标识码称为UID。这些标识码信息保存在OpenTSDB的元数据表中,表名默认为tsdb-uid(在CloudTable服务中OpenTSDB的元数据表名为OPENTSDB.UID)。

OpenTSDB分配UID遵循如下规则:

Ø  指标名、标签名和标签值分别进行分配,即三者的UID的分配互不相关;

Ø  每个唯一的指标名(或标签名、标签值)的UID值都是唯一。不存在不同的指标名(或标签名、标签值)使用相同的UID,也不存在同一个指标名(或标签名、标签值)使用多个不同的UID

Ø  UID值的范围是0x0000000xFFFFFF,即指标名(或标签名、标签值)最多只能存在16777216个不同的值。

 

1.1   HBase 表设计

为了从UID索引到指标名(或标签名、标签值),同时也要从指标名(或标签名、标签值)索引到UIDOpenTSDB同时保存这两种关系的数据。

在元数据表中,把这两种数据分别保存到两个不同的Cloumn Family中。这两个Cloumn Family分别为idname

CloudTable服务中,元数据表的描述信息如下:

{NAME => 'id', BLOOMFILTER => 'ROW', COMPRESSION => 'SNAPPY'}                                                                                                                                                                                                                                                                             

{NAME =>'name',BLOOMFILTER => 'ROW', COMPRESSION => 'SNAPPY', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '

0'}

 

1.2   数据模型

一个指标名为cpu.hum,一个标签名为host,两个标签值为189.120.205.26189.120.205.27UID信息如下:

        


id

name

RowKey

metrics

tagk

tagv

metrics

tagk

tagv

0

UID_COUNTER

UID_COUNTER

UID_COUNTER




1

cpu.hum

host

189.120.205.26




2



189.120.205.27




189.120.205.26






1

189.120.205.27






2

cpu.hum




1



host





1


说明:

Ø  RowKey为【0】的行中,分别保存了指标名、标签名和标签值的当前UID的最大值。当为新的指标名、标签名和标签值分配了新的UID后,会更新对应的最大值。

Ø  RowKey为【1】的行中,RowKeyUIDQualifierid:metrics的值指标名,Qualifierid:tagk的值为标签名,Qualifierid:tagv的值为标签值;

Ø  RowKey为【2】的行中,RowKeyUID RowKeyUIDQualifierid:tagv的值为标签值,暂不存在UID为【2】的指标名和标签名;

Ø  RowKey为【189.120.205.26】的行中,Qualifername:tagv的值为UID。表示当【189.120.205.26】为标签值时,其UID1

Ø  RowKey为【189.120.205.27】的行中,Qualifername:tagv的值为UID。表示当【189.120.205.26】为标签值时,其UID2

Ø  RowKey为【cpu.hum】的行中,Qualifername:metrics的值为UID。表示当cpu.hum为指标名时,其UID1

Ø  RowKey为【host】的行中,Qualifername:tagk的值为UID。表示当host为标签值时,其UID1

 

由于HBase的存储数据类型是Byte,所以UID在存储时会转为3个字节长度的Byte数组进行存储。HBase中的数据视图下:

1.png

 

1.3   TSUID

对每一个DataPoint,指标名、时间戳、标签名和标签值都是必要的元素。除时间戳外,指标名、标签名和标签值的UID就可组成一个TSUID。所以TSUID可以看做是一组特定的UID的组合。格式如下:

 <metric_UID><timestamp><tagk1_UID><tagv1_UID>[...<tagkN_UID><tagvN_UID>]

注意,一个TSUID中可能存在多个标签名和标签值的UID

在上面的例子中,就可以组成两个TSUID,分别是:

2.png

 

 

 

 

 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。