DBMS แบบกระจาย - กลยุทธ์การออกแบบ
ในบทที่แล้วเราได้แนะนำทางเลือกในการออกแบบต่างๆ ในบทนี้เราจะศึกษากลยุทธ์ที่ช่วยในการนำการออกแบบมาใช้ กลยุทธ์สามารถแบ่งออกได้อย่างกว้าง ๆ เป็นการจำลองแบบและการแยกส่วน อย่างไรก็ตามในกรณีส่วนใหญ่จะใช้ทั้งสองอย่างผสมกัน
การจำลองข้อมูล
การจำลองข้อมูลเป็นกระบวนการจัดเก็บสำเนาของฐานข้อมูลแยกจากกันที่ไซต์ตั้งแต่สองไซต์ขึ้นไป เป็นเทคนิคการยอมรับข้อผิดพลาดที่เป็นที่นิยมของฐานข้อมูลแบบกระจาย
ข้อดีของการจำลองข้อมูล
Reliability - ในกรณีที่เกิดความล้มเหลวของไซต์ใด ๆ ระบบฐานข้อมูลจะยังคงทำงานต่อไปเนื่องจากมีสำเนาอยู่ที่ไซต์อื่น
Reduction in Network Load- เนื่องจากมีสำเนาข้อมูลในเครื่องการประมวลผลการสืบค้นสามารถทำได้โดยลดการใช้เครือข่ายโดยเฉพาะในช่วงเวลาสำคัญ การอัปเดตข้อมูลสามารถทำได้ในเวลาที่ไม่ใช่ช่วงเวลาสำคัญ
Quicker Response - ความพร้อมใช้งานของสำเนาข้อมูลในเครื่องช่วยให้การประมวลผลการสืบค้นรวดเร็วและเวลาตอบสนองที่รวดเร็ว
Simpler Transactions- การทำธุรกรรมต้องการจำนวนการรวมตารางที่อยู่ในไซต์ต่างๆน้อยลงและการประสานงานข้ามเครือข่ายน้อยที่สุด ดังนั้นจึงกลายเป็นเรื่องง่ายขึ้นในธรรมชาติ
ข้อเสียของการจำลองข้อมูล
Increased Storage Requirements- การเก็บรักษาสำเนาข้อมูลหลายชุดเกี่ยวข้องกับต้นทุนการจัดเก็บที่เพิ่มขึ้น พื้นที่จัดเก็บที่ต้องการเป็นแบบทวีคูณของหน่วยเก็บข้อมูลที่จำเป็นสำหรับระบบรวมศูนย์
Increased Cost and Complexity of Data Updating- ทุกครั้งที่มีการอัปเดตรายการข้อมูลการอัปเดตจะต้องแสดงในสำเนาข้อมูลทั้งหมดในไซต์ต่างๆ สิ่งนี้ต้องใช้เทคนิคการซิงโครไนซ์และโปรโตคอลที่ซับซ้อน
Undesirable Application – Database coupling- หากไม่ได้ใช้กลไกการอัพเดตที่ซับซ้อนการลบความไม่สอดคล้องกันของข้อมูลจำเป็นต้องมีการประสานงานที่ซับซ้อนในระดับแอปพลิเคชัน ส่งผลให้แอปพลิเคชันไม่พึงปรารถนา - การเชื่อมต่อฐานข้อมูล
เทคนิคการจำลองแบบที่ใช้กันทั่วไป ได้แก่ -
- การจำลองแบบสแนปชอต
- การจำลองแบบใกล้เวลาจริง
- ดึงการจำลองแบบ
การกระจายตัว
การแบ่งส่วนเป็นงานในการแบ่งตารางออกเป็นชุดของตารางขนาดเล็ก เรียกชุดย่อยของตารางfragments. การกระจายตัวเป็นสามประเภท: แนวนอนแนวตั้งและแบบผสม (ผสมระหว่างแนวนอนและแนวตั้ง) การกระจายตัวในแนวนอนสามารถแบ่งออกได้เป็นสองเทคนิค: การกระจายตัวในแนวนอนหลักและการกระจายตัวในแนวนอนที่ได้รับ
การแยกส่วนควรทำในลักษณะที่สามารถสร้างตารางเดิมจากส่วนย่อยได้ สิ่งนี้จำเป็นเพื่อให้สามารถสร้างตารางเดิมจากชิ้นส่วนได้ทุกเมื่อที่ต้องการ ข้อกำหนดนี้เรียกว่า "การสร้างใหม่"
ข้อดีของการแยกส่วน
เนื่องจากข้อมูลถูกจัดเก็บไว้ใกล้กับสถานที่ใช้งานประสิทธิภาพของระบบฐานข้อมูลจึงเพิ่มขึ้น
เทคนิคการเพิ่มประสิทธิภาพการสืบค้นแบบโลคัลนั้นเพียงพอสำหรับการสืบค้นส่วนใหญ่เนื่องจากข้อมูลมีอยู่ในเครื่อง
เนื่องจากไม่มีข้อมูลที่ไม่เกี่ยวข้องในไซต์จึงสามารถรักษาความปลอดภัยและความเป็นส่วนตัวของระบบฐานข้อมูลได้
ข้อเสียของการกระจายตัว
เมื่อต้องการข้อมูลจากส่วนต่างๆความเร็วในการเข้าถึงอาจสูงมาก
ในกรณีที่มีการแยกส่วนซ้ำงานของการสร้างใหม่จะต้องใช้เทคนิคที่มีราคาแพง
การขาดสำเนาสำรองของข้อมูลในไซต์ต่างๆอาจทำให้ฐานข้อมูลไม่ได้ผลในกรณีที่ไซต์ล้มเหลว
การกระจายตัวในแนวตั้ง
ในการแยกส่วนตามแนวตั้งเขตข้อมูลหรือคอลัมน์ของตารางจะถูกจัดกลุ่มเป็นส่วนย่อย เพื่อรักษาการสร้างใหม่แต่ละส่วนควรมีฟิลด์คีย์หลักของตาราง การกระจายตัวในแนวตั้งสามารถใช้เพื่อบังคับใช้ความเป็นส่วนตัวของข้อมูล
ตัวอย่างเช่นให้เราพิจารณาว่าฐานข้อมูลของมหาวิทยาลัยเก็บบันทึกของนักศึกษาที่ลงทะเบียนทั้งหมดไว้ในตาราง Student ที่มีสคีมาต่อไปนี้
นักเรียน
Regd_No | ชื่อ | หลักสูตร | ที่อยู่ | ภาคเรียน | ค่าธรรมเนียม | เครื่องหมาย |
ตอนนี้รายละเอียดค่าธรรมเนียมจะอยู่ในส่วนบัญชี ในกรณีนี้ผู้ออกแบบจะแยกส่วนฐานข้อมูลดังนี้ -
CREATE TABLE STD_FEES AS
SELECT Regd_No, Fees
FROM STUDENT;
การกระจายตัวในแนวนอน
การกระจายตัวในแนวนอนจะจัดกลุ่มสิ่งที่ทับซ้อนของตารางตามค่าของเขตข้อมูลอย่างน้อยหนึ่งเขตข้อมูล การกระจายตัวในแนวนอนควรยืนยันถึงกฎของการสร้างใหม่ แต่ละส่วนแนวนอนต้องมีคอลัมน์ทั้งหมดของตารางฐานเดิม
ตัวอย่างเช่นในสคีมาของนักเรียนหากรายละเอียดของนักเรียนทุกคนของหลักสูตรวิทยาการคอมพิวเตอร์จำเป็นต้องได้รับการดูแลที่คณะวิชาวิทยาการคอมพิวเตอร์ผู้ออกแบบจะแบ่งส่วนฐานข้อมูลในแนวนอนดังนี้ -
CREATE COMP_STD AS
SELECT * FROM STUDENT
WHERE COURSE = "Computer Science";
การกระจายตัวของลูกผสม
ในการแยกส่วนแบบไฮบริดจะใช้เทคนิคการกระจายตัวแบบแนวนอนและแนวตั้งร่วมกัน นี่เป็นเทคนิคการแยกส่วนที่ยืดหยุ่นที่สุดเนื่องจากสร้างชิ้นส่วนที่มีข้อมูลภายนอกน้อยที่สุด อย่างไรก็ตามการสร้างตารางเดิมใหม่มักเป็นงานที่มีราคาแพง
การกระจายตัวแบบไฮบริดสามารถทำได้สองทางเลือก -
ในตอนแรกสร้างชุดของชิ้นส่วนแนวนอน จากนั้นสร้างเศษแนวตั้งจากเศษแนวนอนอย่างน้อยหนึ่งชิ้น
ในตอนแรกสร้างชุดของชิ้นส่วนแนวตั้ง จากนั้นสร้างชิ้นส่วนแนวนอนจากเศษแนวตั้งอย่างน้อยหนึ่งชิ้น