如何设计Bigtable Key

How to design Bigtable Key

我会在 Bigtable 中创建我的最佳密钥。我知道关键设计对于查询速度和优化至关重要。我的案例与来自网络机器的时间序列信息有关。它是一个又高又窄的 table,有 3 列:idinfodatetime

我最常查询的是每天获取每个 ID 的所有信息。

按键应该如何设计才能获得最佳性能? id#date?

这是一个复杂的主题,取决于您希望接收的数据量、id 的结构、id 的数量等。

Cloud Bigtable 文档有一个页面对此进行了详细介绍:

https://cloud.google.com/bigtable/docs/schema-design-time-series

这可能比这里提供的要好。

How should the key be designed to obtain the best performances? id#date?

假设你有很多机器,并且它们的 id 相当不同(所以它们不是热点),那么可能是 id#date#time。您可以使用范围查询 ID 和日期,这应该非常有效。

披露:我领导 Google Cloud Bigtable 的产品管理。

My case is related to a time series information from a network machine. it is a tall and narrow table with 3 columns: id, info and datetime.

鉴于 id 在行键中,我不确定您是否需要单独的 id 列。

同样,您能否说明为什么需要将 datetime 作为单独的一列?请注意,Cloud Bigtable 中的每个值都有一个关联的时间戳,因此您不需要在单独的列中存储单独的 date/time。

My most frequent query is to get all info for each id for each day.

How should the key be designed to obtain the best performances? id#date?

我的建议是按照你的建议去做:id#date 作为行键,并将该日期的所有数据存储在一行中,使用每个单元格值的时间戳来区分它,所以您可以获得每次读数的准确时间戳。

如上所述,我认为您可以同时删除 iddatetime 列,并仅使用 table.[=17 的单个列来完成此用例=]

祝你的项目好运;请告诉我们进展如何!