Google Cloud Bigtable 中的单调递增键被明确记录为有问题,但单调递减键如何比较?
Monotonically increasing keys in Google Cloud Bigtable are clearly documented as problematic, but how do monotonically decreasing keys compare?
使用单调递增密钥(如传统时间戳)的风险是pretty clearly laid out in the docs。
在撰写本文时,不太清楚的是在密钥中使用单调 递减 模式的可能影响,这是定期检索时建议的一种方法“ the most recent records first".
任何人都可以权威地谈谈使用递减键与递增键相比的效果,也许:"comparable hotspotting"、"reduced hotspotting" 或 "no hotspotting but causes other undesirable/catastrophic behavior"?
P.S。当然,我可能没有(也可能永远不会)有 "big" 足够的数据来建议将 Bigtable 作为合适的数据存储选择,我不清楚为什么当 "best practices" 对于可能的 reader (即对键使用范围扫描 - 可能由时间戳聚集)似乎直接受到 "best practices" 对于可能的作者的不便(即不使用时间戳,除非在一定程度上键可以是 "de-clustered" 通过提升的字段、盐分片或随机熵)但也许我遗漏了一些东西......或者这可能只是 "state of the art"?
单调递减键与单调递增键同样糟糕:前者最终会锤击处理字典顺序第一个 tablet(HBase 术语中的区域)的节点,而后者将继续锤击集群中的最后一个 tablet。这些可以分配给集群中的相同或不同节点。
Bigtable 的理想访问模式是分布式读取和分布式写入,而不是仅最新键或仅最早键。
因此,虽然时间本身是单调增长的,但如果数据来自不同的来源(例如,来自不同服务器的监控数据,或来自不同自动收报机的股票价格,或来自不同设备的温度读数等) ,然后可以将它们组合成键,例如:
<device-id>#<timestamp-range>
每台设备单调递增,但不是全局递增,尤其是考虑到有数千或数百万台并行发送数据的设备。
使用单调递增密钥(如传统时间戳)的风险是pretty clearly laid out in the docs。
在撰写本文时,不太清楚的是在密钥中使用单调 递减 模式的可能影响,这是定期检索时建议的一种方法“ the most recent records first".
任何人都可以权威地谈谈使用递减键与递增键相比的效果,也许:"comparable hotspotting"、"reduced hotspotting" 或 "no hotspotting but causes other undesirable/catastrophic behavior"?
P.S。当然,我可能没有(也可能永远不会)有 "big" 足够的数据来建议将 Bigtable 作为合适的数据存储选择,我不清楚为什么当 "best practices" 对于可能的 reader (即对键使用范围扫描 - 可能由时间戳聚集)似乎直接受到 "best practices" 对于可能的作者的不便(即不使用时间戳,除非在一定程度上键可以是 "de-clustered" 通过提升的字段、盐分片或随机熵)但也许我遗漏了一些东西......或者这可能只是 "state of the art"?
单调递减键与单调递增键同样糟糕:前者最终会锤击处理字典顺序第一个 tablet(HBase 术语中的区域)的节点,而后者将继续锤击集群中的最后一个 tablet。这些可以分配给集群中的相同或不同节点。
Bigtable 的理想访问模式是分布式读取和分布式写入,而不是仅最新键或仅最早键。
因此,虽然时间本身是单调增长的,但如果数据来自不同的来源(例如,来自不同服务器的监控数据,或来自不同自动收报机的股票价格,或来自不同设备的温度读数等) ,然后可以将它们组合成键,例如:
<device-id>#<timestamp-range>
每台设备单调递增,但不是全局递增,尤其是考虑到有数千或数百万台并行发送数据的设备。