Site icon PlusMagi's Blog By Pitt Phunsanit

Spring Boot: Migrate Flyway / Liquibase

ในการจัดการฐานข้อมูลสำหรับโปรเจกต์ซอฟต์แวร์ การใช้เครื่องมือ Database Migration เป็นสิ่งจำเป็นพอ ๆ กับการใช้ Git เพื่อควบคุมเวอร์ชันของ Code โดยเครื่องมือยอดนิยมที่มักถูกหยิบมาเปรียบเทียบกันคือ Flyway และ Liquibaseระบบ Migrate เครื่องมือที่นิยมที่สุดคือ Flyway หรือ Liquibase ( เปรียบเสมือน php artisan migrate ของฝั่ง Java )

แม้ทั้งคู่จะทำหน้าที่เดียวกันคือการจัดการลำดับการเปลี่ยนแปลง Schema ของ Database แต่ก็มีปรัชญาการทำงานที่แตกต่างกันอย่างชัดเจน ดังนี้ครับ


Flyway: เน้นความง่ายและความชัดเจน ( Simplicity First )

Flyway ยึดหลักการว่า “SQL คือภาษาสากล” ดังนั้นการเขียน Migration จึงทำผ่านไฟล์ SQL เป็นหลัก


Liquibase: เน้นความยืดหยุ่นและการทำงานข้ามระบบ ( Power & Flexibility )

Liquibase ทำหน้าที่เป็น “Layer” คั่นกลางระหว่าง Developer และ Database โดยใช้วิธีระบุการเปลี่ยนแปลงผ่านรูปแบบ Abstract


ตารางเปรียบเทียบสรุป ( Comparison Table )

หัวข้อเปรียบเทียบFlywayLiquibase
รูปแบบหลักSQL ( Plain SQL )XML, YAML, JSON, SQL
ความยากง่ายง่ายมาก ( Simple )ปานกลาง-สูง ( Sophisticated )
การ Rollbackมีในเวอร์ชัน Enterprise ( เสียเงิน )รองรับตั้งแต่เวอร์ชัน Open Source
การย้าย Databaseยาก ( ต้องแก้ SQL ตาม Syntax )ง่าย ( แปลง Syntax ให้อัตโนมัติ )
การควบคุม ( Control )สูง (เพราะเขียน SQL เอง)ปานกลาง ( ต้องผ่านตัวกลาง )
ความนิยมสูงมากในกลุ่ม Spring Boot / Javaสูงมากใน Enterprise โปรเจกต์ใหญ่

ควรเลือกใช้ตัวไหนดี ?


เลือก Flyway ถ้า…

  1. ทีมของคุณมีความเชี่ยวชาญ SQL อยู่แล้วและต้องการความรวดเร็ว
  2. โปรเจกต์ไม่มีแผนที่จะเปลี่ยนประเภท Database ในอนาคต ( เช่น ใช้ PostgreSQL ตลอดไป )
  3. ต้องการความเรียบง่าย ไม่ชอบโครงสร้าง XML/YAML ที่ซับซ้อน

เลือก Liquibase ถ้า…

  1. ซอฟต์แวร์ของคุณต้องรองรับ Database หลายประเภท ( เช่น ขาย Solution ให้ลูกค้าหลายที่ที่มีระบบต่างกัน )
  2. ต้องการฟีเจอร์ Rollback แบบละเอียดในเวอร์ชันฟรี
  3. โปรเจกต์มีความซับซ้อนสูง และต้องการการจัดการ Migration ที่เป็นระบบและมีเงื่อนไขเยอะ

อ่านเพิ่มเติม

Exit mobile version