【问题标题】:What is meant by non-destructive schema evolution in Anchor Modeling?Anchor Modeling 中的非破坏性模式演化是什么意思?
【发布时间】:2012-06-16 18:25:06
【问题描述】:

假设您有一个锚模型并将单个名称属性替换为三个属性:FirstName、MiddleName 和 LastName。原始名称属性会发生什么变化?我可以想象其他感觉具有破坏性的模式更改,那么 Anchor Modeling 声称以非破坏性方式发展模式是什么意思?

【问题讨论】:

    标签: database-design database-schema anchor-modeling


    【解决方案1】:

    破坏性操作会影响正常运行时间

    它可能是指它与正常运行时间的交互。如果您 ALTER 一个足够大的基表,您将暂停对它的请求,直到它完成。使用锚建模,没有这样的场景,因为新列是不与基表交互的新实体(就阻止对基表的 I/O 操作而言,除了删除,这是没有实际意义的,因为新列被实现为空表)。

    因此,假设您有一个带有 FullName 属性的 Person 基表。然后你已经非破坏性地进化到包括 FirstName、MiddleName 和 LastName。 FullName 表可能会继续有用,直到所有代码路径都采用 First、Middle 和 Last。此时它变成了一种退化的器官,继续进行进化类比。

    审核(删除)此表也是非破坏性的。作为一个单独的实体,其生命周期的销毁不会中断任何基表或属性表的操作。

    所以这可能就是锚模型作者所说的破坏性的意思。

    破坏正常运行时间。

    【讨论】:

    • 另外,简单地将全名替换为first、middle和last就等于破坏了部分数据库的公共API。 (表名和列名本质上与用于访问数据的公共 API 相同。)我不知道锚建模如何用基于第一个、中间和最后一个连接的视图替换“全名”表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多