hbase时间序列数据格式:使用复合键与使用带时间戳的版本控制

nx7onnlm  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(339)

我喜欢存储1000万个局域网设备的字节计数器日志。每个设备每15分钟报告一次字节计数器值(96个样本/天),每个数据样本有500列。每个设备都由其设备序列号标识 dev_sn .
最后,我将处理所有设备的数据(计算每个设备的总字节数),并将它们存储到配置单元数据格式中。
原始数据如下:(例如设备 sn1 , sn2 ,和 sn3 报告值位于 t1 , t2 ,和 t3 )

方法一:两者兼用 dev_sn 以及 timestamp 作为复合材料 row-key .

方法二:使用 dev_sn 作为 row-key 并将每个数据存储为现有值的版本更新。

要找到总字节数,
方法一:搜索方式 sn1 对于复合键,按时间排序并处理数据
方法二:搜索方式 sn1 提取所有版本并处理数据
我认为方法2是一个更好的解决方案,因为它将创建更少的行键,但不确定这是否真的是更好的方法。一些建议真的很有帮助。

daupos2t

daupos2t1#

这是主观的,但我总是选择复合行键而不是版本控制,原因如下:
您可以为每个设备存储无限的“版本”。对于版本控制,此属性是有限的(在配置中设置)。
使用hbase命令从特定的时间戳/时间范围检索条目要容易得多。前缀扫描比版本api更容易使用。
您没有理由要减少行键的数量—hbase是专门为存储大量行键而设计的。
如果你需要删除上周二的数据怎么办?对于版本控制来说这很困难,对于复合键来说这只是一小段代码。
另一方面,请确保预先分割区域服务器,以便 dev_sn 值均匀分布。

相关问题