我喜欢存储1000万个局域网设备的字节计数器日志。每个设备每15分钟报告一次字节计数器值(96个样本/天),每个数据样本有500列。每个设备都由其设备序列号标识 dev_sn
.
最后,我将处理所有设备的数据(计算每个设备的总字节数),并将它们存储到配置单元数据格式中。
原始数据如下:(例如设备 sn1
, sn2
,和 sn3
报告值位于 t1
, t2
,和 t3
)
方法一:两者兼用 dev_sn
以及 timestamp
作为复合材料 row-key
.
方法二:使用 dev_sn
作为 row-key
并将每个数据存储为现有值的版本更新。
要找到总字节数,
方法一:搜索方式 sn1
对于复合键,按时间排序并处理数据
方法二:搜索方式 sn1
提取所有版本并处理数据
我认为方法2是一个更好的解决方案,因为它将创建更少的行键,但不确定这是否真的是更好的方法。一些建议真的很有帮助。
1条答案
按热度按时间daupos2t1#
这是主观的,但我总是选择复合行键而不是版本控制,原因如下:
您可以为每个设备存储无限的“版本”。对于版本控制,此属性是有限的(在配置中设置)。
使用hbase命令从特定的时间戳/时间范围检索条目要容易得多。前缀扫描比版本api更容易使用。
您没有理由要减少行键的数量—hbase是专门为存储大量行键而设计的。
如果你需要删除上周二的数据怎么办?对于版本控制来说这很困难,对于复合键来说这只是一小段代码。
另一方面,请确保预先分割区域服务器,以便
dev_sn
值均匀分布。