บทนำ
กระบวนการปรับใช้ด้วยตนเองสําหรับการเปลี่ยนแปลงฐานข้อมูลนั้นช้าและเกิดข้อผิดพลาดได้ง่าย มีคนเขียนสคริปต์ ส่งอีเมลไปยังผู้ดูแลระบบฐานข้อมูล และรอให้สคริปต์ทํางานในระหว่างกรอบเวลาการบํารุงรักษา หากมีสิ่งผิดปกติเกิดขึ้นการย้อนกลับเป็นเรื่องยากเพราะไม่มีใครติดตามสถานะที่แน่นอนของสคีมาก่อนการเปลี่ยนแปลง ในขณะเดียวกันนักพัฒนาที่ทํางานเกี่ยวกับคุณลักษณะต่าง ๆ จะเขียนทับการเปลี่ยนแปลงของกันและกันเนื่องจากไม่มีเวิร์กโฟลว์ที่มีโครงสร้างสําหรับโค้ดฐานข้อมูล
ลองนึกภาพทีมที่จัดการแอปพลิเคชันอีคอมเมิร์ซบนฐานข้อมูล Azure SQL นักพัฒนาสามคนกําลังเพิ่มคุณลักษณะที่ต้องมีการเปลี่ยนแปลงสคีมา อีกตารางหนึ่งเพิ่มตารางประเภทผลิตภัณฑ์ใหม่ อีกตารางหนึ่งปรับเปลี่ยนกระบวนงานที่เก็บไว้ของการประมวลผลใบสั่ง และอีกตารางที่สามจะปรับปรุงมุมมองการค้นหาของลูกค้า หากไม่มีการควบคุมแหล่งที่มา ไปป์ไลน์ CI/CD และการทดสอบอัตโนมัติ การเปลี่ยนแปลงเหล่านี้จะชนกัน โปรแกรมแก้ไขด่วนที่นําไปใช้โดยตรงกับการผลิตไม่ซิงค์กับสภาพแวดล้อมการพัฒนา การปรับใช้เขียนทับโปรแกรมแก้ไขด่วน ทําให้เกิดการหยุดทํางานของการผลิตในช่วงเวลาเร่งด่วน
โครงการฐานข้อมูล SQL และไปป์ไลน์ CI/CD แก้ปัญหาเหล่านี้โดยปฏิบัติต่อโค้ดฐานข้อมูลด้วยความเข้มงวดเช่นเดียวกับโค้ดแอปพลิเคชัน คุณควบคุมทุกอ็อบเจ็กต์ สร้างและปรับใช้โดยอัตโนมัติ ตรวจจับเมื่อฐานข้อมูลสดหลุดออกจากโปรเจ็กต์ และทดสอบการเปลี่ยนแปลงก่อนที่จะไปถึงการผลิต
หลังจากทําโมดูลนี้เสร็จแล้ว คุณสามารถ:
- สร้าง สร้าง และตรวจสอบความถูกต้องของโมเดลฐานข้อมูลโดยใช้โครงการฐานข้อมูล SQL รวมถึงรูปแบบ SDK
- กําหนดค่าการควบคุมแหล่งที่มาสําหรับโครงการฐานข้อมูล SQL และจัดการข้อมูลอ้างอิงด้วยสคริปต์ก่อนการปรับใช้และหลังการปรับใช้
- จัดการการแยกสาขา คําขอดึงข้อมูล และการแก้ไขข้อขัดแย้งสําหรับโค้ดฐานข้อมูล
- ตรวจหาการเบี่ยงเบนของ Schema โดยใช้เครื่องมือเปรียบเทียบ Schema และ SqlPackage
- ใช้ไปป์ไลน์ CI/CD ด้วย GitHub Actions และ Azure DevOps รวมถึงการจัดการข้อมูลลับและการควบคุมการปรับใช้
- ออกแบบและใช้กลยุทธ์การทดสอบด้วยการทดสอบหน่วยและการทดสอบการรวม