Bigtable - read_rows 和 start_key
Posted
技术标签:
【中文标题】Bigtable - read_rows 和 start_key【英文标题】:Bigtable - read_rows and start_key 【发布时间】:2019-02-04 17:46:26 【问题描述】:有没有办法为 Bigtable 编写 start_key
?我找不到关于 start_key
语法的明确文档。
假设我有一个用户活动的 domain_timestamp 行键。
要将查询过滤到特定域,我可以使用过滤器(较慢)或 start_key(较快)。
我一直将我的start_key
字符串写为domain_
,但是如果我们现在有domain
、user ID
和timestamp
,现在我想按除特定时间以外的任何用户进行过滤,我可以使用domain_*_timestamp
之类的东西吗?
【问题讨论】:
【参考方案1】:您必须使用带有RegexStringComparator
的过滤器。您也可以setStart(domain_)
以获得更好的性能。不幸的是,这几乎要对domain_
进行扫描并在服务器端进行过滤。
使用随机用户 ID 进行搜索可能会更快,或者如果您需要所有用户,则使用 Table.get(List<Get>)
,其中每个 Get
对应于单个用户。
【讨论】:
听起来更好的解决方案是保留两张表,一张使用 domain row_key,另一张使用 domain_user?所以我们得到了最快的查询速度。 那行得通。您只是无法 100% 地保持这些表同步,因为 Cloud Bigtable 没有跨表(或跨同一表中的多行)的事务。以上是关于Bigtable - read_rows 和 start_key的主要内容,如果未能解决你的问题,请参考以下文章
BigTable Design - BigTable单元格大小的上限