我正在研究使用 NoSQL 风格的文档数据库的好处,我关心的问题之一是如何在需要时处理数据的“重构”。
从未实际使用过 NoSQL 的人设计的示例:
假设在 MongoDB 中我们有一个名为 User 的文档,其中有一个名为 Address 的嵌入文档,后来我们决定将 Address 文档移出到一个新集合中。
考虑到停机时间、性能等,有哪些可能的方法可以实现这一点?
当您没有正式定义的模式时,模式更改非常容易 - 您所要做的就是更新自己的代码,以便它可以处理旧文档和新文档,通常是通过包含旧字段和新字段并将数据从旧字段移动到新字段新的可以在加载时或在保存之前根据情况进行。
由于代码和数据库之间不会出现数据版本冲突,因此不会产生停机时间,并且如果您想要进行完整的迁移并删除对旧文档的支持,则在所有文档上调用现有的加载/保存代码很简单。
更改索引属性稍微复杂一些,但仍然比更改 SQL 模式更容易。