A software developer who enjoys technical challenges. An inquisitive mind with a thirst for knowledge…
مدیریت تغییرات دیتابیس با Liquibase
در پروسه توسعه نرمافزار یکی از سؤالاتی که همیشه پیش میآید که چگونه روند تکامل شمای دیتابیس و نسخه های مختلف را نگه داری کنیم و همچنین چگونه آنرا به نسخه نهایی مشتری منتقل کنیم.
ابزارهای مهاجرت دیتابیس (Database Migration Tools) مختلفی برای این موضوع وجود دارد. این ابزارها به شما کمک میکند که شمای دیتابیس را بسازید، آنرا در نسخه های مختلف اعمال کنید، و همچنین تست های خودکار بر اساس نسخه های مختلف کد و شمای DB بنویسید و مطمن باشید که تغییرات به درستی به محصول نهایی اعمال می گردد.
در دنیای جاوا دو ابزار بیشتر شناخته شده برای اینکار Flyway و Liquibase است.در ادامه ابزار Liquibase را بیشتر بررسی می کنیم.
با استفاده از Liquibase تغییرات مورد نظر را مستقل از نوع دیتابیس در فرمت XML,YML,JSON میتوانید تعریف کنید و در نسخه های مختلف برنامه روی دیتابیس اعمال کنید. مستقل بودن از دیتابیس این امکان را دارد که مثلاً تست های اولیه را با H2 انجام دهید ولی در محصول نهایی از MySql استفاده کنید.
با استفاده از Flyway امکان تعریف تغییرات در فرمت SQL,Java وجود دارد. نوشتن تغییرات در فرمت SQL این امکان را میدهد که DBA مسؤل این تغییرات باشد و نیازی به یادگیری فرمت جدید نباشد و یا شروط پیچیدهای را با استفاده از فرمت جاوا برای تغییرات در نظر داشته باشید.
مفاهیم اولیه
- فایل تغییرات: در این فایل کلیه تغییرات مورد نظر ذخیره می شود.
هر تغییر شامل یک شماره و نویسنده است و میتوان پیش شرط های را نیز برای آنها در نظر گرفت.
برای تغییرات میتوان context تعریف کرد که مثلاً این تغییر در زمان test اجرا شود و یا dev.( این context صرفاً یک کلمه تعریف شده توسط توسعهدهنده است)
<?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.1.xsd">
<changeSet id="01" author="hhimanshu">
<createTable tableName="books"
remarks="A table to contain all books">
<column name="id" type="int">
<constraints nullable="false" unique="true" primaryKey="true"/>
</column>
<column name="name" type="varchar(255)">
<constraints nullable="false" unique="true"/>
</column>
<column name="author" type="int">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
</databaseChangeLog>
- فرمان ها: برای اعمال تغییرات بالا باید از دستور Update استفاده کنید. سایر دستوراتی که پشتیبانی میکند عبارتند از Update,Rollback,Diff,SQLOutput,DBDoc .
- فایل تنظیمات: برای تعیین پارامترهای اتصال به دیتابیس و سایر تنظیمات میتواند آنها در فایل liquibase.properties تعریف کنید. به عنوان مثال:
contexts: test
changeLogFile: com/company/client/project/db.changelog.xml
driver: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@tf-appserv-linux:1521:xe
username: admin
password: adminPass
verbose: true
dropFirst: false
برای استفاده از Liquibase میتوان آنرا به صورت مستقیم در خط فرمان فراخوانی کرد و یا از پلاگین های آن در Maven,Gradle,Ant,Sbt,Spring,… استفاده کنید.
مطلبی دیگر از این انتشارات
کاتلین مولتی پلتفرم رقیب تازه نفس فلاتر
مطلبی دیگر از این انتشارات
کاهش زمان بارگیری اولیه در جولیا (sysimage)
مطلبی دیگر از این انتشارات
آموزش enum در سی شارپ