如何使用 Liquibase XML 文件进行编程
How to program with Liquibase XML files
我习惯了使用纯 SQL 文件进行数据库编程,但即使使用 IDE,我也很乐意看到 SQL 这样的命令,因为我可以坐下来我的开发人员和解决我们遇到的问题
create or replace function register_user (
p_email email_type,
p_username username_type,
p_plain_text_password plain_text_password_type
)
returns token_type
as $$
declare
certificate token_type;
begin
insert into user_account
(
email,
username,
encrypted_password
)
values
(
lower (p_email),
lower (p_username),
crypt (p_plain_text_password, gen_salt('bf'))
);
select into
certificate get_user_account_activation_certificate (p_email := lower (p_email));
return certificate;
end
$$ language 'plpgsql';
我的 devops 团队希望我们使用像 Liquibase to help with automated deployments but Liquibase manages changes to the DB in XML like so (copied from here 这样的数据库迁移工具。这对我来说完全陌生。想象一下,如果 GitHub 要求您只对代码进行更改,然后逐步应用这些更改
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
<changeSet author="authorName" id="changelog-1.0">
<createTable tableName="TablesAndTables">
<column name="COLUMN1" type="TEXT">
<constraints nullable="true" primaryKey="false" unique="false"/>
</column>
</createTable>
</changeSet>
</databaseChangeLog>
对我来说,XML 方法是完全不能接受的,如果我强迫他们这样编码,我所有的数据库开发人员都会辞职。有哪些更好的方法可以在不完全阻碍进度的情况下使用 Liquibase。
- 我应该将 functions/procedures 放入某个 sql 文件中吗? (如建议here)
- 我是否应该逐步应用更改(例如,创建一个空白函数,然后定义其 return 值,然后定义其参数...)?
- 我们是否应该在迁移的同时对数据库进行编程,然后将更改转换为 XML 并改用它?
- Liquibase 是否有一些 GUI 可以更好地管理这些 XML 文件?
Liquibase 不要求您使用 XML。它也适用于 SQL。在博客文章和下面的 Liquibase 文档链接中说明了如何构建事物时,您有几个选择。
我习惯了使用纯 SQL 文件进行数据库编程,但即使使用 IDE,我也很乐意看到 SQL 这样的命令,因为我可以坐下来我的开发人员和解决我们遇到的问题
create or replace function register_user (
p_email email_type,
p_username username_type,
p_plain_text_password plain_text_password_type
)
returns token_type
as $$
declare
certificate token_type;
begin
insert into user_account
(
email,
username,
encrypted_password
)
values
(
lower (p_email),
lower (p_username),
crypt (p_plain_text_password, gen_salt('bf'))
);
select into
certificate get_user_account_activation_certificate (p_email := lower (p_email));
return certificate;
end
$$ language 'plpgsql';
我的 devops 团队希望我们使用像 Liquibase to help with automated deployments but Liquibase manages changes to the DB in XML like so (copied from here 这样的数据库迁移工具。这对我来说完全陌生。想象一下,如果 GitHub 要求您只对代码进行更改,然后逐步应用这些更改
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
<changeSet author="authorName" id="changelog-1.0">
<createTable tableName="TablesAndTables">
<column name="COLUMN1" type="TEXT">
<constraints nullable="true" primaryKey="false" unique="false"/>
</column>
</createTable>
</changeSet>
</databaseChangeLog>
对我来说,XML 方法是完全不能接受的,如果我强迫他们这样编码,我所有的数据库开发人员都会辞职。有哪些更好的方法可以在不完全阻碍进度的情况下使用 Liquibase。
- 我应该将 functions/procedures 放入某个 sql 文件中吗? (如建议here)
- 我是否应该逐步应用更改(例如,创建一个空白函数,然后定义其 return 值,然后定义其参数...)?
- 我们是否应该在迁移的同时对数据库进行编程,然后将更改转换为 XML 并改用它?
- Liquibase 是否有一些 GUI 可以更好地管理这些 XML 文件?
Liquibase 不要求您使用 XML。它也适用于 SQL。在博客文章和下面的 Liquibase 文档链接中说明了如何构建事物时,您有几个选择。