0

我已经使用 MongoDB 大约一年了,但还没有完全发挥它的潜力。

我一直在开发新软件,除了我自己之外的任何人都看不到,我充分享受数据库的灵活性,并且我对动态数据进行了重大的结构更改。

现在我正处于拥有生产服务器和 3 个开发服务器的地步,我在更改数据结构和同步它们方面遇到了真正的问题。

理论上,开发服务器应该始终拥有来自生产的最新数据。在结构化数据库中,如果我重命名某些东西,我可以运行一个比较工具并在拉取后在生产中进行相应的更改。在 MongoDB 中,这可能变得异常困难。文档之间可能有数百次更改,更不用说从数据库到数据库了。

我一直在查看我的~/.dbshell文件以了解我所做的更改,但是在程序本身中所做的更改呢?配置数据库更改?

是否有工具或程序可以使这更容易?

我在谷歌上花了几个小时研究其他人是如何做到的。我遇到了 Mongeez,但它比我需要的更加手动和乏味。过去,我只是在一个 git 目录里面做一个mongodumpandmongorestore来传输数据,但是这些快照太死板了。我阅读了一些关于将新数据从生产转移到开发的博客文章,但没有关于在生产中更新开发文档。我可以写一个比较脚本,但我觉得这是在重新发明轮子。一定有更好的方法。

TL;DR:有哪些方法可以在环境之间对 NoSQL 数据、新条目和更改的数据进行版本控制?

4

1 回答 1

1

在管理一些生产 Mongo 机器大约一年时,我遇到了类似的问题/经验。

两条快速建议:

  1. 有线草原是对的。版本化您的文档,这将允许您以随意/轻松的方式迁移。我希望我们提前做到了。我最大的遗憾之一。

  2. 我们使用 Groovy 连接并进行架构/数据更改,我喜欢它。该语言易于学习,并且与 JSON 配合得很好。我的做法是备份我要操作的集合,在 dev 中编写脚本,运行它们,如果我搞砸了,恢复备份的集合。迭代直到我得到完美的脚本,然后在生产中重复。

于 2013-06-25T22:35:16.600 回答