gpt4 book ai didi

data-migration - 是否建议使用 Liquibase 将生产数据从旧数据库模式迁移到新数据库模式?

转载 作者:行者123 更新时间:2023-12-04 04:25:58 24 4
gpt4 key购买 nike

我是数据迁移领域的新手,正在寻找将使用 OurApp 1.0 的客户数据迁移到架构与 OurApp 2.0 兼容的新数据库的方法。我见过不少人推荐 Liquibase 用于数据库更改管理和数据库重构任务,在我的新手耳中听起来它可能接近我们的需要。

但是,在阅读了 www.liquibase.org 上的 Material 后,我觉得 Liquibase 更重要的是保持架构最新,而不是转换大量现有数据,以便将其保留在新架构中。

假设我想将 Employee 表中名为 name 的列拆分为 firstname 和 lastname 列。 Liquibase 将能够通过删除 name 列并添加 firstname 和 lastname 列来更改表。但是,我觉得 Liquibase 并不是真正为我构建的,可以插入转换代码,将数据库中现有记录的名称字段解析为名字和姓氏,并将它们存储在各自的列中。

例如,假设我的 table 看起来像这样

id | name             | position
*********************************
12 Horace Slughorn Professor
13 Albus Dumbledore Headmaster

在我运行 Liquibase 之后,name 列将被 firstname 和 lastname 列替换,因此我的数据库架构将是正确的。但我猜测 Liquibase 不是一个框架,它可以让我插入一些将“Horace Slughorn”解析为“Horace”和“Slughorn”并将这些值存储在该记录的名字和姓氏列中的代码。
id | firstname   |  lastname  | position
*****************************************
12 Horace Slughorn Professor
13 Albus Dumbledore Headmaster

因此,Liquibase 使您的架构保持最新,但并非旨在帮助您转换现有数据以使其与新架构匹配。那正确吗?

最佳答案

Liquibase 的目标是允许您将数据库从一个版本移动到新版本。它有许多内置的数据库“重构”,但它没有像您描述的那样拆分数据,因为如何拆分现有字符串非常依赖于您的实现。

Liquibase 确实允许您在 1.9 中创建自定义更改类( http://www.liquibase.org/manual/custom_refactoring_class )以及在 2.0 中创建更强大的自定义更改支持( http://liquibase.org/extensions )。它是基于 Java 的,因此您的脚本需要用 Java 编写,但您可以进行任何您需要的数据读取和操作。

注意:如果您有大量数据,将记录读入java,然后将它们写回会很慢。在这种情况下,您可以使用 liquibase 的标记并创建基于数据库的 sql 语句和/或存储过程,它们将在数据库中进行拆分。 Liquibase 仍然非常有助于跟踪拆分已完成且不应再次进行。

关于data-migration - 是否建议使用 Liquibase 将生产数据从旧数据库模式迁移到新数据库模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3631616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com