我正在开发一个Spring应用程序,它有一个现有的mongo集合,拥有大量的数据。我需要在这个集合上创建一个索引。我将使用Mongobee/Mongock类迁移框架来创建索引。我想知道这个索引创建是否会影响Spring应用程序部署的持续时间?如果我将后台属性设置为真用于创建索引,该怎么办?
基本上,我想要的情景是:-
发布于 2022-10-17 19:45:06
当您问这样的问题时,请始终确保包含您正在运行的版本。在与答案相关的版本之间经常会有重要的行为变化。
一般来说,创建background索引可以完成您想要的任务。也就是说,这样的索引构建不会锁定集合,并允许应用程序在索引生成过程中继续运行。
也就是说,foreground和background索引构建的概念已经不复存在。从4.2开始,所有索引构建都有效地在后台完成(如果在发出创建索引的命令时提供了background参数,则忽略该参数)。您可以阅读更多关于该这里的内容。
还值得一提的是,您还可以选择在复制集上的滚动方式中构建索引。Atlas中的集群可以选择自动使用该技术,或者可以手动执行此技术。但是,这种情况并不常见,尤其是在4.2版本中引入了新的索引构建方法之后。
发布于 2022-10-18 05:21:46
虽然@ answer 20042973的答案是正确和非常有用的,但它只适用于MongoDB。
但是,如果我没有错,你也会担心Mongock的行为以及它会如何影响您的部署。
上面所解释的@ use 20042973,再加上Mongock中runner-type: applicationrunner的使用,将提供您想要的内容:
然而,值得一提的是以下几点:
indexCreation。嗯,这里没什么可做的,这是为了蒙哥克内部的结构。这是用于应用程序无权创建索引的情况。runner-type: applicationrunner,而是使用runner-type: initializingbean,则会得到相反的行为。在Mongock完成之前,您的应用程序不会启动runner-type: applicationrunner是默认的https://stackoverflow.com/questions/74071251
复制相似问题