Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
สไลด์ต้นแบบสามารถดาวน์โหลดได้ที่http://codex.cs.yale.edu/avi/db-book/db6/slide-dir/
การขึ้นต่อกันของข้อมูล• Data Dependency = การขึ้นต่อกันของข้อมูล• เกิดจาก Attribute หนึ่งมีความสัมพันธ์กับอีก Attribute หน...
ฟังก์ชันการขึ้นต่อกัน• Functional Dependency (FD) = ฟังก์ชันการขึ้นต่อกัน• FD จะเกิดขึ้นเมื่อมีค่าของ Attribute หนึ่งสอดคล...
ลักษณะของฟังก์ชันการขึ้นต่อกัน• Trivial Functional Dependency   – ความสัมพันธ์ระหว่าง Determinant Set กับ Determinant Subs...
Trivial Functional Dependency    id        char_name    hair_id skin_color    level    class_namethep444     Adolescence  ...
Nontrivial Functional Dependency    id        char_name    hair_id skin_color    level    class_namethep444     Adolescenc...
Nontrivial Functional Dependency• ในตารางนี้มี Nontrivial Functional Dependency อะไรบ้าง?
Nontrivial Functional Dependencyรหัสพนักงาน      ชื่อพนักงาน    รหัสแผนก วันที่ทางาน เวลาเข้างาน เวลาออกงาน   226        K...
รูปแบบของฟังก์ชันการขึ้นต่อกัน• Full Functional Dependency  – เกิดจากทุก Attribute ใน Determinant Set กาหนดค่า Attribute ท...
Full Functional Dependencyรหัสพนักงาน      ชื่อพนักงาน     รหัสแผนก        ตาแหน่งงาน          เงินเดือน   226        Keis...
Partial Functional Dependency    id    project_id     staff_name        project_name    Advisor_id dept_id104450        1 ...
Transitive Functional Dependency      proj_name    staff_id         job_class     job_id   เงินเดือนAbBeaw Project       1...
การนาเสนอฟังก์ชันที่ขึ้นต่อกัน• เราสามารถเขียน Functional Dependency ได้ 2 รูปแบบ   – เขียนเป็น Diagram   – เขียนเป็นเซต• ...
Normalization• Normalization = การทาบรรทัดฐาน, การทาให้เป็นมาตรฐาน• กระบวนการหนึ่งที่มีอยู่ในการออกแบบฐานข้อมูล   – การแก้...
Normal Form• ข้อกาหนดในการแก้ไขตารางภายในฐานข้อมูล• รูปแบบที่มีตัวเลขมาก ข้อกาหนดยิ่งมากขึ้น แต่ฐานข้อมูลที่ได้ยิ่งดีขึ้น ...
ข้อเสียของตารางที่ไม่ทา Normal Form• ปัญหาการเพิ่มข้อมูล (Insertion Anomalies)   – การเพิ่มข้อมูลที่มีข้อมูลไม่ครบตาม Sche...
Insertion Anomalies     id            char_name    hair_id skin_color    level    class_namethep444         Adolescence   ...
Update Anomalies     id          char_name    hair_id skin_color    level    class_namethep444       Adolescence     2    ...
Deletion Anomalies     id          char_name    hair_id skin_color    level    class_namethep444       Adolescence     2  ...
รูปแบบบรรทัดฐานที่ 1• รูปแบบบรรทัดฐานที่ 1 = First Normal Form (1NF)• ตารางในข้อกาหนด 1NF ต้องมี Attribute ใด ๆ อยู่ภายใน ...
การทาตารางเป็น 1NFServ    Server                   Board     Charac      Character              Character Info            ...
การทาตารางเป็น 1NF  • Attribute ใดที่ซ้อนกับ Attribute ให้เอา Composite Attribute ออกServ   Server          Board   Charac...
การทาตารางเป็น 1NF     • ข้อมูลแบบ Multivalue ต้องแยกเป็นแต่ละแถวServ   Server                   Board     Charac      Cha...
การทาตารางเป็น 1NF     • ทุก Attribute ต้องขึ้นกับ Primary KeyServ    Server                  Board     Charac      Charac...
รูปแบบบรรทัดฐานที่ 2• รูปแบบบรรทัดฐานที่ 2 = Second Normal Form (2NF)• มีหลายเหตุผลที่ต้องทาตารางให้เป็น 2NF   – ปัญหาความ...
การทาตารางเป็น 2NF  • พิจารณา Partial Dependency ของตารางServ   Server          Board   Charac    Character               ...
การทาตารางเป็น 2NF• แยกตาราง โดยย้าย Dependent Set ให้ไปอยู่ที่ตารางใหม่ และให้ตารางใหม่มี PK คือ Determinant Set• ตั้งชื่...
รูปแบบบรรทัดฐานที่ 3• รูปแบบบรรทัดฐานที่ 3 = Third Normal Form (3NF)• ในบางครั้ง การทาตาราง 2NF ยังไม่พอ   – ปัญหาความซ้าซ...
การทาตารางเป็น 3NF• พิจารณา Transitive Dependency ของตาราง• อย่าลืมพิจารณาตารางที่ถูกแยกจาก 2NF ด้วย                      ...
ECO Job                         System[2] 1st Class        2nd Class    3rd Class   1st Class    2nd Class      3rd Class ...
การทาตารางเป็น 3NF• แยกตาราง โดยย้าย Dependent Set ให้ไปอยู่ที่ตารางใหม่ และให้ตารางใหม่มี PK คือ Determinant Set• ตั้งชื่...
รูปแบบบรรทัดฐานบอยซ์คอดด์• ในเชิงธุรกิจ การทาตารางถึง 3NF นั้นเพียงพอแล้ว แต่บางครั้งก็ยังไม่พอ• การพิจารณา BCNF ไม่ต้องพิ...
การทาตารางเป็น BCNF• ผู้ พั ฒ นาระบบคนหนึ่ ง อยากให้ พิ จ ารณาว่ า ตารางการสอนของมหาวิทยาลัย S นั้นอยู่ใน BCNF หรือไม่    ...
การทาตารางเป็น BCNF• ภายในตารางไม่พบ Transitive Dependency, Partial Dependencyดังนั้นตารางนี้เป็นตาราง 3NF• ตารางนี้ไม่เป็...
การทาตารางเป็น BCNF• การเปลี่ยนให้เป็น BCNF ทาได้โดยเปลี่ยน Determinant Set ที่ไม่ใช่PK มาเป็น PK แทน ส่วน Dependent Set น...
การทาตารางเป็น BCNF• ในกรณีที่ Determinant Set เป็น Attribute ที่ไม่ได้อยู่ใน PK ทั้งหมดการเปลี่ยนเป็น BCNF อาจทาให้เกิด P...
รูปแบบบรรทัดฐานที่ 4•   รูปแบบบรรทัดฐานที่ 4 = Fourth Normal Form (4NF)•   ส่วนใหญ่ไม่นิยมทากัน•   ตาราง 4NF ต้องผ่านคุณสม...
Denormalization• ข้อมูลที่ผ่าน Normalization แล้ว จะทาให้ข้อมูลซ้าซ้อนลดลง และSchema มากขึ้น• การคืนสภาพของตาราง schema ที...
Denormalization• ข้อขัดแย้งระหว่าง Time กับ Space• เป้าหมายคือประสิทธิภาพระบบโดยรวมที่ดีที่สุด
ประเภทของ Physical Storage• Physical = ทางกายภาพ, Storage = หน่วยเก็บ• Volatile   – เมื่อไฟดับ ข้อมูลภายในหายทั้งหมด• Non-...
Volatile Physical Storage Media• Cache   – หน่วยความจาที่มีความเร็วสูงสุด   – แต่ราคาแพงสุดเหมือนกัน   – จัดการโดย Hardwar...
Non-Volatile Physical Storage Media• Flash Memory   – สามารถเขียนแล้วลบใหม่ในจานวนครั้งที่จากัด   – การอ่านไว แต่เขียนและล...
Non-Volatile Physical Storage Media• CD-Rom, DVD, Blu-ray Disk   – ใช้แสงในการอ่านข้อมูล   – ความเร็วในการอ่านและเขียนต่าก...
Storage Hierarchy• Primary Storage   – รวดเร็ว แต่ Volatile   – Cache, Main Memory• Secondary Storage (On-line Storage)   ...
Storage Hierarchy
กลไกของ Magnetic HDD
กลไกของ Magnetic HDD• หัวอ่าน/เขียน   – อยู่ใกล้มาก ๆ กับผิวของจานแม่เหล็ก (เกือบจะสัมผัสกัน)   – สาหรับการอ่าน/เขียนข้อมู...
กลไกของ Magnetic HDD• Sectors   – หน่วยที่เล็กที่สุดที่สามารถอ่าน/เขียนได้   – ส่วนใหญ่มีขนาด 512 bytes   – Tracks ภายในมี...
กลไกของ Magnetic HDD• ความคงทนของ HDD  –   สมัยก่อนผิวบนจานแม่เหล็กประกอบด้วยเหล็กออกไซด์  –   แตก, พัง, สลายได้ หากได้รับ...
Disk Controller• ตัวกลางเชื่อมต่อระหว่างระบบคอมพิวเตอร์กับ HDD ส่วน Hardware   – รับคาสั่งอ่าน/เขียนจากระบบคอมพิวเตอร์   –...
Disk Controller• หากมี HDD หลายตัว ทุกตัวจะเชื่อมต่อกับ Disk Controller ทั้งหมด   – แต่หน้าที่ของ Controller ส่วนใหญ่ HDD ...
การสร้างที่เก็บไฟล์ไว้ใช้ร่วมกัน[3]• SAN (Storage Area Network)   – ระบบเครือข่ายของที่เก็บข้อมูล โดยการนาอุปกรณ์ที่เก็บข้...
ตัววัดประสิทธิภาพ HDD• เวลาเข้าถึงข้อมูล (Access Time) เกิดจาก   – เวลาแสวงหา (Seek Time) = เวลาที่ Arm ขยับหาตาแหน่ง Trac...
Block• Sector ที่อยู่ติดกันบน Track• ใช้ในการอ่าน/เขียนข้อมูลระหว่าง HDD กับ Main Memory   – ขนาดเล็ก ใช้เวลาเพื่อย้ายข้อม...
Redundant Arrays of Independent                                     Disks [4]• การนา HDD หลายตัวมาต่อกัน และมองให้เป็น HDD...
ระดับ RAID• RAID 0: Block Striping, non-redundant   – มีการแบ่งข้อมูลกันเก็บอย่างเดียว   – เหมาะกับข้อมูลที่ต้องการความเร็...
ระดับ       RAID [4]• RAID 1+0  –   ต้องการ 4 HDDs ขึ้นไป  –   นาเอาข้อดีของ RAID 0 และ RAID 1 มารวมกัน  –   ทาสาเนา HDD ก...
ระดับ       RAID [4]• RAID 3: Bit-Interleaved Parity   –   ใช้ Parity แทน ECC ในการตรวจสอบข้อผิดพลาดของข้อมูล   –   HDD จะ...
ระดับ      RAID [4]• RAID 5: Block-Interleaved Distributed Parity   –   แก้ปัญหาคอขวดของ Parity โดยให้ Parity เก็บรวมไปกับ...
ระดับ        RAID [4]• RAID 6: P+Q Redundancy  – คล้ายกับ RAID 5  – มีการสร้าง Parity Block เพิ่มอีก 1 Block  – สามารถ Hot...
การเลือกระดับ RAID• ปัจจัยหลักในการตัดสินใจ    –   ราคา    –   ประสิทธิภาพการอ่าน/เขียน    –   ประสิทธิภาพเมื่อ HDD บางตัว...
ประเภทระเบียน• ระเบียนจากัดขนาด (Fixed-Length Records)   – บอกขนาดที่แน่นอนแต่ละระเบียน และขนาดตารางได้   – อาจเกิดช่องว่า...
การจัดการระเบียน• Heap ระเบียนสามารถใส่ได้ทุกที่ที่มีพื้นที่ว่าง• Sequential เก็บระเบียนแบบเรียงลาดับโดยขึ้นกับ Search-Key...
การจัดการระเบียนแบบลาดับ• เหมาะสาหรับงานที่ต้องการประมวลผลทุกระเบียน• ระเบียนจะเรียงลาดับโดยอาศัย Search-Key
การจัดการระเบียนแบบลาดับ• การค้นหา อาศัยการเดินไปทีละระเบียน• การลบ มี ก ารอั พ เดต Pointerของระเบียนข้างเคียง และลบระเบีย...
การจัดการระเบียนแบบ Multitable Clustering• การเก็บระเบียนโดยหนึ่งไฟล์อาจประกอบด้วยข้อมูลจาก Schema อื่น
การจัดการระเบียนแบบ Multitable Clustering• ข้อดี ทาให้การ Natural Join เร็วขึ้น• ข้อเสีย การสอบถามข้อมูลใน Schema เดียวกัน...
Data Dictionary• ใช้เก็บข้อมูลของข้อมูล (metadata)   – ข้อมูลเกี่ยวกับ Schema       • ชื่อ ประเภท ความจุของ Attribute และช...
Data Dictionary
Buffer• ส่วนของ Main Memory ที่สามารถเก็บ Blocks ของข้อมูลได้   – ลดจานวนครั้งการอ่านจาก HDD โดยอ่านทีเดียวและเก็บไว้ที่นี...
Buffer Manager• ระบบย่อยในการจัดการ Buffer• ทางานเมื่อโปรแกรมต้องการข้อมูลต้องการ Blocks จาก HDD   – หากใน Buffer มี Block...
Query ProcessingParsing & Translation -> Optimization -> Evaluation
Query Processing• Parsing & Translation   – ตรวจสอบความถูกต้องของคาสั่ง SQL   – เปลี่ยนคาสั่ง SQL เป็น Relational Algebra•...
Query Optimization• การเลือกคาสั่งที่ทาให้การทางานทาได้รวดเร็วที่สุด   – บางคาสั่ง SQL สามารถเขียนได้หลายแบบ และได้ผลลัพธ์...
Query Cost• วัดจากเวลาที่ใช้ตั้งแต่สั่ง Query จนได้ Result Set กลับมา   – การเข้าถึงข้อมูลจาก HDD + เวลาประมวลผล CPU + ควา...
Selection Operation• Linear Search Algorithm การเข้าไปอ่านแต่ละ Blocks และดูว่าแต่ละระเบียนนั้นตรงตามเงื่อนไขที่กาหนดหรือไ...
การเลือกโดยใช้ดัชนี• Index Scan การค้นหาข้อมูลโดยใช้ดัชนี (Index)• Primary Index, equality on key   – เลือกระเบียนที่ตรงกั...
การเลือกโดยใช้ดัชนี• Secondary Index, equality on nonkey   – เลือกเพียงระเบียนเดียว หาก key ที่ใช้ค้นเป็น candidate key   ...
การเรียงลาดับ• การสร้าง index ของ schema และใช้ index ในการอ่าน schema โดยอ่านแบบเรียงลาดับ สามารถทาให้ใช้เพียง 1 block ใน...
Join Operation• การ Join มีหลากหลาย Algorithms   –   Nested-Loop-Join   –   Block Nested-Loop Join   –   Indexed Nested-Lo...
Nested-Loop Join• Algorithms  foreach tuple tr in r:     foreach tuple ts in s:         if pair (tr, ts) satisfy the join ...
Nested-Loop Join• กรณีแย่ที่สุด: เมื่อ buffer สามารถเก็บแต่ละ schema ได้เพียง 1 block    (nr * bs) + br block transfers + ...
Block Nested-Loop Join• วนรอบเปรียบเทียบ โดยทุก block ใน inner relation จับคู่กับทุกblock ใน outer relation  foreach block...
Block Nested-Loop Join• กรณีที่ดีที่สุดคานวณได้จาก             br + bs block transfers + 2 seeks• กรณีที่แย่ที่สุดคานวณ Co...
Transaction Concept• Transaction คือ หน่วยการทางานที่มีการเข้าถึงและเปลี่ยนแปลงข้อมูลจากข้อมูลหนึ่งเป็นอีกข้อมูลหนึ่ง   – ...
Transaction        Concept[5]1 CREATE PROCEDURE transfer_funds (from_account INT,to_account INT, amount NUMERIC(10,2))2   ...
Transaction Concept1   read(A)2   A := A – 503   write(A)4   read(B)5   B := B + 506   write(B)• สิ่งที่อาจเกิดขึ้นเมื่อทา...
Transaction Concept• จะเกิดอะไรเมื่อมีอีก Transaction ถูกทางาน และผังทางานเป็นดังนี้   1   read(A)   2   A := A – 50   3  ...
Transaction Concept• สมมติว่าเงินคุณ A คงเหลือ 100G และคุณเหลือเงิน 200G   1   read(A)        100   2   A := A – 50    50 ...
คุณสมบัติของ ACID• เนื่องจาก Transaction อาจประกอบด้วยการทางานย่อย ๆ โดยเฉพาะการอ่าน/เขียนข้อมูล เพื่อรักษาความบูรณภาพ (In...
สถานะของ Transaction• Active: สถานะเมื่อ Transaction กาลังทางาน• Partially Committed: สถานะหลังจากคาสั่งสุดท้ายใน Transact...
สถานะของ Transaction
การ Execute ร่วมกัน• Transaction หลาย ๆ ตัวสามารถรันไปพร้อมกันได้ในระบบ   – เพิ่มประสิทธิภาพการทางานของ CPU และการใช้ Disk...
ลาดับการทางาน• ลาดับการทางาน (Schedule) เป็นลาดับของงานย่อยที่จะ executeโดยเรียงตามเวลาที่ถูก execute   – ลาดับการทางานของ...
ลาดับการทางาน       • สมมติ ใ ห้ ฐ านข้ อ มู ล หนึ่ ง มี 2       Transactions ที่ต้องการ Execute       โดย T1 แทนการโอนเงิ...
ลาดับการทางาน• ล าดั บ การท างานแบบต่ อ เนื่ อ งโดยให้ T2 ทางานก่อนตามด้วย T1• มีสิ่งใดแตกต่างไปจากลาดับการทางานที่แล้วหรื...
ลาดับการทางาน       • ลาดับการทางานแบบไม่ต่อเนื่อง       แ ต่ ก า ร จั ด ล า ดั บ ก า ร ท า ง า น นี้       เหมือนกับตาราง...
ลาดับการทางาน       • ตารางลาดับการทางานนี้ เมื่อทั้ง       2 Transactions ถูก Committed       แล้ว ถ้านา A + B แล้วค่าที่...
Serializability• Serializability เป็นลาดับการทางานแบบ Concurrent     ที่ให้ผลเหมือนกับ Serial Schedule   – เราอยากได้ทั้งค...
Conflict Serializability• การ Conflict ของงานย่อย เกิดจากงานย่อยของ 2 Transaction ขึ้นไปมีการใช้งานการอ่าน/เขียนใน Data It...
Conflict Serializability• Conflict Serializable คือ ชื่อเรียกของลาดับการทางานแบบConcurrent ที่มี Conflict Equivalent กับ S...
Conflict Serializability• ตารางซ้ายมือนี้เป็น Conflict Serializable หรือไม่   – สามารถสลับจนเป็น Serial Schedule ของ <T1, ...
Conflict Serializability• ลาดับการทางานนี้เป็น Conflict Serializable หรือไม่• ลาดับการทางานนี้ไม่เป็น Conflict Serializabl...
View Serializability• การ View Equivalent ของลาดับการทางาน เกิดจาก 2 ลาดับการทางานที่มี Transactions เดียวกัน และมีคุณสมบั...
View Serializability• View Serializable คือ ชื่อเรียกของลาดับการทางานแบบ concurrentที่ View Equivalent กับ Serial Schedule...
View Serializability• ตารางนี้เป็น View Serializable และ Conflict Serializable หรือไม่• ตารางนี้เป็น View Serializable แต่...
View Serializability         • ตารางนี้เป็น View Serializable         และ Conflict Serializable หรือไม่
Cascading Rollbacks• เหตุการณ์ที่มี Transaction หนึ่งเข้าสู่สถานะ Abort และทาให้Transaction อื่น ที่กาลังทางานอยู่บางส่วน ...
Cascading Rollbacks• จากลาดับการทางานนี้ T10, T11, T12 จะถูกยกเลิกการทางาน• ปัญหานี้สามารถแก้ได้ด้วย Cascadeless Schedule ...
การทดสอบ Conflict                        Serializable [6]• การทดสอบ Serializability ของลาดับการทางาน สามารถทดสอบด้วยการวาด...
การทดสอบ Conflict Serializable• กราฟนี้ไม่เป็น Conflict Serializable
การทดสอบ Conflict Serializable• กราฟนี้เป็น Conflict Serializable หรือไม่
Concurrency Control• กลไกที่ช่วยให้ลาดับการทางานที่เกิดขึ้นมีคุณสมบัติ   –   Conflict Serializable หรือ View Serializable ...
Lock-Base Protocol• การ Lock เป็นกลไกในการควบคุมการเข้าถึง data items พร้อม ๆ กัน   – ล็อกข้อมูลที่กาลังอ่าน/เขียน ไม่ให้ ...
Lock-Base Protocol• ตารางความเข้ากันได้ของประเภทการ lock   – Transaction จะสามารถล็อก data items ได้ ถ้าประเภทการ lock ที่...
ข้อผิดพลาดของ Lock-Base Protocol• การ lock ที่สั้นเกินไป อาจทาให้ Serializability หายไปได้• การ lock ที่ยาวเกินไป ก็ทาให้เ...
ข้อผิดพลาดของ Lock-Base Protocol• จากตารางที่แล้วพบว่า T3 และ T4 ไม่สามารถทางานต่อไปได้   – T4 รอการปลด X-lock ของ T3 และ ...
Deadlockhttp://www.gosw.kr/wp-content/uploads/2010/08/deadlock.jpg
Deadlock Handling• สภาวะ Deadlock เกิดจาก transaction หนึ่งใน transaction set มีการรอ transaction หนึ่งที่อยู่ในเซตเดียวกั...
Starvation   (1)
Starvation   (2)
Two-Phase Locking Protocol• Protocol ชนิด Two-Phase Locking จะมีการ lock เป็น 2 ช่วง   – Growing Phase ช่วงที่สามารถ lock ...
Locking Conversions• Locking Conversions เป็นส่วนเพิ่มเติมของ Two-Phase LockingProtocol• มี 2 ช่วงเช่นเดียวกับ Two-Phase L...
Automatic Acquisition of Locks• Read data item algorithm  if Ti has a lock on D:     read(D)  else:     if necessary wait ...
Automatic Acquisition of Locks• Write data item algorithm  if Ti has a lock-X on D:     write(D)  else:     if necessary w...
Implementation of Locking• การล็อกจะทาผ่าน Lock Manager   – Process ถูกแยกจาก DB อย่างชัดเจน• Lock Manager มีหน้าที่คอยตอบ...
Tree-Protocol• Graph-Based Protocol เป็นอีกหนึ่งวิธีนอกจาก Two-Phase LockingProtocol   – อาจเรียกอีกชื่อว่า Tree-Protocol•...
Tree-Protocol• ใน transaction ใด ๆ การล็อกครั้งแรกสามารถล็อกได้ทุก node อย่างอิสระ• การล็ อ กครั้ ง ที่ ส องนั้ น จ าเป็ น...
Tree-Protocol• Graph-Based Protocol ทาให้ลาดับการทางานเป็น conflictserializable และไม่เกิด deadlock• Graph-Based Protocol ...
Multiple Granularity• Granular = เป็นเม็ดเล็ก ๆ• สามารถเขียน data items เป็น node ต่าง ๆ โดยข้อมูลที่ใหญ่กว่าจะเป็น parent...
Multiple Granularity
Multiple Granularity• ใน Multiple Granularity มีวิธีการล็อกเพิ่มอีก 3 แบบ   – Intention-Shared (IS) การล็อกเพื่อบ่งบอกว่า ...
Multiple Granularity• Intention Lock Compatibility Matrix
Timestamp-Based Protocols• เมื่อระบบเริ่มทางาน แต่ละ transaction จะได้รับ timestamp• transaction ที่ใหม่กว่า จะมีค่าใน tim...
Timestamp-Based Protocols• สมมติให้ transaction i กาลังทาคาสั่งย่อย read(Q)• หาก TS(i) น้อยกว่า W-Timestamp(Q) จะถือว่า i ...
Timestamp-Based Protocols• สมมติให้ transaction i กาลังทาคาสั่งย่อย write(Q)• หาก TS(i) น้อยกว่า R-Timestamp(Q) จะถือว่า i...
Timestamp-Based Protocols• กาหนดให้ transaction ในลาดับการทางานนี้มี timestamp เป็น 1, 2,3, 4, 5• เกิดอะไรขึ้นกับตารางนี้บ...
Timestamp-Based Protocols• นอกจาก Timestamp-Based Protocols จะไม่มีปัญหาเรื่อง ConflictSerializable แล้ว ยังไม่มีปัญหา Dea...
Recovery System• ความผิดพลาดของ transaction เกิดขึ้นได้ 2 แบบ   – Logical Error เกิดจากคาสั่งย่อยใน transaction หรือความผิ...
Storage Structure• Volatile Storage   – เมื่อระบบเสียหาย ข้อมูลจะหายทันที   – Main Memory, Cache Memory• Non-Volatile Stor...
Stable-Storage Implementation• Mirroring กับดิสก์ที่แตกต่างกัน   – การทากับ Remote ดิสก์สามารถป้องกันข้อมูลหายเมื่อเกิดภัย...
Data Access• Physical Blocks: Blocks ที่อยู่บนจานแม่เหล็ก• Buffer Blocks: Blocks ที่เก็บชั่วคราวอยู่บน main memory• การย้า...
Database Review for Final Exam
Database Review for Final Exam
Database Review for Final Exam
Database Review for Final Exam
Database Review for Final Exam
Database Review for Final Exam
Database Review for Final Exam
Database Review for Final Exam
Database Review for Final Exam
Database Review for Final Exam
Database Review for Final Exam
Database Review for Final Exam
Database Review for Final Exam
Database Review for Final Exam
Database Review for Final Exam
Upcoming SlideShare
Loading in …5
×

Database Review for Final Exam

5,167 views

Published on

Published in: Education

Database Review for Final Exam

  1. 1. สไลด์ต้นแบบสามารถดาวน์โหลดได้ที่http://codex.cs.yale.edu/avi/db-book/db6/slide-dir/
  2. 2. การขึ้นต่อกันของข้อมูล• Data Dependency = การขึ้นต่อกันของข้อมูล• เกิดจาก Attribute หนึ่งมีความสัมพันธ์กับอีก Attribute หนึ่ง• แบ่งออกเป็น 3 ประเภท – Functional Dependency – Multivalued Dependency – Join Dependency• ในคอร์สนี้จะศึกษาเพียง Functional Dependency เท่านั้น
  3. 3. ฟังก์ชันการขึ้นต่อกัน• Functional Dependency (FD) = ฟังก์ชันการขึ้นต่อกัน• FD จะเกิดขึ้นเมื่อมีค่าของ Attribute หนึ่งสอดคล้องกับอีกAttribute หนึ่งเพียงหนึ่งค่า – นิยาม เมื่อ R เป็น Relation และให้ A, B เป็นส่วนหนึ่งของ Attribute ที่อยู่ใน R ถ้าหากค่า A นั้นสอดคล้องกับค่า B เพียงหนึ่งค่า จะกล่าวได้ว่า “B นั้นขึ้นต่อ A” หรือ “A เป็นตัวกาหนด B” หรือ A -> B – เราจะเรียก A ว่าตัวกาหนด (Determinant) และ B ว่าตัวถูกระบุค่า (Dependent)• Functional Dependency มีผลต่อการเลือก PK และการทา NF
  4. 4. ลักษณะของฟังก์ชันการขึ้นต่อกัน• Trivial Functional Dependency – ความสัมพันธ์ระหว่าง Determinant Set กับ Determinant Subset – ไม่รู้ความหมายอะไรในตาราง ก็สามารถบอก Dependent ได้ – ไม่ค่อยสาคัญเท่าไร• Nontrivial Functional Dependency – ความสัมพันธ์ระหว่าง Determinant Attribute Set กับ Attribute อื่น – ต้องเข้าใจความหมาย ความสัมพันธ์ เงื่อนไขของ Attribute ในตาราง ถึง จะบอก Dependent ได้
  5. 5. Trivial Functional Dependency id char_name hair_id skin_color level class_namethep444 Adolescence 2 f0e7c8 34 Archerthep444 AcetoOrceiN 17 f0e7c8 68 Knightmadoka555 QBayDesu 15 ffffff 57 Magician• ในตารางนี้มี Trivial Functional Dependency เท่าไร
  6. 6. Nontrivial Functional Dependency id char_name hair_id skin_color level class_namethep444 Adolescence 2 f0e7c8 34 Archerthep444 AcetoOrceiN 17 f0e7c8 68 Knightmadoka555 QBayDesu 15 ffffff 57 Magician• ในตารางนี้มี Nontrivial Functional Dependency – {char_name}  {id, hair_id, skin_color, level, class_name}
  7. 7. Nontrivial Functional Dependency• ในตารางนี้มี Nontrivial Functional Dependency อะไรบ้าง?
  8. 8. Nontrivial Functional Dependencyรหัสพนักงาน ชื่อพนักงาน รหัสแผนก วันที่ทางาน เวลาเข้างาน เวลาออกงาน 226 Keiseiie Hara FKnL 2100/6/28 7:45 18:10 227 Kawada I. Inoue LL 2100/6/30 8:01 19:24 226 Keiseiie Hara FKnL 2100/6/30 6:19 17:16 228 Moriyama Aiko HR 2100/7/1 8:59 16:44 229 Keiseiie Kune CP 2100/7/1 7:33 20:54 229 Keiseiie Kune CP 2100/7/3 7:42 19:17 • ในตารางนี้มี Nontrivial Functional Dependency อะไรบ้าง?
  9. 9. รูปแบบของฟังก์ชันการขึ้นต่อกัน• Full Functional Dependency – เกิดจากทุก Attribute ใน Determinant Set กาหนดค่า Attribute ทั้งหมด – ถ้า Determinant Set D สามารถกาหนดทุกค่าใน Attribute แล้ว D จะเป็น Primary Key• Partial Dependency – เกิดจาก Dependent Set ขึ้นกับบางส่วนของ Attribute ที่เป็น PK• Transitive Dependency – เกิดจาก Dependent Set ขึ้นกับบางส่วนของ Attribute ที่ไม่เป็น PK
  10. 10. Full Functional Dependencyรหัสพนักงาน ชื่อพนักงาน รหัสแผนก ตาแหน่งงาน เงินเดือน 226 Keiseiie Hara FKnL L Hand General Knight 14800 227 Kawada I. Inoue LL Linguistics Lecturer 13900 228 Moriyama Aiko HR Salary Manager 10430 229 Keiseiie Kune CP Computer Programmer 12040 230 Tadachizu Yoichi FKnL L Hand Security Guard 9400 231 Meira Meiji P Super General Priest 9000• {รหัสพนักงาน} --> {ชื่อพนักงาน, รหัสแผนก, ตาแหน่งงาน, เงินเดือน}
  11. 11. Partial Functional Dependency id project_id staff_name project_name Advisor_id dept_id104450 1 Thunder Storm 1.. 2… 3… Go! 21004 O01104450 2 Thunder Storm True Love Camp 32850 H32104451 1 Bipinnaria Larva 1.. 2… 3… Go! 21004 O01• {id}  {staff_name}• {project_id}  {project_name, advisor_id, dept_id}
  12. 12. Transitive Functional Dependency proj_name staff_id job_class job_id เงินเดือนAbBeaw Project 120 Presenter 20540 6100AbBeaw Project 145 Presenter 20540 6100Makenai Camp 228 First Aid Manager 31001 8020Makenai Camp 130 Director 90001 15400Makenai Camp 144 Presenter 20540 7800Makenai Camp 210 Entertainer 90100 8020 • {job_id}  {job_class} • {job_class}  {job_id}
  13. 13. การนาเสนอฟังก์ชันที่ขึ้นต่อกัน• เราสามารถเขียน Functional Dependency ได้ 2 รูปแบบ – เขียนเป็น Diagram – เขียนเป็นเซต• ขึ้นกับความถนัดของบุคคลนั้น ๆ {EMP_NUM}  {EMP_NAME, JOB_CLASS}
  14. 14. Normalization• Normalization = การทาบรรทัดฐาน, การทาให้เป็นมาตรฐาน• กระบวนการหนึ่งที่มีอยู่ในการออกแบบฐานข้อมูล – การแก้ไขตารางข้อมูลให้มีการซ้าซ้อนของข้อมูลน้อยลง – นิยมทาไปพร้อมกันกับการออกแบบ ER Diagram• Normalization จะทาตามลาดับไปเรื่อย ๆ – แต่ละระดับเรียกว่า Normal form – Normal Form (NF) = รูปแบบบรรทัดฐาน
  15. 15. Normal Form• ข้อกาหนดในการแก้ไขตารางภายในฐานข้อมูล• รูปแบบที่มีตัวเลขมาก ข้อกาหนดยิ่งมากขึ้น แต่ฐานข้อมูลที่ได้ยิ่งดีขึ้น – รูปแบบบรรทัดฐานที่ 1 (1NF) จะดีกว่ารูปแบบบรรทัดฐานที่ 0 (0NF) – รูปแบบบรรทัดฐานที่ 2 (2NF) จะดีกว่ารูปแบบบรรทัดฐานที่ 1 – ...• ในปัจจุบันรูปแบบบรรทัดฐานหลักมีทั้งหมด 9 รูปแบบ[1] – 1NF, 2NF, 3NF, EKNF, BCNF, 4NF, 5NF, DKNF, 6NF• ส่วนใหญ่นิยมแก้ไขถึงรูปแบบบรรทัดฐานที่ 3 (3NF)
  16. 16. ข้อเสียของตารางที่ไม่ทา Normal Form• ปัญหาการเพิ่มข้อมูล (Insertion Anomalies) – การเพิ่มข้อมูลที่มีข้อมูลไม่ครบตาม Schema – อาจใส่ค่า null แต่ null เป็นค่าที่เราไม่อยากได้• ปัญหาการแก้ไขข้อมูล (Update Anomalies) – การแก้ไขข้อมูลที่มีความซ้าซ้อนกันในตาราง – ไล่แก้ไปเรื่อย ๆ• ปัญหาการลบข้อมูล (Deletion Anomalies) – ข้อมูลใน Attribute นั้นไม่อยากลบ แต่ข้อมูลนั้นอยู่ที่ Tuple ที่อยากลบ
  17. 17. Insertion Anomalies id char_name hair_id skin_color level class_namethep444 Adolescence 2 f0e7c8 34 Archer0816581025 Sensation 10 eed99b 11 Novicemadoka555 QBayDesu 15 ffffff 57 Magiciandarni_maria FuxkYeah-_-!! 14 ffffee 7 Archerkodman_cs นู๋IปJIทย 7 f0e7c8 13 Novice id thunderstrom
  18. 18. Update Anomalies id char_name hair_id skin_color level class_namethep444 Adolescence 2 f0e7c8 34 Archer0816581025 Sensation 10 eed99b 11 Archermadoka555 QBayDesu 15 ffffff 57 Magiciandarni_maria FuxkYeah-_-!! 14 ffffee 7 Archerkodman_cs นู๋IปJIทย 7 f0e7c8 13 Archr0876551000 n๐IIหล 1 343232 1 Novice
  19. 19. Deletion Anomalies id char_name hair_id skin_color level class_namethep444 Adolescence 2 f0e7c8 34 Archer0816581025 Sensation 10 eed99b 11 Archermadoka555 QBayDesu 15 ffffff 57 Magiciandarni_maria FuxkYeah-_-!! 14 ffffee 7 Archerkodman_cs นู๋IปJIทย 7 f0e7c8 13 Archr0876551000 n๐IIหล 1 343232 1 Novice
  20. 20. รูปแบบบรรทัดฐานที่ 1• รูปแบบบรรทัดฐานที่ 1 = First Normal Form (1NF)• ตารางในข้อกาหนด 1NF ต้องมี Attribute ใด ๆ อยู่ภายใน Attribute – ถ้ามี Attribute ซ้อนอยู่ จะเอา Composite Attribute ออก• ข้อมูลแบบ Multivalue ต้องแยกเป็นแต่ละแถว• ทุก ๆ Attribute ต้องขึ้นกับ Primary Key• Schema ที่แปลงจาก ER Diagram จะเป็น 1NF ในทันที
  21. 21. การทาตารางเป็น 1NFServ Server Board Charac Character Character Info ID ID Name Name ter ID Name LV Class Name Job Name 0 Mochi 1 Adolescence 34 Archer thep44 Nopakun~* Fighter 1 Adolescence 41 Scout Takoyaki thanyapol thanyapol 15 NeoS Backpacker Mechanic 1 99 78 parazettamon Bard Takoyaki kunemata kunemata Spell User 150 Sufflez 76 Sage 0 Mochi 104 Harasama 64 Dark Stalker Fighter olfactory harasama 119 Reizinixc 99 Bounty Hunter 1 Takoyaki 183 ReizinixcII 36 Backpacker Tatarabe
  22. 22. การทาตารางเป็น 1NF • Attribute ใดที่ซ้อนกับ Attribute ให้เอา Composite Attribute ออกServ Server Board Charac Character Character Info ID ID Name Name ter ID Name LV Class Name Job NameServ Server Board Charac Character ID LV Class Name Job Name ID Name Name ter ID Name
  23. 23. การทาตารางเป็น 1NF • ข้อมูลแบบ Multivalue ต้องแยกเป็นแต่ละแถวServ Server Board Charac Character ID LV Class Name Job Name ID Name Name ter ID Name 0 Mochi thep44 Nopakun~* 1 Adolescence 34 Fighter Archer 1 Takoyaki thep44 Nopakun~* 1 Adolescence 41 Fighter Scout 1 Takoyaki thanyapol thanyapol 15 NeoS 99 Backpacker Mechanic 1 Takoyaki kunemata kunemata 78 parazettamon 99 Spell User Bard 1 Takoyaki kunemata kunemata 150 Sufflez 76 Spell User Sage 0 Mochi olfactory harasama 104 Harasama 64 Fighter Dark Stalker 1 Takoyaki olfactory harasama 119 Reizinixc 99 Fighter Bounty Hunter 1 Takoyaki olfactory harasama 183 ReizinixcII 36 Backpacker Tatarabe
  24. 24. การทาตารางเป็น 1NF • ทุก Attribute ต้องขึ้นกับ Primary KeyServ Server Board Charac Character ID LV Class Name Job Name ID Name Name ter ID Name 0 Mochi thep44 Nopakun~* 1 Adolescence 34 Fighter Archer 1 Takoyaki thep44 Nopakun~* 1 Adolescence 41 Fighter Scout 1 Takoyaki thanyapol thanyapol 15 NeoS 99 Backpacker Mechanic 1 Takoyaki kunemata kunemata 78 parazettamon 99 Spell User Bard 1 Takoyaki kunemata kunemata 150 Sufflez 76 Spell User Sage 0 Mochi olfactory harasama 104 Harasama 64 Fighter Dark Stalker 1 Takoyaki olfactory harasama 119 Reizinixc 99 Fighter Bounty Hunter 1 Takoyaki olfactory harasama 183 ReizinixcII 36 Backpacker Tatarabe
  25. 25. รูปแบบบรรทัดฐานที่ 2• รูปแบบบรรทัดฐานที่ 2 = Second Normal Form (2NF)• มีหลายเหตุผลที่ต้องทาตารางให้เป็น 2NF – ปัญหาความซ้าซ้อนของข้อมูล• ตาราง 2NF ต้องผ่านคุณสมบัติทั้งหมดของ 1NF มาก่อน• 2NF จะไม่มี Dependent Set ใด ๆ ขึ้นกับบางส่วนของ Primary Key – ไม่มี Partial Dependency
  26. 26. การทาตารางเป็น 2NF • พิจารณา Partial Dependency ของตารางServ Server Board Charac Character ID LV Class Name Job Name ID Name Name ter ID Name {Serv ID, Character ID}  {Server Name, ID, Board Name, Character Name, LV, Class Name, Job Name} {Serv ID}  {Server Name}
  27. 27. การทาตารางเป็น 2NF• แยกตาราง โดยย้าย Dependent Set ให้ไปอยู่ที่ตารางใหม่ และให้ตารางใหม่มี PK คือ Determinant Set• ตั้งชื่อ Schema ใหม่ที่แยกออกมา Serv Server ตารางรายชื่อเซิร์ฟเวอร์ ID Name ตารางลักษณะตัวละคร Serv Board Character Character ID LV Class Name Job Name ID Name ID Name
  28. 28. รูปแบบบรรทัดฐานที่ 3• รูปแบบบรรทัดฐานที่ 3 = Third Normal Form (3NF)• ในบางครั้ง การทาตาราง 2NF ยังไม่พอ – ปัญหาความซ้าซ้อนของข้อมูลอีกแล้ว• ตาราง 3NF ต้องผ่านคุณสมบัติทั้งหมดของ 2NF มาก่อน• 3NF จะไม่มี Dependent Set ใด ๆ ขึ้นกับ Attribute ใด ๆ ที่ไม่เป็นPrimary Key – ไม่มี Transitive Dependency
  29. 29. การทาตารางเป็น 3NF• พิจารณา Transitive Dependency ของตาราง• อย่าลืมพิจารณาตารางที่ถูกแยกจาก 2NF ด้วย Serv Server ตารางรายชื่อเซิร์ฟเวอร์ ID Name ตารางลักษณะตัวละคร Serv Board Character Character ID LV Class Name Job Name ID Name ID Name{ID}  {Board Name}{Job Name}  {Class Name}
  30. 30. ECO Job System[2] 1st Class 2nd Class 3rd Class 1st Class 2nd Class 3rd Class 1st Class 2nd Class 3rd Class Blademaster Sorcerer BlacksmithSwordman Gladiator Wizard Force Master Tatarabe Maestro Bounty Hunter Sage Machinery Knight Elementer AlchemistFencer Guardian Shaman Astralist Farmer Harvest Dark Stalker Enchanter Marionette Assasin Druid ExplorerScout Eraser Vates Cardinal Ranger Strider Commando Bard Treasure Hunter Striker Cabalist TraderArcher Hawker Warlock Soultaker Merchant Royal Dealer Gunner Warlock Gambler Fighter Class Spell User Class Backpacker Class
  31. 31. การทาตารางเป็น 3NF• แยกตาราง โดยย้าย Dependent Set ให้ไปอยู่ที่ตารางใหม่ และให้ตารางใหม่มี PK คือ Determinant Set• ตั้งชื่อ Schema ใหม่ที่แยกออกมา ตารางลักษณะตัวละคร Serv Character Character ID LV Job Name ID ID Nameตารางรายชื่อเซิร์ฟเวอร์ ตารางชื่อในเว็บบอร์ด ตารางคลาสอาชีพ Serv ID Server Name ID Board Name Job Name Class Name
  32. 32. รูปแบบบรรทัดฐานบอยซ์คอดด์• ในเชิงธุรกิจ การทาตารางถึง 3NF นั้นเพียงพอแล้ว แต่บางครั้งก็ยังไม่พอ• การพิจารณา BCNF ไม่ต้องพิจารณา 1NF, 2NF, 3NF ก็ได้• ลักษณะของ Relation ที่สามารถนามาพิจารณา BCNF – มี Candidate Key ตั้งแต่ 2 ตัวขึ้นไป – Primary Key เป็น Composite Key – Candidate Key บางตัวมีการใช้ Attribute เดียวกันเป็นส่วนหนึ่งของ Candidate Key• BCNF จะไม่มี Attribute บางส่วนที่เป็น PK ขึ้นกับบาง Attribute ที่ไม่เป็น PK
  33. 33. การทาตารางเป็น BCNF• ผู้ พั ฒ นาระบบคนหนึ่ ง อยากให้ พิ จ ารณาว่ า ตารางการสอนของมหาวิทยาลัย S นั้นอยู่ใน BCNF หรือไม่ Teacher Name Semester Year Course ID sec Capacity Mera Meiji 1 2001 02358230 1 300 Mera Meiji 2 2001 02358230 2 300 Keiseiie Kune 1 2001 02358101 1 300 Edogawa Asaki 1 2002 01411103 1 40 Inoue Shuichi 1 2002 01411103 2 40 Keiseiie Hara 2 2002 01999610 1 30 Inoue Fumiko 2 2002 01420101 1 300
  34. 34. การทาตารางเป็น BCNF• ภายในตารางไม่พบ Transitive Dependency, Partial Dependencyดังนั้นตารางนี้เป็นตาราง 3NF• ตารางนี้ไม่เป็น BCNF เพราะ {Semester, Year, Course ID, sec} เป็นตัวกาหนดให้กับ {Teacher Name} Teacher Name Semester Year Course ID sec Capacity
  35. 35. การทาตารางเป็น BCNF• การเปลี่ยนให้เป็น BCNF ทาได้โดยเปลี่ยน Determinant Set ที่ไม่ใช่PK มาเป็น PK แทน ส่วน Dependent Set นั้นเปลี่ยนเป็น Attributeธรรมดา Teacher Name Semester Year Course ID sec Capacity Teacher Name Semester Year Course ID sec Capacity
  36. 36. การทาตารางเป็น BCNF• ในกรณีที่ Determinant Set เป็น Attribute ที่ไม่ได้อยู่ใน PK ทั้งหมดการเปลี่ยนเป็น BCNF อาจทาให้เกิด Partial Dependency ได้ A B C D E C B D A E B C A B C D E
  37. 37. รูปแบบบรรทัดฐานที่ 4• รูปแบบบรรทัดฐานที่ 4 = Fourth Normal Form (4NF)• ส่วนใหญ่ไม่นิยมทากัน• ตาราง 4NF ต้องผ่านคุณสมบัติทั้งหมดของ BCNF มาก่อน• คอร์สนี้ไม่มีเรื่อง 4NF
  38. 38. Denormalization• ข้อมูลที่ผ่าน Normalization แล้ว จะทาให้ข้อมูลซ้าซ้อนลดลง และSchema มากขึ้น• การคืนสภาพของตาราง schema ที่ Normalized แล้ว จะใช้วิธีNatural Join – ยิ่ง schema มาก record ที่ใช้ในการ Natural Join จะยิ่งมากขึ้นเรื่อย ๆ• Denormalization ช่วยเพิ่มความเร็วในการ query ยิ่งขึ้น• การตัดสินใจ Denormalization ขึ้นกับจุดประสงค์ที่ใช้งานตาราง
  39. 39. Denormalization• ข้อขัดแย้งระหว่าง Time กับ Space• เป้าหมายคือประสิทธิภาพระบบโดยรวมที่ดีที่สุด
  40. 40. ประเภทของ Physical Storage• Physical = ทางกายภาพ, Storage = หน่วยเก็บ• Volatile – เมื่อไฟดับ ข้อมูลภายในหายทั้งหมด• Non-Volatile – เมื่อไฟดับ ข้อมูลที่เก็บไว้ภายในยังอยู่คงเดิม – เหมาะสาหรับการสารองข้อมูล, ทา Backup
  41. 41. Volatile Physical Storage Media• Cache – หน่วยความจาที่มีความเร็วสูงสุด – แต่ราคาแพงสุดเหมือนกัน – จัดการโดย Hardware ของ Computer• Main Memory – เวลาในการเข้าถึงช้ากว่า Cache แต่ยังถือว่าเร็วมาก (ระดับนาโนวินาที) – ปัจจุบันราคาเริ่มถูกลงและความจุมากขึ้นเรื่อย ๆ• เมื่อไฟดับ ข้อมูลใน Cache และ Main Memory จะหายทั้งหมด
  42. 42. Non-Volatile Physical Storage Media• Flash Memory – สามารถเขียนแล้วลบใหม่ในจานวนครั้งที่จากัด – การอ่านไว แต่เขียนและลบช้า โดยเฉพาะการลบ – นิยมใช้ในกล้องดิจิทัล, USB Drive, โทรศัพท์• Magnetic Disk – ข้อมูลถูกเก็บในจานหมุน ใช้อานาจแม่เหล็กในการอ่าน/เขียน – ใช้สาหรับเก็บ DB ทั้งหมด – สามารถเข้าถึงข้อมูลได้โดยตรง – มีความจุข้อมูลมาก และมากขึ้นไปอีกในอนาคต
  43. 43. Non-Volatile Physical Storage Media• CD-Rom, DVD, Blu-ray Disk – ใช้แสงในการอ่านข้อมูล – ความเร็วในการอ่านและเขียนต่ากว่า Magnetic Disk• Tape Storage – สมัยก่อนนิยมใช้กับการ Backup ข้อมูล – สามารถเข้าถึงข้อมูลแบบลาดับ – มีความจุข้อมูลมาก – เทปสามารถดึงออกจาก Drive ได้ – เทปราคาถูก แต่ Drive ราคาแพง
  44. 44. Storage Hierarchy• Primary Storage – รวดเร็ว แต่ Volatile – Cache, Main Memory• Secondary Storage (On-line Storage) – เร็วในโดยรวม และ Non-Volatile – Flash Memory, Magnetic Disk• Tertiary Storage (Off-line Storage) – เวลาในการเข้าถึงช้า Non-Volatile – Magnetic Tape, Optical Disk
  45. 45. Storage Hierarchy
  46. 46. กลไกของ Magnetic HDD
  47. 47. กลไกของ Magnetic HDD• หัวอ่าน/เขียน – อยู่ใกล้มาก ๆ กับผิวของจานแม่เหล็ก (เกือบจะสัมผัสกัน) – สาหรับการอ่าน/เขียนข้อมูลในรูปแม่เหล็ก – 1 หัวต่อ 1 จานแม่เหล็ก• Tracks – ส่วนที่แบ่งจานแม่เหล็กออกเป็นส่วน ๆ – Tracks แบ่งเป็นวงกลมย่อย ๆ ตามวงของจานแม่เหล็ก – 1 Tracks ใช้ได้ทั้งด้านบนและล่าง – HDD 1 จาน มี Track 50K ~ 100K
  48. 48. กลไกของ Magnetic HDD• Sectors – หน่วยที่เล็กที่สุดที่สามารถอ่าน/เขียนได้ – ส่วนใหญ่มีขนาด 512 bytes – Tracks ภายในมี Sector ประมาณ 0.5 ~ 1K ภายนอกมีประมาณ 2 เท่า• วิธีการอ่าน/เขียน Sector – แขนจะขยับไปยังตาแหน่ง Track ที่ถูกต้อง ขณะที่จานแม่เหล็กหมุนไปเรื่อย ๆ – ข้อมูลถูกอ่าน/เขียนผ่าน Sector ที่อยู่ใต้หัวอ่าน/เขียน – สาเหตุที่ทาให้การเข้าถึงข้อมูลช้า
  49. 49. กลไกของ Magnetic HDD• ความคงทนของ HDD – สมัยก่อนผิวบนจานแม่เหล็กประกอบด้วยเหล็กออกไซด์ – แตก, พัง, สลายได้ หากได้รับการกระเทือน – HDD ปัจจุบันนี้มีความไวต่อการกระทบกระเทือนน้อยลง – ส่วนใหญ่เสียเพราะ Bad Sector, Sector พัง
  50. 50. Disk Controller• ตัวกลางเชื่อมต่อระหว่างระบบคอมพิวเตอร์กับ HDD ส่วน Hardware – รับคาสั่งอ่าน/เขียนจากระบบคอมพิวเตอร์ – ควบคุมให้แขนขยับไปยัง Track ที่ต้องการและอ่าน/เขียนข้อมูล – คานวณและใส่ Checksum ลงไปในแต่ละ Sector เพื่อความถูกต้องเมื่ออ่าน ข้อมูลกลับ – มีการอ่านข้อมูลที่เขียนไปแล้วเพื่อตรวจสอบความถูกต้องอีกครั้ง • สาเหตุที่ทาให้การอ่าน/เขียนช้า – Remapping of Bad Sector• หากมี HDD หลายตัว ทุกตัวจะเชื่อมต่อกับ Disk Controller ทั้งหมด
  51. 51. Disk Controller• หากมี HDD หลายตัว ทุกตัวจะเชื่อมต่อกับ Disk Controller ทั้งหมด – แต่หน้าที่ของ Controller ส่วนใหญ่ HDD จะจัดการของตนเอง • ลดภาระให้กับ Controller• มาตรฐานตัวกลางในการเชื่อมต่อ – ATA (AT Adaptor) – SATA (Serial ATA) – SCSI (Small Computer System Interconnect) – SAS (Serial Attached SCSI)• ปัจจุบันนิยมใช้ SATA
  52. 52. การสร้างที่เก็บไฟล์ไว้ใช้ร่วมกัน[3]• SAN (Storage Area Network) – ระบบเครือข่ายของที่เก็บข้อมูล โดยการนาอุปกรณ์ที่เก็บข้อมูลมาต่อกันเป็น เครือข่าย – สามารถดึงข้อมูล และเก็บข้อมูลปริมาณมากได้ในเวลาสั้น ๆ – มีความยืดหยุ่นสูง สามารถปรับระบบให้ทางานตามการใช้งานได้• NAS (Network Attached Storage) – ระบบไฟล์เซิร์ฟเวอร์ที่เข้าถึงทาง TCP/IP – ดูแลรักษาง่าย สามารถจัดการผ่าน GUI บน Web Browser ได้ – ไม่เหมาะกับข้อมูลที่มีขนาดใหญ่
  53. 53. ตัววัดประสิทธิภาพ HDD• เวลาเข้าถึงข้อมูล (Access Time) เกิดจาก – เวลาแสวงหา (Seek Time) = เวลาที่ Arm ขยับหาตาแหน่ง Track ที่ถูกต้อง – เวลาที่จานหมุนหมุน Sector ให้ไปอยู่ที่หัวอ่าน/เขียน – ใช้เวลารวมประมาณ 0.022 วินาที• อัตราการย้ายข้อมูล (Data-Transfer Rate) – ในกรณีที่มี HDD มาก ๆ Controller มีผลกับอัตรานี้• เวลาใช้งานโดยเฉลี่ย (Mean Time to Failure (MTTF)) – เวลาเฉลี่ยที่ HDD สามารถทางานได้โดยไม่เสีย – HDD ส่วนใหญ่จะมี MTTF 3 ~ 5 ปี
  54. 54. Block• Sector ที่อยู่ติดกันบน Track• ใช้ในการอ่าน/เขียนข้อมูลระหว่าง HDD กับ Main Memory – ขนาดเล็ก ใช้เวลาเพื่อย้ายข้อมูลมาก – ขนาดใหญ่ เกิดพื้นที่เหลือในกรณีข้อมูลมีความจุน้อยกว่า Block• ข้อมูลเดียวกัน ไม่จาเป็นต้องอยู่ Blocks ติดกัน – ถ้าไม่มีข้อมูลอื่นคั่น ข้อมูลเดียวกันจะเขียน Blocks ติดกันเรื่อย ๆ – ถ้ามีข้อมูลอื่นคั่น ข้อมูลเดียวกันอาจอยู่กระจัดกระจาย • มีผลต่อประสิทธิภาพ HDD – แก้ได้โดยการ Defragment ซึ่งไม่ค่อยมีใครชอบทากัน
  55. 55. Redundant Arrays of Independent Disks [4]• การนา HDD หลายตัวมาต่อกัน และมองให้เป็น HDD ตัวเดียว• RAID ทาให้ประสิทธิภาพการเก็บข้อมูลดีขึ้น – ความจุมากขึ้น RAID นั้นประกอบด้วย HDD หลายตัว – ความเร็วมากขึ้น ข้อมูลเดียวกัน แบ่งกันเก็บ ทาให้อ่าน/เขียนได้เร็วขึ้น – ความน่าเชื่อถือมากขึ้น มีการเก็บข้อมูลเดียวกันไว้หลาย HDD• RAID สามารถทาสาเนาข้อมูล (Mirroring) ได้ – เกิดการซ้าซ้อนกันของข้อมูล (Redundancy) – ในกรณีที่ HDD ตัวใดตัวหนึ่งเสียหรือซ่อม ข้อมูลจะไม่สูญหายไป – สามารถใช้ข้อมูลได้จากทั้ง HDD ต้นแบบกับ HDD สาเนา
  56. 56. ระดับ RAID• RAID 0: Block Striping, non-redundant – มีการแบ่งข้อมูลกันเก็บอย่างเดียว – เหมาะกับข้อมูลที่ต้องการความเร็วในการเข้าถึง – เมื่อ HDD ตัวใดเสียข้อมูลจะหายทั้งหมด• RAID 1: Mirrored Disk[4] – มีการทาสาเนา (Mirroring) เพียงอย่างเดียว – เวลาในการเข้าถึงช้ากว่า RAID 0 – เมื่อ HDD ตัวใดตัวหนึ่งเสีย ข้อมูลจะไม่หายไป – เน้นด้านความปลอดภัยของข้อมูล
  57. 57. ระดับ RAID [4]• RAID 1+0 – ต้องการ 4 HDDs ขึ้นไป – นาเอาข้อดีของ RAID 0 และ RAID 1 มารวมกัน – ทาสาเนา HDD ก่อน แล้วค่อยแบ่งเก็บข้อมูลของต้นฉบับและสาเนา – เหมาะสาหรับข้อมูลที่ต้องการความเร็วในการเข้าถึงและความจุไม่มาก• RAID 2 – มี HDD สาหรับเก็บข้อมูลไว้ตรวจสอบและแก้ไขส่วนที่ผิดพลาด (ECC) – เมื่อ HDD ใดเสียหาย ข้อมูลสามารถกู้คืนได้จากไฟล์ที่เหลือกับค่า ECC – HDD ทางานช้า และต้องมีที่ HDD ไว้เก็บ ECC ด้วย – แบ่งข้อมูลเก็บเป็นระดับ Bit
  58. 58. ระดับ RAID [4]• RAID 3: Bit-Interleaved Parity – ใช้ Parity แทน ECC ในการตรวจสอบข้อผิดพลาดของข้อมูล – HDD จะเก็บ Parity เพียง 1 HDD เท่านั้น – แบ่งข้อมูลเก็บเป็น Byte แทน Bit – Parity ที่มี HDD เดียว ทาให้เวลาเขียนข้อมูลมาก ๆ ทาได้ช้าลง• RAID 4: Block-Interleaved Parity – ระบบการทางานคล้าย RAID 3 – มีการแบ่งข้อมูลเป็นระดับ Block แทน Byte – ยังคงปัญหาเรื่องเวลาการเขียนข้อมูล
  59. 59. ระดับ RAID [4]• RAID 5: Block-Interleaved Distributed Parity – แก้ปัญหาคอขวดของ Parity โดยให้ Parity เก็บรวมไปกับข้อมูล – Parity Block จะเก็บเรียงลาดับตาม HDD ไปเรื่อย ๆ จนครบ – การแบ่งข้อมูลและระดับการแบ่งเป็นหน่วย Block (เหมือนกับ RAID 4) – มีระบบ Hot Swap สามารถเปลี่ยน HDD ที่เสียได้ในขณะที่ระบบทางานอยู่ – เหมาะกับการเก็บข้อมูลบน Server ต่าง ๆ ทั่วไป
  60. 60. ระดับ RAID [4]• RAID 6: P+Q Redundancy – คล้ายกับ RAID 5 – มีการสร้าง Parity Block เพิ่มอีก 1 Block – สามารถ Hot Swap 2 HDDs ได้ • ในกรณีที่ HDD เสียสองตัวพร้อมกัน RAID 6 ยังสามารถทางานต่อได้ – เหมาะกับข้อมูลที่ต้องการความเสถียรภาพ• RAID 7 – เหมาะสาหรับองค์กรขนาดใหญ่ – พื้นฐานมาจาก RAID 4 แต่ HDD ทางานโดยอิสระ ไม่ต้องรอกัน – มี Real-Time Operating System คอยควบคุมการทางานของ RAID
  61. 61. การเลือกระดับ RAID• ปัจจัยหลักในการตัดสินใจ – ราคา – ประสิทธิภาพการอ่าน/เขียน – ประสิทธิภาพเมื่อ HDD บางตัวใน Logical Disk เกิดเสีย – ประสิทธิภาพการกู้ข้อมูลกลับคืน• RAID 0 สาหรับข้อมูลที่เน้นความเร็ว และไม่ค่อยสาคัญ• RAID 2, 4 ถูกแทนด้วย RAID 3, 5 และ RAID 3 ถูกแทนด้วย RAID 5• RAID 5 นิยมใช้เก็บข้อมูลที่ไม่ค่อยเปลี่ยนแปลงและปริมาณมาก• RAID 1 มีความเร็วในการเขียนมากกว่า RAID 5 แต่ใช้พื้นที่มากกว่า• ระดับ RAID ที่นิยมใช้ RAID 0, 1, 1+0, 5
  62. 62. ประเภทระเบียน• ระเบียนจากัดขนาด (Fixed-Length Records) – บอกขนาดที่แน่นอนแต่ละระเบียน และขนาดตารางได้ – อาจเกิดช่องว่างในกรณีที่ข้อมูลมีขนาดน้อยกว่าความจุที่กาหนดไว้ – เข้าถึงแต่ละระเบียนได้ง่าย• ระเบียนขนาดแปรผันได้ (Variable-Length Records) – ขนาดของระเบียนขึ้นกับข้อมูลที่เก็บจริง – มี Null Bitmap ไว้บอกจุดสิ้นสุดของระเบียน
  63. 63. การจัดการระเบียน• Heap ระเบียนสามารถใส่ได้ทุกที่ที่มีพื้นที่ว่าง• Sequential เก็บระเบียนแบบเรียงลาดับโดยขึ้นกับ Search-Key• Hash เก็บข้อมูลโดยอาศัย Hash Function กาหนดตาแหน่ง Block• Multitable Clustering การเก็บระเบียนโดยค่าที่อยู่ใน Schema อื่นสามารถเก็บไว้ในที่เดียวกันได้• ในคอร์สนี้ยกตัวอย่างเพียง Sequential กับ Multitable Clustering
  64. 64. การจัดการระเบียนแบบลาดับ• เหมาะสาหรับงานที่ต้องการประมวลผลทุกระเบียน• ระเบียนจะเรียงลาดับโดยอาศัย Search-Key
  65. 65. การจัดการระเบียนแบบลาดับ• การค้นหา อาศัยการเดินไปทีละระเบียน• การลบ มี ก ารอั พ เดต Pointerของระเบียนข้างเคียง และลบระเบียนที่ต้องการ• การเพิ่ ม ค้ น หาที่ ว่ า งส าหรั บระเบียนใหม่ จากนั้นค้นหาตาแหน่งที่ ร ะเบี ย นใหม่ ค วรอยู่ สุ ด ท้ า ยอัพเดต Pointer ข้างเคียงเพื่อให้สามารถอ้างอิงถึงระเบียนใหม่ได้
  66. 66. การจัดการระเบียนแบบ Multitable Clustering• การเก็บระเบียนโดยหนึ่งไฟล์อาจประกอบด้วยข้อมูลจาก Schema อื่น
  67. 67. การจัดการระเบียนแบบ Multitable Clustering• ข้อดี ทาให้การ Natural Join เร็วขึ้น• ข้อเสีย การสอบถามข้อมูลใน Schema เดียวกันทาได้ช้าลง• ในระเบียนอาจมี Pointer สาหรับชี้ระเบียนที่อยู่ใน Schema เดียวกัน
  68. 68. Data Dictionary• ใช้เก็บข้อมูลของข้อมูล (metadata) – ข้อมูลเกี่ยวกับ Schema • ชื่อ ประเภท ความจุของ Attribute และชื่อ Schema • ชื่อและนิยามของ Views • เงื่อนไขบังคับของข้อมูล (Integrity Constrains) – User Account ที่ใช้เข้าถึงฐานข้อมูล – ข้อมูลต่าง ๆ ภายใน Schema – ข้อมูลเกี่ยวกับ Index – ข้อมูลการเก็บไฟล์ทางกายภาพ • วิธีการเก็บ Schema และที่อยู่ของไฟล์ที่เก็บ
  69. 69. Data Dictionary
  70. 70. Buffer• ส่วนของ Main Memory ที่สามารถเก็บ Blocks ของข้อมูลได้ – ลดจานวนครั้งการอ่านจาก HDD โดยอ่านทีเดียวและเก็บไว้ที่นี่• เกิดจากการอ่าน/เขียนของ HDD ทาได้ช้า – มีการเคลื่อนไหวของแขนและจานหมุน ซึ่งช้ามากเมื่อเทียบกับ Main Memory – ยิ่งอ่าน/เขียนหลาย ๆ ครั้ง ก็ยิ่งช้า• ทาให้การอ่าน/เขียน Blocks เร็วขึ้น – อ่าน/เขียน Blocks จาก Main Memory ได้โดยตรง• ยิ่งมีพื้นที่มาก การเขียน/อ่านกับ HDD ก็น้อยลงตาม
  71. 71. Buffer Manager• ระบบย่อยในการจัดการ Buffer• ทางานเมื่อโปรแกรมต้องการข้อมูลต้องการ Blocks จาก HDD – หากใน Buffer มี Blocks ที่ต้องการ จะให้ Pointer ของ Blocks นั้นกลับไป – หากไม่มี Block ที่ต้องการใน Buffer • อาจเอาบาง Blocks ใน Buffer ออก โดย Blocks ที่เอาออกนั้นหากมีการเปลี่ยนแปลง จะเขียน Blocks นั้นลง HDD ก่อน • อ่าน Blocks ที่ต้องการจาก HDD ไว้ใน Buffer จากนั้นให้ Pointer ของ Blocks ที่ อ่านมากลับไปยังโปรแกรมที่ต้องการ Blocks นั้น• ส่วนใหญ่ Blocks ใน Buffer ที่ไม่ค่อยได้ใช้จะถูกเอาออก (LRUStrategy) เมื่อต้องการพื้นที่สาหรับ Blocks ใหม่ที่จะอ่าน
  72. 72. Query ProcessingParsing & Translation -> Optimization -> Evaluation
  73. 73. Query Processing• Parsing & Translation – ตรวจสอบความถูกต้องของคาสั่ง SQL – เปลี่ยนคาสั่ง SQL เป็น Relational Algebra• Evaluation – Query-execution Engine เริ่มสร้าง Query-evaluation plan – ประมวลผลจากคาสั่งตาม Query-evaluation plan ที่วางไว้ – ส่งคาตอบที่ประเมินได้เป็น Result Set
  74. 74. Query Optimization• การเลือกคาสั่งที่ทาให้การทางานทาได้รวดเร็วที่สุด – บางคาสั่ง SQL สามารถเขียนได้หลายแบบ และได้ผลลัพธ์ที่เหมือนกัน• ตัวอย่าง SELECT * FROM (SELECT salary FROM instructor) AS S WHERE salary < 75000 SELECT salary FROM (SELECT * FROM instructor WHERE salary < 75000) AS S – ควรเลือกคาสั่งใด เพื่อให้เวลาทางานน้อยที่สุด
  75. 75. Query Cost• วัดจากเวลาที่ใช้ตั้งแต่สั่ง Query จนได้ Result Set กลับมา – การเข้าถึงข้อมูลจาก HDD + เวลาประมวลผล CPU + ความเร็วเครือข่าย + ...• ส่วนใหญ่แล้ว Cost เกิดจากการเข้าถึงข้อมูลใน HDD – เวลาโดยประมาณที่ใช้ในการเข้าถึง HDD คานวณจากเวลาที่เข้าถึง b Blocks + เวลาที่ใช้กับการ Seek S ครั้ง (b * tT) + (S * tS) – tT =เวลาที่ใช้ในการเคลื่อนย้าย 1 Block, tS = เวลาที่ใช้ Seek 1 ครั้ง – สามารถลดการเข้าถึง HDD ได้ด้วย Buffer
  76. 76. Selection Operation• Linear Search Algorithm การเข้าไปอ่านแต่ละ Blocks และดูว่าแต่ละระเบียนนั้นตรงตามเงื่อนไขที่กาหนดหรือไม่ – Cost โดยประมาณคานวณจากจานวน Blocks ที่เก็บ Relation r ทั้งหมด + การ Seek 1 ครั้ง br blocks transferred + 1 seek – หากเงื่อนไขที่กาหนดเป็น Key Attribute สามารถจานวนได้จาก (br/2) blocks transferred + 1 seek – Linear Search สามารถนาไปใช้กับการเลือกระเบียนตามเงื่อนไขหรือการ เรียงลาดับระเบียน
  77. 77. การเลือกโดยใช้ดัชนี• Index Scan การค้นหาข้อมูลโดยใช้ดัชนี (Index)• Primary Index, equality on key – เลือกระเบียนที่ตรงกับเงื่อนไขการเลือกเพียงระเบียนเดียว Cost = (hi + 1) * (tT + tS) – hi = ความสูงของต้นไม้ B-Tree• Primary Index, equality on non-key – เลือกระเบียนที่ตรงเงื่อนไขทั้งหมด โดยระเบียนจะอยู่ Block ที่ต่อเนื่อง ตามลาดับ Cost = hi * (tT + tS) + tS + (tT * b)
  78. 78. การเลือกโดยใช้ดัชนี• Secondary Index, equality on nonkey – เลือกเพียงระเบียนเดียว หาก key ที่ใช้ค้นเป็น candidate key Cost = (hi + 1) * (tT + tS) – เลือกหลายระเบียน ถ้า key ที่ใช้ค้นไม่เป็น candidate key • ระเบียนที่ตรงกับเงื่อนไข n ระเบียน แต่ละระเบียนอาจไม่ได้อยู่ใน block เดียวกัน • ทุกครั้งที่อ่านข้อมูลใหม่มีการ Seek เกิดขึ้น Cost = (hi + n) * (tT + tS)
  79. 79. การเรียงลาดับ• การสร้าง index ของ schema และใช้ index ในการอ่าน schema โดยอ่านแบบเรียงลาดับ สามารถทาให้ใช้เพียง 1 block ในการเข้าถึงแต่ละระเบียนได้• สาหรับ schema ที่มีขนาดค่อนข้างพอดีกับหน่วยความจา จะนิยมใช้Quicksort ในการเรียงลาดับ แต่หากไม่พอดีจะใช้ External sort-mergeแทน
  80. 80. Join Operation• การ Join มีหลากหลาย Algorithms – Nested-Loop-Join – Block Nested-Loop Join – Indexed Nested-Loop Join – Merge-Join – Hash-Join• เลือกวิธีใด ขึ้นกับ Cost โดยประมาณ
  81. 81. Nested-Loop Join• Algorithms foreach tuple tr in r: foreach tuple ts in s: if pair (tr, ts) satisfy the join condition: add tr•ts to the result.• r = outer relation, s = inner relation• ไม่ต้องใช้ index และใช้กับการ join ได้ทุกแบบ• จะเกิดอะไรขึ้น หากใช้กับข้อมูลนี้ – Schema student ที่มี 5000 tuples และ 100 blocks – Schema takes ทีมี 10000 tuples และ 400 blocks ่
  82. 82. Nested-Loop Join• กรณีแย่ที่สุด: เมื่อ buffer สามารถเก็บแต่ละ schema ได้เพียง 1 block (nr * bs) + br block transfers + nr + br seeks – หากเลือก student เป็น Outer relation • 5000 * 400 + 100 = 2,000,100 block transfers • 5000 + 100 = 5100 seeks – หากเลือก takes เป็น Outer relation • 10000 * 100 + 400 = 1,000,400 block transfers • 10000 + 400 = 5100 seeks• การเลือก Outer relation เป็น Schema ที่มีข้อมูลมากจะไวขึ้น
  83. 83. Block Nested-Loop Join• วนรอบเปรียบเทียบ โดยทุก block ใน inner relation จับคู่กับทุกblock ใน outer relation foreach block Br of r: foreach block Bs of s: foreach tuple tr in Br: foreach tuple ts in Bs: if (tr, ts) satisfy the join condition: add tr•ts to the result.• Algorithm นี้ให้ผลที่ดีกว่า Nested-Loop Join อย่างไร
  84. 84. Block Nested-Loop Join• กรณีที่ดีที่สุดคานวณได้จาก br + bs block transfers + 2 seeks• กรณีที่แย่ที่สุดคานวณ Cost โดยประมาณได้จาก (br * bs) + br block transfers + 2 * br seeks – แต่ละ Block ใน Inner Relation อ่านเพียงครั้งเดียวสาหรับทุก Blocks ที่อยู่ ใน Outer Relation
  85. 85. Transaction Concept• Transaction คือ หน่วยการทางานที่มีการเข้าถึงและเปลี่ยนแปลงข้อมูลจากข้อมูลหนึ่งเป็นอีกข้อมูลหนึ่ง – การฝากเงิน, ถอนเงิน, โอนเงิน – การลงทะเบียนเรียน, การ Drop รายวิชา• ในบางครั้งการทางานเพียงคาสั่งเดียวอาจไม่พอ
  86. 86. Transaction Concept[5]1 CREATE PROCEDURE transfer_funds (from_account INT,to_account INT, amount NUMERIC(10,2))2 SET AUTOCOMMIT = 0;3 UPDATE account_balance SET balance = balance –amount WHERE account_id = from_account;4 UPDATE account_balance SET balance = balance +amount WHERE account_id = to_account;5 INSERT INTO journal (from_acount_id, to_account_id,transfer_amount) VALUES (from_account, to_account,amount);6 COMMIT;
  87. 87. Transaction Concept1 read(A)2 A := A – 503 write(A)4 read(B)5 B := B + 506 write(B)• สิ่งที่อาจเกิดขึ้นเมื่อทาคาสั่งนี้ – เกิดความเสียหายทางด้าน Software หรือ Hardware • ปลั๊กหลุด – มีการทา Transaction แบบเดียวกัน
  88. 88. Transaction Concept• จะเกิดอะไรเมื่อมีอีก Transaction ถูกทางาน และผังทางานเป็นดังนี้ 1 read(A) 2 A := A – 50 3 write(A) 1 read(A) 4 read(B) 5 B := B + 50 2 read(B) 3 print(A + B) 6 write(B)• A + B ของ Transaction ที่ 2 เหมือนกับ Transaction ที่ 1 ?
  89. 89. Transaction Concept• สมมติว่าเงินคุณ A คงเหลือ 100G และคุณเหลือเงิน 200G 1 read(A) 100 2 A := A – 50 50 3 write(A) 1 read(A) 50 4 read(B) 200 5 B := B + 50 250 2 read(B) 200 3 print(A + B) 250 6 write(B)• A + B ของ Transaction ที่ 2 เหมือนกับ Transaction ที่ 1 ไหม?
  90. 90. คุณสมบัติของ ACID• เนื่องจาก Transaction อาจประกอบด้วยการทางานย่อย ๆ โดยเฉพาะการอ่าน/เขียนข้อมูล เพื่อรักษาความบูรณภาพ (Integrity) ของข้อมูลไว้ระบบของฐานข้อมูลต้องมีคุณสมบัติ ACID – ความเป็นอันหนึ่งอันเดียวกัน (Atomicity) • งานย่อยภายใน Transaction ต้องสาเร็จทั้งหมด ไม่เช่นนั้นจะ Roll back กลับทั้งหมด – ความเสมอต้นเสมอปลาย (Consistency) • ข้อมูลหลังจากที่ทา Translation แล้วต้องสอดคล้องกับการเปลี่ยนแปลง – ความเป็นส่วนตัว (Isolation) • Transaction ที่ยังทาไม่เสร็จจะมี Transaction อื่นเข้าถึงส่วนต่าง ๆ ไม่ได้ – ความมั่งคง (Durability) • Transaction ที่ทาเสร็จแล้ว ข้อมูลที่เปลี่ยนไปต้องคงอยู่ถาวร
  91. 91. สถานะของ Transaction• Active: สถานะเมื่อ Transaction กาลังทางาน• Partially Committed: สถานะหลังจากคาสั่งสุดท้ายใน Transactionทางานเสร็จ• Failed: สถานะเมื่อพบว่า Transaction ไม่สามารถทางานได้• Aborted: สถานะที่ Transaction ถูก Roll back และฐานข้อมูลกลับมาเป็นเหมือนก่อน Transaction เริ่มทางาน – Transaction จะทาใหม่ (Restart) เมื่อไม่มีปัญหาด้าน Logic – เลิกทา (Kill)• Committed: สถานะที่ Transaction ทางานได้สาเร็จ
  92. 92. สถานะของ Transaction
  93. 93. การ Execute ร่วมกัน• Transaction หลาย ๆ ตัวสามารถรันไปพร้อมกันได้ในระบบ – เพิ่มประสิทธิภาพการทางานของ CPU และการใช้ Disk – ลดเวลาการทางานโดยรวม• Transaction จะถูกคุมโดยกลไก Concurrency Control Schemes – ช่วยควบคุมให้ Transaction ทางานเป็นส่วนตัว ไม่ให้คุณสมบัติ Consistency และ Isolation เสียไป
  94. 94. ลาดับการทางาน• ลาดับการทางาน (Schedule) เป็นลาดับของงานย่อยที่จะ executeโดยเรียงตามเวลาที่ถูก execute – ลาดับการทางานของ Transaction Set ต้องประกอบด้วยงานย่อยทั้งหมดที่อยู่ ใน Transaction Set – แต่ละงานย่อยใน Transaction ต้องคงลาดับการทางานใน Transaction ของ ตนเอง• Transaction จะทาสาเร็จก็ต่อเมื่อได้สถานะ Committed – โดยปกติแล้ว การทา Transaction สุดท้ายเสร็จก็จะ Commit ทันที• Transaction ที่ทางานไม่สาเร็จจะถูกยกเลิกและได้สถานะ Aborted
  95. 95. ลาดับการทางาน • สมมติ ใ ห้ ฐ านข้ อ มู ล หนึ่ ง มี 2 Transactions ที่ต้องการ Execute โดย T1 แทนการโอนเงิน 50G จาก คุณ A ไปคุณ B และ T2 แทนการ โอนเงิน 10% กลับให้คุณ A • ล าดั บ การท างานแบบต่ อ เนื่ อ ง (serial) โดยให้ T1 ทางานก่อนตาม ด้วย T2
  96. 96. ลาดับการทางาน• ล าดั บ การท างานแบบต่ อ เนื่ อ งโดยให้ T2 ทางานก่อนตามด้วย T1• มีสิ่งใดแตกต่างไปจากลาดับการทางานที่แล้วหรือไม่
  97. 97. ลาดับการทางาน • ลาดับการทางานแบบไม่ต่อเนื่อง แ ต่ ก า ร จั ด ล า ดั บ ก า ร ท า ง า น นี้ เหมือนกับตารางลาดับการทางาน 1 • ลาดับการทางานที่ 1, 2 และอัน นี้ เมื่อทั้ง 2 Transactions ถูก Committed แล้ว ถ้านา A + B แล้วค่าที่ได้จะเท่ากันหรือไม่
  98. 98. ลาดับการทางาน • ตารางลาดับการทางานนี้ เมื่อทั้ง 2 Transactions ถูก Committed แล้ว ถ้านา A + B แล้วค่าที่ได้จะ เหมือนกันกับตารางลาดับที่ 1, 2, 3 หรือไม่
  99. 99. Serializability• Serializability เป็นลาดับการทางานแบบ Concurrent ที่ให้ผลเหมือนกับ Serial Schedule – เราอยากได้ทั้งความเร็ว และความถูกต้องของข้อมูล• Serializability สามารถแบ่งได้เป็น 2 ประเภทย่อย – Conflict Serializability – View Serializability
  100. 100. Conflict Serializability• การ Conflict ของงานย่อย เกิดจากงานย่อยของ 2 Transaction ขึ้นไปมีการใช้งานการอ่าน/เขียนใน Data Item เดียวกัน และเมื่อสลับงานย่อยของ Transaction กันแล้วจะทาให้ผลลัพธ์เปลี่ยนไป – สมมติให้ Ii และ Ij แทนงานย่อยของ Ti และ Tj และพบว่า Ii มีการทางานใน ลาดับการทางานก่อน Ij • ถ้า Ii = read(Q) และ Ij = read(Q) ไม่เกิด Conflict • ถ้า Ii = read(Q) และ Ij = write(Q) เกิด Conflict • ถ้า Ii = write(Q) และ Ij = read(Q) เกิด Conflict • ถ้า Ii = write(Q) และ Ij = write(Q) เกิด Conflict
  101. 101. Conflict Serializability• Conflict Serializable คือ ชื่อเรียกของลาดับการทางานแบบConcurrent ที่มี Conflict Equivalent กับ Serial Schedule• ลาดับการทางานที่ Conflict Serializable สามารถสลับคาสั่งย่อยได้โดยไม่ Conflict จนได้เป็น Serial Schedule
  102. 102. Conflict Serializability• ตารางซ้ายมือนี้เป็น Conflict Serializable หรือไม่ – สามารถสลับจนเป็น Serial Schedule ของ <T1, T2> หรือ <T2, T1> ได้ หรือไม่
  103. 103. Conflict Serializability• ลาดับการทางานนี้เป็น Conflict Serializable หรือไม่• ลาดับการทางานนี้ไม่เป็น Conflict Serializable – ไม่สามารถสลับงานย่อยจนเป็น Serial Schedule ของ <T3, T4> หรือ <T4, T3> ได้
  104. 104. View Serializability• การ View Equivalent ของลาดับการทางาน เกิดจาก 2 ลาดับการทางานที่มี Transactions เดียวกัน และมีคุณสมบัติ 3 ข้อดังต่อไปนี้ – หากลาดับการทางาน i ที่ Transaction t มีการอ่านค่า data item D จากค่า เริ่มต้น ลาดับการทางาน j ที่ t ต้องมีการอ่านค่า D จากค่าเริ่มต้นด้วยเช่นกัน – หากลาดับการทางาน i ใน Transaction t มีการอ่านค่า data item D จาก ค่าที่เขียนใน Transaction s ลาดับการทางานที่ j ใน t จะต้องอ่านค่า D จาก s ด้วย – หากลาดับการทางานที่ i Transaction t เป็น Transaction ที่มีการสั่งเขียน data item D ครั้งสุดท้าย ในลาดับการทางานที่ j นั้น t จะต้องเป็น Transaction ที่เขียน D เป็นครั้งสุดท้ายด้วยเช่นกัน
  105. 105. View Serializability• View Serializable คือ ชื่อเรียกของลาดับการทางานแบบ concurrentที่ View Equivalent กับ Serial Schedule• ลาดับการทางานที่เป็น View Serializable จะสามารถสลับคาสั่งย่อยโดยเมื่อสลับแล้ว View Equivalent จนได้เป็น Serial Schedule• หากลาดับการทางานเป็น Conflict Serializable แล้วจะเป็น ViewSerializable ทันที – ถ้าพบว่าเป็น View Serializable แล้วจะเป็น Conflict Serializable หรือไม่ – (P -> Q) ^ (Q -> P) = T ?
  106. 106. View Serializability• ตารางนี้เป็น View Serializable และ Conflict Serializable หรือไม่• ตารางนี้เป็น View Serializable แต่ไม่เป็น Conflict Serialzable – การสลับ write(Q) ของ T28 กับ write(Q) ของ T27 ไม่ผิดกฎของ View Equivalent และสลับแล้วจะได้ Serial Schedule <T27, T28, T29> – write(Q) ของ T28 กับ write(Q) ของ T27 เกิด Conflict ของคาสั่งย่อย
  107. 107. View Serializability • ตารางนี้เป็น View Serializable และ Conflict Serializable หรือไม่
  108. 108. Cascading Rollbacks• เหตุการณ์ที่มี Transaction หนึ่งเข้าสู่สถานะ Abort และทาให้Transaction อื่น ที่กาลังทางานอยู่บางส่วน Abort ตามไปด้วย – Transaction ที่ Aborted จะโดน roll back• สาเหตุเกิดจากบาง Transaction ยังไม่ commit เมื่อทางานเสร็จ – การ commit Transaction เมื่อทางานเสร็จ ทาให้ข้อมูลถูกเขียนลง DB ทันที โดยที่ Transaction อื่นยังทางานไม่เสร็จ• ในบางครั้ง Transaction ที่สาคัญอาจโดน roll back โดยไม่ได้ตั้งใจ
  109. 109. Cascading Rollbacks• จากลาดับการทางานนี้ T10, T11, T12 จะถูกยกเลิกการทางาน• ปัญหานี้สามารถแก้ได้ด้วย Cascadeless Schedule – หากต้องการอ่านข้อมูลที่เกิดจาก Transaction อื่นเขียน ต้องอ่านเมื่อ Transaction นั้น committed แล้วเท่านั้น
  110. 110. การทดสอบ Conflict Serializable [6]• การทดสอบ Serializability ของลาดับการทางาน สามารถทดสอบด้วยการวาด Precedence Graph• Node ของ Graph เป็น Transaction ทั้งหมดในลาดับการทางาน• Edge ของ Graph เป็นความสัมพันธ์การ Conflict ของ Data Item – เมื่อ Transaction t read(D) ก่อน Transaction s write(D) – เมื่อ Transaction t write(D) ก่อน Transaction s read(D) – เมื่อ Transaction t write(D) ก่อน Transaction s write(D)• ถ้าลาดับการทางาน S สามารถเขียน Precedence Graph ได้โดยไม่เกิดCycle จะได้ว่า S เป็น Conflict Serializable
  111. 111. การทดสอบ Conflict Serializable• กราฟนี้ไม่เป็น Conflict Serializable
  112. 112. การทดสอบ Conflict Serializable• กราฟนี้เป็น Conflict Serializable หรือไม่
  113. 113. Concurrency Control• กลไกที่ช่วยให้ลาดับการทางานที่เกิดขึ้นมีคุณสมบัติ – Conflict Serializable หรือ View Serializable – สามารถกู้คืนได้ (Recoverable) – Cascadeless – สามารถรักษาคุณสมบัติ ACID ได้• การทางานของ Concurrency Control จะทาผ่าน Protocol – Lock-Based Protocols – Timestamp-Based Protocols
  114. 114. Lock-Base Protocol• การ Lock เป็นกลไกในการควบคุมการเข้าถึง data items พร้อม ๆ กัน – ล็อกข้อมูลที่กาลังอ่าน/เขียน ไม่ให้ Transaction อื่นมาร่วมยุ่งด้วย• Data items สามารถ lock ได้ 2 แบบ – Exclusive (X) Mode: ล็อก data items สาหรับการอ่าน/เขียน – Shared (S) Mode: ล็อก data items สาหรับอ่านอย่างเดียว• การส่งคาขอการล็อกจะส่งไปยัง Concurrency-Control Manager และTransaction จะทางานได้ก็ต่อเมื่อคาขอได้รับการอนุญาตเท่านั้น
  115. 115. Lock-Base Protocol• ตารางความเข้ากันได้ของประเภทการ lock – Transaction จะสามารถล็อก data items ได้ ถ้าประเภทการ lock ที่ร้องขอ ไปเข้ากันได้กับประเภทของ lock ที่มีอยู่ที่ data items นั้น ๆ • Shared lock สามารถล็อก data items ได้เท่าไรก็ได้ • Exclusive lock สามารถล็อก data items ได้เพียงครั้งเดียวเท่านั้น – หากไม่ได้รับอนุญาตในการล็อก Transaction ต้องรอจนกว่า Transaction อื่นจะปลดล็อกจนสามารถล็อก data item ได้
  116. 116. ข้อผิดพลาดของ Lock-Base Protocol• การ lock ที่สั้นเกินไป อาจทาให้ Serializability หายไปได้• การ lock ที่ยาวเกินไป ก็ทาให้เกิดปัญหาเช่นเดียวกัน• พิจารณาลาดับการทางานนี้• Schedule นี้มีสิ่งที่ผิดปกติหรือไม่?
  117. 117. ข้อผิดพลาดของ Lock-Base Protocol• จากตารางที่แล้วพบว่า T3 และ T4 ไม่สามารถทางานต่อไปได้ – T4 รอการปลด X-lock ของ T3 และ T3 รอการปลด S-lock ของ T4• T3 และ T4 เกิดสภาวะ Deadlock – Transaction ที่ค้างอยู่ต้อง roll back ทั้งหมด• ในบางครั้ง Concurrency Control ที่ออกแบบมาไม่ดี อาจเกิดสภาวะStarvation ด้วยเช่นกัน
  118. 118. Deadlockhttp://www.gosw.kr/wp-content/uploads/2010/08/deadlock.jpg
  119. 119. Deadlock Handling• สภาวะ Deadlock เกิดจาก transaction หนึ่งใน transaction set มีการรอ transaction หนึ่งที่อยู่ในเซตเดียวกัน• ปัญหา Deadlock สามารถแก้ได้ 2 รูปแบบ – Wait-Die Scheme: transaction ที่ทางานทีหลังแล้วเกิด deadlock จะถูก rollback – Wound-Wait Scheme: transaction ที่ทางานก่อนแล้วเกิด deadlock จะ ถูก rollback • rollback น้อยกว่าแบบ Wait-Die – Timeout-Based Schemes • กาหนดเวลาการร้องขอ หากใช้เวลาเกินกาหนดจะถูก rollback
  120. 120. Starvation (1)
  121. 121. Starvation (2)
  122. 122. Two-Phase Locking Protocol• Protocol ชนิด Two-Phase Locking จะมีการ lock เป็น 2 ช่วง – Growing Phase ช่วงที่สามารถ lock ได้เท่านั้น – Shrinking Phase ช่วงที่สามารถ unlock ได้เท่านั้น• การใช้ Protocol นี้ทาให้ลาดับการทางาน serializable แต่ยังเกิดDeadlock และ Cascade rollback ได้อยู่• Cascade rollback แก้ได้ด้วย Strict Two-Phase Locking Protocol – Exclusive Lock จะ lock จนกว่า transaction จะ committed
  123. 123. Locking Conversions• Locking Conversions เป็นส่วนเพิ่มเติมของ Two-Phase LockingProtocol• มี 2 ช่วงเช่นเดียวกับ Two-Phase Locking Protocol – First Phase: สามารถล็อก S-lock, X-lock, เปลี่ยนจาก S-lock เป็น X-lock – Second Phase สามารถปลดล็อก S-lock, X-lock หรือเปลี่ยน X-lock เป็น S-lock• การใช้ Protocol นี้ทาให้ลาดับการทางาน serializable แต่โปรแกรมเมอร์ต้องเขียนวิธีการ lock เพิ่มเติมให้กับโปรแกรมด้วย
  124. 124. Automatic Acquisition of Locks• Read data item algorithm if Ti has a lock on D: read(D) else: if necessary wait until no other transaction has a lock-X on D: grant Ti a lock-S on D read(D)
  125. 125. Automatic Acquisition of Locks• Write data item algorithm if Ti has a lock-X on D: write(D) else: if necessary wait until no other transaction has any lock on D: if Ti has a lock-S on D: upgrade lock on D to lock-X else: grant Ti a lock-X on D write(D)
  126. 126. Implementation of Locking• การล็อกจะทาผ่าน Lock Manager – Process ถูกแยกจาก DB อย่างชัดเจน• Lock Manager มีหน้าที่คอยตอบกลับคาร้องขอการล็อกโดยการส่งlock grant messages – อาจส่ง rollback messages ในกรณีที่เกิด deadlock• transactions ที่ส่งคาร้องแล้วจะรอจนกว่าจะได้รับการตอบกลับ• Lock Manager จะคอยปรับปรุง Lock Table เพื่อจาว่า data item ใดได้อนุญาตให้ล็อก หรือพิจารณาคาร้องขออยู่
  127. 127. Tree-Protocol• Graph-Based Protocol เป็นอีกหนึ่งวิธีนอกจาก Two-Phase LockingProtocol – อาจเรียกอีกชื่อว่า Tree-Protocol• Database Graph เป็นกราฟที่ไม่มีวัฏจักร แสดงความสัมพันธ์ระหว่างdata item – data item d -> data item e หมายถึงต้องเข้าถึง d ก่อนจึงจะเข้าถึง e ได้• สามารถล็อกได้เพียง Exclusive lock (X-lock) เท่านั้น
  128. 128. Tree-Protocol• ใน transaction ใด ๆ การล็อกครั้งแรกสามารถล็อกได้ทุก node อย่างอิสระ• การล็ อ กครั้ ง ที่ ส องนั้ น จ าเป็ น ต้ อ งล็อก parent node ของ node ที่ต้องการล็อกก่อนจึงสามารถล็อกได้• การปลดล็ อ กท าได้ ทุ ก เวลา แต่node ที่ล็อกและปลดล็อกไปแล้ว จะไม่สามารถล็อกได้อีกใน transactionนั้น ๆ
  129. 129. Tree-Protocol• Graph-Based Protocol ทาให้ลาดับการทางานเป็น conflictserializable และไม่เกิด deadlock• Graph-Based Protocol ปลดล็อกข้อมูลได้ก่อน Two-Phase LockingProtocol – ลดเวลาการทางานลง เพิ่มประสิทธิภาพมากขึ้น• Graph-Based Protocol อาจเกิด Cascade Rollback และอาจกู้คืนข้อมูลไม่ได้• การล็อกข้อมูลเกินจาเป็น – การล็อกต้องใช้เวลามากขึ้น
  130. 130. Multiple Granularity• Granular = เป็นเม็ดเล็ก ๆ• สามารถเขียน data items เป็น node ต่าง ๆ โดยข้อมูลที่ใหญ่กว่าจะเป็น parent node ให้กับข้อมูลที่ย่อยลงไป – ห้ามสับสนกับ Tree-Locking Protocol เด็ดขาด• เมื่อ Transaction ล็อก node ใด ๆ child node ทั้งหมดของ nodeนั้นจะถูกล็อกด้วย• การล็อกมี 2 ประเภท – Fine Granularity การล็อก node ที่มี level สูง – Coast Granularity การล็อก node ที่มี level ต่า
  131. 131. Multiple Granularity
  132. 132. Multiple Granularity• ใน Multiple Granularity มีวิธีการล็อกเพิ่มอีก 3 แบบ – Intention-Shared (IS) การล็อกเพื่อบ่งบอกว่า child node ลงไป มีการ S- Lock – Intention-Exclusive (IX) การล็อกเพื่อบอกว่า child node ลงไป มีการ S- Lock หรือ X-Lock – Shared and Intention-Exclusive (SIX) node ที่ล็อกด้วย SIX จะเป็น S- Lock ส่วน child node ลงไปจะเป็น IX• Intention Lock จะทาให้ node ที่เป็น coarse สามารถ S-Lock หรือX-Lock โดยไม่ต้องตรวจสอบ child nodes
  133. 133. Multiple Granularity• Intention Lock Compatibility Matrix
  134. 134. Timestamp-Based Protocols• เมื่อระบบเริ่มทางาน แต่ละ transaction จะได้รับ timestamp• transaction ที่ใหม่กว่า จะมีค่าใน timestamp สูงกว่า – ถ้า transaction i มีค่าใน timestamp คือ TS(i) และ transaction j มีค่าใน timestamp คือ TS(j) ถ้า j ใหม่กว่า i จะได้ว่า TS(j) > TS(i)• Timestamp-Based Protocol สามารถทาให้ลาดับการทางานเป็นConflict Serializable โดยการเปลี่ยนค่า timestamp ของ data item – W-Timestamp(D) มีค่าเป็น timestamp ที่มากที่สุดของ transaction ที่ สามารถ write(D) ได้สาเร็จ – R-Timestamp(D) มีค่าเป็น timestamp ที่มากที่สุดของ transaction ที่ สามารถ read(D) ได้สาเร็จ
  135. 135. Timestamp-Based Protocols• สมมติให้ transaction i กาลังทาคาสั่งย่อย read(Q)• หาก TS(i) น้อยกว่า W-Timestamp(Q) จะถือว่า i กาลังอ่านข้อมูลที่ถูกเขียนหลัง i – transaction i จะถูก reject และ roll back• หาก TS(i) มากกว่าหรือเท่ากับ W-Timestamp(Q) จะถือว่า i กาลังอ่านข้อมูลที่เขียนก่อน i – I จะสามารถอ่าน data item Q ได้ และ R-Timestamp จะเปลี่ยนเป็น ค่าสูงสุดระหว่าง TS(i) หรือ R-Timestamp(Q)
  136. 136. Timestamp-Based Protocols• สมมติให้ transaction i กาลังทาคาสั่งย่อย write(Q)• หาก TS(i) น้อยกว่า R-Timestamp(Q) จะถือว่า i กาลังจะเขียนข้อมูลที่มี transaction ใด ๆ ที่ทาทีหลังแต่อ่านข้อมูลไปก่อนแล้ว – transaction i จะถูก reject และ roll back• หาก TS(i) น้อยกว่า W-Timestamp(Q) จะถือว่า i กาลังเขียนข้อมูลที่มี transaction ที่ทาทีหลังแต่เขียนข้อมูลไปก่อนหน้าแล้ว – transaction i จะถูก reject และ roll back• ถ้า TS(i) ไม่ตรงกับเงื่อนไขทั้งสอง i จะสามารถเขียนข้อมูลลงบน dataitem Q ได้ และ W-Timestamp(Q) จะเปลี่ยนเป็น TS(i)
  137. 137. Timestamp-Based Protocols• กาหนดให้ transaction ในลาดับการทางานนี้มี timestamp เป็น 1, 2,3, 4, 5• เกิดอะไรขึ้นกับตารางนี้บ้าง
  138. 138. Timestamp-Based Protocols• นอกจาก Timestamp-Based Protocols จะไม่มีปัญหาเรื่อง ConflictSerializable แล้ว ยังไม่มีปัญหา Deadlock อีกด้วย• Timestamp-Based Protocols ยังไม่สามารถกู้ข้อมูลได้ , เกิดCascade rollback และ transaction อาจถูก rollback บ่อย – แก้โดยให้คาสั่งเขียนนั้นทาเมื่อคานวณค่าต่าง ๆ เสร็จแล้ว – ขณะที่มีการเขียน บังคับไม่ให้ transaction ทางาน – transaction ที่ aborted จะกลับมาทาใหม่พร้อม timestamp ใหม่ – ข้อมูลจะอ่านได้ ต้อง committed จาก transaction ก่อน
  139. 139. Recovery System• ความผิดพลาดของ transaction เกิดขึ้นได้ 2 แบบ – Logical Error เกิดจากคาสั่งย่อยใน transaction หรือความผิดพลาดภายใน – System Error เกิดจากระบบ เช่น Deadlock• ระบบเสียหาย (System Crash) อันเนื่องจาก Hardware, Software,ไฟฟ้า• ความผิดพลาดของจานแม่เหล็ก (Disk Failure) – หัวอ่าน/เขียนไม่สามารถใช้งานได้ – บางส่วนของข้อมูลเสียหายจนไม่สามารถอ่านบางข้อมูลขึ้นมาได้
  140. 140. Storage Structure• Volatile Storage – เมื่อระบบเสียหาย ข้อมูลจะหายทันที – Main Memory, Cache Memory• Non-Volatile Storage – ข้อมูลไม่หายไปเมื่อระบบเสียหาย แต่บางครั้งข้อมูลอาจหายบางส่วนหรือเสีย – Tape, HDD, Disk, Flash Memory• Stable Storage – ไม่ว่าอะไรจะเกิด ข้อมูลก็ไม่หายไป – สามารถทาได้จากอุปกรณ์ที่เป็น Non-Volatile
  141. 141. Stable-Storage Implementation• Mirroring กับดิสก์ที่แตกต่างกัน – การทากับ Remote ดิสก์สามารถป้องกันข้อมูลหายเมื่อเกิดภัยพิบัติได้• การใช้ระบบ RAID – ค่าใช้จ่ายน้อยกว่า Mirroring
  142. 142. Data Access• Physical Blocks: Blocks ที่อยู่บนจานแม่เหล็ก• Buffer Blocks: Blocks ที่เก็บชั่วคราวอยู่บน main memory• การย้ายข้อมูลระหว่าง main memory กับ disk จะใช้ 2 คาสั่งด้วยกัน – input(B) ย้าย Blocks จากจานแม่เหล็กเข้าสู่ Main Memory – output(B) ย้าย Blocks จาก Main Memory เข้าสู่จานแม่เหล็ก• แต่ละ transaction ที่ทางานอยู่ภายใน main memory จะมี localvariables เป็นของตนเอง – การทางานของ transaction กับตัวแปรจะมีการเปลี่ยนแปลงค่าที่ local variable ของ transaction ตนเอง

×