gpt4 book ai didi

go - BigTable:一个大查询还是一打小查询?

转载 作者:IT王子 更新时间:2023-10-29 02:06:32 25 4
gpt4 key购买 nike

我将 event 系列存储在 BigTable 中,格式如下:

rowKey                | col_1 | col_2
----------------------|-------|------
uuid1!uuid2!timestamp | val1 | val2
....

col_1 包含一个 float64col_2 包含一个 63 个字符长的字符串。

这一系列 event 中的特定范围被分组并松散地关联到我们将称为 operation 的对象:

{
"id": 123,
"startDate": "2019-07-15T14:02:12.335+02:00",
"endDate": "2019-07-15T14:02:16.335+02:00"
}

所以你可以说一个operation是一个event的时间窗口,并且可能关联到10-1000个event

当我想向用户显示此数据时,我首先查询 operation 对象,然后为每个 operation 执行 BigTable 查询以找到 >它涵盖的事件

通过监控我发现每个 BigTable(一个开发实例,请注意)查询可能需要 20 毫秒到 300 毫秒。

这让我想知道,考虑到 BigTable 的架构 - 执行小的、单独的查询是否有意义?

执行一个涵盖我的 operation 范围的大查询,然后在我的应用程序中将事件划分到它们各自的 operation 是否更有意义?

最佳答案

很可能是的,但这里的细节很重要。

如果每个用户请求只有几个操作,那么并行发出小查询实际上可能更好。这将使您获得每个请求的最佳延迟,但会以集群的每个请求 CPU 开销为代价。您的应用程序代码也会更加复杂。

如果每个用户请求有很多操作,您肯定希望通过扫描获得更高的吞吐量效率。

对于高级用例,您还可以在两者之间做出折衷,并将扫描分成并行运行的 N 个分片,其中 N << #operations。

您绝对不应该做的一件事是一次发送一个小请求,因为您只会产生一堆不必要的往返!

关于go - BigTable:一个大查询还是一打小查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57612508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com