การออกแบบ Database Migration ด้วย Flyway / Liquibase

Sharing is caring!

ในการพัฒนา Software สมัยใหม่ Database Migration เป็นขั้นตอนสำคัญที่ช่วยให้โครงสร้างฐานข้อมูล (Schema) มีการเปลี่ยนแปลงไปพร้อมกับ Code ได้อย่างเป็นระบบ เครื่องมือยอดนิยมที่ใช้กันมากคือ Flyway และ Liquibase บทความนี้จะอธิบายแนวคิด วิธีใช้งาน และ Best Practices

Database Migration คืออะไร?

Database Migration คือกระบวนการจัดการการเปลี่ยนแปลงโครงสร้างฐานข้อมูล เช่น การสร้างตารางใหม่, การแก้ไขคอลัมน์, การเพิ่ม Index โดยเก็บเป็นไฟล์ Script ที่สามารถ Run และ Track เวอร์ชันได้ เพื่อให้ทีมพัฒนาทุกคนและทุก Environment ใช้ Schema ที่ตรงกัน

Flyway

Flyway เป็นเครื่องมือ Database Migration ที่เน้นความเรียบง่าย ใช้ไฟล์ SQL Script หรือ Java-based Migration และ Track เวอร์ชันด้วยตาราง flyway_schema_history

การติดตั้ง Flyway

brew install flyway
flyway -v
  

การใช้งาน Flyway

สร้างโฟลเดอร์ sql/ และเขียนไฟล์ Script เช่น:

-- V1__create_users_table.sql
CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100),
  email VARCHAR(100) UNIQUE
);
  

จากนั้น Run Migration:

flyway migrate -url=jdbc:postgresql://localhost:5432/mydb -user=postgres -password=secret
  

Liquibase

Liquibase เป็นเครื่องมือ Database Migration ที่ยืดหยุ่นกว่า Flyway รองรับไฟล์หลายรูปแบบ เช่น XML, YAML, JSON, SQL และมีความสามารถในการ Rollback

การติดตั้ง Liquibase

brew install liquibase
liquibase --version
  

การใช้งาน Liquibase

สร้างไฟล์ changelog.xml

<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 id="1" author="admin">
        <createTable tableName="orders">
            <column name="id" type="SERIAL" autoIncrement="true">
                <constraints primaryKey="true"/>
            </column>
            <column name="user_id" type="INT"/>
            <column name="total" type="NUMERIC(10,2)"/>
        </createTable>
    </changeSet>
</databaseChangeLog>
  

จากนั้น Run Migration:

liquibase --changeLogFile=changelog.xml update
  

เปรียบเทียบ Flyway vs Liquibase

คุณสมบัติFlywayLiquibase
ความง่ายในการใช้งานง่ายกว่าซับซ้อนกว่า
รูปแบบไฟล์SQL, JavaSQL, XML, YAML, JSON
Rollbackจำกัดรองรับเต็มรูปแบบ
Communityนิยมมากนิยมรองลงมา

Best Practices สำหรับ Database Migration

  • เก็บไฟล์ Migration ไว้ใน Version Control (Git)
  • ตั้งชื่อไฟล์ตาม Version และคำอธิบาย
  • ทดสอบ Migration ใน Staging ก่อน Production
  • ใช้ Transaction ให้ครอบคลุม Migration Script
  • อย่าแก้ไขไฟล์ Migration เก่า แต่ให้สร้างไฟล์ใหม่

สรุป

การออกแบบ Database Migration เป็นสิ่งจำเป็นในการพัฒนา Software ทั้ง Flyway และ Liquibase มีข้อดีข้อเสียแตกต่างกัน Flyway เหมาะกับทีมที่ต้องการความเรียบง่าย ในขณะที่ Liquibase เหมาะกับระบบที่ซับซ้อนและต้องการ Rollback การเลือกใช้ขึ้นอยู่กับขนาดของทีมและลักษณะของโปรเจค

SEO Keywords

PostgreSQL Migration,Database Migration Flyway,Database Migration Liquibase,Postgres Schema Versioning,Database Rollback PostgreSQL,Flyway vs Liquibase,Best Practices Database Migration

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *