和我们大多数人一样,我来自关系数据库世界,我目前正在研究文档数据库世界的可能性。我关注的问题之一是处理数据模型随时间而发生的变化(添加新属性、重命名属性、添加关系、.)。
在关系数据库中,这通常按以下方式处理:
在使用文档数据库时,我觉得对数据模型的更改要容易得多;不需要更新数据库模式,主要是添加一个属性。一切都“正常”。我想知道团队是如何在现实生活中管理这种迁移的,企业项目是如何使用文档数据库的:
耽误您时间,实在对不起,
柯恩
发布于 2012-11-30 12:43:21
使用RavenDB,您可以通过修补来实现这一点。见:http://ayende.com/blog/157185/awesome-ravendb-feature-of-the-day-evil-patching和:http://blog.hibernatingrhinos.com/12705/new-option-in-the-ravendb-studiondash-patching
发布于 2012-12-17 23:00:24
对于MongoDB中的“模式”修改,您可以采取三种通用策略。我已经很好地看到了这三种情况;您将使用哪一种在很大程度上取决于您的特定用例。
首先:您可以简单地向新文档中添加一个新字段,并编写代码来处理不存在该字段的情况。例如,您可以在“用户”文档中添加一个'address
‘字段,但是您必须编写客户端代码来处理该字段不存在的情况。
第二:您可以编写代码来查看现有文档,并在看到“旧样式”文档时对其进行更新。例如,您可以使用代码来检查“用户”文档中是否存在"name
“字段。如果发现该字段,它将将其分为"first_name
“和"sur_name
”字段,将文档中的"name
“字段划分为$unset
,并将新的"first_name
”和"sur_name
“字段划分为它们的计算值。
第三:可以批量更新集合中的所有文档,以使用新模式。您将编写与上面相同的代码,但不是在应用程序读取文档时懒洋洋地应用它,而是将其应用于集合中的所有文档。
请注意,最后一个策略可能会对性能产生影响:如果您页面上有很多文档已经有一段时间没有被访问,那么您将给MongoDB系统增加额外的负载。
https://stackoverflow.com/questions/13642895
复制相似问题