我有一个非常具体的数据格式和查询需求,我需要知道 NoSQL DB 是否适合这种需求。我不是在问“哪个数据库最好”。我对能力感兴趣。
我需要以 EAV 样式存储数据。具有稀疏索引的文档存储非常适合这一点。这样,我可以针对每个参数的值创建一个索引。查询时,只会触及需要的索引。例如,MongoDB 非常适合这一点。这是需求#1。
查询分为两个阶段。第一个是“WHERE”的简单等价物,涉及一系列针对实数的 <=> 操作。结果可能有数万条记录,但通常有数千条记录。这是需求#2。
第二阶段涉及大量数学,我必须在第一阶段的结果上执行才能对它们进行排名。这个数学涉及大量使用权力和更简单的操作。然后将结果按排名排序,并将“前 100 名”返回给客户端。这是需求#3。
MongoDB是我比较熟悉的唯一NoSQL DB,所以我将它作为参考。我不相信它可以在查询中执行数学运算,即使可以,它也可能会很慢。我相信需要在客户端(在 C 或 CUDA 中)执行数学运算。这意味着数据需要非常快速地从数据库传输到客户端。我知道 MongoDB 有一个本机二进制连接,但是,例如,Couchbase 使用 REST,我相信这会使大型数据集的数据传输速度变慢。
我没有选择 MongoDB 的原因是我需要分布式服务器,例如 Couchbase 似乎更适合。
所以我需要一个解决方案,既可以在内部执行快速数学运算,从而限制要传输的记录数量,也可以非常快速地传输记录,以便可以在客户端处理它们。我确实知道唯一知道的方法是测试,但我不知道,因此这个问题是哪些 NoSQL DB 具有上述功能。