เห็นใน feed มีการ share เครื่องมือในการทำ Database migration ชื่อว่า Atlas
สิ่งที่น่าสนใจคือ มีรูปแบบการทำงาน 2 แบบ คือ
- Declarative
- Versioned หรือ change-based migration
ตัวอย่างการทำงานแบบ Declarative แสดงดังรูป
มีขั้นตอนดังนี้
- Schema loader
- Schema inspection
- Diffing and planning
โดย Atlas จะทำการตรวจสอบ schema ของ database
ระหว่าง schema ในการพัฒนาล่าสุด กับ schema ใน database ปลายทาง
จากนั้นจะทำการตรวจสอบการเปลี่ยนแปลงให้
และจะทำการ update ให้ตามการเปลี่ยนแปลงนั้น ๆ ให้เอง
ซึ่งถือว่าสะดวกมาก ๆ
โดยรูปแบบของ schema นั้น รองรับทั้ง SQL และ HCL (HashiCorp Configuration Language)
ซึ่ง HCL เป็นการจัดการเชิง declarative
ที่มีรูปแบบเดียวกับการจัดการ Infrastructure หรือ IaaS เช่น terraform นั่นเอง
ช่วยลด gap ตรงนี้ลงไป น่าสนใจกับแนวคิดมาก ๆ
และยังทำงานร่วมกับ Terraform ได้อีกด้วย
มาดูตัวอย่างการใช้งานแบบง่าย ๆ
มีขั้นตอนการใช้งานร่วมกับ docker ได้ดังนี้
[gist id="50aae90bcab0aae261243c616624a506" file="1.txt"]ตัวอย่างของ HCL ที่ได้จากการ export ออกมาจาก database
[gist id="50aae90bcab0aae261243c616624a506" file="schema.hcl"]จากนั้นทำการ migrate database โดย Atlas จะตรวจสอบการเปลี่ยนแปลงให้
ในตัวอย่างจะทำการเพิ่ม table ใหม่เข้ามา
[gist id="50aae90bcab0aae261243c616624a506" file="2.txt"]เพียงเท่านี้ก็ใช้งานแบบง่าย ๆ ได้แล้ว
ดูง่ายดีนะ