gpt4 book ai didi

mongodb - 繁重的数学查询和 NoSQL 数据库

转载 作者:可可西里 更新时间:2023-11-01 09:53:08 26 4
gpt4 key购买 nike

我有一个非常具体的数据格式和查询需求,我需要知道 NoSQL 数据库是否适合这个需求。我不是问“哪个数据库最好”。我对能力感兴趣。

我需要以 EAV 样式存储数据。具有稀疏索引的文档存储非常适合这种情况。这样我就可以针对每个参数的值创建一个索引。查询时,只会触及需要的索引。例如,MongoDB 就是完美的选择。 这是需求 #1。

查询分两个阶段。第一个是“WHERE”的简单等价物,涉及一系列针对实数的 <=> 操作。结果可能有数万条记录,但通常会有数千条记录。 这是需求 #2。

第二阶段涉及繁重的数学运算,我必须对第一阶段的结果进行计算才能对它们进行排名。该数学涉及大量使用权力和更简单的操作。然后将结果按排名排序,并将“前 100 名”返回给客户端。 这是需求 #3。

MongoDB 是我唯一比较熟悉的NoSQL DB,所以我会用它作为引用。我不相信它可以在查询中执行数学运算,即使可以,它也可能很慢。我相信数学需要在客户端执行(在 C 或 CUDA 中)。这意味着数据需要非常快速地从数据库传输到客户端。我知道 MongoDB 有一个本地二进制连接,但是,例如,Couchbase 使用 REST,我相信这会使其在大型数据集的数据传输时变慢。

我没有选择 MongoDB 的原因是我需要分布式服务器,例如,Couchbase 似乎更适合。

所以我需要一个解决方案,可以在内部执行快速数学运算,从而限制要传输的记录数量,或者可以非常快速地传输记录,以便可以在客户端上处理它们。我知道唯一知道的方法就是测试,但我不知道,因此这个问题是哪些 NoSQL 数据库具有上述功能。

最佳答案

MongoDB 提供服务器端javascript 执行,这可能会解决你的一些问题,但我恐怕不知道效率如何。但是,我怀疑您的工作流是 I/O 绑定(bind)的(您提到了数千条记录),因此最好不要进行客户端处理。当然,基准会说实话,但我提出另一种解决方案。

你试过了吗Redis ?它具有强大的排序集,非常适合您的范围和排名查询。此外,下一个版本将引入 LUA 脚本,它可以弥补工作流的 I/O 性质。请记住,Redis 确实非常快。

关于mongodb - 繁重的数学查询和 NoSQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9680825/

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