Download presentation
Presentation is loading. Please wait.
Published byCornelia Gilmore Modified over 9 years ago
1
HW3: Heap-File Page Instructors: Winston Hsu, Hao-Hua Chu Fall 2010 This document is supplementary document that was created by referring Minibase Project of Univ. of Wisconsin The slide refers to http://dblab.kaist.ac.kr/Course/minibase/
2
Architecture of a DBMS Query Query Optimization and Execution DB Relation Operators File and Access Methods Buffer Management Disk Space Management
3
Minibase Relational Database Management System (RDBMS) – made by Wisconsin University for educational purpose Independent implementation of each component is possible – No pain to implementing whole DBMS – Suitable to understand the internal architecture of DBMS Components – Parser / Optimizer / Query Processor/ Heap file / B+-tree index / Buffer pool manager / Disk space management system
4
Heap-File Page Simple Heap-File Page Structure – Heap-File Page consists of page information, data area and slot array. – Data area in a Heap-File Page is always compacted. – We assume that the supported record data type is only character. Operations – Insert / Delete a record in a heap-file page – Get a first / next record id – Get the data / pointer of a record – Get some information
5
HFPage Structure Page Information short slotCnt; short freePtr; short freeSpace; short type; PageId prevPage; PageId nextPage; PageId curPage; Data Area slot[0] …… record……… ……… ……… …… // -1 if EMPTY SLOT short length; // offset from data[0] short offset; freePtr
6
insertRecord(case 1) Page Information Data Area slot[0] … empty record…… …… … Page Information Data Area slot[0] … Inserted slot record…… …… … Inserted record …………
7
insertRecord(case 2) Page Information Data Area slot[0] … record…… ……… Page Information Data Area slot[0] … Inserted slot record…… ……… Inserted record …………
8
deleteRecord Page Information Data Area slot[0] … record… … Removed slot …… … Page Information Data Area slot[0] … record… … empty … … … Removed record
9
exchangeRecord Page Information Data Area slot[0] … ABC… … slot[2] …ABCDE … Page Information Data Area … …… … slot[2] slot[0] ABC … … ABCDE … …
10
Return Values of APIs Status insertRecord(char *recPtr, int recLen, RID& rid); – If there is not enough space for new record, return DONE Status firstRecord(RID& firstRid); – If there is no record in Page, return DONE Status nextRecord (RID curRid, RID& nextRid); – If there is no next record in Page, return DONE Others – if slotNo or pageNo of a record Id and input parameters are not appropriate, return FAIL
11
Other int HFPage::available_space(void) – sizeof(slot_t) bytes must be reserved for a new slot and cannot be used by a new record. freePtr specifies the offset of the first free bytes in data[] – Insert from it – Modify it when deleting Check the output with sample_output – “dumpPage, this: 0x7fffbcf7fa20” is a pointer value. Ignore it. – diff your_output sample_output If there are any questions, you can post them on ptt.cc / CSIE_DBMS.
12
All You have to do hfpage.C
13
Try and Test wget http://mll.csie.ntu.edu.tw/course/database_f 10/assignment/hfpage09.tar.gz tar -xvvzf hfpage09.tar.gz make hfpage test_driver.C – Test code file
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.