使用NoSQL开发到生产更新

时间:2013-06-25 06:55:48

标签: mongodb version-control development-environment nosql

我已经使用MongoDB大约一年了,但是几乎没有达到它的潜力。

除了我自己以外,我一直在开发新软件,并且我非常喜欢数据库的灵活性,并且我已经对数据进行了重大的结构性更改。

现在我正处于生产服务器和3台开发服务器的地步,我在改变数据结构和同步它时遇到了真正的问题。

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

两条快速建议:

  1. WiredPrairie是对的。版本化您的文档,这将允许您以随意/轻松的方式进行迁移。我希望我们事先做到了。我最大的遗憾之一。

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