ฉันทำงานที่ไหนเรามีESBแอพพลิเคชั่น 6 ตัวที่แตกต่างกัน (หรือฉันควรจะพูดว่า "อุปกรณ์ปลายทาง") เชื่อมต่อกันแล้ว แอพพลิเคชั่นทั้ง 6 นั้นทำงานร่วมกับ Oracle schema ที่แตกต่างกัน 3 ตัวบนอินสแตนซ์ฐานข้อมูล 2 ตัว แอปพลิเคชันเหล่านี้บางส่วนอยู่ในสคีมาเดียวกันไม่ใช่เพราะเกี่ยวข้อง แต่เนื่องจากโครงสร้างพื้นฐานฐานข้อมูลของเราได้รับการจัดการโดยผู้ให้บริการภายนอกและการรับสคีมาใหม่ใช้เวลาตลอดไป (เช่นกันเราไม่สามารถเข้าถึง DBA ได้) ... ใช้เวลานานมากจนถึงจุดหนึ่งเราคิดว่าการนำ schema ที่มีอยู่ "ชั่วคราว" กลับมาใช้ใหม่เพื่อให้สามารถพัฒนาต่อไปได้ ในการบังคับใช้ "การแยก" ของข้อมูลชื่อตารางจะถูกนำหน้าเช่น "CST_" สำหรับลูกค้า นอกจากนี้เราต้องทำงานร่วมกับสคีมาด้วยเหตุผลที่ถูกต้องบางอย่างที่เราไม่สามารถเปลี่ยนแปลงได้อย่างสมบูรณ์ ... มันแปลกที่ฉันรู้ แน่นอนมันเกิดขึ้นเสมอ "ชั่วคราว"
แอปพลิเคชันต่าง ๆ ของเราเชื่อมต่อกับสคีมาฐานข้อมูลของตนและทำงานกับแพ็คเกจ PL / SQL ของตัวเองและเราห้ามไม่ให้เราโต้ตอบโดยตรงกับตาราง / ข้อมูลที่อยู่นอกโดเมนแอปพลิเคชันของเรา
เมื่อแอปพลิเคชันหนึ่งที่เชื่อมต่อกับ ESB ต้องการข้อมูลนอกโดเมนมันจะเรียกบริการที่เกี่ยวข้องใน ESB เพื่อรับข้อมูลแม้ว่าข้อมูลนั้นจะอยู่ในสคีมาเดียวกันจริง ๆ แล้วต้องมีคำสั่งเข้าร่วมเพียงเล็กน้อยในทฤษฎี หนึ่งของการร้องขอของ
เราทำเช่นนั้นเพื่อให้สามารถแบ่งโดเมนแอปพลิเคชันของเราออกเป็นสคีมา / ฐานข้อมูลที่แตกต่างกันและเพื่อให้บริการใน ESB ยังคงทำงานได้อย่างถูกต้องเมื่อมันเกิดขึ้น (มันเป็นคริสมาสต์เร็ว ๆ นี้
ตอนนี้อาจดูแปลกและน่ากลัวจากภายนอก แต่มีเหตุผลที่และฉันต้องการแบ่งปันประสบการณ์ที่เป็นรูปธรรมนี้เพื่อแสดงให้คุณเห็นว่าฐานข้อมูลอย่างน้อยหนึ่งฐานไม่สำคัญ เดี๋ยวก่อน! ด้วยเหตุผลหลายประการ (+1 สำหรับ Scott Whitlock ดูย่อหน้าสุดท้ายเกี่ยวกับการสำรองข้อมูลและสิ่งที่ mya นำคุณไปสู่ปัญหา) แต่สิ่งสำคัญคือฉันคิดว่าการให้บริการ SOA ของคุณได้รับการออกแบบอย่างเหมาะสมอย่างน้อยก็เป็นความคิดของฉันและฉัน ไม่ใช่ DBA ท้ายที่สุดฐานข้อมูลทั้งหมดของคุณเป็นของ "คลังข้อมูลองค์กร" ใช่ไหม?
ในที่สุดฉันจะไม่ใช้ถ้อยคำในย่อหน้าสุดท้ายของ Scott Whitlock โดยเฉพาะสิ่งนี้
ฉันจะไม่แยกตารางออกเป็นฐานข้อมูลทางกายภาพที่แตกต่างกันเพียงเพราะแยกข้อกังวลออก
มันสำคัญมากจริงๆ อย่าทำอย่างนั้นถ้าไม่มีเหตุผล