是否有可能做到这一点?
我问的原因是,将备份作为预提交挂钩似乎很有用,并且在提交的代码中以某种方式包含基于文本的备份,这样源控件(git)中的每个修订都具有相关的必要备份用它.
我意识到有可能让MongoDB将它的所有集合作为JSON吐出,并以这种方式支持它们,但是这样就不会包含数据库和集合元数据.
主要关注的是,当分支对服务器端代码进行更改,然后恢复该分支时,我们很容易忘记进行必要的备份以允许有效的恢复(代码将不再与模式匹配).有人可能会声称这是程序员错误,但我认为应该有一些自动化来确保我们拥有适用于每个版本代码的数据库版本.在项目的早期阶段,模式是无定形的问题……动态模式是Mongo的主要祝福和诅咒.
最佳答案 MongoDB将其数据存储在
BSON (Binary JSON) format中,因此如果要转换为纯文本格式,您应该了解潜在的
data type fidelity问题.如果您想要对MongoDB数据库进行一致的备份,推荐的格式将是
mongodump
的二进制输出.但是,我不建议使用二进制数据库备份来扩展您的git仓库.
通常,具有架构灵活性的数据库的一个解放方面不必担心开发期间的架构迁移.这确实需要考虑您的应用程序如何处理不同的模式版本,因此采用更加可控的方法也很好.
由于您的主要目标是使数据库架构与代码更改保持同步,因此更好的方法是研究架构迁移工具.这些通常允许您使用已定义的应用程序顺序创建升级/降级代码段到数据库,并确保在迁移脚本中捕获未由应用程序代码处理的数据库模式的任何更改.
一些示例工具: