1 / 98

บทที่ 13 ระบบฐานข้อมูลแบบกระจาย (Distributed Database System)

บทที่ 13 ระบบฐานข้อมูลแบบกระจาย (Distributed Database System). แนวคิดของระบบฐานข้อมูลแบบกระจาย : สถาปัตยกรรมระบบฐานข้อมูลแบบกระจาย

holly-pope
Download Presentation

บทที่ 13 ระบบฐานข้อมูลแบบกระจาย (Distributed Database System)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. บทที่ 13ระบบฐานข้อมูลแบบกระจาย(Distributed Database System) แนวคิดของระบบฐานข้อมูลแบบกระจาย :สถาปัตยกรรมระบบฐานข้อมูลแบบกระจาย ในระบบฐานข้อมูลแบบรวมศูนย์ องค์ประกอบต่าง ๆ ของระบบจะรวมอยู่ที่คอมพิวเตอร์เพียงเครื่องเดียว ทั้งข้อมูล ระบบจัดการฐานข้อมูล ดิสก์สำหรับเก็บข้อมูล เทปสำหรับสำรองข้อมูล เป็นต้น ในปัจจุบันมีแนวโน้มที่จะกระจายข้อมูลไปเก็บไว้หลาย ๆ เครื่อง เพื่อเพิ่มประสิทธิภาพในการประมวลผล เพิ่มความน่าเชื่อถือของข้อมูล เพื่อกระจายการใช้งานข้อมูลอย่างเหมาะสม ดังนั้นจึงเกิดแนวความคิดของระบบจัดการฐานข้อมูลแบบกระจาย เพื่อตอบสนองต่อความต้องการเหล่านั้น

  2. ในระบบฐานข้อมูลแบบกระจาย ข้อมูลจะถูกจัดเก็บไว้ในหลาย ๆ เครื่อง และจะเชื่อมต่อเข้าด้วยกันผ่านระบบเครือข่าย โดยแต่ละที่จะมีระบบจัดการฐานข้อมูลเป็นของตนเอง และสามารถที่จะทำงานได้ด้วยตนเอง หรือร่วมกันทำงานก็ได้ โดยที่คอมพิวเตอร์แต่ละเครื่อง จะเรียกว่าไซต์หรือโหนด ดังรูปที่ 13.1 รูปที่13.1 แสดงลักษณะทางกายภาพของระบบฐานข้อมูลแบบกระจาย

  3. สถาปัตยกรรมไคลเอนท์-เซิฟร์เวอร์(Client-Server Architecture) เป็นระบบคอมพิวเตอร์ที่ประกอบไปด้วยเครื่องคอมพิวเตอร์จำนวนหลาย ๆ เครื่อง ทั้งคอมพิวเตอร์ส่วนบุคคล เวิรค์สเตชัน เครื่องให้บริการแฟ้มข้อมูล เครื่องให้บริการการพิมพ์ ฯลฯ โดยมีการเชื่อมต่อกันผ่านระบบเครือข่าย โดยแบ่งออกเป็นสองส่วนคือเครื่องที่ขอใช้บริการ(Client) และเครื่องให้บริการ(Server) ในเรื่องของระบบฐานข้อมูลจะแบ่งโปรแกรมระบบจัดการฐานข้อมูลออกเป็นสองระดับ คือ ไคลเอนท์ และเซิฟร์เวอร์ บางไซต์จะรันเฉพาะโปรแกรมไคลเอนท์ และบางไซต์จะรันเฉพาะโปรแกรมเซิฟร์เวอร์เท่านั้น ตัวอย่างเช่น ในการประมวลผลคำสั่ง SQL ดำเนินการระหว่างไคลเอนท์และเซิฟร์เวอร์ จะมีขั้นตอนดังนี้

  4. ไคลเอนท์วิเคราะห์คำสั่ง และแยกคำสั่งออกเป็นหลาย ๆ คำสั่งตามจำนวนของเซิฟร์เวอร์ไซต์ที่จะทำการสืบค้นข้อมูล จากนั้นก็จะส่งคำสั่งไปยังแต่ละเซิฟร์เวอร์ไซต์นั้น เซิฟร์เวอร์แต่ละตัวจะประมวลผลคำสั่งในเครื่องตนเอง และส่งผลลัพธ์กลับไปยังไคลเอนท์ ไคลเอนท์รวบรวมผลลัพธ์ที่ได้รับกลับมาจากไซต์ต่าง ๆ แล้วสร้างเป็นผลลัพธ์สุดท้าย จากแนวทางนี้เครื่องที่ทำหน้าที่ประมวลผลคำสั่งจะเรียกว่า database processor (DP) หรือเครื่อง back-end และเครื่องไคลเอนท์จะเรียกว่า application processor(AP) หรือเครื่อง front-end

  5. ในระบบจัดการฐานข้อมูลแบบกระจาย(Distributed Database Management System : DDBMS) จะแบ่งออกเป็นสามระดับคือ โปรแกรมส่วน Server รับผิดชอบเกี่ยวกับการจัดการข้อมูลที่ ซึ่งจะเหมือนกับโปรแกรม DBMS แบบรวมศูนย์ โปรแกรมส่วน Client รับผิดชอบเกี่ยวกับการเข้าถึงข้อมูลที่อยู่ใน DDBMS catalog และทำการร้องขอการใช้บริการข้อมูลไปที่ไซต์อื่น โปรแกรมส่วน Communication จะสนับสนุนการสื่อสารข้อมูลบนระบบเครือข่าย ซึ่งจะถูกใช้งานโดยโปรแกรมส่วน Client เพื่อทำการส่งคำสั่งและข้อมูลไปยังไซต์ที่ต้องการ

  6. Client จะทำหน้าที่ในการสร้างแผนการสืบค้นข้อมูลแบบกระจาย ควบคุมให้การทำทรานแซกชันมีคุณสมบัติ ACID อยู่เสมอ และหน้าที่ที่สำคัญอีกอย่างหนึ่งคือมีความสามารถที่จะซ่อนรายละเอียดของการกระจายของข้อมูลจากผู้ใช้ได้ นั่นคือผู้ใช้งานในไซต์ต่างๆ ก็สามารถที่จะเข้าถึงข้อมูลได้โดยไม่จำเป็นจะต้องรู้ว่าข้อมูลเก็บอยู่ที่ไหนเราเรียกคุณสมบัตินี้ว่า distribution transparancy ดังรูปที่ 13.2 โดย DDBMS จะต้องบอกได้ว่าข้อมูลที่จัดเก็บนั้นอยู่ที่ไซต์ไหนบ้าง

  7. รูปที่ 13.2 แสดงสถาปัตยกรรมไคลเอนท์-เซิฟร์เวอร์สำหรับระบบฐานข้อมูลแบบกระจาย

  8. ลักษณะของฐานข้อมูลแบบกระจายลักษณะของฐานข้อมูลแบบกระจาย ในระบบฐานข้อมูลแบบกระจาย ข้อมูลจะถูกจัดเก็บไว้ในหลาย ๆ ไซต์ แต่ละไซต์มีระบบจัดการฐานข้อมูลของตนเอง และจะต้องมีคุณสมบัติ transparant โดยเฉพาะคุณสมบัติต่อไปนี้ 1.ความเป็นอิสระของการกระจายของข้อมูล(Distributed Data Independent) นั่นคือผู้ใช้สามารถที่จะสอบถามข้อมูลได้โดยไม่ต้องระบุว่า รีเลชัน หรือสำเนาของรีเลชัน หรือส่วนของรีเลชัน อยู่ที่ไหน ซึ่งเป็นลักษณะของความเป็นอิสระทางกายภาพของข้อมูล และความเป็นอิสระทางตรรกของข้อมูล อย่างหนึ่ง และในการสอบถามข้อมูลก็จะมีการพิจารณาถึงค่าใช้จ่ายต่าง ๆ เพื่อประสิทธิภาพในการสืบค้นข้อมูล

  9. 2. ความถูกต้องในการประมวลผลทรานแซกชันแบบกระจาย(Distributed transaction atomicity) นั่นคือผู้ใช้สามารถสร้างทรานแซกชันที่สามารถเข้าถึงข้อมูลและปรับปรุงข้อมูฃที่อยู่ที่ไซต์อื่น ๆ ได้ โดยการสร้างทรานแซกชันที่ไซต์ของตนเองเท่านั้น โดยเฉพาะการทำทรานแซกชันที่มีการเข้าถึงข้อมูลจากหลาย ๆ ไซต์ ทรานแซกชันนั้นจะต้องมีคุณสมบัติ ACID ด้วย

  10. ถ้าข้อมูลมีการกระจายออกไปที่ไซต์ต่างๆ และไซต์เหล่านั้นมีระบบจัดการฐานข้อมูลตัวเดียวกัน เราเรียกระบบฐานข้อมูลนั้นว่า Homogeneous distributed database system นอกนั้นเราจะเรียกว่า Heterogeneous distributed databasesystem หรืออาจเรียกได้อีกชื่อหนึ่งว่า Multidatabase System หลักในการสร้าง heterogeneous system ต้องอาศัยมาตรฐานที่เรียกว่า gateway protocols ในที่นี้ gateway protocols จะหมายถึง API(Application Programming Interface) ซึ่งทำหน้าที่เชื่อมต่อระหว่าง DBMS และโปรแกรมต่าง ๆ เช่น ODBC และ JDBC เป็นต้น

  11. การเก็บข้อมูลของระบบฐานข้อมูลแบบกระจายการเก็บข้อมูลของระบบฐานข้อมูลแบบกระจาย 1. Distributed Data Storage ในการจัดเก็บข้อมูลในระบบฐานข้อมูลแบบกระจายมีอยู่หลายวิธีด้วยกันคือ การทำสำเนา(Replication) เป็นการทำสำเนาของรีเลชันไว้หลาย ๆ สำเนา และแต่ละสำเนาจะถูกเก็บไว้ต่างไซต์กัน การแยกรีเลชัน(Fragmentation) เป็นการแยกรีเลชันออกเป็นหลาย ๆ ส่วน และจัดเก็บแต่ละส่วนไว้ต่างไซต์กัน วิธี Replication และ Fragmentation เป็นการแยกรีเลชันออกเป็นหลาย ๆ ส่วน และแต่ละส่วนก็จะมีการจัดการแบบสำเนา

  12. 1.1 การทำสำเนาข้อมูล(Data Replication) วิธีการเก็บข้อมูลวิธีนี้เป็นการทำสำเนาของรีเลชัน r ไว้หลาย ๆ ไซต์ โดยทั่วไปจะทำการสำเนาแบบ Full Replication นั่นคือจะทำการสร้างสำเนาของรีเลชันกับทุก ๆ ไซต์ในระบบ ในการจัดเก็บข้อมูลแบบสำเนานี้ มีทั้งข้อดีและข้อเสียดังนี้คือ - Availability ถ้าไซต์ที่มีรีเลชัน r เกิดหยุดการทำงานลง ระบบสามารถที่จะทำงานต่อไปได้โดยไปดึงข้อมูล รีเลชัน r ที่ไซต์อื่น โดยไม่ต้องคำนึงถึงไซต์ที่หยุดทำงานไป - Increased parallelism ในกรณีที่การดำเนินการกับข้อมูลส่วนใหญ่ของรีเลชัน r เป็นการอ่านข้อมูลจากรีเลชัน เมื่อเรามีข้อมูลของรีเลชัน r อยู่ในหลาย ๆ ไซต์ เราก็สามารถที่จะทำการดึงข้อมูลมาพร้อม กันได้ อีกทั้งจากการที่มีสำเนาของรีเลชันอยู่หลาย ๆ ไซต์ โอกาสที่จะพบข้อมูลในไซต์ที่ต้องการจะทำทรานแซกชันก็มีโอกาสมากกว่า ดังนั้นด้วยวิธีการนี้จะช่วยลดปริมาณข้อมูลที่จะส่งผ่านระหว่างไซต์ได้

  13. - Increased overhead on update ด้วยวิธีการ replication นี้ สำเนาข้อมูลของรีเลชัน r ในแต่ละไซต์จะต้องเหมือนกันทุก ๆ ไซต์ ไม่เช่นนั้นแล้วการประมวลผลกับรีเลชัน r อาจจะเกิดความผิดพลาดขึ้นได้ ดังนั้นเมื่อไรก็ตามที่รีเลชัน r ถูกแก้ไข ระบบจะต้องทำการแก้ไขข้อมูลรีเลชัน r ให้ครบทุกไซต์ที่มีรีเลชัน r อยู่ ยกตัวอย่างเช่น ในระบบธนาคารซึ่งมีการทำสำเนาของข้อมูลบัญชีไว้หลาย ๆ ไซต์ เมื่อมีการปรับปรุงยอดบัญชี ก็จะต้องทำการปรับยอดบัญชีให้เท่ากันในทุก ๆ ไซต์ โดยทั่วไปแล้วการทำสำเนาข้อมูลจะช่วยเพิ่มประสิทธิภาพในการอ่านข้อมูล และช่วยเพิ่มความสะดวกในการสืบค้นข้อมูลของทรานแซกชันแบบอ่านอย่างเดียว อย่างไรก็ตามทรานแซกชันแบบที่มีการปรับปรุงข้อมูลจะต้องมีการดำเนินการที่เพิ่มมากขึ้น ซึ่งการควบคุมการปรับปรุงข้อมูลพร้อมๆ กันในหลาย ๆ ไซต์ค่อนข้างจะยุ่งยากกว่าระบบฐานข้อมูลแบบรวมศูนย์

  14. 1.2 การแยกข้อมูล(Data Fragmentation) วิธีการเก็บข้อมูลแบบนี้ รีเลชัน r จะถูกแบ่งออกเป็นรีเลชันย่อย ๆ r1,r2,…,rn ซึ่งรีเลชันเหล่านี้เมื่อนำกลับมารวมกันจะได้ผลลัพธ์เป็นรีเลชัน r เหมือนเดิม ซึ่งในการแบ่งรีเลชันมีอยู่ 2 วิธีคือ การแบ่งรีเลชันตามแนวนอน(horizontal fragmentation) และ การแบ่งรีเลชันตามแนวตั้ง(vertical fragmentation) โดยการแบ่งรีเลชันตามแนวนอน จะแบ่งแต่ละทูเพิลของรีเลชัน r ไปเป็นเป็นหลาย ๆ ส่วน ส่วนการแบ่งรีเลชันตามแนวตั้งจะเป็นการแยกรีเลชัน(decomposition)โดยการแตกโครงสร้างของรีเลชัน r ออกเป็นหลาย ๆ รีเลชันย่อย ในที่นี้จะยกตัวอย่างรีเลชัน Employee ซึ่งมีโครงสร้างของรีเลชันดังนี้

  15. Employee = (empid, name, state, age, salary) รีเลชัน Emloyee แสดงได้ดังรูปที่ 13.3 รูปที่ 13.3 ตัวอย่างรีเลชัน Employee

  16. 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

  17. จากตัวอย่าง สมมุติว่า 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

  18. employee1 employee2 รูปที่ 13.4 แสดงการแบ่งรีเลชันตามแนวนอนของรีเลชัน employee

  19. 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  r2  r3 …  r4

  20. ในการทำ natural join เพื่อที่จะให้ผลลัพธ์ของการ join ได้เป็นรีเลชัน r เหมือนเดิม สามารถทำได้โดยการใส่แอตทริบิวท์ที่ทำหน้าที่เป็นคีย์หลักของ R เข้าไปในแต่ละ Ri โดยทั่วไปแล้วก็สามารถใช้ซูเปอร์คีย์แทนได้เช่นกัน เพื่อความสะดวกเราจะทำการเพิ่มแอตทริบิวต์พิเศษเข้าไปในรีเลชัน จะเรียกว่า tid โดยที่ค่าของแอตทริบิวต์ tid จะถูกกำหนดให้มีค่าไม่ซ้ำกันเพื่อใช้ในการจำแนกทูเปิลแต่ละทูเปิลออกจากกัน ดังนั้นแอตทริบิวต์ tid จะทำหน้าที่เป็นคีย์คู่แข่งของรีเลชัน r และจะถูกนำไปรวมเข้ากับแต่ละรีเลชันย่อยที่แยกออกมา

  21. พิจารณารีเลชัน employee ทำการเพิ่มแอตทริบิวต์ tid ดังรูปที่ 13.5 รูปที่ 13.5 แสดงรีเลชัน employee และแอตทริบิวต์ tid

  22. แสดงการแยกรีเลชันรีเลชัน 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

  23. Employee1

  24. Employee2 รูปที่ 13.6 แสดงการแบ่งรีเลชันตามแนวตั้งของรีเลชัน employee

  25. ดังนั้นเราสามารถสร้างรีเลชัน employee จากรีเลชันย่อยได้จาก P employee-schema (employee1 employee2) นิพจน์ employee1  employee2 เป็นรูปแบบพิเศษของการทำ natural join โดยจะใช้แอตทริบิวต์ tid ในการ join ระหว่างรีเลชัน แม้ว่าแอตทริบิวต์ tid จะมีประโยชน์ในการแบ่งรีเลชันตามแนวตั้ง แต่ผู้ใช้จะไม่สามารถมองเห็นแอตทริบิวต์นี้ เนื่องจากเป็นส่วนที่ระบบสร้างขึ้นภายในตัวระบบเองเพื่อจัดการกับรีเลชันย่อยเท่านั้น

  26. 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

  27. ดังนั้นรีเลชัน 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 เป็นต้น

  28. ระบบจัดการฐานข้อมูลแบบกระจาย :ความรู้เบื้องต้นของระบบจัดการฐานข้อมูลแบบกระจาย ฐานข้อมูลแบบกระจายเป็นการเก็บข้อมูลไว้ในไซต์ต่างๆ บนระบบเครือข่ายคอมพิวเตอร์ ซึ่งมีปัจจัยหลายอย่างที่ทำให้เราจำเป็นต้องมีการพัฒนาระบบงานในลักษณะฐานข้อมูลแบบกระจาย โดยข้อดีของระบบฐานข้อมูลแบบกระจายมีดังต่อไปนี้ • การกระจายข้อมูลตามลักษณะระบบงาน(Distributed nature of some database applications) ระบบงานทางด้านฐานข้อมูลบางระบบงานเป็นลักษณะที่ข้อมูลมีการกระจายอยู่ในหลายๆ ที่ เช่นบริษัทที่มีหลาย ๆ สาขา หรือธนาคารที่มีหลาย ๆ สาขาเป็นต้น ซึ่งโดยธรรมชาติของข้อมูลที่ใช้ในระบบงานดังกล่าว จะการกระจายอยู่ในสาขาต่าง ๆ

  29. เพิ่มความน่าเชื่อถือ(Increased reliability and availability) ในระบบฐานข้อมูลแบบกระจายเรามีการจัดเก็บข้อมูลไว้ในหลาย ๆ ไซต์ นั่นคือเมื่อมีไซต์ใดไซต์หนึ่งเกิดความล้มเหลวขึ้นทำให้ไม่สามารถเข้าถึงข้อมูลในไซต์นั้นได้ ระบบก็สามารถที่จะไปหาข้อมูลจากไซต์อื่นได้ ซึ่งแตกต่างจากระบบแบบรวมศูนย์ ถ้าไซต์เกิดล้มเหลว จะทำให้ไม่สามารถใช้งานได้เลย • การยอมให้มีการใช้ขอมูลร่วมกันได้ (Allowing data sharing while maintaining some measure of local control) นั่นคือในแต่ละไซต์สามารถที่จะยอมให้ผู้ใช้จากไซต์อื่นสามารถเข้าถึงข้อมูล ในขณะที่ไซต์กำลังจัดการกับข้อมูลและโปรแกรม

  30. ปรับปรุงการทำงาน(Improved performance) กรณีที่มีข้อมูลมีจำนวนมาก และได้มีการกระจายข้อมูลไว้ในไซต์ต่าง ๆ ในการสืบค้นข้อมูลหรือการทำทรานแซกชันของแต่ละไซต์ จะสามารถทำได้อย่างรวดเร็ว อีกทั้งในการทำทรานแซกชันยังสามารถทำพร้อม ๆ กันได้มากกว่าหนึ่งไซต์ ทำให้การประมวลผลเป็นการประมวลผลแบบขนาน ซึ่งจะช่วยลดเวลาในการประมวลผลลงไปได้ • จากคุณสมบัติดังกล่าวทำให้การออกแบบและพัฒนาระบบจัดการฐานข้อมูลแบบกระจายมีความซับซ้อนมากขึ้น โดยในระบบจัดการฐานข้อมูลแบบกระจายจะต้องสนับสนุนหน้าที่ที่เพิ่มขึ้น จากระบบจัดการฐานข้อมูลแบบรวมศูนย์ดังนี้

  31. สามารถที่จะติดต่อไปยังไซต์อื่นๆและส่งแบบสอบถามและข้อมูลผ่านทางเครือข่ายคอมพิวเตอร์ได้ • สามารถที่จะเก็บข้อมูลของข้อมูลที่มีการกระจาย และข้อมูลที่มีการทำสำเนา ไว้ในแคตตาลอก ของ DDBMS ได้ • สามารถวางแผนวิธีการสืบค้นข้อมูล และการทำทรานแซกชันที่มีการใช้ข้อมูลมากกว่า 1 ไซต์ • สามารถตัดสินใจได้ว่าจะเข้าถึงข้อมูลที่ได้มีการสำเนาไว้จากไซต์ไหน • สามารถที่จะจัดการความสอดคล้องของข้อมูลที่ได้มีการทำสำเนาไว้ • สามารถที่จะกู้คืนข้อมูลจากไซต์ที่ล้มเหลวได้

  32. กระบวนการสืบค้นข้อมูลแบบกระจายกระบวนการสืบค้นข้อมูลแบบกระจาย ในระบบฐานข้อมูลแบบรวมศูนย์ ประสิทธิภาพของการสืบค้นข้อมูลจะวัดจากปริมาณของการเข้าถึงข้อมูลในดิสก์ แต่ในระบบฐานข้อมูลแบบกระจายจะต้องพิจารณาเพิ่มเติมอีกคือ - ค่าใช้จ่ายในการส่งข้อมูลผ่านระบบเครือข่าย - ประสิทธิภาพของไซต์ที่ประมวลผลแต่ละส่วนของคำสั่งแบบขนาน ความสัมพันธ์ของค่าใช้จ่ายระหว่างการส่งข้อมูลผ่านระบบเครือข่ายและการส่งข้อมูลจากดิสก์ จะขึ้นอยู่กับประเภทของระบบเครือข่าย และความเร็วของดิสก์ ดังนั้นเราไม่สามารถที่จะระบุลงไปได้เลยว่าจะต้องเสียค่าใช้จ่ายไปกับดิสก์หรือระบบเครือข่ายมากกว่ากัน

  33. 1. Query Transformation พิจารณาแบบสอบถามง่าย ๆ “จงแสดงข้อมูลทุกทูเปิลของรีเลชัน employee” จะเห็นว่าในระบบฐานข้อมูลแบบรวมศูนย์จะเป็นแบบสอบถามที่ง่าย แต่ในระบบฐานข้อมูลแบบกระจาย การประมวลผลแบบสอบถามนี้จะค่อนข้างยุ่งยากในการประมวลผล เนื่องจากรีเลชัน employee อาจจะถูกทำสำเนาไว้หลาย ๆ ไซต์ หรือถูกแบ่งออกเป็นหลายๆ รีเลชันย่อย หรือถูกทำทั้งสองอย่าง ถ้ารีเลชัน employee ถูกทำสำเนาและไม่ได้ถูกแบ่งออกเป็นรีเลชันย่อย เราก็จะเลือกสำเนาที่มีค่าใช้จ่ายในการส่งข้อมูลน้อยที่สุด อย่างไรก็ตามถ้าสำเนาของรีเลชันมีการแบ่งออกเป็นรีเลชันย่อยด้วย การเลือกก็จะมีความยุ่งยากเพิ่มขึ้น เนื่องจากเราต้องทำการ join หรือ union เพื่อสร้างรีเลชัน employee สำหรับกรณีนี้ ก็สามารถดำเนินการได้หลายวิธี

  34. Fragmentation Transparency มีความหมายว่า ผู้ใช้อาจจะเขียนแบบสอบถามเป็น s state=’New york’ (employee) และเนื่องจาก employee ถูกกำหนดดังนี้ employee 1 U employee 2 สามารถเขียนได้ดังนี้ s state=’New york’ (employee 1 U employee 2) ถ้าเราทำการอ๊อปติไมซ์นิพจน์นี้ เราสามารถเขียนเป็นนิพจน์ได้ดังนี้ s state=’New york’ (employee 1) U s state=’New york’ (employee 2)

  35. ซึ่งทำการแบ่งออกเป็นนิพจน์ย่อย 2 นิพจน์ โดยนิพจน์แรกจะดำเนินการเฉพาะ employee 1 ที่ไซต์ New york และนิพจน์ที่สองจะดำเนินการเฉพาะ employee 2 ที่ไซต์ Texas ถ้าเรามีการทำอ๊อฟติไมซ์ต่อไป โดยพิจารณาที่นิพจน์แรก s state=’New york’ (employee 1) เนื่องจาก employee 1 จะมีข้อมูลเฉพาะของ New york เท่านั้น ดังนี้เราสามารถที่จะขจัดการดำเนินการ Selection ออกไปได้ และในนิพจน์ที่สอง s state=’New york’ (employee 2) เราสามารถปรับได้ดังนี้ s state=’New york’ (s state=’Texas’ (employee)) ผลลัพท์ที่จะเป็นเซตว่าง ดังนั้นเมื่อทำการอ๊อปติไมซ์แบบสอบถามแล้ว ผลลัพธ์จะได้จากการดำเนินการดึงข้อมูลจากไซต์ New york เพียงไซต์เดียว

  36. 1.1 Simple Join Processing กลยุทธ์สำคัญในการทำ query-processing คือการเลือกวิธีการ join พิจารณานิพจน์ดังต่อไปนี้ employee department project สมมุติว่าทั้งสามรีเลชันไม่ได้ถูกทำสำเนาและไม่ได้ถูกแบ่งเป็นรีเลชันย่อย และ employee ถูกเก็บไว้ที่ไซต์ S1 department เก็บไว้ที่ไซต์ S2 และ project เก็บไว้ที่ไซต์ S3 และกำหนด Si เป็นไซต์ที่จะส่งผลลัพธ์ของแบบสอบถามไปให้ ดังนั้นวิธีการที่เป็นไปได้สำหรับประมวลผลแบบสอบถามนี้คือ

  37. 1. ส่งสำเนาของทั้งสามรีเลชันไปที่ไซต์ Si และใช้เทคนิคต่าง ๆ ในการในการสืบค้นข้อมูลที่ไซต์ Si 2. ส่งสำเนาของรีเลชัน employee ไปที่ไซต์ S2 และทำการประมวลผล temp1= employee  department ที่ไซต์ S2 จากนั้นส่ง temp1 จากไซต์ S2 ไปยังไซต์ S3 และประมวลผล temp2 = temp1  project และส่ง temp2 ไปยังไซต์ Si 3. ทำในลักษณะคล้าย ๆ กับวิธีการที่สอง แต่สลับไซต์ในการส่งข้อมูล

  38. ไม่มีวิธีไหนที่ดีทีสุด เราต้องพิจารณาระหว่างปริมาณของข้อมูลที่จะต้องส่งระหว่างไซต์ ค่าใช้จ่ายในการส่งผ่านข้อมูลระหว่างสองไซต์ และความเร็วในการประมวลผลของแต่ละไซต์ ซึ่งในวิธีการแรก ถ้าเราส่งข้อมูลทั้งหมดไปที่ไซต์ Si โดยที่รีเลชันเหล่านั้นมีการสร้างอินเด็กซ์ ดังนั้นเราจำเป็นที่จะต้องสร้างอินเด็กซ์เหล่านั้นที่ไซต์ Si ด้วย ซึ่งการสร้างอินเด็กซ์ทำให้มีการประมวลผลเพิ่มขึ้นมา และยังมีการใช้ดิสก์เพิ่มขึ้นอีก อย่างไรก็ตามวิธีการที่สองก็มีข้อเสียคือรีเลชันที่ได้จากการทำประมวลผลมีขนาดใหญ่(employee department)ซึ่งต้องส่งข้อมูลจากไซต์ S2 ไปที่ไซต์ S3 ซึ่งวิธีการที่สองจะทำให้มีการส่งข้อมูลบนระบบเครือข่ายมากกว่า เมื่อเทียบกับวิธีการที่หนึ่ง

  39. 1.2 Semijoin Strategy แนวคิดการทำแบบสอบถามแบบกระจายโดยใช้วิธีการทำ semijoin มีจุดประสงค์เพื่อลดจำนวนของทูเปิลใน รีเลชันก่อนที่จะทำการส่งให้ไซต์อื่น สมมุติว่าเราต้องการประมวลผลนิพจน์ r1  r2 ซึ่ง r1 และ r2 เก็บอยู่ที่ไซต์ S1 และ S2 ตามลำดับ กำหนดให้ R1 และ R2 แทนสกีมาของ r1 และ r2 ตามลำดับ สมมุติว่าเราต้องการผลลัพธ์ที่ S1 ถ้ามีทูเปิลหลาย ๆ ทูเปิลใน r2 ที่ไม่ได้ join กับทูเปิลใด ๆ ใน r1 ดังนั้นการส่งรีเลชัน r2 ทั้งหมดไปที่ไซต์ S1 ก็จะเป็นการส่งทูเปิลที่ทำให้เกิดการ join เกิดผลลัพธ์ที่เกินมาได้ ดังนั้น ก่อนที่เราจะส่งข้อมูลจาก r2 ไปที่ไซต์ S1 ก็น่าจะส่งเฉพาะทูเปิลสามารถ join กับ รีเลชัน r1 ที่ไซต์ S1 เท่านั้น

  40. เราสามารถดำเนินการดังกล่าวได้ดังนี้เราสามารถดำเนินการดังกล่าวได้ดังนี้ 1. หา temp1 ß P R1 Ç R2 ( r1 ) ที่ไซต์ S1 2. ส่ง temp1 จากไซต์ S1 ไป S2 3. หา temp2 ß r2  temp1 ที่ไซต์ S1 4. ส่ง temp2 จากไซต์ S2 ไป S1 5. ประมวลผล r1  temp2 ที่ไซต์ S2 ในขั้นตอนที่ 3 temp2 สามารถหาได้จาก r2  P R1 Ç R2 ( r1 ) และ ในขั้นตอนที่ 5 ทำ r1  r2  P R1 Ç R2 ( r1 ) เราสามารถเขียนนิพจน์ใหม่ได้ดังนี้ (r1  P R1 Ç R2 ( r1 ))  r2 เนื่องจาก r1  P R1 Ç R2 ( r1 ) = r1 ดังนั้นนิพจน์นี้จะเท่ากับ r1  r2

  41. วิธีการนี้จะมีความเหมาะสมในกรณีที่จำนวนของทูเปิลของ r2 มีจำนวนน้อย วิธีการดำเนินการแบบ semijoin แทนด้วยสัญลักษณ์ ดังนั้น semijoin ของ r1 และ r2 เขียนแทนด้วย r1 r2 คือ P R1(r1  r2) ดังนั้น r1 r2 จะเป็นการเลือกทูเปิลของ r1 ที่ เพื่อการทำ r1  r2 ซึ่งในขั้นตอนที่ 3 จะสามารถเขียนได้ใหม่ดังนี้ temp2 = r2 r1

  42. 1.3 Join Strategies that Exploit Parallelism พิจารณาการ join ของรีเลชัน 4 รีเลชัน r1 r2 r3 r4 ซึ่งรีเลชัน ri จะถูกเก็บไว้ที่ไซต์ Si สมมุติว่าเราต้องการผลลัพธ์ที่ไซต์ S1 ซึ่งก็มีอยู่หลายวิธีการที่จะดำเนินการแบบขนาน ยกตัวอย่างเช่น r1 ถูกส่งไปที่ไซต์ S2 และทำ r1 r2 ที่ไซต์ S2 ในขณะเดียวกัน r3 ก็ถูกส่งไปที่ไซต์ r4 และทำ r3  r4 ที่ไซต์ S4 ไซต์ S2 จะส่งผลลัพธ์ (r1 r2) กลับไปที่ไซต์ S1 และไซต์ S3 จะส่งผลลัพธ์ (r3 r4) กลับไปที่ไซต์ S1 เมื่อ S1 ได้รับผลลัพธ์กลับจาก S2 และ S4 แล้ว ก็จะทำการ join อีกครั้ง (r3 r4) (r1 r2) ดังนั้นจะเห็นว่าการประมวลผลการ join ที่ S1 สามารถดำเนินการแบบขนานโดยมีการประมวลผลที่ไซต์ S2 และไซต์ S4 ไปพร้อมๆ กัน

  43. การควบคุมสภาวะการทำงานพร้อมกันและการฟื้นสภาพข้อมูลการควบคุมสภาวะการทำงานพร้อมกันและการฟื้นสภาพข้อมูล การเข้าถึงข้อมูลในระบบแบบกระจายโดยปกติแล้วจะดำเนินการผ่านทรานแซกชัน ซึ่งจะต้องรักษาคุณสมบัติ ACID ซึ่งในการทำทรานแซกชันมีอยู่สองประเภทคือ local ทรานแซกชัน ซึ่งจะดำเนินการกับข้อมูลในฐานข้อมูลที่ local เท่านั้น และอีกประเภทหนึ่งคือ global ทรานแซกชัน ซึ่งจะทำการเข้าถึงข้อมูลและปรับปรุงข้อมูลในหลาย ๆ ฐานข้อมูล ในกรณีของ global ทรานแซกชัน การรักษาคุณสมบัติ ACID ของการทำทรานแซกชันแบบกระจายจะมีการดำเนินการที่ซับซ้อนมากขึ้น เนื่องจากแต่ละไซต์จะมีส่วนร่วมในการทำทรานแซกชัน ซึ่งความล้มเหลวที่เกิดขึ้นในไซต์เหล่านี้ หรือความล้มเหลวจากการสื่อสารกันระหว่างไซต์ อาจทำให้การทำทรานแซกชันผิดพลาดได้

  44. ภาพรวมของระบบสามารถแสดงได้ดังรูปภาพรวมของระบบสามารถแสดงได้ดังรูป รูปที่ 13.7 แสดงโครงสร้างของระบบ

  45. 1. System Structure ในแต่ละไซต์จะมีตัวจัดการทรานแซกชัน(local transaction manager) เป็นของตนเอง ซึ่งทำหน้าที่ควบคุมให้การทำทรานแซกชันให้มีคุณสมบัติ ACID โดยที่ตัวจัดการทรานแซกชันแต่ละตัวก็จะร่วมกันในการทำ global transaction เพื่อความเข้าใจมากยิ่งขึ้น เราจะกำหนดโมเดลของระบบทรานแซกชัน โดยในแต่ละไซต์ประกอบไปด้วยระบบย่อยสองระบบคือ - ตัวจัดการทรานแซกชัน(transaction manager) จะทำหน้าที่คอยควบคุมดูแลการดำเนินการของทรานแซกชันต่างๆ ที่มีการเข้าถึงข้อมูลในไซต์ของตนเอง แต่ละทรานแซกชันเป็นได้ทั้ง local ทรานแซกชัน หรือเป็นส่วนหนึ่งของ global ทรานแซกชันก็ได้ - ตัวประสานงานทรานแซกชัน(transaction coordinator) ทำหน้าที่ประสานการทำงานของทรานแซกชันต่าง ๆ ทั้ง local และ global

  46. โดย transaction manager จะมีหน้าที่ดังนี้ - การจัดการกับ log เพื่อจุดประสงค์ในการฟื้นคืนสภาพข้อมูล - มีส่วนร่วมในการทำ concurrency control กับไซต์อื่นเพื่อร่วมทำ concurrent execution ของทรานแซกชันในไซต์ของตนเอง transaction coordinator มีหน้าที่ดังนี้ - เริ่มต้นทำทรานแซกชัน - แบ่งทรานแซกชันออกเป็นทรานแซกชันย่อย และส่งไปยังไซต์ที่เหมาะสมเพื่อ - ประสานการดำเนินการของทรานแซกชันว่า ผลของการทำทรานแซกชันนั้น ทำสำเร็จในทุก ๆ ไซต์ หรือยกเลิกในทุก ๆ ไซต์

  47. 2. Commit Protocols เพื่อให้การทำทรานแซกชันบนระบบฐานข้อมูลแบบกระจายมีคุณสมบัติ Atomicity คือทรานแซกชัน T ต้อง commit ในทุก ๆ ไซต์ หรือยกเลิกการทำทรานแซกชันในทุก ๆ ไซต์ ตัวประสานงานทรานแซกชันของทรานแซกชัน T ต้องมีการทำ commit protocol วิธีการของ commit protocol มีการใช้งานกันอย่างแพร่หลายคือ two-phase commit protocol(2PC) และ three-phase commit protocol(3PC) ซึ่งจะช่วยหลีกเลี่ยงข้อเสียของ 2PC แต่การดำเนินการจะมีความซับซ้อนมากกว่า

  48. 2.1 Two-Phase Commit ให้ T เป็นทรานแซกชันเริ่มต้นที่ไซต์ Si และให้ ตัวประสานงานทรานแซกชันที่ไซต์ Si เป็น Ci 2.1.1 The Commit Protocol เมื่อทรานแซกชัน T ได้ทำการประมวลผลเสร็จสิ้น นั่นคือ ทุก ๆ ไซต์ที่ทรานแซกชัน T ได้ประมวลผลได้แจ้งกลับมาที่ Ci ว่า ได้ทำทรานแซกชัน T เสร็จเรียบร้อยแล้ว ตัวประงานงานทรานแซกชัน Ci จะเริ่มทำโปรโตคอล 2PC

  49. Phase 1 Ci เพิ่มเรคอร์ด <prepare T> ลงไปใน log ไฟล์บน stable storage จากนั้นก็จะส่งสัญญาณ prepare T ไปให้กับทุก ๆ ไซต์ที่ประมวลผลทรานแซกชัน T เมื่อไซต์อื่น ๆ ได้รับสัญญาน ตัวจัดการทรานแซกชันจะต้องตอบกลับไปหาตัวประสานงานทรานแซกชันว่าจะทำการ commit ทรานแซกชันได้หรือไม่ ถ้าไม่ได้จะเพิ่มเรคอร์ด <no T> ลงไปใน log ไฟล์และส่งสัญญาณ abort T กลับไปที่ Ci ถ้าได้จะเพิ่มเรคอร์ด <ready T> ลงไปใน log ไฟล์ และตัวจัดการทรานแซกชันจะส่งสัญญาณ ready T กลับไปที่ Ci

  50. Phase 2 ทรานแซกชัน T ทรานแซกชัน T จะ commit ได้ก็ต่อเมื่อได้รับสัญญาณ ready T จากทุก ๆ ไซต์ที่มีส่วนร่วมในการทำทรานแซกชัน นอกเหนือจากนั้นทรานแซกชัน T จะต้องถูกยกเลิก ซึ่งก็จะต้องทำการเพิ่มเรคอร์ด <commit T> หรือ <abort T> ลงไปใน log ไฟล์ ถ้าทรานแซกชัน T สามารถ commit ได้ หรือ ยกเลิกการทำทรานแซกชัน จากนั้น ตัวประสานงานทรานแซกชันก็จะส่งสัญญาณ commit T หรือ abort T ไปให้กับทุกๆ ไซต์ที่ร่วมกันทำทรานแซกชัน เมื่อแต่ละไซต์ได้รับสัญญาณก็จะทำการบันทึกเรคอร์ดนี้ลงไปใน log ไฟล์

More Related