ขอผมมองอีกมุมหนึ่ง การบำรุงรักษาฐานข้อมูล Entity Framework ไร้ประโยชน์อย่างเต็มที่ในองค์กรหรือโครงการฐานข้อมูลขนาดใหญ่
ปัญหาคือ:
อัพเดตสกีมาอัตโนมัติ นี่ไม่ใช่สิ่งที่ฉันต้องการอย่างแน่นอนเพราะมันเป็นการละเมิดพื้นฐานการบำรุงรักษาฐานข้อมูลทั้งหมด ปัญหาคือ: (a) คนที่ใช้งานเวอร์ชันที่ใหม่กว่าอัปเดตฐานข้อมูลแทนที่จะได้รับปัญหาและ (b) การอัปเดตจะถูกกำหนดเวลาด้วย dba โดยทั่วไปจะทำการสำรองข้อมูลครั้งแรก ดังนั้นการอัปเดตอัตโนมัติจะไร้ประโยชน์
การสร้าง Db ใช้งานได้เฉพาะกับเคสที่ด้อยลงโดยทั่วไป อย่าพยายามใช้คุณสมบัติฐานข้อมูลขั้นสูงด้วยซ้ำ ตัวอย่างเซิร์ฟเวอร์ Sql: รวมเขตข้อมูลในดัชนีตัวกรองบนดัชนีการแบ่งพาร์ติชันการบีบอัดกฎการตรวจสอบสำหรับเขตข้อมูล
การย้าย - สมมติว่ากรณีขอบเสื่อมโทรมอีกครั้ง: ไม่มีการแปลงข้อมูลหรืออัปเดตหลายขั้นตอนได้อย่างง่ายดาย ตัวอย่าง: ตาราง X มีฟิลด์ "ผู้ใช้" ประวัติที่บันทึกผู้ใช้ทำบางสิ่ง การตั้งค่าใหม่มีตารางผู้ใช้ดังนั้นจำเป็นต้องสร้างตารางผู้ใช้จากนั้นสร้างผู้ใช้จากนั้นสร้างเขตข้อมูลอ้างอิงผู้ใช้ในตาราง x จากนั้นอัปเดตสิ่งนี้ด้วยผู้ใช้ที่อยู่ในตารางผู้ใช้แล้วลบเขตข้อมูลผู้ใช้
วิธีเดียวที่เหมาะสมในการจัดการกับสถานการณ์เหล่านี้คือสคริปต์การสร้างและการโอนย้ายและการกำหนดเวอร์ชันที่เหมาะสม
ตอนนี้ SSDT - เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการกำหนดเวอร์ชันของฐานข้อมูลเฉพาะที่ดีกว่า Entity Framework เพราะมันใช้งานได้จริง เช่นเดียวกับใน: มันบันทึกคุณสมบัติทั้งหมด ไม่มีฐานข้อมูลใดที่ฉันมีฉันแทบจะไม่สามารถใช้รหัสก่อน - เพราะเรามักจะมีดัชนีกรองอย่างน้อย;) EF จะไม่ได้รับฉันถึง 10% ของสิ่งที่ฉันต้องการ
แนวทางของเราคือ:
ออกแบบฐานข้อมูลในฐานข้อมูลจากนั้นซิงค์ลงกับโมดูล SSDT ที่ได้รับการเช็คอินการซิงค์ Schema ช่วยให้นักพัฒนาอัปเดตเวอร์ชันได้อย่างรวดเร็ว มีฐานข้อมูลหลักที่เชื่อถือได้เสมอซึ่งมีรุ่นปัจจุบันอยู่ที่ใดที่หนึ่ง (บนเซิร์ฟเวอร์พิเศษ) ดังนั้นเราจึงมีรุ่นอ้างอิงเพื่อใช้งาน
สร้างสคริปต์เดลต้าตามต้องการสำหรับรีลีสที่รับเวอร์ชันและมีกลไกที่ดีในการปรับใช้กับฐานข้อมูล