【问题标题】:Bigtable - read_rows and start_keyBigtable - read_rows 和 start_key
【发布时间】:2019-02-04 17:46:26
【问题描述】:

有没有办法为 Bigtable 编写 start_key?我找不到关于 start_key 语法的明确文档。

假设我有一个用户活动的 {domain}_{timestamp} 行键。

要将查询过滤到特定域,我可以使用过滤器(较慢)或 start_key(较快)。

我一直将我的start_key 字符串写为{domain}_,但是如果我们现在有domainuser IDtimestamp,现在我想按除特定时间以外的任何用户进行过滤,我可以使用{domain}_*_{timestamp}之类的东西吗?

【问题讨论】:

    标签: bigtable google-cloud-bigtable


    【解决方案1】:

    您必须使用带有RegexStringComparator 的过滤器。您也可以setStart({domain}_) 以获得更好的性能。不幸的是,这几乎要对{domain}_ 进行扫描并在服务器端进行过滤。

    使用随机用户 ID 进行搜索可能会更快,或者如果您需要所有用户,则使用 Table.get(List<Get>),其中每个 Get 对应于单个用户。

    【讨论】:

    • 听起来更好的解决方案是保留两张表,一张使用 {domain} row_key,另一张使用 {domain}_{user}?所以我们得到了最快的查询速度。
    • 那行得通。您只是无法 100% 地保持这些表同步,因为 Cloud Bigtable 没有跨表(或跨同一表中的多行)的事务。
    猜你喜欢
    • 1970-01-01
    • 2013-03-19
    • 2015-07-17
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 2014-09-11
    • 2016-05-28
    • 1970-01-01
    相关资源
    最近更新 更多