【发布时间】:2019-12-27 23:09:59
【问题描述】:
我将events系列存储在BigTable中,格式如下:
rowKey | col_1 | col_2
----------------------|-------|------
uuid1!uuid2!timestamp | val1 | val2
....
col_1 包含一个 float64,col_2 包含一个 63 个字符长的字符串。
这一系列events 中的特定范围被分组并松散地与我们称为operation 的对象相关联:
{
"id": 123,
"startDate": "2019-07-15T14:02:12.335+02:00",
"endDate": "2019-07-15T14:02:16.335+02:00"
}
所以你可能会说operation 是events 的时间窗口,并且可能关联到10-1000 events。
当我想向用户显示这些数据时,我首先查询operation 对象,然后对每个operation 执行BigTable 查询以找到它所涵盖的events。
通过监控,我发现每个 BigTable(请注意,是一个开发实例)查询可能需要 20 毫秒到 300 毫秒。
这让我想知道,鉴于 BigTable 的架构 - 执行小的、单独的查询是否有意义?
执行一个覆盖我的operations 范围的大查询,然后在我的应用程序中将这些事件划分到它们各自的operations 是否更有意义?
【问题讨论】:
-
与您的问题无关,但 rowkey=timestamp 是一个臭名昭著的反模式:cloud.google.com/bigtable/docs/…
-
是的,你是对的,为了举例,它被简化了。我会编辑
标签: go bigtable google-cloud-bigtable