1

使用单调递增密钥(如传统时间戳)的危险在 docs 中已经清楚地列出

在撰写本文时,不太清楚的是在键中使用单调递减模式可能产生的影响,这是在定期检索“首先是最近的记录”时建议的一种方法。

任何人都可以权威地谈论使用减少键与增加键相比的影响,也许是:“可比较的热点”、“减少的热点”或“没有热点但会导致其他不良/灾难性行为”?

PS 当然,我可能没有(也可能永远不会)有足够“大”的数据来建议 Bigtable 作为合适的数据存储选择,但我不清楚为什么 Bigtable 被描述为时间序列数据的“自然契合”,而“最佳实践” “对于可能的读者(即对键使用范围扫描——可能按时间戳聚类)似乎直接对可能的作者的“最佳实践”感到不便(即不要使用时间戳,除非键可以是“de-由提升的字段、盐分片或随机熵聚集”,但也许我遗漏了一些东西……或者这只是“最先进的技术”?

4

1 回答 1

1

单调递减的键与单调递增的键同样糟糕:前者最终会敲击处理按字典顺序排列的第一个 tablet(HBase 术语中的区域)的节点,而后者将继续敲击集群中的最后一个 tablet。这些可以分配给集群中的相同或不同节点。

Bigtable 的理想访问模式是分布式读取和分布式写入,而不是 only-latest-keys 或 only-earliest-keys。

因此,虽然时间本身是单调增长的,但如果数据来自不同的来源(例如,来自不同服务器的监控数据,或者来自不同股票代码的股票价格,或者来自不同设备的温度读数等),那么就有可能将它们组合成键,例如:

<device-id>#<timestamp-range>

这将在每个设备上单调增加,但不会在全球范围内增加,特别是考虑到数千或数百万个设备并行发送数据。

于 2016-06-04T21:40:07.787 回答