11

这个问题是关于为应用程序选择运行查询的数据库类型。暂时不考虑其他因素,考虑到在 mongodb 和弹性之间进行选择,关键标准是查询应该近乎实时地解决。查询将是临时的,因此可以包含 JSON 对象中的任何字段,并且可能包含聚合和子聚合。此外,不会有嵌套对象,并且所有字段都不会包含“描述性”文本(如电影评论等),即所有字段都是关键字类型字段,如州、国家、城市、名称等。

现在,我读到 elasticsearch 性能接近实时,并且 elasticsearch 使用倒排索引并为每个字段自动创建它们。综上所述,我的问题如下。(堆栈中发布了一个类似的问题,但我认为它不能回答我的问题 elasticsearch vs MongoDB 用于过滤应用程序

1)由于我提到的用例中的字段不包含描述性文本,因此不需要弹性提供的全文搜索功能和其他附加功能(尤其是文本搜索),弹性和蒙哥?如果我要在 mongo 中的所有可用字段上创建单个字段索引,弹性搜索和 mongo 查询/聚合性能将如何比较?

2)我不熟悉高级索引,所以我假设可以在 mongo 中的所有可用字段上创建索引(使用多个单字段索引或复合索引?)。我知道这会带来存储和写入速度的成本,这对于弹性也是如此。

3)此外,在弹性中,用户可以在写入速度(索引速度)与写入文档变得可用于查询的速度(刷新间隔)之间进行权衡。mongo中是否有类似的功能?

4

1 回答 1

2

我认为您的数据集的大小也是选择数据库引擎的一个非常重要的方面。根据这个基准(2015),如果您有超过 1000 万份文档,Elasticsearch 可能是更好的选择。如果您的数据集很小,那么 Elasticsearch 和 MongoDB 之间的性能应该没有明显差异。

于 2018-10-24T11:49:57.880 回答