ทำ Database Migrations ด้วย Flyway

เคยเป็นกันบ้างหรือเปล่าครับ เวลาเอาโค้ดชาวบ้านมาแล้วตอนรันมันเจ๊งเพราะข้อมูลในฐานข้อมูลเก่ากันบ้างมั๊ย? คือประมาณว่าจะรู้มั๊ยว่าต้องรัน SQL Script เพื่อ Insert ข้อมูลบางอย่างถึงจะทำงานได้! หรือบางทีต้องเอาโปรแกรมไปติดตั้งให้ Tester โดยทาง Tester ก็ต้องการแยกฐานข้อมูลต่างหากเพื่อเตรียมข้อมูลเอาไว้ทดสอบ แล้วต้องมารัน SQL Script ใหม่ทั้งชุด ชีวิตมันคงจะดีขึ้นถ้ามีเครื่องมือที่ใช้สำหรับงานนี้

Flyway

Flyway เป็น Database Migrations Tools ที่ผมจะสำเสนอเพื่อแก้ปัญหาที่กล่าวมาแล้ว หลักการง่ายๆ คือทำการสร้าง Version ให้ Schema ในฐานข้อมูล โดย Flyway จะทำการตรวจสอบ Version ของ Schema กับ SQL Script ที่เราได้ทำเป็น Version ไว้หากพบว่าในฐานข้อมูลเป็น Version เก่าก็จะทำการ Run Script ให้เป็น version ปัจจุบันทันที เพื่อให้เห็นภาพ แนะนำให้ไปอ่านต่อที่เว็บของ Flyway ได้เลย http://flywaydb.org/getstarted/howFlywayWorks.html

วิธีใช้งาน

ง่ายมากๆๆ ลองทำตามได้เลยครับ http://flywaydb.org/getstarted/firststeps/api.html

เริ่มจากเราต้องมีโฟลเดอร์ resources/db/migration (หากไม่ได้ใช้ maven ก็วางที่ src เลยครับ จากนั้นให้เพิ่มโค้ดนี้เข้าไปในคลาสที่ถูกสั่งให้ทำงานตอน Start โปรแกรมก็จบแล้วครับ

Flyway flyway = new Flyway();
flyway.setDataSource(url, user, password);
flyway.migrate();

พอเรามี SQL Script ตัวใหม่ก็ให้เปลี่ยนชื่อไฟล์โดยให้คำนำหน้าเป็นหมายเลขเวอร์ชั่นล่าสุดเดี๋ยว Flyway จะจัดการให้เองครับ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s