ฉันเป็นผู้พัฒนา SQL (ไม่ใช่ DBA หรือสถาปนิก) สำหรับ บริษัท SaaS (มีพนักงานประมาณ 50 คน) ฉันได้รับมอบหมายให้หาวิธี:
- ลดการรายงานการปฏิบัติงานจากฐานข้อมูล OLTP กว่า 100 รายการของเรา
- อนุญาตให้รายงานเหล่านั้นทำงานกับข้อมูลจากฐานข้อมูลลูกค้าหลาย ๆ
- วางตำแหน่ง บริษัท ของเราเพื่อมอบโซลูชันการวิเคราะห์ที่เพิ่มขึ้นในอนาคต
ฉันได้อ่านบทความเกี่ยวกับเทคโนโลยีที่หลากหลายเช่นการจำลองแบบของทรานแซคชัน (โดยเฉพาะรุ่นสมาชิกแบบหนึ่งต่อหนึ่ง / กลาง) โบรกเกอร์บริการ SQL การจัดส่งบันทึกการติดตามการเปลี่ยนแปลง (CT) และการเก็บข้อมูลเปลี่ยน (CDC ความเข้าใจของฉันคือ นี่เป็นแบบองค์กรเท่านั้น) และฉันไม่แน่ใจว่าเส้นทางไหนดีที่สุดในการติดตาม
ฉันหวังว่าพวกคุณบางคนที่มีความเชี่ยวชาญด้านการรวมระบบอาจพบการตั้งค่าที่คล้ายกับของเราและสามารถชี้เส้นทางที่ประสบความสำเร็จหรือชี้ทางให้ฉันไปยังแหล่งข้อมูลที่จะเป็นประโยชน์
เนื่องจากข้อ จำกัด ด้านราคาโซลูชันของเราต้องทำงานภายใน SQL Server Standard Edition นอกจากนี้วิธีแก้ปัญหาจะต้องสมเหตุสมผลในการสนับสนุน / ดูแลรักษาภายในองค์กรขนาดเล็กของเรา
การกำหนดค่าพื้นฐาน:
ขณะนี้เรามีฐานข้อมูลลูกค้ากว่า 100 รายส่วนใหญ่ติดตั้งบนเซิร์ฟเวอร์ SQL ที่ศูนย์ข้อมูลของเรา แต่มีบางฐานข้อมูลที่ติดตั้งบนเซิร์ฟเวอร์ลูกค้าภายในศูนย์ข้อมูลของพวกเขาที่เราสามารถเข้าถึงจากระยะไกลได้ นี่คือฐานข้อมูล SQL Server 2008 R2 ทั้งหมด แต่เราวางแผนที่จะอัปเกรดเป็น SQL 2016 ในไม่ช้า
เราใช้โครงการฐานข้อมูลและ dacpacs เพื่อให้แน่ใจว่าสคีมานั้นเหมือนกันในฐานข้อมูลลูกค้าทั้งหมดที่จะรวมเข้าด้วยกัน อย่างไรก็ตามเนื่องจากเราไม่ได้บังคับให้ลูกค้าทุกคนอัพเกรดเป็นเวอร์ชั่นใหม่ในเวลาเดียวกันความแตกต่างของสคีมาจึงเป็นไปได้ระหว่างการอัพเกรด โซลูชันต้องมีความยืดหยุ่นเพียงพอที่จะไม่แตกหากไคลเอ็นต์ A อยู่ในซอฟต์แวร์เวอร์ชัน 1.0 และไคลเอ็นต์ B เป็นเวอร์ชัน 1.1
ขณะนี้รายงานการปฏิบัติงานจะเรียกใช้โดยตรงจากฐานข้อมูล OLTP ของลูกค้าแต่ละราย เรากังวลเกี่ยวกับผลกระทบที่จะเกิดขึ้นกับประสิทธิภาพการทำงานของแอปพลิเคชันหากเราไม่ถ่ายข้อมูล
ข้อกำหนดระดับสูง:
ลูกค้าของเราเป็นแผนกการประมวลผลที่ปราศจากเชื้อในโรงพยาบาล (SPD's) ที่ต้องการรายงานที่ทันสมัยเกี่ยวกับสิ่งที่พวกเขาได้ดำเนินการจนถึงปัจจุบันที่มีสินค้าคงคลัง ฯลฯ SPD ของกระบวนการสินค้าคงคลังตลอดเวลารวมถึงวันหยุดสุดสัปดาห์และวันหยุด เนื่องจากหนึ่งในวัตถุประสงค์หลักของความพยายามนี้คือเพื่อสนับสนุนการรายงานการดำเนินงานที่ดีขึ้นเราต้องการให้ข้อมูลใกล้เคียงกับเวลาจริงมากที่สุดเพื่อตอบสนองความต้องการของลูกค้าต่อไป
ขณะนี้เรามี SPD บางส่วนในฐานข้อมูลแยกต่างหากซึ่งเป็นส่วนหนึ่งของระบบโรงพยาบาลเดียวกัน ลูกค้าเหล่านี้ต้องการความสามารถในการรายงานกับ SPD ทั้งหมดในระบบของพวกเขา
เราต้องการความสามารถในการรวบรวมข้อมูลจากลูกค้าของเราเพื่อสนับสนุนการริเริ่มการวิเคราะห์ภายในของเรา ความคาดหวังของเราคือเราจะสามารถใช้ข้อมูลการดำเนินงานที่รวบรวมได้เป็นแหล่งข้อมูลสำหรับมาร์ท / คลังสินค้า
ความคิดจนถึงตอนนี้:
การจำลองแบบของทรานแซคชันดูเหมือนว่าจะให้โซลูชัน "เรียลไทม์" มากที่สุด ฉันพบว่าการตอบกลับนี้มีประโยชน์อย่างยิ่ง แต่ฉันกังวลว่าด้วยความเป็นไปได้ที่ความแตกต่างของ schema จะไม่ทำงานกับเรา: SQL Server การจำลองแบบหลายต่อหนึ่ง
บันทึกการจัดส่งไม่เหมาะอย่างยิ่งเนื่องจากบันทึกไม่สามารถเรียกคืนได้ในขณะที่คิวรีใช้งานอยู่ ฉันต้องเตะทุกคนเพื่อให้บันทึกสามารถกู้คืนได้หรือข้อมูลจะค้าง ฉันไม่ชัดเจนว่าวิธีนี้สามารถใช้ในการรวมศูนย์ข้อมูลจากหลายฐานข้อมูลหรือไม่เนื่องจากบันทึกการจัดส่งแต่ละรายการจะใช้สำหรับฐานข้อมูลแต่ละรายการที่มาจาก
การใช้บริการโบรกเกอร์ SQL เวลาแฝงอาจไม่แน่นอนถ้าคิวไม่สามารถติดตามจำนวนข้อความที่จะดำเนินการ
CT ระบุรุ่นสำหรับแต่ละแถวของตารางเท่านั้น เวลาในการตอบสนองจะขึ้นอยู่กับว่าเราสามารถประมวลผลบางอย่างเช่นแพคเกจ SSIS กับแต่ละฐานข้อมูลเพื่อดึงข้อมูลและแทรกลงในที่เก็บส่วนกลางได้อย่างไร
เราจำเป็นต้องพิจารณาการเรพลิเคตแต่ละฐานข้อมูลแยกจากกันและบางทีอาจใช้เทคนิคการจำลองเสมือนข้อมูลบางอย่างเพื่อรวมข้อมูลจากแหล่งที่ทำซ้ำที่หลากหลายหรือไม่?
คำแนะนำหรือทิศทางที่คุณยินดีที่จะให้จะได้รับการชื่นชมอย่างมาก