![]() |
|
![]() |
|
![]() |
ในการจัดเก็บข้อมูลในระบบฐานข้อมูลแบบกระจายมีอยู่หลายวิธีด้วยกันคือ 1.1 การทำสำเนา(Replication) เป็นการทำสำเนาของรีเลชันไว้หลาย ๆ สำเนา และแต่ละสำเนาจะถูกเก็บไว้ต่างไซต์กัน 1.2 การแยกรีเลชัน(Fragmentation) เป็นการแยกรีเลชันออกเป็นหลาย ๆ ส่วน และจัดเก็บแต่ละส่วนไว้ต่างไซต์กัน 1.3 วิธี Replication และ Fragmentation เป็นการแยกรีเลชันออกเป็นหลาย ๆ ส่วน และแต่ละส่วนก็จะมีการจัดการแบบสำเนา
1.1 การทำสำเนาข้อมูล(Data Replication) วิธีการเก็บข้อมูลวิธีนี้เป็นการทำสำเนาของรีเลชัน r ไว้หลาย ๆ ไซต์ โดยทั่วไปจะทำการสำเนาแบบ Full Replication นั่นคือจะทำการสร้างสำเนาของรีเลชันกับทุก ๆ ไซต์ในระบบ ในการจัดเก็บข้อมูลแบบสำเนานี้ มีทั้งข้อดีและข้อเสียดังนี้คือ - Availability ถ้าไซต์ที่มีรีเลชัน r เกิดหยุดการทำงานลง ระบบสามารถที่จะทำงานต่อไปได้โดยไปดึงข้อมูล รีเลชัน r ที่ไซต์อื่น โดยไม่ต้องคำนึงถึงไซต์ที่หยุดทำงานไป - Increased parallelism ในกรณีที่การดำเนินการกับข้อมูลส่วนใหญ่ของรีเลชัน r เป็นการอ่านข้อมูลจากรีเลชัน เมื่อเรามีข้อมูลของรีเลชัน r อยู่ในหลาย ๆ ไซต์ เราก็สามารถที่จะทำการดึงข้อมูลมาพร้อม กันได้ อีกทั้งจากการที่มีสำเนาของรีเลชันอยู่หลาย ๆ ไซต์ โอกาสที่จะพบข้อมูลในไซต์ที่ต้องการจะทำทรานแซกชันก็มีโอกาสมากกว่า ดังนั้นด้วยวิธีการนี้จะช่วยลดปริมาณข้อมูลที่จะส่งผ่านระหว่างไซต์ได้ - Increased overhead on update ด้วยวิธีการ replication นี้ สำเนาข้อมูลของรีเลชัน r ในแต่ละไซต์จะต้องเหมือนกันทุก ๆ ไซต์ ไม่เช่นนั้นแล้วการประมวลผลกับรีเลชัน r อาจจะเกิดความผิดพลาดขึ้นได้ ดังนั้นเมื่อไรก็ตามที่รีเลชัน r ถูกแก้ไข ระบบจะต้องทำการแก้ไขข้อมูลรีเลชัน r ให้ครบทุกไซต์ที่มีรีเลชัน r อยู่ ยกตัวอย่างเช่น ในระบบธนาคารซึ่งมีการทำสำเนาของข้อมูลบัญชีไว้หลาย ๆ ไซต์ เมื่อมีการปรับปรุงยอดบัญชี ก็จะต้องทำการปรับยอดบัญชีให้เท่ากันในทุก ๆ ไซต์ โดยทั่วไปแล้วการทำสำเนาข้อมูลจะช่วยเพิ่มประสิทธิภาพในการอ่านข้อมูล และช่วยเพิ่มความสะดวกในการสืบค้นข้อมูลของทรานแซกชันแบบอ่านอย่างเดียว อย่างไรก็ตามทรานแซกชันแบบที่มีการปรับปรุงข้อมูลจะต้องมีการดำเนินการที่เพิ่มมากขึ้น ซึ่งการควบคุมการปรับปรุงข้อมูลพร้อมๆ กันในหลาย ๆ ไซต์ค่อนข้างจะยุ่งยากกว่าระบบฐานข้อมูลแบบรวมศูนย์ 1.2 การแยกข้อมูล(Data Fragmentation) วิธีการเก็บข้อมูลแบบนี้ รีเลชัน r จะถูกแบ่งออกเป็นรีเลชันย่อย ๆ r1,r2, ,rn ซึ่งรีเลชันเหล่านี้เมื่อนำกลับมารวมกันจะได้ผลลัพธ์เป็นรีเลชัน r เหมือนเดิม ซึ่งในการแบ่งรีเลชันมีอยู่ 2 วิธีคือ การแบ่งรีเลชันตามแนวนอน(horizontal fragmentation) และ การแบ่งรีเลชันตามแนวตั้ง(vertical fragmentation) โดยการแบ่งรีเลชันตามแนวนอน จะแบ่งแต่ละทูเพิลของรีเลชัน r ไปเป็นเป็นหลาย ๆ ส่วน ส่วนการแบ่งรีเลชันตามแนวตั้งจะเป็นการแยกรีเลชัน(decomposition)โดยการแตกโครงสร้างของรีเลชัน r ออกเป็นหลาย ๆ รีเลชันย่อย ในที่นี้จะยกตัวอย่างรีเลชัน Employee ซึ่งมีโครงสร้างของรีเลชันดังนี้ Employee = (empid, name, state, age, salary) รีเลชัน Emloyee แสดงได้ดังรูปที่ 13.3
รูปที่ 13.3 ตัวอย่างรีเลชัน Employee 1.2.1 Horizontal Fragmentation รีเลชัน r ถูกแบ่งออกเป็นรีเลชันย่อย ๆ r1, r2, , rn โดยแต่ละทูเปิลของรีเลชัน จะต้องถูกแบ่งออกไปอยู่ใน รีเลชันย่อย ๆ เหล่านั้น รีเลชันย่อยแต่ละอันจะเป็นส่วนหนึ่งของรีเลชัน r เราใช้สัญลักษณ์ Pi เพื่อแทนรีเลชันย่อย ri ดังนี้ ri = s Pi (r) ดังนั้น เราสามารถสร้างรีเลชัน r ได้ใหม่โดยใช้วิธีการรวม(Union)ทุก รีเลชันย่อย ได้ดังนี้ r = r1 U r2 U U rn จากตัวอย่าง สมมุติว่า r ถูกแบ่งออกเป็นรีเลชันย่อย ๆ n รีเลชัน แต่ละรีเลชันย่อยประกอบด้วยข้อมูลที่เป็นของแต่ละรัฐ จากตัวอย่าง ถ้าในระบบมีรัฐอยู่ 2 รัฐ คือ New york และ Texas จะทำการแบ่งรีเลชันออกเป็น 2 รีเลชัน คือ employee1 = s state=New york (employee) employee2 = s state=Texas (employee) ทั้ง 2 รีเลชันย่อย แสดงได้ดังรูปที่ 13.4 โดยที่รีเลชันย่อย employee1 จะถูกเก็บไว้ที่ไซต์ New york และ รีเลชันย่อย employee2 จะถูกเก็บไว้ที่ไซต์ Texas employee1
employee2
รูปที่ 13.4 แสดงการแบ่งรีเลชันตามแนวนอนของรีเลชัน employee 1.2.2 Vertical Fragmentation การแบ่งรีเลชันตามแนวตั้งจะเป็นการแยกแอตทริบิวต์ของรีเลชัน r ออกเป็นรีเลชันย่อยๆ ซึ่งแต่ละรีเลชันย่อยจะประกอบไปด้วยแอตทริบิวต์ของรีเลชัน r นั่นคือ ถ้าเราให้ R เป็นสกีมาของรีเลชัน r และสับเซตของแอตทริบิวต์ R1, R2, , Rn ของ R คือ R = R1 U R2 U U Rn แต่ละรีเลชันย่อย ri ของ r คือ ri = P Ri (r) รีเลชันย่อยที่ได้สามารถนำกลับมาสร้างเป็นรีเลชัน r ได้ใหม่โดยการทำ natural join r = r1 ในการทำ natural join เพื่อที่จะให้ผลลัพธ์ของการ join ได้เป็นรีเลชัน r เหมือนเดิม สามารถทำได้โดยการใส่แอตทริบิวท์ที่ทำหน้าที่เป็นคีย์หลักของ R เข้าไปในแต่ละ Ri โดยทั่วไปแล้วก็สามารถใช้ซูเปอร์คีย์แทนได้เช่นกัน เพื่อความสะดวกเราจะทำการเพิ่มแอตทริบิวต์พิเศษเข้าไปในรีเลชัน จะเรียกว่า tid โดยที่ค่าของแอตทริบิวต์ tid จะถูกกำหนดให้มีค่าไม่ซ้ำกันเพื่อใช้ในการจำแนกทูเปิลแต่ละทูเปิลออกจากกัน ดังนั้นแอตทริบิวต์ tid จะทำหน้าที่เป็นคีย์คู่แข่งของรีเลชัน r และจะถูกนำไปรวมเข้ากับแต่ละรีเลชันย่อยที่แยกออกมา พิจารณารีเลชัน employee ทำการเพิ่มแอตทริบิวต์ tid ดังรูปที่ 13.5
รูปที่ 13.5 แสดงรีเลชัน employee และแอตทริบิวต์ tid แสดงการแยกรีเลชันรีเลชัน employee และแอตทริบิวต์ tid ออกเป็น 2 รีเลชันย่อยคือ employee-schema-1= (Tid, empid, state) employee-schema-2 = (Tid, name, age, salary) รีเลชันย่อยทั้ง 2 ในรูปที่ 13.6 เป็นผลมาจากการดำเนินการดังนี้ employee1 = P employee-schema-1 (employee) employee2 = P employee-schema-2 (employee) Employee1
Employee2
รูปที่ 13.6 แสดงการแบ่งรีเลชันตามแนวตั้งของรีเลชัน employee ดังนั้นเราสามารถสร้างรีเลชัน employee จากรีเลชันย่อยได้จาก P employee-schema (employee1![]() นิพจน์
employee1 1.2.3 Mixed Fragmentation การแบ่งแบบผสมนี้ รีเลชัน r จะถูกแบ่งออกเป็นรีเลชันย่อย r1, r2, , rn โดยแต่ละรีเลชันเหล่านั้นอาจจะถูกแบ่งนอนหรือแนวตั้งก็ได้จากรีเลชัน r และรีเลชันย่อยแต่ละอันก็สามารถถูกแบ่งตามแนวนอนหรือแนวตั้งต่อไปได้อีก พิจารณาจากรูปที่ 13.4 รีเลชัน employee ถูกแบ่งตามแนวตั้งเป็นรีเลชันย่อย employee1 และ employee2 จากนั้นเราสามารถที่จะแบ่งรีเลชันย่อย employee1 ตามแนวนอนได้อีก เป็น 2 รีเลชันย่อย ดังนี้ employee11 = s state=New york (employee1) employee12 = s state==Texas (employee1) ดังนั้นรีเลชัน r จึงถูกแบ่งออกเป็น 3 รีเลชันย่อย คือ employee11, employee12 และ employee2 ซึ่งแต่ละ รีเลชันย่อยอาจจะถูกจัดเก็บไว้ต่างไซต์กัน 1.3 Data Replication and Fragmentation วิธีการนี้เป็นการนำวิธีการทำสำเนาข้อมูล และการแยกข้อมูลมาใช้ร่วมกัน คือรีเลชันย่อย สามารถถูกทำสำเนาได้ และสำเนาของรีเลชันย่อยก็สามารถถูกแยกรีเลชันได้ ตัวอย่างเช่น พิจารณาระบบที่ประกอบไปด้วยไซต์ S1, S2, , S10 เราสามารถแยกรีเลชัน employee เป็น employee 11, employee 12 และ employee 2 โดยเราจะเก็บสำเนาของรีเลชันย่อย employee 11 ไว้ที่ไซต์ S1, S2 และ S3 ทำการสำเนาของรีเลชันย่อย employee 12 ไว้ที่ไซต์ S5 และ S6 และสำเนารีเลชันย่อย employee 2 ไว้ที่ไซต์ S4, และ S7 เป็นต้น |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|