

# 数据库架构更改
<a name="database-schema-changes"></a>

 现代软件通常具有数据库层。通常使用关系数据库，该数据库同时存储数据及其结构。在持续交付过程中，经常需要修改数据库。处理关系数据库中的更改需要特别注意，除了部署应用程序二进制文件时遇到的挑战之外，还会带来其他挑战。通常，在升级应用程序二进制文件时，您会停止应用程序，对其进行升级，然后重新启动。您确实不必担心应用程序状态，它是在应用程序之外处理的。 

 升级数据库时，您的确需要考虑状态，因为数据库包含的状态很多，但逻辑和结构相对较少。 

 应用更改之前和之后的数据库架构应视为不同版本的数据库。可以使用 Liquibase 和 Flyway 等工具来管理版本。 

 通常，这些工具采用以下方法的某种变体： 
+  将表添加到存储数据库版本的数据库中。 
+  保持跟踪数据库更改命令，并将它们集中放入版本化的更改集中。对于 Liquibase，这些更改将存储在 XML 文件中。Flyway 采用的方法略有不同，其中，更改集作为单独的 SQL 文件处理，或者偶尔作为单独的 Java 类来进行更复杂的转换。 
+  当要求 Liquibase 升级数据库时，它会查看元数据表并确定要运行哪些更改集，以使数据库保持最新版本。 