首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >文档数据库:数据模型迁移

文档数据库:数据模型迁移
EN

Stack Overflow用户
提问于 2012-11-30 10:02:12
回答 2查看 230关注 0票数 5

和我们大多数人一样,我来自关系数据库世界,我目前正在研究文档数据库世界的可能性。我关注的问题之一是处理数据模型随时间而发生的变化(添加新属性、重命名属性、添加关系、.)。

在关系数据库中,这通常按以下方式处理:

  • 编写数据库迁移 ->修改数据库模式 现有行的->修复数据(通常包含一些业务逻辑)

  • 修改代码(ORM更新,..)

在使用文档数据库时,我觉得对数据模型的更改要容易得多;不需要更新数据库模式,主要是添加一个属性。一切都“正常”。我想知道团队是如何在现实生活中管理这种迁移的,企业项目是如何使用文档数据库的:

  • 是否有对存储在文档db中的类型进行更改的严格策略?例如,对这种类型的每一次更改都需要迁移来更新现有文档吗?
  • 因此,数据模型(存储在文档数据库中的类型)与业务模型之间是否存在明显的分离?

耽误您时间,实在对不起,

柯恩

EN

回答 2

Stack Overflow用户

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2012-12-17 23:00:24

对于MongoDB中的“模式”修改,您可以采取三种通用策略。我已经很好地看到了这三种情况;您将使用哪一种在很大程度上取决于您的特定用例。

首先:您可以简单地向新文档中添加一个新字段,并编写代码来处理不存在该字段的情况。例如,您可以在“用户”文档中添加一个'address‘字段,但是您必须编写客户端代码来处理该字段不存在的情况。

第二:您可以编写代码来查看现有文档,并在看到“旧样式”文档时对其进行更新。例如,您可以使用代码来检查“用户”文档中是否存在"name“字段。如果发现该字段,它将将其分为"first_name“和"sur_name”字段,将文档中的"name“字段划分为$unset,并将新的"first_name”和"sur_name“字段划分为它们的计算值。

第三:可以批量更新集合中的所有文档,以使用新模式。您将编写与上面相同的代码,但不是在应用程序读取文档时懒洋洋地应用它,而是将其应用于集合中的所有文档。

请注意,最后一个策略可能会对性能产生影响:如果您页面上有很多文档已经有一段时间没有被访问,那么您将给MongoDB系统增加额外的负载。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13642895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档