Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为单机MongoDB安装程序分发MongoDB后台索引创建_Mongodb - Fatal编程技术网

为单机MongoDB安装程序分发MongoDB后台索引创建

为单机MongoDB安装程序分发MongoDB后台索引创建,mongodb,Mongodb,我有一个单机MongoDB设置,它在运行时满足了我的应用程序的需要,但在数据接收时造成了一个严重的瓶颈,因为数组字段上的后台索引需要几天才能完成(反向索引)。这似乎是同一个问题,张贴在这里。我想知道委托/分发索引创建,然后在主机上部署结果索引是否有意义。如果有人考虑过这一点,请分享经验。以下是我想测试的一些想法: 使用分布式作业(如Hadoop或DataFlow)创建索引元组,然后直接将它们加载回MongoDB或另一个更有效地存储反向索引的数据库 使用另一种服务,如ElasticSearch,

我有一个单机MongoDB设置,它在运行时满足了我的应用程序的需要,但在数据接收时造成了一个严重的瓶颈,因为数组字段上的后台索引需要几天才能完成(反向索引)。这似乎是同一个问题,张贴在这里。我想知道委托/分发索引创建,然后在主机上部署结果索引是否有意义。如果有人考虑过这一点,请分享经验。以下是我想测试的一些想法:

  • 使用分布式作业(如Hadoop或DataFlow)创建索引元组,然后直接将它们加载回MongoDB或另一个更有效地存储反向索引的数据库
  • 使用另一种服务,如ElasticSearch,它可能更有效地处理索引;但是,我没有这方面的经验,希望继续在同一台机器上托管所有内容

最后,我决定使用Apache Beam/DataFlow生成所有要索引的元组,使用mongoimport导入所有元组,然后在我需要的字段上创建索引。通过这种方式,我可以在数小时而不是数天内得到一个查询索引。

@AlexBlex具有副本集的解决方案似乎意味着多台服务器运行MongoDb。我很高兴能用一台机器来满足用户的请求,并寻找加快反向索引构建时间的方法。此外,我不认为这个解决方案有助于加快索引的创建——它似乎仍然有一台机器负责构建索引。这不是一个解决方案,而是一个方向。这个问题的答案太宽泛了。这意味着您需要进行某种批量数据导入,但我不打算猜测。副本集将允许您在前台编制索引,这会更快。无论如何,如果没有mongodb,就无法构建mongodb索引。