gpt4 book ai didi

nosql-aggregation - Aerospike 聚合部分大小

转载 作者:行者123 更新时间:2023-12-04 08:36:51 25 4
gpt4 key购买 nike

我们正在使用“小型”纯内存 Aerospike 服务器来存储过去一小时的网站分析。过去一小时的数据大小约为 10 Gb。

我们尝试在 Aerospike 上从单独的服务器(基于 Java 的客户端)执行一些聚合查询,就像这样(在 LUA 中):

stream : aggregate( map(), complex_aggregate_function ) : reduce( simple_reduce_function )

根据文档,所有聚合都在 Aerospike 节点(在我们的例子中是单个节点)上完成,并在客户端上减少。

事实证明,aggregate() 函数只处理小批量数据,即 10-16 条记录。然后将聚合结果发送到客户端,由 reduce() 处理。

由于reduce() 操作是在客户端执行的,这意味着服务器至少会向客户端发送1/16 大小的数据。 IE。数百兆字节用于我们的数据。谈论性能。

是否可以更改记录流聚合的“缓冲区大小”或“队列大小”或“任何大小”? IE。是否可以“调整”Aerospike 以便每个节点仅调用一次 reduce() 函数?

最佳答案

这个问题有两个方面 - 查询批量大小和查询缓冲区大小。

查询批量大小决定了查询在单个批处理中返回的记录数。比方说,如果您的查询为您提供 1000 条记录并且您的查询批量大小为 1000,则所有结果将在一个响应中返回。如果您的查询批处理大小为 100,则需要 10 个批处理才能返回整个结果集。

引用http://www.aerospike.com/docs/operations/manage/queries/了解更多详情。

同样,您可以增加 query-buf-size 来增加缓冲区的大小。较大的缓冲区大小将导致较低的批处理计数。

关于nosql-aggregation - Aerospike 聚合部分大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27405337/

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