SSDT เปรียบได้กับ Liquibase / Flyway เหมือนกับที่ทำในสิ่งที่พวกเขาทำ ด้วย SSDT คุณมีสภาพแวดล้อมการพัฒนาเพื่อให้คุณได้รับสิ่งต่าง ๆ เช่นคำจำกัดความค้นหาการอ้างอิงและความรู้สึกภายในรวมถึงความสามารถในการคอมไพล์โครงการใน dacpac จากนั้นปรับใช้ dacpac นั้นกับฐานข้อมูล
วิธี SSDT (และวิธีเปรียบเทียบ sql redgate) เพื่อทำการ deloyment คือการประกาศสิ่งที่คุณต้องการดังนั้นหากคุณต้องการเปลี่ยนตารางที่มีลักษณะดังนี้:
create table a(id int)
ไปยังตารางที่มีลักษณะดังนี้:
create table a(id int, another_column varchar(12))
ด้วย SSDT คุณเพียงแค่เปลี่ยนคำจำกัดความของตารางเป็นอันที่สองและให้ SSDT กังวลเกี่ยวกับวิธีการอัพเกรด (สามารถทำตารางแก้ไข, เพิ่มคอลัมน์หรือเปลี่ยนลำดับคอลัมน์ได้ดังนั้นคุณจะต้องสร้างตาราง ฯลฯ )
ด้วย Liquibase (DbUp, ReadyRoll, วิธีการด้วยตนเองและอื่น ๆ ) สิ่งที่คุณทำคือในกรณีนี้ต้องเขียนตารางการเปลี่ยนแปลงด้วยตัวเองและตรวจสอบให้แน่ใจว่าคุณรันสคริปต์ในลำดับที่ถูกต้องพิจารณาสถานการณ์นี้:
- ปล่อย 1 - สร้างคอลัมน์สวัสดีบนตาราง
- เผยแพร่ 2 - เปลี่ยนชื่อคอลัมน์สวัสดีเป็น joe_blogs
- เผยแพร่ 3 - เปลี่ยนชื่อคอลัมน์ joe_blogs เป็น hello
- เผยแพร่ 4 - สร้างคอลัมน์ joe_blogs
หากมีการเผยแพร่ใด ๆ ที่ขาดหายไปจะไม่มีการแก้ไขใด ๆ ต่อไป
ประโยชน์ของการอัปเกรดสคริปต์ (Liquibase, DbUp และอื่น ๆ ):
- คุณสามารถควบคุมสคริปต์ได้อย่างสมบูรณ์
- DBA's / Developers ถูกใช้ในการนี้
ประโยชน์ของการเปรียบเทียบ / ผสาน (SSDT, Redgate SQL Compare):
- ไม่ต้องเขียนสคริปต์อัพเกรด
- มันง่ายที่จะไปยังรุ่นใด ๆ ที่เฉพาะเจาะจงเพียงแค่เปรียบเทียบและผสานเวอร์ชันนั้น
ข้อเสียของการอัปเกรดสคริปต์:
- ต้องทำงานตามลำดับ
- พึ่งพามนุษย์โดยไม่ทำผิด
- ได้ช้าโดยเฉพาะถ้าคุณมีการเปลี่ยนแปลงมากมาย
- เว้นแต่ว่าทีมของคุณจะมีฐานข้อมูลที่มีระเบียบวินัยสูงในสภาพแวดล้อมที่แตกต่างกัน (dev, test, staging, prod ฯลฯ ) มักจะไม่ซิงค์ทำให้การทดสอบไม่ถูกต้อง
- การลดระดับการปล่อยหมายถึงการเขียนสคริปต์ทั้งหมดที่คุณเขียนไปแล้ว
ข้อเสียของการใช้การเปรียบเทียบ / ผสาน:
- เครื่องมือไม่น่าเชื่อถือ 100% บางทีอาจไม่ยุติธรรม
- SSDT ต้องการโครงการที่ใช้งานได้ฐานข้อมูลจำนวนมากมีรหัสที่ไม่ได้รวบรวมหรือเรียกใช้จริง ๆ (คิดว่าตารางที่ถูกดร็อป แต่ไม่ใช่โพรซีเดอร์ ฯลฯ ) ฉันเห็นสิ่งนี้ในฐานข้อมูลประมาณ 8/10 ที่ฉันได้รับมา :)
- DBA หลายคน / นักพัฒนาลังเลที่จะยอมแพ้ในการพัฒนา SSMS / notepad
โดยส่วนตัวแล้วฉันคิดว่า SSDT เป็นสภาพแวดล้อมการพัฒนาที่เป็นมืออาชีพและนั่นหมายความว่าฉันสามารถมีสมาธิในการเขียนโค้ดและการทดสอบที่มีประโยชน์แทนการเขียนสคริปต์อัพเกรดที่อยู่ในตัวของมันเอง
คุณขอความคิดเห็นเพื่อไปที่นั่น :)
เอ็ด