Bigtable行键方案可以避免热点?
公司需要您在Google Bigtable中创建一个架构,以便对过去两年的记录进行历史分析。每个进入的记录每15分钟发送一次,其中包含设备的唯一标识符和数据记录。最常见的查询是针对给定设备在给定日期的所有数据。您应该使用哪种架构?
上面最好的选择是什么?
答案 0 :(得分:2)
根据Bigtable schema documentation:
行按行键按字典顺序排序。
这意味着,为了避免出现热点,常见查询应按顺序返回行结果。
基本上,您想查询具有给定日期和设备ID的行。 Google Cloud Bigtable可让您按特定的行键前缀查询行。由于最常见的查询是给定设备和日期的所有数据,因此设备和数据必须是行前缀查询的一部分,并且必须是行键中的前两个条目。
答案 1 :(得分:0)
您有两种解决方案。 Big Table 使用 rowkeys 来制作一个 Lexigoraphy 字典
1 - 在每个行键(前缀)之前添加一个字母,以强制大表制作词典索引,将您的行分布在字母表字母中,并避免在 i/o 期间发生冲突。这种技术称为盐渍表。
例如
123 456 789 101112 131415
a123 a456 b789 b101112 c131415
2- 您可以使用 MD5 哈希,避免在使用之前重复前缀,这样可以保证各种前缀,这样大表将行键分布在实例的磁盘上。