首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongo索引创建对spring应用程序部署的影响

mongo索引创建对spring应用程序部署的影响
EN

Stack Overflow用户
提问于 2022-10-14 15:05:31
回答 2查看 34关注 0票数 0

我正在开发一个Spring应用程序,它有一个现有的mongo集合,拥有大量的数据。我需要在这个集合上创建一个索引。我将使用Mongobee/Mongock类迁移框架来创建索引。我想知道这个索引创建是否会影响Spring应用程序部署的持续时间?如果我将后台属性设置为真用于创建索引,该怎么办?

基本上,我想要的情景是:-

  • 应用程序的部署不应以任何方式受到索引创建的影响
  • 索引创建应该在后台进行,同时mongo应该能够为该集合提供查询。
EN

回答 2

Stack Overflow用户

发布于 2022-10-17 19:45:06

当您问这样的问题时,请始终确保包含您正在运行的版本。在与答案相关的版本之间经常会有重要的行为变化。

一般来说,创建background索引可以完成您想要的任务。也就是说,这样的索引构建不会锁定集合,并允许应用程序在索引生成过程中继续运行。

也就是说,foregroundbackground索引构建的概念已经不复存在。从4.2开始,所有索引构建都有效地在后台完成(如果在发出创建索引的命令时提供了background参数,则忽略该参数)。您可以阅读更多关于该这里的内容。

还值得一提的是,您还可以选择在复制集上的滚动方式中构建索引。Atlas中的集群可以选择自动使用该技术,或者可以手动执行此技术。但是,这种情况并不常见,尤其是在4.2版本中引入了新的索引构建方法之后。

票数 0
EN

Stack Overflow用户

发布于 2022-10-18 05:21:46

虽然@ answer 20042973的答案是正确和非常有用的,但它只适用于MongoDB。

但是,如果我没有错,你也会担心Mongock的行为以及它会如何影响您的部署。

上面所解释的@ use 20042973,再加上Mongock中runner-type: applicationrunner的使用,将提供您想要的内容:

  • 应用程序启动并服务请求,而不等待Mongock完成。
  • MongoDB在构建索引时可用( MongoDB版本+=4.2)
  • 您的服务的所有实例的部署将在不等待Mongock锁的情况下启动和服务(不要将其与MongoDB的锁混淆)。

然而,值得一提的是以下几点:

  1. 您提到了mongock配置属性indexCreation。嗯,这里没什么可做的,这是为了蒙哥克内部的结构。这是用于应用程序无权创建索引的情况。
  2. 如果ChangeUnit创建索引失败并引发异常,则应用程序将被中止。
  3. 如果不是使用runner-type: applicationrunner,而是使用runner-type: initializingbean,则会得到相反的行为。在Mongock完成之前,您的应用程序不会启动
  4. runner-type: applicationrunner是默认的
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74071251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档