我正在寻找一种方法来自动化MongoDB或CouchDB等数据库的模式迁移。
最好,这个仪器应该用python编写,但任何其他语言都可以。
答案 0 :(得分:10)
由于nosql数据库可能包含大量数据,因此无法在常规rdbms中将其迁移。实际上你不能为rdbms以及你的数据通过一些大小阈值。将您的网站暂停一天以将字段添加到现有表是不切实际的,因此对于rdbms,您最终会做一些难看的补丁,例如为字段添加新表并进行连接以获取数据。 在nosql世界中,你可以做几件事。
答案 1 :(得分:2)
这些数据库的一个假定好处是它们是无模式的,因此不需要模式迁移工具。相反,您编写数据处理代码来处理存储在数据库中的各种数据。
答案 2 :(得分:1)
如果您的数据足够大,您可能会发现您无法 EVER 迁移数据,或者这样做是不利的。这意味着当您进行架构更改时,代码需要继续向后兼容旧格式。
当然,如果您的数据“年龄”并最终到期,这可以为您进行架构迁移 - 只需更改新添加数据的格式,然后等待旧格式的所有数据到期 - 然后您可以退出向后兼容性代码。
答案 3 :(得分:0)
当一个项目需要关于NoSQL数据库的模式迁移时,我认为您仍在考虑以关系数据库方式,但使用NoSQL数据库。
如果有人要开始使用NoSQL数据库,你需要意识到RDBMS(即MySQL)的大多数“规则”也需要走出窗口。像严格的模式,规范化,使用对象之间的许多关系。 NoSQL存在以解决不需要RDBMS提供的所有额外“功能”的问题。
我建议您以不期望或需要NoSQL数据库的硬架构的方式编写代码 - 您应该支持旧架构并在访问时动态转换文档记录,如果您真的想要在该记录上有更多的架构字段。
请记住,与使用RDBMS时相比,NoSQL存储在思考和设计方面的效果最佳