Cloud Bigtable 行数的性能

Performance of Cloud Bigtable row counts

我想衡量 Cloud Bigtable 在获取具有特定前缀的键的许多行计数方面的性能。

假设一个模式的行键在末尾带有 unix 时间戳,例如 event_id#unix_timestamp.

如果我需要获取 20 个不同 event_id 中每一个的总行数,Cloud Bigtable 这样做是否高效?我会使用前缀或行范围查询来执行此操作。

Cloud Bigtable 服务在此类查询方面表现出色,GoLang 库也表现出色。

时间戳查询有点棘手。通常,timeseries 的用户希望得到像 "get me the latest N values" 这样的查询。 Bigtable returns 数据仅增加值,所以你必须做一个范围从 event_id#{max int64 - unix_timestamp} 开始的模式你还需要一个 LimitRows 来获得最新的 N.

使用 Cloud Bigtable 时,重要的是要问清楚您将如何处理数据。这将告知您架构的选择。

Cloud Bigtable 有一个“discuss" group for general discussion, and GitHub repositories for language specific feature requests / questions. You can find more information at https://cloud.google.com/bigtable/docs/support/getting-support

Cloud Bigtable 没有计数操作,您必须按键前缀查询行并使用过滤器来最小化每行返回的数据量。例如:

rowSet = RowRangeList(PrefixRange("event_id#"),...)
filter = ChainFilters(CellsPerRowLimitFilter(1), StripValueFilter())

count := 0
table.ReadRows(ctx, rowSet, func(r Row) bool {
  count++
  return true
}, RowFilter(filter))