【发布时间】:2012-09-25 06:02:07
【问题描述】:
这个问题是关于在深入研究实验和实施的细节之前做出架构选择。这是关于弹性搜索与弹性搜索在可扩展性和性能方面的适用性。 MongoDB,出于某种特定目的。
假设两者都存储具有字段和值的数据对象,并允许查询该对象主体。因此,可能根据临时选择的字段过滤掉对象的子集,这对两者都适用。
我的应用程序将围绕根据标准选择对象展开。 它将通过同时过滤多个字段来选择对象,换句话说,它的查询过滤条件通常包括 1 到 5 个字段,在某些情况下可能更多。而选择作为过滤器的字段将是大量字段的子集。想象一下现有的大约 20 个字段名称,每个查询都是尝试从这 20 个字段中的几个字段过滤对象(它可以少于或超过 20 个整体字段名称,我只是使用这个数字来演示字段到在每个离散查询中用作过滤器的字段)。过滤可以通过所选字段的存在以及字段值来进行,例如过滤掉具有域 A 且其域 B 介于 x 和 y 之间且其域 C 等于 w 的对象。
我的应用程序将不断地进行这种过滤,而在任何时候哪些字段用于过滤方面都没有任何或很少的常数。也许在 elasticsearch 中需要定义索引,但即使没有索引,速度也可能与 MongoDB 相当。
根据进入存储的数据,没有关于此的特殊细节。对象在插入后几乎不会更改。也许需要删除旧对象,我想假设两个数据存储都支持在内部或通过应用程序查询过期删除内容。 (不太常见的是,适合特定查询的对象也需要被删除)。
你怎么看? 而且,你有没有尝试过这个方面?
对于此类任务,我对两个数据存储中的每一个的性能和可扩展性感兴趣。这是一种架构设计问题,欢迎提供应使其架构良好的商店特定选项或查询基石的详细信息,作为经过深思熟虑的建议的演示。
谢谢!
【问题讨论】:
-
我不知道为什么它一直在获得选票,经过这么长时间,它们是否如此突出?
-
很有趣,您在 6 年前选择了什么,到目前为止您的经验是什么 :)?
-
更新 - 对于那些好奇这个答案是否仍然相关的人,MongoDB 现在有全文索引,以提供与所选答案中描述的弹性搜索相同的功能和优势。它们存储为单独的索引,可以根据需要进行查询,但您不会失去拥有通用数据库的任何好处。去年我一直将 MongoDB 用于一般用途和文本搜索查询,强烈推荐它。只是我的两分钱。
标签: mongodb elasticsearch