如何设计Bigtable Key
How to design Bigtable Key
我会在 Bigtable 中创建我的最佳密钥。我知道关键设计对于查询速度和优化至关重要。我的案例与来自网络机器的时间序列信息有关。它是一个又高又窄的 table,有 3 列:id
、info
和 datetime
。
我最常查询的是每天获取每个 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
作为行键,并将该日期的所有数据存储在一行中,使用每个单元格值的时间戳来区分它,所以您可以获得每次读数的准确时间戳。
如上所述,我认为您可以同时删除 id
和 datetime
列,并仅使用 table.[=17 的单个列来完成此用例=]
祝你的项目好运;请告诉我们进展如何!
我会在 Bigtable 中创建我的最佳密钥。我知道关键设计对于查询速度和优化至关重要。我的案例与来自网络机器的时间序列信息有关。它是一个又高又窄的 table,有 3 列:id
、info
和 datetime
。
我最常查询的是每天获取每个 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
作为行键,并将该日期的所有数据存储在一行中,使用每个单元格值的时间戳来区分它,所以您可以获得每次读数的准确时间戳。
如上所述,我认为您可以同时删除 id
和 datetime
列,并仅使用 table.[=17 的单个列来完成此用例=]
祝你的项目好运;请告诉我们进展如何!