Flyway คืออะไร

Flyway เป็นเครื่องมือที่ช่วยโยกย้ายฐานข้อมูลจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง (Database Migration)อย่างรวดเร็ว การจัดการของ Flyway นั้นก็จะคล้ายๆกันเครื่องมือที่ใช้ในการจัดการ Code เช่น Git คือต้องการให้ Code นั้นเป็นอิสระและไม่ขัดแย้งกัน(Conflict)ซึ่งในเชิง Database ก็ใช้แนวความคิดเดียวกัน สมมติว่าเราพัฒนาซอฟต์แวร์บนเครื่อง Local เรา ซึ่งมีทั้ง Data และ Schema พอเพื่อนเอา Code ที่เราพัฒนาไป Run ปรากฏว่า Run ไม่ได้ เพราะ Schema ไม่ตรงกัน ด้วยปัญหานี้เอง Flyway จึงเป็นเครื่องมือที่จะช่วยสร้าง Schema เก็บไว้เป็น Version ต่างๆ ทำให้เราสามารถใช้งานโดยอ้างอิงจาก Version ใหม่ๆ เพื่อแก้ปัญหา Schema ไม่ตรงกันได้

วิธีการทำงานของ Flyway

  • เริ่มจากการ Download และติดตั้งโปรแกรม Flyway จาก https://flywaydb.org
  • ใน floder conf จะมีไฟล์ flyway.conf สำหรับใช้ในการตั้งค่า
    • flyway.url เป็น URL ที่จะเชื่อมต่อกับฐานข้อมูล
    • flyway.user
    • flyway.password

  • สร้าง Table Database สำหรับเรื่องที่ต้องการสร้าง เช่น Table สำหรับการเก็บรายละเอียดของหนังสือ
  • ปกติแล้ว Flyway จะอ่านไฟล์ SQL ที่อยู่ใน SQL Folder ดังนั้นให้สร้างไฟล์ที่ต้องการ Migrate ไว้ใน Folder นี้ โดยชื่อไฟล์ดังกล่าวจะมี Format V<เลขเวอร์ชัน>__<ชื่อเวอร์ชัน>.sql เช่น V1_1_insert_product.sql
  • Run คำสั่ง "flyway migrate" สำหรับการ Update Table ที่พึ่งสร้างขึ้น เมื่อกลับไปยัง Database Tool ของเราจะพบว่ามี Table เพิ่มขึ้นมา
  • Flyway จะสร้าง Schema Version ขึ้นมาและสามารถเรียกดูได้โดยใช้ Command "flyway info"
        ภาพแรก Flyway จะสร้าง Schema Version ขั้นมาโดยอัตโนมัติ จากนั้นเมื่อเริ่มการการพัฒนาโปรแกรมก็จะมีการสร้าง Table ต่างๆ(ภาพกลาง) เมื่อพัฒนาขึ้นไปอีก Datable Table เริ่มเพิ่มมากขึ้นแตกต่างจากเดิมเป็น Version ต่างๆ(ภาพขวา)


        จาก Version 1 และ 2 นี้เองเมื่อเราเรียกดูข้อมูลจาก Table เราจะพบว่ามีการแสดงข้อมูลประวัติที่ผ่านมาทั้งหมด

  • เมื่อได้ Schema Version มาแล้วหาก Application ไหนต้องการเรียกใช้ก็สามารถอ้างอิงจาก Version ได้
  • จากนั้นเมื่อทำการแก้ไขเสร็จแล้วก็ Commit ขึ้นไปใน Repository ซึ่งจะทำให้ Database ของคนอื่นถูก Migrate โดยอัตโนมัติ

Reference:
- https://flywaydb.org/documentation/
- https://www.youtube.com/watch?v=qsacSRcHCCs






ป้ายกำกับ

แสดงเพิ่มเติม

บทความยอดนิยม

Software Development Life Cycle (SDLC) คืออะไร ทำไมจำเป็นต่อการพัฒนาซอฟต์แวร์

Automation testing หรือ การทดสอบซอฟต์แวร์อัตโนมัติ คืออะไร ทำไมถึงสำคัญต่อการทดสอบซอฟต์แวร์

ม.ปลายอยากเข้าสายคอม วิทยาการคอม วิศวกรรมคอม เตรียมตัวอย่างไร ต้องมีพื้นฐานอะไรบ้าง

วิธีเก็บ วิเคราะห์ รวบรวม requirement อย่างไรให้มีประสิทธิภาพ

Performance Test คือ อะไร วัดประสิทธิภาพของระบบ ล่มไม่ล่ม จะรู้ได้อย่างไร

8 สิ่งที่ AI จะมาเปลี่ยนโลกในอนาคต

ถอดรหัสความลับเครื่อง Enigma จุดเริ่มต้นและจุดจบของสงครามโลกครั้งที่ 2