【发布时间】:2017-05-30 14:40:54
【问题描述】:
Bigtable 文档警告不要单调增加行键,例如时间戳。
这种情况怎么办:
- 行键以日期开头,以随机 GUID 结尾(例如
2017-01-01#563d7104-f976-40a2-b0d5-a1b6083c73f4) - 在 24 小时内,大多数情况下,写入和读取的日期相同
这是否会导致问题,或者一旦 Bigtable 意识到大多数读取/写入在同一日期持续 24 小时,它会在当前日期有效地拆分节点吗?
我需要查询日期,所以它似乎是这个或开头的分片标识符(例如A#2017-01-01#563d7104-f976-40a2-b0d5-a1b6083c73f4)。分片标识符使查询更加复杂,所以我只想在需要时使用它。
【问题讨论】:
-
您的用例是什么?您需要扫描顺序行,还是只进行随机点读/写?
-
我的用例是很多具有相同日期戳的写入(24 小时内相同的日期戳)——日期相同,但日期之后的 GUID 每次写入都会不同.然后我对同一日期的所有行进行扫描。使用 Dataflow 进行写入和读取。
-
我还想知道我是否可以将日期放在行键的末尾并使用
*#2017-01-01之类的通配符执行 RowKeyFilter。这样,写入将分散在平板电脑上,但我不确定查询的效率如何。 -
如果你总是存储基于日期的数据,并且你不需要随机读取,但总是想在一整天内读取整个数据集,你最好使用日期分区表使用 BigQuery 而不是 Bigtable。此外,如果您将日期放在行键的末尾(使用您的
*#2017-01-01示例),则需要对 Bigtable 进行全表扫描,因此效率不高。我认为按日期划分的 BigQuery 表更适合这种特定用例,因为您希望始终通过 Dataflow 扫描一整天的数据,而不是访问特定行。 -
非常感谢!