250 likes | 459 Views
Lecture 14 B-trees, B*trees and Virtual B-trees (Sections 9.8-9.15). P. W. D. M. P. T. W. A. B. C. D. G. I. M. N. P. R. S. T. U. W. آشنايي با ايندکسهاي B-Tree. ساختار يک ايندکس B-Tree چگونه است؟ هر نود ميتواند يک رکورد با تعداد ثابتي کليد (مثلا 100 ) باشد.
E N D
Lecture 14B-trees, B*trees and Virtual B-trees(Sections 9.8-9.15)
P W D M P T W A B C D G I M N P R S T U W آشنايي با ايندکسهاي B-Tree ساختاريک ايندکسB-Tree چگونه است؟ • هر نود ميتواند يک رکورد با تعداد ثابتي کليد (مثلا 100) باشد. • تعداد کليددر هر گرهبين نصف تا تمام ظرفيت آن ميباشد. • براي اضافه نمودن کليد به نودي که ظرفيت آن تکميل شده: • آن نود را به 2نود جديد تقسيم ميکنند، • و بزرگترين کليد يکي از 2نود جديد به سطح بالاتر ارتقا پيدا ميکند. • حذف نمودن کليد از نودي که ظرفيت آن به مينيمم رسيده است: • ممکن است باعث ادغام نود با نود مجاور يا متوازن نمودن کليدها بين آنها گردد، • و پس از آن، نود سطح بالاتر نيز بايد به روز شود.
P W D M P T W A B C D G I M N P R S T U W جستجوي کليد در ايندکس B-Tree روش جستجوي کليد دريک ايندکس B-Tree چيست؟ • براي جستجوي کليد k، بايستي اوّل نود ريشه (Root) به حافظه آورده شود. • در بين کليدهاي اين نود،کليدKiجستجو ميشود ، بطوريکه: • يا Kiاولين کليد در نود وk ≤ Kiباشد • ياKi -1 < k ≤Kiباشد. • در صورت يافتنKi ، نود مربوطه به حافظه آورده ميشود، • و عمل 2تکرارمي گردد تا به نود برگ (Leave) برسيم و آدرس داده مورد نظر پيدا شود.
P W D M P T W A B C D G I M N P R S T U W ايجادکليد در ايندکس B-Tree • روش ايجاد کليد (Insert) در B-Treeچگونه است؟ • با روش قبل نود برگ (n) مربوط به کليدk جستجو ميشود. • در صورت وجود فضاي لازم: • کليدk به نود اضافه ميشود، • و اگر k از بزرگترين کليد موجود در نود بزرگتر باشد،نود سطح بالاتر نيز بروز ميشود. • در صورت پر بودن نود: • بايستي آن را به دو نود (n) و (n+1) تقسيم نمود، • کليد k را در يکي از دو نود جديد اضافه نمود، • و سپسنود سطح بالاتر را نيز بروز نمود، • که خود ممکن است باعث تکرار اعمال2 و 3تا ريشه بشود.
T D D T C S Insertion of C, S, D, T into the initial page D C S T A Insertion of A causes node to split and the largest key in each leaf node(D and T)to be placed in the root node مثال ايجاد کليد در ايندکسB-Tree • Input Sequence: • C S D T A M P I B W N G U R K E H O L J Y Q Z F X V Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ
T P D T M P D S I C A M and P are inserted into the rightmost leaf node, then insertion of I causes it to split مثال ايجاد کليد در ايندکسB-Tree • Input Sequence: • C S D T A M P I B W N G U R K E H O L J Y Q Z F X V Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ
P W M D W D G M I S T C B N P A Insertions of B,W,N, and G into leaf nodes causes another split and the root is now full مثال ايجاد کليد در ايندکسB-Tree • Input Sequence: • C S D T A M P I B W N G U R K E H O L J Y Q Z F X V Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ
P W M D U D W G M I S T C B N P A Insertion of U proceeds without incident, but R would have to be inserted into the rightmost leaf, which is full مثال ايجاد کليد در ايندکسB-Tree • Input Sequence: • C S D T A M P I B W N G U R K E H O L J Y Q Z F X V Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ
P W D M P T W A B C D G I M N P R S T U W Insertion of R causes the rightmost leaf node to split, insertion into the root causes the root to split and the tree grows to level three مثال ايجاد کليد در ايندکسB-Tree • Input Sequence: • C S D T A M P I B W N G U R K E H O L J Y Q Z F X V Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ
P Z D I M P T Z Q R S T U W Y Z A B C D E G H I J K L M N O P Insertions of K,E,H,O,L,J,Y,Q, and Z, continue with another node split مثال ايجاد کليد در ايندکسB-Tree • Input Sequence: • C S D T A M P I B W N G UR K E H O L J Y Q Z F X V Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ
مثال ايجاد کليد در ايندکسB-Tree I P Z D G I M P T X Z Y Z A B C D J K L M Q R S T E F G H I N O P U V W X Insertions of F, X, and V finish the insertion of the alphabet • Input Sequence: • C S D T A M P I B W N G UR K E H O L J Y Q Z F X V Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ
P W D M P T W A B C D G I M N P R S T U W خواص ايندکسB-Tree ايندکسB-Tree بطور رسمي چه خواصي دارد؟ (Formal definition) يکايندکسB-Tree با درجه m(Order) داراي خواص زير مي باشد: • هر نود ماکزيمم m فرزند دارد. • هر نود غير از ريشه (Root) و برگها (Leaves) لااقل m/2فرزند دارد. • نود ريشه لااقل دو فرزند دارد مگر هنگامي که ريشه همان برگ باشد. • تمام برگها (Leaves) در يک سطح قرار دارند. • مجموعه برگها يک ايندکس کامل و مرتب شده از کليدها را تشکيل ميدهد.
خواص ايندکسB-Tree تعدادجستجودر B-Tree در بدترينحالت؟ (Worst-Case Search) • تعداد جستجوی لازم در B-Treeبراي يافتن يک کليد بستگي به تعداد سطوح دارد. • در بدترين حالتفقط نيمي از ظرفيت هر نود استفاده شده و تعداد سطوح ماکزيمم ميباشد. • در يک B-Tree با درجه m، رابطه تعداد کليد N و تعداد سطوح d در بدترين حالت برابر است با: N ≥ (2*[m/2] d-1) →d ≤ (1 + logm/2(N/2)) مثال: اگر تعداد کليد N=1000000 و B-Tree از درجه m=512 باشد: d ≤ 1 + log256500000→d ≤ 3.37 بنابر اين تعداد سطوحماکزيمم 3 ميباشد
حذف کليد در ايندکس B-Tree روش حذف کليد (Deletion) در B-Treeچگونه است؟ براي حذف کليد k از نود (n): • اگر نود (n) بيش ازمينيمم ظرفيت مجاز کليد داشته باشد: • کليد k حذف شده، • و در صورتيکه اين کليد بزرگترين کليد نود (n) باشد نود سطح بالايي نيز بايستي بروز شود. • Merge:اگر نود (n) به مينيمم ظرفيت مجاز کليدها رسيده باشدو فضاي موجود در نود مجاور آن(Sibling) اجازه بدهد: • هر دو نود با يکديگر ادغام شده، • کليد kحذف مي شود، • و نود سطح بالايي نيز بروز ميگردد.(چرا؟)
حذف کليد در ايندکس B-Tree روش حذف کليد (Deletion) در B-Treeچگونه است؟ براي حذف کليد k از نود (n) (ادامه...): • Redistribute: اگر نود (n) به مينيمم ظرفيت مجاز رسيده باشد و يکي از نودهاي مجاورکه نود پدر آنها يکي باشد (Sibling) بيش از مينيمم مجاز کليد داشته باشد: • کليدها بين دو نودتقسيم مي شوند، • سپس کليد kحذف شده، • و پس از آن، نود سطح بالاتر نيز بروز ميگردد.
مثال حذف کليد در ايندکسB-Tree مثال(1): • Deleting “T” falls into case 1 • Deleting “U” falls into case 1 • Deleting “C” falls into case 2: Merge node 2 withnode 3
مثال حذف کليد در ايندکسB-Tree مثال(1) ادامه... : • Deleting “W” falls into case 3: • Redistribute keys between node 4 and node 5 • Deleting “M” allows for two possibilities: case 3 or 1 • Merge Node 3 with Node 2; or • Redistribute keys between Node 3 and Node 4
مثال حذف کليد در ايندکسB-Tree P Z I P G I M X Z D T B C K L M R S T Z A D J Q Y E G I O P V W X F H N U مثال(2): Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ
Removal of key C : Change occurs only in leaf node P Z I B C A D P G I M X Z D T B D K L M R S T Z A J Q Y E G I O P V W X F H N U مثال حذف کليد در ايندکسB-Tree مثال(2) ادامه... : Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ
مثال حذف کليد در ايندکسB-Tree Result of deleting P : Pchanges to O in the secondlevel and the root O Z I O F I M X Z D T B C K L M R S T Z A D J Q Y E G I O V W X F H N U مثال(2) ادامه... : Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ
مثال حذف کليد در ايندکسB-Tree Result of deleting H: Caused an underflow, and twoleaf nodes were merged P Z I P I M X Z D T B C K L M R S T Z A D J Q Y E G I O P V W X F N U مثال(2) ادامه... : Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ
توزيع مجدد کليدها درB-Tree کاربردهای توزيعمجدد کليدها (Redistribution) در B-Treeکدامند؟ • توزيع مجدد کليدها بيندو نود مجاورکهاز يک نود پدر باشند (sibling) انجام پذيراست. • هنگام حذف يا ايجاد کليد باعث صرفه جويي در I/O يا به تاخير اندختن آن ميشود. • هنگام ايجاد کليد، اگر تعداد کليدهاي نود (n) به ماکزيمم رسيده باشد (Key overflow) : • در صورتي که يکي از نودهاي مجاور فضاي لازم را داشته باشد، • با توزيع مجدد کليدها بين دو نود از شکسته شدن نود (n) و ايجاد نود جديد جلوگيري ميشود. • هنگام حذف، اگر تعداد کليدهاي نود (n) به مينيمم مجاز رسيده باشد (Key underflow) : • در صورتي که يکي از نودهاي مجاور کليد اضافي داشته باشد، • با توزيع مجدد کليدها بين دو نود از حذف نود (n) جلوگيري ميشود.
انواع ديگرB-Tree ايندکس B*Tree چگونه است؟ نوعي B-Tree مي باشد که در آن: • هر نود با لااقل2/3ظرفيت خود کليد دارد. • عمل شکسته شدن نودها به کمک توزيع مجدد کليدها حتي الامکان به تاخير انداخته مي شود. • ظرفيت نود ريشه بيش از نودهاي ديگر مي باشد تا: • درصورت Splitting، نودهاي جديد هر کدام 2/3ظرفيت کليد داشته باشند. • هنگامSplitting، هيچگاه يک نود به دو نود جديد تقسيم نمي شود بلکه: • دو نود مجاور با هم ادغام، • و سپس تبديل به سه نود مي شوند، • بطوريکه هر کدام 2/3ظرفيت کليد داشته باشند.
انواع ديگر B-Tree ايندکس VirtualB-Tree چگونه است؟ نوعي B-Tree ميباشد که در آن از روش Buffering of Pages استفاده ميگردد: • نگهداري تعدادي از نودها (Pages) در حافظهRAM باعث صرفه جويي در تعداد دسترسي به ديسک يا I/O ميشود. • در اينصورت هنگام لزوم دسترسي به يک نود، اوّل به فضاي رزرو شده و نودهاي موجود در حافظه رجوع مي شود و اگر نود پيدا شد احتياجي به يک I/O جديد نميباشد. • درصورتلزوم انجام I/O و آوردن يک نود جديد به حافظه،يکي از صفحات که مدتي استفاده نشده است حذف شده و نود جديد جاي آنرا ميگيرد.(Least Recently Used) • روش ديگر بجاي روش LRU،اين مي باشد که حتّي الامکان صفحات مربوط به سطوح بالاتر در حافظه نگاه داشتهشده و صفحات مربوط به نودهاي برگ جايگزين شوند.