1 / 13

Lecture 9 بازيابي سريع داده ها – مرتب ساز ي Finding data quickly - Sorting

(Sections 6.3, 6.4 , 7.1, 7.2). In the Name of God. Lecture 9 بازيابي سريع داده ها – مرتب ساز ي Finding data quickly - Sorting. بازيابي سريع داده ها – مرتب ساز ي (Finding data quickly – Sorting). روشها ي بازيابي سريع داده ها چگونه ميباشند؟ يادآور ي جستجوي دودويي ( Binary Searching )؟

Download Presentation

Lecture 9 بازيابي سريع داده ها – مرتب ساز ي Finding data quickly - Sorting

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. (Sections 6.3, 6.4 , 7.1, 7.2) In the Name of God Lecture 9بازيابي سريع داده ها – مرتب سازيFindingdata quickly - Sorting

  2. بازيابي سريع داده ها – مرتب سازي(Finding data quickly – Sorting) • روشهايبازيابي سريع داده ها چگونه ميباشند؟ • يادآوريجستجوي دودويي (Binary Searching)؟ • مقايسه با جست وجوي سري(sequential)؟ • محدوديت ها يا معايب جست و جوي دودويي کدامند؟ • مرتب سازي کليدها (key sorting) چگونه است؟ • روش Indexing چيست؟ • مزايايIndexing کدامند؟

  3. بازيابي سريع داده ها روشهايبازيابي سريع داده ها چگونه ميباشند؟ يادآوريجستجوي دودويي (Binary Searching)؟ مثال: • يک فايل با رکورد هاي به طول ثابت را در نظر مي گيريم. • فرض کنيم که در جست و جوي رکوردي با مقدار کليديمشخصي مي باشيم. حالت اول: اگر فايل مرتب نشده باشد: • بايستي رکورد هاي آنرا يک به يک خوانده و کليد آنها را با مقدار مورد نظر مقايسه کنيم. • اين کار ممکن است به خواندن کليه رکورد ها منتهي شود.(چرا؟) حالت دوم: اگر فايل بر حسب کليد مورد نظر مرتبشده باشد: • روش بهينه همان جست و جوي دودويي مي باشد.(چرا؟) • الگوريتم آن در شکل 13-6 کتاب موجود است.(با اشتباه چاپي!)

  4. low high .... .... RRN 0 1 3 n بازيابي سريع داده ها يادآوري الگوريتم جستجوي دودويي : int BinarySearch (FixedRecordFile & File, RecType & obj, KeyType & key) { int low = 0; int high = file.NumRecs()-1; While (low <= high) { int guess = (high + low) / 2; file.ReadByRRN (obj, guess); if (obj.Key() == key) return 1; if (obj.Key() < key ) low = guess +1; else high = guess - 1; } return 0; }

  5. بازيابي سريع داده ها مقايسه با جست وجوي سري(sequential)؟ مثال: • جستجوي کليد در يک فايل با تعداد 2000=n رکورد. حالت اول: جست و جوي سري: • تعداد ماکزيممرکورد هاي خوانده شده برابر با تعداد کل رکورد ها خواهد بود. • ممکن است تا 2000 رکورد خوانده شود. • اگر تعداد رکورد ها دوبل شود، تعداد خواندن رکورد نيز دوبل خواهد شد. (چرا؟) حالت دوم: جست و جوي دودويي: • تعداد ماکزيمم رکورد هاي خونده شده برابر با 1+log(n) خواهد بود. • ممکن است تا1+log(2000) يعني 11 رکورد خوانده شود. • اگر تعداد رکورد ها دوبل شود، فقط يک خواندن رکورد اضافه مي گردد. • برايجست و جوي دودويي بايستيطول رکورد ها ثابت باشد. (چرا؟)

  6. بازيابي سريع داده ها محدوديت ها يا معايب جست و جوي دودويي کدامند؟ • جست و جوي يک کليد مشخص معمولا بيش از يک يا دو دسترسي به ديسک نياز دارد. (چرا؟) • مثلا در يک فايل با 10000رکورد،16 يا 17 دسترسي به ديسک لازم خواهد بود. • نگهداري يک فايل به طور مرتب شده هزينه بالايي خواهد داشت.(کدام؟) • هزينه ها (CPU ، I/O ، متد برنامه نويسي، ... ) • انجام مرتب سازي فايل در حافظهاصلي(RAM) فقط در مورد فايل هايکوچک عملي ميباشد. • در مورد فايل هاي بزرگتر بايستي تعداد زيادي دسترسي به ديسک پيش بيني شود. (چرا؟) • استفاده از RRN براي فايل هاي حاوي رکورد متغير عملي نخواهد بود.

  7. Read the entire file unsorted file sorted file unsorted file Sort in memory disk memory بازيابي سريع داده ها مرتب سازي کليدها (key sorting) چگونه است؟ • روشي برای مرتب سازي فايل هاي بزرگکه در حافظه RAMجا نميگيرند. • هنگام مرتب سازي، از آوردن کل رکورد هابه حافظه خودداري ميگردد. • برای مرتب سازی کافيست فقط مقادير کليد رکوردها در حافظه موجود باشد. • همراه با RRN رکوردها! (چرا؟) • دراينصورت مرتب سازي کل کليد ها در حافظه انجام ميشود. (Internal Sort) • سپس بترتيب کليدها، رکوردها را خوانده و در فايل جديديمينويسيم.

  8. KEYNODES array مرتب سازي کليدها (key sorting) Records KEY RRN HARRISON 1 2 Harrison|Susan|387 Eastern.... Kellog|Bill|17 Maple.... KELLOG HARRIS Harris|Margaret|4343 West.... 3 Conceptual view before sorting . . . . k BELL Bell|Robert|8912 Hill.... In RAM On secondary storage Records KEY RRN k 3 BELL Harrison|Susan|387 Eastern.... HARRIS Kellog|Bill|17 Maple.... Conceptual view after sorting keys in RAM Harris|Margaret|4343 West.... HARRISON 1 . . . . 2 KELLOG Bell|Robert|8912 Hill.... مرتب سازي کليدها (key sorting) چگونه است؟ مثال:

  9. Records KEY RRN k 3 BELL Harrison|Susan|387 Eastern.... HARRIS Kellog|Bill|17 Maple.... Harris|Margaret|4343 West.... HARRISON 1 . . . . 2 Bell|Robert|8912 Hill.... KELLOG Index file Original file مرتب سازي کليدها (key sorting) چه تعداد دسترسي به ديسک نياز خواهد بود؟ • در مرحله اول:کل رکوردهاي فايل بايستي بطور سري (sequential) خوانده شوند. • در مرحله دوم:تکتک رکوردها بطور Randomبا استفاده از RRN خوانده شده و در فايل جديد نوشته خواهند شد. ( نوشتن بطور سري ؟) چه احتياجي به دوباره نويسي فايل وجود دارد؟ آيا کافي نيست که ليست مرتب شده کليد ها را حفظ کنيم؟

  10. Records KEY RRN k 3 BELL Harrison|Susan|387 Eastern.... HARRIS Kellog|Bill|17 Maple.... Harris|Margaret|4343 West.... HARRISON 1 . . . . 2 Bell|Robert|8912 Hill.... KELLOG Index file Original file بازيابي سريع داده ها - Indexing روش Indexing چيست؟ • کليدهاي مرتب شده يک فايل را در جايي مثلايک فايل ديگر حفظ مي کنيم. • اين فايل را indexمي ناميم. • براي دسترسي سريع به يکرکورد با کليد مشخص، از آن استفاده ميکنيم.(چگونه؟)

  11. بازيابي سريع داده ها - Indexing مزايايIndexing کدامند؟ • امکان مرتب سازي داده ها بدون نياز به جابجايي رکوردها در فايل.(چرا؟) • امکان تعريف مسيرهاي مختلفبراي بازيابي سريع داده ها. (چگونه؟) • امکان دسترسي سريع به فايل هاي با رکورد متغير بر حسب کليد. • امکاناستفاده بهينه از حافظه RAM براي جست و جوی کليد ها.(چرا؟) • امکان انجام عمل جست و جويدودويي در حافظهRAM. • جلوگيری از ايجاد اشاره گرهای سرگردان (dangling pointers) در داخل فايل. (چگونه؟)

  12. Record(i) dangling pointer Record (i+1) Pinned Record deleted pinned record Pinned Record File with pinned records بازيابي سريع داده ها - Indexing اشاره گرهای سرگردان(dangling pointers)چيست؟ • در روشهاي بازيابي فضاي فايل ها و استفاده از Avail Listديديم که رکوردها بوسيله نوعي اشاره گر(مثل RRN يا Byte Offset) به يکديگر مرتبط مي باشند. • اين رکوردها را Pinned Record مي خوانيم • تغيير محل فيزيکي آنها باعث ايجاداشاره گرهای سرگردان (dangling pointers) ميشود. • استفاده از indexing مانع ايجاد اين مشکل خواهد شد.(چرا؟)

  13. Records KEY RRN k 3 BELL Harrison|Susan|387 Eastern.... HARRIS Kellog|Bill|17 Maple.... Harris|Margaret|4343 West.... HARRISON 1 . . . . 2 Bell|Robert|8912 Hill.... KELLOG Index file Original file بازيابي سريع داده ها - Indexing • نگهداري index ها در خارج از حافظه RAM چگونه خواهد بود؟ • حفظ صحت اطلاعات در index هاچگونه خواهد بود؟

More Related