เรามีฐานข้อมูลระดับองค์กรขนาดใหญ่มาก เป็นส่วนหนึ่งของรูปแบบธุรกิจของเราผู้ใช้เว็บทุกคนเข้าเยี่ยมชมเว็บเซิร์ฟเวอร์ของเราในเวลาเดียวกันในแต่ละเดือน ปริมาณการใช้งานหนักมากและยังคงเติบโตยิ่งหนักยิ่ง บริษัท ใหญ่ขึ้น การเพิ่มประสิทธิภาพ sql proc ได้รับการดำเนินการและฮาร์ดแวร์ได้รับการปรับขนาดให้อยู่ในระดับที่สูงมากแล้ว
เราต้องการทำลายฐานข้อมูลในขณะนี้เพื่อให้แน่ใจว่าเราสามารถรองรับการเติบโตของ บริษัท และการโหลดในอนาคต
เราได้ตัดสินใจแล้วว่าข้อมูลใดควรถูกทิ้ง มันเป็นส่วนหนึ่งของฐานข้อมูลของเราซึ่งใช้อย่างมาก
อย่างไรก็ตามคำถามของฉันเกี่ยวกับข้อมูลที่ไม่ใช้ร่วมกันซึ่งเป็นเรื่องธรรมดา / สากล ตัวอย่างของข้อมูลเช่นนี้อาจเป็นตารางคลังตัวอย่างหรืออาจเป็นตารางพนักงานตารางผู้ใช้เป็นต้น
ฉันเห็นสองตัวเลือกในการจัดการข้อมูลทั่วไป / สากลนี้:
1) การออกแบบ 1 - วางข้อมูลทั่วไป / สากลในฐานข้อมูลภายนอก การเขียนทั้งหมดจะเกิดขึ้นที่นี่ ข้อมูลนี้จะถูกทำซ้ำลงไปในแต่ละชิ้นส่วนทำให้แต่ละชิ้นส่วนสามารถอ่านข้อมูลนี้และเข้าร่วมภายในกับข้อมูลนี้ในโปรแกรม t-sql
2) การออกแบบ 2 - ให้แต่ละสำเนาของตัวเองของข้อมูลทั่วไป / สากลทั้งหมด ปล่อยให้แต่ละชิ้นส่วนจะเขียนลงในตารางเหล่านี้และใช้การจำลองแบบ sql merge เพื่ออัปเดต / ซิงค์ข้อมูลนี้กับส่วนอื่นทั้งหมด
ความกังวลเกี่ยวกับการออกแบบ # 1
1) ปัญหาการทำธุรกรรม: หากคุณมีสถานการณ์ที่คุณต้องเขียนหรืออัปเดตข้อมูลเป็นเศษแล้วเขียน / อัปเดตตารางทั่วไป / สากลใน 1 proc ที่จัดเก็บไว้เช่นคุณจะไม่สามารถทำสิ่งนี้ได้อย่างง่ายดายอีกต่อไป ขณะนี้ข้อมูลมีอยู่ในอินสแตนซ์และฐานข้อมูลแยกต่างหาก คุณอาจต้องเกี่ยวข้องกับ MS DTS เพื่อดูว่าคุณสามารถรวมการเขียนเหล่านี้ลงในทรานแซคชันได้เนื่องจากอยู่ในฐานข้อมูลแยกต่างหาก ประสิทธิภาพเป็นสิ่งที่น่ากังวลและการเขียนซ้ำที่เป็นไปได้อาจเกี่ยวข้องกับ procs ที่เขียนไปยังเศษข้อมูลและข้อมูลทั่วไป
2) การสูญเสียความสมบูรณ์ของการอ้างอิง ไม่สามารถทำการอ้างอิงข้ามฐานข้อมูลได้อย่างสมบูรณ์
3) การ Recoding พื้นที่ขนาดใหญ่ของระบบเพื่อที่จะรู้การเขียนข้อมูลทั่วไปไปยังฐานข้อมูลสากลใหม่ แต่อ่านข้อมูลทั่วไปจากเศษ
4) เพิ่มฐานข้อมูลทริป เช่นเดียวกับ # 1 ข้างต้นเมื่อคุณพบสถานการณ์ที่คุณต้องอัปเดตข้อมูลที่มีการแบ่งและข้อมูลทั่วไปคุณจะต้องทำการเดินทางหลายรอบเพื่อให้บรรลุเป้าหมายนี้เนื่องจากข้อมูลอยู่ในฐานข้อมูลแยกต่างหาก เวลาแฝงของเครือข่ายบางส่วนที่นี่ แต่ฉันไม่ได้กังวลเกี่ยวกับปัญหานี้เท่าที่กล่าวข้างต้น 3
ความกังวลเกี่ยวกับการออกแบบ # 2
ในการออกแบบ # 2 แต่ละชิ้นจะได้รับตัวอย่างของข้อมูลทั่วไป / สากลทั้งหมด ซึ่งหมายความว่ารหัสทั้งหมดที่เข้าร่วมหรืออัปเดตข้อมูลทั่วไปยังคงทำงาน / ทำงานเหมือนที่เป็นอยู่ทุกวันนี้ จำเป็นต้องมีการบันทึก / เขียนใหม่น้อยมากจากทีมพัฒนา อย่างไรก็ตามการออกแบบนี้ขึ้นอยู่กับการรวมการจำลองแบบเพื่อเก็บข้อมูลให้ตรงกันในทุกส่วน dbas นั้นมีทักษะสูงและมีความกังวลอย่างมากที่การจำลองแบบผสานอาจไม่สามารถจัดการได้และควรรวมการจำลองแบบที่ล้มเหลวการกู้คืนจากความล้มเหลวนี้ไม่ดีและอาจส่งผลกระทบเชิงลบอย่างมาก
ฉันอยากรู้ว่าใครมีตัวเลือกการออกแบบ # 2 ฉันยังอยากรู้ว่าถ้าฉันมองเห็นตัวเลือกการออกแบบที่ 3 หรือ 4 ที่ฉันไม่เห็น
ขอบคุณล่วงหน้า.