工具辅助数据库重构

Description of your first forum.
Post Reply
suchona.kani.z
Posts: 941
Joined: Sat Dec 21, 2024 5:29 am

工具辅助数据库重构

Post by suchona.kani.z »

关系数据库的重构很少与此相关。数据库是开发的应用程序的重要组成部分。在软件项目的生命周期中,数据库结构的变化几乎与源代码一样频繁,因此应该同样小心地对待。这就是为什么我想在下面给你一些有用的提示。

二级数据库重构
如果对源代码的更改还需要对数据库结构进行更改,则应创建一个执行更改的 SQL 脚本 - 例如,添加/删除表或表列或更改数据类型。在最好的情况下,您可以将此脚本存储在版本管理中的源代码旁边。如果您在目标系统上安装该软件的新版本,您现在应该记住在目标数据库上以正确的顺序执行自上一个版本以来累积的所有脚本。这通常是一个手动步骤,您必须在发行说明中进行描述。因此,文档或实施中的错误会产生一定的风险。虽然应用程序的源代码受到了最充分的关注,但 SQL 脚本大多生活在阴影中,被视为二等病人。毕竟,您想要开发软件而不是更新数据库,对吧?

数据库重构正确
是的,您想开发软件!但是为什么不借助工具自动进行数据库重构,让您的生活变得更轻松呢?一切可以自动化的东西都可以防止手动错误并节省时间,您可以更好地利用这些时间来实现新功能。但是自动化数据库重构是什么样的呢?

首先,您必须收集对数据库结构的更改。根据您用于数据库 律师电子邮件列表 重构的工具,这些更改将以 SQL 脚本或其他语言(例如 XML、JSON 或 YAML)的形式进行描述。与简单的方法一样,这些脚本被编号并存储在版本管理中。

与简单方法相比,其优点是使用可以在数据库上执行脚本的工具。因此,如果您面临更新目标数据库的任务,您只需执行一个命令,所有脚本都会被一个接一个地导入到数据库中。该工具会记住哪些脚本已被执行,以便仅执行那些仍然丢失的脚本。为此,该工具通常在目标数据库中创建自己的数据库表。这记录了哪些脚本已经被执行。

此类数据库重构工具的另一个功能是检查已执行的脚本是否同时发生了更改。例如,如果脚本创建一个名为“foo”的列,则该列已应用于数据库并且脚本会再次进行调整 - 例如,如果该列应称为“bar” - 该工具在使用时会中断再次在同一个数据库上处理该过程。背景如下: 可能已经在另一个目标数据库上创建了列“foo”,然后也会在那里创建第二列“bar”。这意味着该工具会自动防止两列错误地出现。为了检查脚本是否发生更改,数据库重构工具通常将脚本的哈希值存储在表中,该表还存储有关哪些脚本已被执行的信息。

工具
数据库重构工具可以减轻您的负担。它还可以防止在目标环境上安装新版本时出现错误。

这种类型的两种流行工具是“ Liquibase ”和“ Flyway ”。两者都是用Java开发的,需要Java运行环境才能运行。优点是:您只需要很少的 Java 知识即可使用它。因此,这两个工具绝不局限于Java项目。

在我的博客系列的第二部分中,我将更详细地描述“Liquibase”和“Flyway”的优缺点。敬请关注!

您是否已经有过工具支持的数据库重构的经验?我期待您的评论。
Post Reply