【问题标题】:Performance of Cloud Bigtable row countsCloud Bigtable 行数的性能
【发布时间】:2018-08-13 17:53:45
【问题描述】:

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

假设架构的行键末尾带有 unix 时间戳,例如,event_id#unix_timestamp

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

【问题讨论】:

标签: google-cloud-bigtable


【解决方案1】:

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

时间戳查询有点棘手。通常,时间序列的用户希望获得诸如“获取最新的 N 值”之类的查询。 Bigtable 仅以递增值返回数据,因此您必须创建一个范围从 event_id#{max int64 - unix_timestamp} 开始的架构,您还需要一个 LimitRows 来获取最新的 N。

对于 Cloud Bigtable,重要的是要提出您将如何处理数据的问题。这将告知您对架构的选择。

Cloud Bigtable 有一个“discuss”小组用于一般性讨论,GitHub 存储库用于针对特定语言的功能请求/问题。你可以在https://cloud.google.com/bigtable/docs/support/getting-support找到更多信息。

【讨论】:

    【解决方案2】:

    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))
    

    【讨论】:

      猜你喜欢
      • 2019-05-09
      • 2018-03-26
      • 1970-01-01
      • 2015-08-25
      • 2017-01-30
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      相关资源
      最近更新 更多