DB - Final

posted on 02 Mar 2005 04:20 by ipats
-- บทที่ 6 --
ใน ER มี 2 อย่างคือ key กับ relationship
* Domain Constraints คือชนิดข้อมูลนั่นเอง -- คำสั่งมีพวก create domain ... ... constraint ... check(...)
* Referential Integrity คือการตรวจสอบว่าค่าใน foreign key จะต้องมีเป็น primary key ในตางรางอ้างอิง (Referential Integrity Constraint หรือ Subset Dependencies)
- dangling tuple คือ tuple ที่ไม่มีคู่ join
- ใน ER model คือใน n-ary relationship set, weak entity set
- การเปลี่ยนแปลง DB --- ในการ insert/delete/upsate ต้องมีการตรวจสอบ อาจมีการใช้ cascade ร่วมด้วย หากไม่ใช้ DBMS ต้องมีวิธีจัดการ เช่นใส่ null
* Assertions -- เป็นการสร้างเงื่อนไขขึ้นมา เพื่อตรวจสอบ db ที่จะต้อง satisfy ตามเงื่อนไขนี้เสมอ (ไม่ออก)
* Triggers -- คือกลไกการทำงานโดยอัจโนมัติ เมื่อมีการแก้ไข db
- ใช้เวลาต้องการตรวจสอบ + แก้ไขที่ทำไป เช่น เบิกเงินเกินบัญชี จากที่จะมีเงินติดลบ ให้ย้ายไปเป็นการกู้แทน -- เด๋วนี้ใช้ encapsulation แทน เป็นการเขียนโปรแกรมในส่วนของการแก้ไขเอง
- ใน SQL มี 2 แบบคือ before กับ after (for)

-- บทที่ 7 -- ** อ่านไม่รู้เรื่อง
- Atomic Domain -- ที่ไม่เป็นคือพวกที่เป็น set
* First Normal Form (1NF) -- ต้องเป็น atomic ทั้งหมด
* ข้อควรระวังในการออกแบบ --- การซ้ำกันของข้อมูล, การไม่สามารถแสดงข้อมูลได้
* Functional Dependency -- คือการที่บอกข้อมูลตัวนึง แล้วหาอีกตัวได้
* Normalization Usinf FD -- ต้อง lossless/no redundancy/"dependency preservation"
* Boyce-Codd NF --
(มีต่อ)

-- บทที่ 15 --
* transaction -- หน่วยของโปรแกรมที่เข้าถึงข้อมูลและอาจเปลี่ยนแปลงข้อมูล -- DBMS ต้องจัดการ ACID -- transaction เข้าถึงข้อมูลได้ 2 อย่างคือ read(x), write(x)
* state -- active, partially committed, failed (ทำต่อไปไม่ได้) , aborted (rollback แล้ว), committed (เก็บข้อมูลเรียบร้อบ) -- aborted or committed = terminated -- restart ทำได้เมื่อถูก abort ด้วย error ซักอย่างของ hw,sw /kill เมื่อทำต่อไปไม่ได้ ต้องแก้โปรแกรม หรือ input ผิด
* implementation of atomicity and durability -- ก็อป db เป็นอีกชุด แก้ไขเสร็จ เปลี่ยน pointer -- ใช้ไม่ได้ เพราะไม่มีประสิทธิภาพ และทำ concurrent ไม่ได้
* Concurrent Execution -- เพิ่ม throughput ลด waiting time -- ต้องมี concurrent-control scheme เพื่อรักษา consistensy -- ต้องทำให้ schedule เหมือนกับ serial
* Serializability
- Conflict Serializability -- คำสั่งที่ conflict กันคือ ทำกับข้อมูลเดียวกันและมี write อย่างน้อย 1, จะมี Conflict Serialibility เมื่อสลับคำสั่งที่ไม่ conflict กัน แล้วได้ serial -- มี conflict equivalent ที่ไม่จำเป็นต้องดูเฉพาะ read/write แต่ไม่ได้พูดถึง
- View Serializability -- Conflict เป็น View, View ไม่จำเป็นต้องแป็น Conflict
* Recoverability -- อันที่ read ที่อีกอัน write ต้อง commit หลังอัน write ไม่งั้นจะ non-recoverable
- cascadeless schedules คือ ถ้ามีอันนึง read จากที่อีกอัน write ไอ้อันที่ write ต้อง commit ก่อนอีกอัน read เมื่อป้องกับ cascade rollback
* Implementation of Isolation -- พูดว่าจะพูดต่อในบทที่ 16 -- Concurrency-control scheme ทำให้ประสิ.. ต้องทำให้ดีทธิภาพตกตำ
* SQL มี Commit Work กับ Rollback Work

-- บทที่ 16 --
* Lock-Based Protocols
- มี read lock (shared) /write lock (exclusive)
- ถ้า compatible ก็ให้ lock ได้ ถ้าไม่ ต้องรอจนกว่า incompatible lock ถูกเอาออก
- เมื่อเกิด deadlock ระบบจะ rollback transaction ตัวนึง (หรือมากกว่า) เพื่อให้อีกตัวได้ lock
- locking protocol -- ข้อกำหนด
- precede -- T1 lock ก่อน T2 และไม่ compatible (เกี่ยวกับการทดสอบไรไม่รู้ ไม่น่าออก เลิกอ่าน)
- การได้ lock -- ได้เมื่อไม่มี conflict อยู่ก่อน และไม่มี T ที่รออยู่ก่อน
- 2-Phase Locking Protocol -- มี 2 phases คือ growing กับ shrinking
. เกิด deadlock ง่าย
. lock point คือจุดจบ growing
. ป้องกัน cascade rollback โดยใช้ strict (ไม่ปล่อย X จนกว่าจะจบ)/ringorous (ไม่ปล่อยอะไรเลยจนกว่าจะจบ)
. Upgrade/Downgrade

* Timestamp-Based Protocols
- WT(Q)/RT(Q) -- timestamp ที่มากที่สุดของ data item; TS(T) ของ transaction
. ถ้าจะ read -- TS ต้องมากกว่าหรือเท่ากับ WT ทำเสร็จเซ็ต RT
. ถ้าจะ write -- ไม่ได้เมื่อ TS น้อยกว่า RT หรือ TS < WT -- ถ้าทำได้เซ็ต WT
. ไม่มี deadlock แต่ restart บ่อย
. R&C, R&C, R ดูหน้า 606
- Thomas' Write Rule แก้ไขกรณี write คือถ้า TS < WT จะ ignore

* Validation-Based Protocol
* Multiple Granularity คือ lock ได้หลายระดับ; มี intention

-- บทที่ 17 -- Rocovery System
* ประเภทของ Failure
- Transaction Failure: logical error/system error
- System Crash
- Disk Failure
* Storeage Structure
- Type: Volatile/Nonvolatile/Stable
- Stable-Store Implementation
. การ error ระหว่างข้อถ่ายข้อมูล: successful completion/partial failure/total failure
- Data Access
. Physical Block/Buffer Block/Disk Buffer
. Input: P2M, Output: M2P
. Buffer จะถูกเขียนเมื่อ MEM เต็ม หรือ DBMS ทำ force-output
* Recovery and Atomicity
- แทนที่จะเขียนลง db ให้เขียนบอกว่าจะทำอะไรกับ db แทน
* Log-Based Recovery
ใช้ log record เก็บ transaction id, data-item id, old value, new value เวลาเก็บคือ Start, record, commit, abort
- Defered Database Modification -- เก็บทุกขั้นตอนไว้, เก็บแต่ new value -- เอาลง db เมื่อเสร็จ -- มี redo เมื่อ crash -- redo ต้อง idempotent (ทำกี่ครั้งก็เหมือนเดิม)
- Immediate Database Modification -- เก็บ old value เพราะตอนเปลี่ยนจะเขียนลง db เลย ถ้า crash ต้อง undo
- Checkpoint -- ถ้าต้องดูทั้ง log เสียเวลา + ไม่รุ้จะทำทำไม จึงมี checkpoint เวลาทำ checkpoint ต้องแน่ใจว่าเขียนข้อมูลลง disk เรียบร้อย

-------------- จบ --------------

Comment



smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry

เจ๋งๆๆๆๆ

#1 By เอีกซ์ (58.147.68.112) on 2006-02-28 15:23

โอ้ววว พอดี search หาในกูเกิ้ลเจอpage ของคุณพอดี เลยได้ความรู้ไปสอบ final พรุ่งนี้ อิอิ
ขอบคุณมากๆนะคะ

#2 By someone (202.12.97.118 /10.177.113.59) on 2007-02-17 02:55

อยู่มั้ยตอบหน่อย

#3 By (203.113.81.139) on 2007-10-10 14:36