ساختار فایل ها
Download
1 / 244

فصل اول - PowerPoint PPT Presentation


  • 141 Views
  • Uploaded on

ساختار فایل ها (ذخیره و بازیابی اطلاعات) تهیه کننده : جعفر پورامینی منبع: سیستم و ساختار فایل مولف: زولیک تعداد واحد:3 www.darage1web.gigfa.com. فصل اول. آشنایی با طراحی و مشخصات ساختار فایل ها. هدف کتاب.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' فصل اول' - baruch


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

ساختار فایل ها (ذخیره و بازیابی اطلاعات)تهیه کننده : جعفر پورامینی منبع: سیستم و ساختار فایل مولف: زولیکتعداد واحد:3www.darage1web.gigfa.com


فصل اول

آشنایی با طراحی و مشخصات ساختار فایل ها


هدف کتاب

  • یافتن راههایی برای به حداقل رساندن دستیابی به دیسک، برای فایل هایی است که اندازه و محتویات آنها تغییر می کند.

  • ساختار فایل ترکیبی از نحوه نمایش داده ها در فایل ها و عملیات لازم برای دستیابی به داده ها است

    • در حالت ایده آل، کسب اطلاعات مورد نظر با یک دسترسی

    • در صورتی که امکان پذیر نیست با حداقل دسترسی

    • به حداکثر رساندن احتمال وجود اطلاعات مورد نظر در حافظه


عوامل موثر در طراحی ساختار فایل

  • شرایط خاص دیسک ها این الزام را به وجود می آورد که ساختارهای ویژه ای برای ذخیره و بازیابی داده در آنها توسعه دهیم تا در حد امکان مشکل های کار با دیسک را کاهش دهیم

    • زمان دستیابی نسبتا کم دیسک ها

    • ظرفیت بالای آنها

    • حفظ اطلاعات پس از قطع جریان برق


تاریخچه مختصری درباره طراحی ساختار فایل

  • دستیابی ترتیبی (فایل ها بر روی نوار) (مرتبه زمانی n)

  • درخت دودویی AVL (مرتبه زمانی log d)

  • درخت B

  • درخت B+:ترکیب درخت B و لیست پیوندی

  • دستیابی مستقیم


کیت ابزار مفهومی: مواد ساختار فایل

  • ابزارهایی که برای حل مشکلات مشابه بکار گرفته می شوند

    • بافرها، بلوکها و باکتها: کاهش تعداد دستیابی به دیسک


فصل دوم فایل

عملیات مهم پردازش فایل


فایلهای فیزیکی و منطقی فایل

فایلها همان مجموعه ای از بایت ها هستند که در یک دیسک به صورت فیزیکی در کنار یکدیگر قرار گرفته اند.

از دیدگاه برنامه کاربردی ، فایل تعریف دیگری دارد . استفاده از فایلهای منطقی به برنامه این امکان را می دهد تا اعمال اجرا شده روی یک فایل را توصیف کند؛ بدون اینکه بداند چه فایل فیزیکی را مورد استفاده قرار می دهد. سپس میتوان برنامه را برای پردازش هر یک از چند فایل متفاوت که دارای ساختاری یکسان هستند به کار برد.


باز کردن فایل ها فایل

معرفی تابع OPEN

FD=OPEN(FILENAME,FLAGS[,PMODE])

  • FD:توصیف کننده فایل.

  • FILENAME:یک رشته کاراکتری حاوی نام فایل فیزیکی.

  • FLAGS:عملکرد تابع OPEN را کنترل کرده وتععیین می کند که فایل موجود را برای خواندن یا نوشتن باز می کند یا خیر.

  • PMODE:حالت محافظت فایل را بر می گرداند.


بستن فایل ها فایل

  • هنگامی که برنامه ای به صورت عادی پایان می یابد، فایل ها معمولا به طور خودکار بسته می شوند.

  • در نتیجه اجرای یک دستور بستن در داخل برنامه فقط برای محافظت آن در برابر اتلاف داده ها در صورت توقف برنامه و آزاد کردن نام فایل های منطقی برای استفاده مجدد می باشد.


خواندن و نوشتن فایل

READ(SOURCE_FILE,DESTINATION_ADDR,SIZE)

WRITE(DESTINATION_FILE,SOURCE_ADDR,SIZE)

  • DESTINATION: نام فایل مقصد

  • SOURCE: نام فایل منبع

  • SIZE: تعداد بایتهایی که باید خوانده یا نوشته شود


پیگرد: عمل انتقال مستقیم به یک موقعیت معین در فایل را پیگرد می گویند.

SEEK(SOURCE_FILE,OFFSET)

SOURCE_FILE:نام فایل منطقی که در آن جستجو صورت می گیرد

OFFSET:میزان حرکت اشاره گر فایل را مشخص می کند


پیگرد با جریان های موقعیت معین در فایل را پیگرد می گویند.C

POS=FSEEK(FILE,BYTE_OFFSET,ORIGIN)

POS: یک مقدار صحیح بزرگ که توسط FSEEK بر گردانده می شود که برابر با موقعیت فعلی اشاره گر است.

FILE: توصیف کننده فایلی که FSEEK باید در آن اعمال شود.

BYTE_OFFSET: تعداد بایتهایی که باید از مبدا حرکت داده شود.


برنامه نمایش محتویات با استفاده از جریان

#INCLUDE<STDIO.H>

Main( ) {

Char ch ;

FILE *file ;

Char filename [20] ;

Printf (" enter the name of the file") ; //step 1

Gets (filename) ; //step 2

File = fopen (filename, "r") ; //step 3

While (fread(&ch, 1, 1, file) ! = 0) ; //step 4a

Fwrite (&ch, 1, 1, student) ; //step 4b

Fclose (file) ; //step 5

}


برنامه نمایش محتویات با استفاده از کلاسهای جریان ++ C:

#include <fsream.h>

main ( ) {

char ch ;

fstream file ;

char file name [20] ;

cout << "enter the name of the file: "; //step 1

cin >> filename; //step 2

file . open (filename,ios::in); //step 3

file . unsetf(ios::skipws);

while (1)

{

file >> ch; //step 4a

if (file.fail ()) break;

cout << ch; //step 4b

}

file . close (); //step 5

}


ساختار فهرست ها در یونیکس از کلاسهای جریان ++

چون هر نام فایل در سیستم یونیکس بخشی از سیستم فایلی است که با ریشه آغاز می شود هر فایل را می توان انحصارا با دادن نام مسیر آن شناسایی کرد.

هنگامی که فرمانهایی برای سیستم یونیکس صادر می شود این کار در داخل فهرستی انجام می شود که فهرست جاری نامیده می شود.


نمونه از کلاسهای جریان ++ ای از فهرست ها در یونیکس

BIN

USR

USR6

DEV

BIN

LIB

ADDBCC

KBD

TAPE

YACC

MYDIR

LIB

CONSOLE

LIBS.A

LIBM.A

ADDF

DF


دستگاههای فیزیکی و فایل های منطقی

  • در یونیکس، فایل مجموعهای از بایتها است

  • در یونیکس چگونگی و محل ذخیره فایل ها مهم نیست

  • در یونیکس مهم نیست که فایل ها از کجا می آیند

  • در یونیکس شکل فیزیکی فایل مهم نیست زیرا نمای منطقی فایل در یونیکس یکی است.


فصل سوم منطقی

حافظه جانبی و نرم افزار سیستم


تعريف حافظه منطقی

  • هر دستگاهي که بتوان اطلاعات را در آن ذخيره نموده به نحوي که کاربرد در هر لحظه بتواند به اطلاعات مورد نظرش دستيابي پيدا کند حافظه ناميده مي شود.


حافظه منطقی

انواع دستگاه ها از نظر نوع دستیابی

  • دستیابی مستقیم (DASD): از طریق آدرس می‌توان به طور مستقیم به اطلاعات دسترسی داشت. زمان دسترسی در این حالت برای تمام اطلاعات تقریبا برابر است، مانند هارد دیسک‌ها

  • دستیابی سری: دستگاه‌هایی که دستیابی ترتیبی را پشتیبانی می‌کنند. در این حالت برای خواندن یا نوشتن یک قطعه داده‌ی خاص، باید از تمام داده‌های پیش از آن گذر کرد


دیسکها منطقی

  • دیسک های مغناطیسی در اشکال مختلف وجود دارند

  • دیسک های سخت ظرفیتی بالا با هزینه پایین به ازای هر بیت ارائه می دهند.

  • دیسک های فلاپی ارزان هستند ولی سرعت آنها کم است و داده های نسبتا کمی را نگهداری می کنند.


انواع حافظه هاي برون ماشيني از نظر تكنولوژي ساخت

  • چهار تكنولوژي وجود دارد:

  • تكنولوژي الكترومكانيك

  • الكترو مغناطيس

  • تكنولوژي الكترو اپتيك

  • تكنولوژي الكترومغنااپتيك


سازمان دیسک ها نظر تكنولوژي ساخت

  • یک دیسک گردان معمولا از چند صفحه تشکیل شده است، که هر صفحه دو سطح دارد

  • هر صفحه شامل تعدادی شیار (TRACK) است

  • اطلاعات در شیارهایدیسک نگهداری می شود

  • هر شیار غالبا به چند سکتور (SECTOR) تقسیم می شود

  • سکتور کوچکترین بخشی از دیسک است که قابل آدرس دهی است.


سازمان دیسک ها نظر تكنولوژي ساخت

  • شیار‌هایی که مستقیما در بالا و پایین یکدیگر قرار دارند یک سیلندر را تشکیل می‌دهند.

  • بودن حرکت بازو می‌توان به همه‌ی اطلاعات روی یک سیلندر دسترسی داشت‌

  • حرکت بازو، معمولا کندترین بخش خواندن اطلاعات از روی دیسک است.



برآورد نیازهای سرعت و ظرفیت ها ونوشتن

  • ظرفیت شیار=تعداد سکتورها *طول هر سکتور بر حسب بایت

  • ظرفیت سیلندر=تعداد شیار ها در هر سیلندر*ظرفیت شیار

  • ظرفیت دیسک=تعداد سیلندرها*ظرفیت سیلندر


سازماندهی شیارها به وسیله سکتورها

  • سازماندهی بر اساس سکتور

  • سازماندهی بر اساس بلوک‌های سازماندهی شده توسط کاربر


روش های سازمان دهی داده ها بر روی دیسک

  • بر اساس سکتور

  • بر اساس بلوک های تعریف شده توسط کار بر


سازمان دهی سکتور ها بر روی یک شیار

  • سکتور ها بخش های مجاور و با اندازه ثابت از یک شیار باشند(این روش راه خوبی برای در نظر گرفتن فایل به طور منطقی است اما راه خوبی برای نگه داشتن فیزیکی سکتور ها نیست.)

  • فاصله گذاری میان سکتورها(یعنی بین سکتور هایی که از نظر منطقی مجاورند چند سکتور فاصله می گذارند.)



کلاستر: شیار

  • کلاستر عبارت از تعداد ثابتی از سکتور های پیوسته است

  • کلاستر های بزرگ تعداد زیادی از سکتور ها را بدون پیگرد می خوانند.

  • استفاده از کلاستر های بزرگ در هنگام پردازش ترتیبی فایل به کارایی بیشتر منجر می شود.


پراکندگی شیار

طول تمام سکتور های موجود در یک دیسک باید یکسان باشد اما همیشه این تناسب بر قرار نیست .دو شیوه برای مقابله با این روش وجود دارد:

  • نگهداری یک رکورد در هر سکتور.

  • قرار دادن رکورد ها به طور متوالی به طوری که بخشی از رکورد در یک سکتور و بخش دیگر آن در سکتور دیگر قرار گیرد.


سازمان دهی شیار ها به کمک بلوک شیار

  • گاهی شیار ها به سکتور تقسیم نمی شوند بلکه به تعدادی از بلوک ها تقسیم می شوند.

  • همانند سکتور ها بلوکها را غالبا رکورد های فیزیکی می دانند.

  • سازمان دهی بلوکها مشکلات پوشایی سکتورها و پراکندگی را ندارد.


زمان دستیابی به دیسک شیار

دستیابی به دیسک را می توان به سه عمل فیزیکی متمایز تقسیم کرد:

  • زمان پیگرد

  • تاخیر چرخشی

  • زمان انتقال


تاخیر چرخشی شیار

زمان پیگرد


زمان پیگرد شیار

  • زمان لازم برای انتقال بازوی دستیابی به سیلندر مناسب را زمان پیگرد می گویند


تاخیر چرخشی شیار

  • زمان لازم برای چرخش دیسک تا سکتور مورد نظر زیر هد خواندن و نوشتن قرار گیرد.


زمان انتقال شیار

زمان انتقال از فرمول زیر بدست می آید:

زمان انتقال=(تعداد بایت های انتقال یافته/تعداد بایت های روی شیار)*زمان چرخش


تنگنای دیسک شیار

راههای مقابله با تنگنای دیسک:

  • چند بر نامه ای (multiprogramming)

  • نوار بندی (striping)

  • موازی گرایی(parallelism)


سازمان دهی داده ها در نوار ها شیار

  • چون دستیابی به نوار ها به صورت ترتیبی است برای تشخیص موقعیت داده ها نیازی به آدرس نیست



نوار 7شیاره( شیارA) 9شیاره(B)


بيت توازن شیار

  • بيت توازن بخشی از داده ها نيست. بلکه براي بررسي اعتبار داده ها به کار مي رود. اگر از توازن فرد استفاده شود اين بيت در کادرهاي فرد برابر 1 قرار داده مي شود. توازن روج نيز به همین صورت عمل مي کند. ولي در نوارها به ندرت از آن استفاده مي شود.


در نوار دو نوع بيت توازن وجود دارد:

  • بيت پاريتي عرضي يا کاراکتري

  • بيت پاريتي طولي

  • بيت پاريتي عرضي براي هرکاراکتر و بيت پاريتي طولي، براي تعدادي کاراکتر ايجاد مي شود.


نوار گردان ها دارد:

اختلاف کارایی در میان نوار گردان ها را بر حسب سه کمیت می توان سنجید:

  • تراکم نوار

  • سرعت نوار

  • اندازه شکاف بین بلاک ها


براورد طول نوار مورد نیاز دارد:

طول فیزیکی یک بلوک از داده ها=b

طول شکاف بین بلا ک ها=g

تعداد بلاک های داده ها=n



اندازه بلوک / تراکم نوار= دارد:b

طول بلوک=b


تراکم ضبط موثر: دارد:

مقدار داده های واقعی را که به ازای هر اینچ از نوار می توان ذخیره کرد:

تراکم ضبط موثر=تعداد بایتها در هر بلوک/تعداد اینچهای مورد نیاز برای هر بلوک


برآورد زمان انتقال داده ها دارد:

  • عوامل موثر در سرعت انتقال داده ها:

  • اندازه شکاف های بین بلاکی

  • اندازه بلاک های داده

    سرعت اسمی =تراکم نوار*سرعت نوار


مقایسه دیسک و نوار دارد:

  • نوار برای پردازش ترتیبی و دیسک برای پردازش تصادفی است.

  • نوار ها به یک فرایند اختصاص دارند در حالی که دیسک ها معمولا چند فرایند را سرویس دهی می کنند.

  • نوار ها ارزانتر از دیسک ها هستند.

  • سرعت پردازش دیسک ها بالاتر است.


Cd rom
CD_ROM دارد:

  • نقطه قوت:ظرفیت ذخیره سازی بالا-بهای کم و دوام زیاد

  • نقطه ضعف:جستجو در آن بسیار کند است


کارایی در جستجو دارد:

  • در واقع ضعف اصلی CD_ROM در دستیابی مستقیم است زیرا بسیار زمان بر است


سرعت انتقال داده ها دارد:

  • سرعت انتقال داده ها بالا است چون نحوه ذخیره سازی به صورت بلاکی است.


ظرفیت ذخیره سازی دارد:

  • CD_ROM بیش از600 مگا بایت داده را نگهداری می کند , پس ظرفیت ذخیره سازی آن بالا است.


دستیابی فقط خواندنی دارد:

  • CD_ROM یک رسانه انتشاراتی است و پس از نوشتن محتویات آن قابل تغییر نیست.


Cva cav
تکنیک دارد:CVA دربرابر CAV


نوشتن و خواندن نا متقارن دارد:

  • به این معنی که ما فقط یک بار روی آن می نویسیم ولی هزاران بار آن را می خوانیم.


Dvd digital versatile disk
DVD(Digital versatile Disk ) دارد:

  • در سال 1997 چند شرکت بزرگ تجهيزات الکترونيکي سازماني بنام DVD – Forum تاسيس کردند که هدفش توليد استاندارد جديد براي CD بود که پس از کشمکشهاي زياد (Digital video pisk) DVD با 8 نوع متفاوت ساخته شدند.

  • در ابتدا DVD ها فقط براي ويدئوها طراحي شدند. بنابراين تحت نام (Digital video Disk) معرفي شدند.


  • اولين تفاوت دارد:DVD ها با CD ها بخاطر ظرفيت بالاي DVD هاست بطور مثال در حال حاضر ظرفيت بعضي DVD ها 20 برابر CDهاست. که يک عامل مهم آن دو لايه بودن DVD است بطوريکه يک طرف ديسک دو لايه مي تواند شامل دو لايه داده باشد در حين خواندن ابتدا لايه اوّل و سپس لايه دوم خوانده مي شود. البته تشخيص DVD ها دو لايه از DVDهاي تک لايه آسان است چون DVD دو لايه نقره اي و DVD تک لايه طلايي رنگ است.


انواع دارد:DVD از نظر ظرفيت

  • DVD ها بر اساس ظرفيت در هشت فرمت مختلف(18- DVD and 10- DVD و 9- DVD و 5- DVD و 4- DVD و 3- DVD و 2- DVD و 1- DVD) که هر شماره مقدار تقريبي هر ظرفيت DVD به گيگابايت را نشان مي دهد وجود دارند.



  • کاربرد دارد:DVDها متنوع است: video- DVD که براي نمايش فيلم Data- DVD براي کاربردهاي نرم افزاري Audio- DVD براي گوش کردن موسيقي ها بکار مي روند.

  • Duta - DVD همان CD – ROM با ظرفيت بالا مي باشد و مانند CDهاي معمولي استفاده مي شود اما باراندمان بالاتر، video- DVD ها بسيار رايج تر از Data- DVDهاهستند و در مقايسه با VHSها آينده ي پربارتري دارند.


آشنايي با بافر و بافرينگ دارد:

بافر ناحيه اي است واسط در عمليات ورودي و خروجي و در اين ناحيه اقلاًّ يک رکورد در حالت فايل بلاک بندي شده با يک بلاک در حالت بلاک بندي شده جاي داده مي شود و اساساً براي ايجاد هماهنگي بين عمليات پردازنده ورودي/خروجي و واحد پردازش مرکزي و در شرايطي سريع اين عمليات به کار مي رود. در سيستم فايل، بافر معمولاً از منطقه اي از حافظه اصلي به برنامه فايل پرداز تخصيص داده مي شود که به آن منطقه بافرها مي گويند.


نحوه ايجاد بافرها دارد:

  • خود برنامه ساز بافر را ايجاد مي کند: با ايجاد ناحيه اي در حافظه

  • با اجراي يک ماکرو، که از سيستم عامل درخواست ايجاد بافر مي کند.

  • خود سيستم عامل وقتي که فايل باز مي شود. اقدام به ايجاد بافرما مي کند و پس از بسته شدن فايل بافرها را باز پس مي گيرد.


بافر دهی چند گانه دارد:

  • به این معنی که CPU می تواند در حین ارسال یک بافر به دیسک , بافر دیگری را پر کند.


حالت تعیین محل در بافر دهی دارد:

  • بافر مستقیما بین داده ها و حافظه باشد.

  • بافر های سیستم همه بافر ها را کنترل کنداما اشاره گری برای محل بافر ها در اختیار برنامه باشد.


پراکنش ورودی دارد:

  • با پراکنش ورودی با یکبار خواندن , نه یک بافر , بلکه مجموعه ای از بافر هایی که داده های یک بلوک باید در آن پخش شود شناسایی می شود.


تمر کز خروجی دارد:

  • چند بافر را می توان گرد هم آورد و یکباره بر روی همه آنها نوشت.بدین ترتیب لازم نیست آنها را در یک بافر خروجی کپی کرد.


فصل چهارم دارد:

مفاهیم اساسی ساختار فایل


سازمان دهی فیلد ها و رکورد ها دارد:

  • واحد اصلی داده ها فیلد است.

  • آرایه مجموعه ای از فیلد های مثل هم است.

  • رکورد مجموعه ای از فیلد های متفاوت است.

  • رکوردی که در حافظه نگهداری می شود را یک شی گویند

  • فیلد های رکورد را اعضای آن می نامند.


ساختار های فیلد دارد:

  • قرار دادن فیلدها در طول هایی قابل پیش بینی

  • شروع کردن هر فیلدی با نشانگر طول فیلد

  • قرار دادن یک فاصل در انتهای هر فیلد برای جدا کردن آن از فیلد بعدی

  • استفاده از یک عبارت کلیدی برای شناسایی هر فیلد و محتویات آن


روش 1: ثابت کردن طول هر فیلد دارد:

  • مزیت این روش در این است که با محاسباتی ساده می توان داده ها را از فیلد های اولیه باز یابی کرد

  • عیب این روش این است که افزودن فضاهای خالی مورد نیاز برای رساندن فیلد ها به طولی ثابت باعث می شود فایل ها بسیار بزر گتر شوند.


روش2: قرار دادن نشانگر طول فیلد در ابتدای هر فیلد

اگر فیلد ها بیش از حد طولانی نباشند (کمتر از 256بایت) می توان طول آنها را تنها با یک بایت در آغاز هر فیلد نگهداری کرد.

این فیلدها را مبتنی بر طول می نامند.


روش 3 : جدا کردن فیلد ها با فاصل ابتدای هر فیلد

در این روش کافی است یک کاراکتر خاص یا ترتیبی از کاراکتر ها را که در فیلد ظاهر نمی شود انتخاب کنیم و آن فاصل راپس از نوشتن هر فیلد در فایل وارد کنیم.

در بسیاری از موارد از کاراکتر فضای خالی استفاده

می شود.


روش 4 : استفاده از عبارت کلیدی برای شناسایی فیلد ها

این روش دارای مزیتی است که بقیه ندارند و نخستین ساختاری است که در آن فیلد اطلا عاتی در باره خودش فراهم می آورد.

اما عیب این روش فضای زیادی است که تلف می کند.


ساختار های رکورد برای شناسایی فیلد ها

  • رکورد مجموعه ای از فیلد ها است.

  • مجموعه ای از رکورد ها فایل را تشکیل می دهند.

  • برای مراجعه به داده های مقیم در حافظه از کلمه شی و برای مراجعه به داده های مقیم در فایل از کلمه رکورد استفاده می شود.


روش های سازمان دهی رکورد های فایل برای شناسایی فیلد ها

  • قابل پیش بینی کردن طول رکورد ها بر حسب بایت.

  • قابل پیش بینی کردن طول رکورد ها بر حسب فیلد ها.

  • شروع هر رکورد با یک نشانگر طول که تعداد بایتهای رکورد را نشان می دهد.

  • استفاده از فایل دیگری برای نگهداری آدرس شروع هر رکورد.

  • قرار دادن فاصل در انتهای هر رکورد برای جدا کردن آن از رکورد بعدی.


روش 1 : قابل پیش بینی کردن طول رکورد ها بر حسب بایت

  • فایلی با طول ثابت , فایلی است که در آن تعداد بایتهای همه رکورد ها یکسان است.

  • رکورد های با طول ثابت , غالبا به عنوان محلی برای نگهداری تعداد متغیری از فیلد ها , با طول متغیر به کار می روند.


روش 2 : قابل پیش بینی کردن طول رکورد ها بر حسب فیلد ها.

  • در این روش به جای آنکه مشخص کنیم هر رکورد در فایل حاوی تعداد ثابتی از بایتهاست , می توان مشخص کرد که حاوی تعداد ثابتی از فیلد هاست.


روش 3: شروع هر رکورد با یک نشانگر طول که تعداد بایتهای رکورد را نشان می دهد.

  • در این روش فیلدی در ابتدای هر رکورد در نظر گرفته می شود و طول رکورد در آنجا ذخیره می گردد.

  • از این روش معمولا برای کار با رکورد هایی با طول متغییر استفاده می شود.


روش 4 : استفاده از فایل دیگری برای نگهداری آدرس شروع هر رکورد.

  • برای نگهداری آفست بایت مربوط به رکورد های موجود در فایل , می توان از اندیس استفاده کرد.با آفست بایت می توان ابتدای هر رکورد را یافت و طول رکورد را محاسبه کرد


روش 5 : قرار دادن فاصل در انتهای هر رکورد برای جدا کردن آن از رکورد بعدی.

  • این حالت در سطح رکورد ها , دقیقا مشابه راه حلی است که برای متمایز ساختن فیلد ها در برنامه ها به کار می رود.


Raid raid
سیستم رکورد برای جدا کردن آن از رکورد بعدی.raid سه سطحی درمقابل raid یک سطحی


فصل پنجم رکورد برای جدا کردن آن از رکورد بعدی.

مدیریت فایل هایی از رکورد ها


کلید های رکورد رکورد برای جدا کردن آن از رکورد بعدی.

برای جستجو بین رکورد ها باید یک شکل استاندارد برای کلید ها تعریف کنیم . این شکل استاندارد را شکل کانونیک کلید می نامند.


جستجوی ترتیبی رکورد برای جدا کردن آن از رکورد بعدی.

در این روش فایل رکورد به رکورد خوانده می شود تا رکوردی با یک کلید خاص پیدا شود.


ارزیابی جستجوی ترتیبی رکورد برای جدا کردن آن از رکورد بعدی.

به طور کلی کار مورد نیاز برای جستجوی ترتیبی در فایلی با

N رکورد با n متناسب است.

حداکثر n مقایسه و به طور میانگین n/2 مقایسه مورد نیاز است.


بهبود کارایی جستجوی ترتیبی با بلوک بندی رکورد ها

  • در این روش با خواندن بلوکی از چند رکورد به یکباره و سپس پردازش آن بلوک از رکورد ها در حافظه , کارایی جستجو را بهبود می بخشیم.


  • گرچه بلوک بندی می تواند منجر به بهبود چشمگیر کارایی شود , مرتبه عملکرد جستجوی ترتیبی را تغییر نمی دهد.

  • زمان جستجو هنوز o(N) است و با اندازه فایل نسبت مستقیم دارد.


  • بلوک سازی , اختلاف میان سرعت دستیابی در حافظه و زمان دستیابی در حافظه ثانویه را نشان می دهد.

  • بلوک سازی تعداد مقایسه هایی را که باید در حافظه انجام شود تغییر نمی دهدو احتمالا مقدار داده های انتقال یلفته میان حافظه و دیسک را افزایش می دهد.


  • با بلوک سازی در زمان صرفه جویی می شود زیرا مقدار جستجو کاهش می یابد.

  • بدین ترتیب تفاضل میان زمان جستجو و زمان عملیات دیگر , نظیر انتقال داده ها با دستیابی به حافظه , نیروی محرکه طراحی ساختار فایل است.


ابزار های یونیکس برای پردازش ترتیبی

متداول ترین ساختار فایل که در یونیکس وجود دارد یک فایل اسکی با کاراکتر خط جدید به عنوان فاصل رکورد ها و در صورت امکان , فضای خالی به عنوان فاصل فیلد هاست.


دستیابی مستقیم ترتیبی

  • هنگامی که بتوانیم مستقیما به ابتدای یک رکورد برویم و آن را به حافظه وارد کنیم به آن رکورد دستیابی مستقیم داریم.


رکورد های سرایند ترتیبی

هر فایل دارای یک رکورد سرایند است که حاوی سه مقدار است:

  • اندازه سرایند

  • تعداد رکورد ها

  • اندازه هر رکورد


دستیابی به فایل و سازمان دهی فایل ترتیبی

  • رکورد های طول متغییر و رکورد های طول ثابت مربوط به بحث سازمان دهی فایل و دستیابی مستقیم و دستیابی ترتیبی مربوط به مبحث دستیابی به فایل می باشد.

  • تعامل میان ساز مان دهی فایل و دستیابی به فایل , بسیار سودمند است.


داده های انتزاعی برای دستیابی به فایل

این مفهوم که نیازی نیست داده ها را به صورتی که در یک رسانه خاص ظاهر شده اند در نظر بگیریم , در عملیات مدل دادهای انتزاعی مستتر است.


سرآیند ها و فایل های خود توصیف گر فایل

به فایلی که در رکورد سرایند آن اطلاعات بیشتری در باره ساختار فایل وجود داشته باشد فایل خود توصیف گر می گویند.


اطلاعاتی که میتوان در سرآیند نوشت

  • نامی برای هر فیلد

  • طول هر فیلد

  • تعداد فیلد های هر رکورد


عوامل موثر بر قابلیت حمل نوشت

  • اختلاف میان سیستم های عامل

  • اختلاف میان زبان ها

  • اختلاف در معماری ماشین


توافق بر سر رمز گذاری دودویی نوشت

  • IEEE مشخصات فرمت استاندارد را برای اعداد ممیز شناور 32 بیتی , 64 بیتی و 128 بیتی و برای اعداد صحیح 8 بیتی , 16 بیتی و 32 بیتی وضع کرده است.


یونیکس و قابلیت حمل نوشت

یونیکس ابزاری به نام dd فراهم آورده است.گرچه dd اساسا برای کپی کردن داده ها از روی سیستم های یونیکس بر روی نوار و بالعکس در نظر گرفته شده است, می توان آن را برای تبدیل از منبع فیزیکی دیگری به کار برد.


مواردی که ابزار نوشتdd در اختیار قرار می دهد:

  • تبدیل از یک اندازه بلوک به دیگری

  • تبدیل رکورد های طول ثابت به طول متغییر و بالعکس

  • تبدیل اسکی به ابسدیک و بالعکس

  • تبدیل همه کاراکتر ها به حروف کوچک یا حروف بزرگ

  • تبادل هر جفت دلخواه از بایتها


فصل ششم نوشت

سازمان دهی فایل ها برای کارایی


دلایل فشرده سازی فایل ها نوشت

  • فایل های کوچکتر نیاز به حافظه کمتری دارند که باعث صرفه جویی می شود.

  • سریعتر انتقال داده می شوند که زمان دسترسی را کوتاهتر می کند یا به جای آن می توان با همان زمان دسترسی از پهنای باند کمتر و ارزانتر استفاده کرد.

  • به صورت ترتیبی سریعتر قابل پردازش هستند.


تکنیک های فشرده سازی نوشت

  • استفاده از یک نماد گذاری جدید

  • حذف دنباله های تکراری

  • تخصیص کد های با طول متغییر


استفاده از یک نماد گذاری جدید نوشت

معایب فشرده سازی با رمز

  • با استفاده از رمز گذاری دودویی فایل به وسیله اشخاص قابل خواندن نیست.

  • زمانی که بخواهیم نامی را به فایلمان اضافه کنیم زمانی را برای رمز گذاری از دست خواهیم داد.

  • باید ماژول های رمز گذاری و رمز گشایی را در تمام نرم افزار هایی که فایل را


حذف دنباله های تکراری نوشت

بر خلاف فشرده سازی نمادی رمز گزاری طول رانش مقدار معینی از صرفه جویی در فضا را تضمین نمی کند.


تخصیص کد های با طول متغییر نوشت

کد های با طول متغییر عموما بر اساس این اصل به وجود آمده اند که بعضی مقادیر بیش از بقیه به کار می روند بنابراین کد این مقادیر باید فضای کمتری اشغال کند.

کد های با طول متغییر فرم دیگری از کاهش زواید است.


روش های فشرده سازی بر گشت ناپذیر نوشت

  • نوع دیگری از فشرده سازی به نام فشرده سازی بر گشت ناپذیر بر اساس این اصل عمل می کند که مقداری از اطلا عات را می توان نادیده گرفت.


فشرده سازی در یونیکس نوشت

  • هم یونیکس برکلی و هم system v روال های فشرده سازی فراهم می کنند که بسیار مورد استفاده قرار می گیرد .system v روالهایی دارد به نام packو unpack که از کد های هافمن به صورت بایت به بایت استفاده می کنند.


باز یابی فضای داخل فایلها نوشت

  • با داده های اضافی چه باید کرد؟

  • آنها را در انتهای فایل قرار داد و اشاره گری ایجاد کرد تا از مکان اولیه رکورد به بقیه آن اشاره کند.

  • کل رکورد را در انتهای فایل دوباره نوشت.


انواع تغییرات در فایل نوشت

  • اضافه کردن رکورد

  • بهنگام سازی رکورد

  • حذف رکورد


حذف رکورد و متراکم کردن فایل نوشت

هر راهبرد حذف رکورد باید راهی را فراهم کند تا رکورد های حذف شده شناخته شوند.یک روش ساده قرار دادن یک علامت خاص در هر رکورد حذف شده است.


حذف رکورد های با طول ثابت برای بازیابی پویای فضا

متراکم کردن فایل آسان ترین و رایج ترین روش های بازیابی فضا است.برای حذف رکورد ها و استفاده دوباره از فضای آزاد شده باید بتوانیم دو مسئله را تضمین کنیم

  • رکورد های حذف شده به طور خاصی علامت گذاری شوند.

  • بتوانیم محلی را که توسط رکورد های حذف شده اشغال شده بود را پیدا کنیم.


مواردی که برای باز یابی سریع فضا به آنها نیاز داریم:

  • راهی که بلا فاصله بدانیم حفره های خالی در فایل وجود دارد یا نه؟

  • راهی که اگر چنین حفرهای وجود دارد سریع به آن پرش کنیم.


راه حل: به آنها نیاز داریم:

  • استفاده از لیست های پیوند برای پیوند دادن تمام رکورد ها هر دو نیاز فوق را بر آورده می کند.

  • لیست پیوندی ساختمان داده ای است که هر گره آن به گره بعدی اشاره می کند.


پشته ها به آنها نیاز داریم:

آ سان ترین راه برای کار کردن با لیست استفاده از آن به صورت پشته است.

پشته لیستی است که در آن اضافه و حذف گرهها از یک انتهای لیست انجام می شود.


برای حل دو مسئله مر بوط به دسترسی سریع به فضای قابل بازیابی رکورد های حذف شده نیاز است که:

  • بدانیم که آیا حفره های خالی در فایل وجود دارد.

  • اگر چنین حفره ای وجود دارد مستقیما به آن پرش کنیم.


برای باز یابی رکورد ها از طریق لیست پیوندی به موارد زیر نیاز داریم:

  • راهی برای پیوند دادن رکورد های حذف شده و تبدیل آنها به یک لیست.

  • الگوریتمی برای اضافه کردن رکورد های حذف شده به لیست.

  • الگوریتمی برای پیدا کردن و خارج کردن یک رکورد از لیست, هنگامی که می خواهیم از آن رکورد استفاده کنیم.


پراکندگی حافظه لیست پیوندی به موارد زیر نیاز داریم:

  • فضای تلف شده در داخل یک رکورد پراکندگی داخلی نامیده می شود.

  • اگر با رکورد های طول ثابت کار کنیم برای به حداقل رساندن پراکندگی داخلی باید حداقل طول رکورد را انتخاب کنیم.


راهبرد های انتخاب جا لیست پیوندی به موارد زیر نیاز داریم:

  • اولین جای مناسب(first fit)

  • مناسب ترین جا(best fit)

  • نامناسب ترین جا(worst fit)


Best fit
اشکال روش لیست پیوندی به موارد زیر نیاز داریم: best fit

  • زمان پردازش اضافی

  • وجود پراکندگی خارجی


Worst fit
اشکال روش لیست پیوندی به موارد زیر نیاز داریم:worst fit

در این روش پراکندگی داخلی زیاد است.


جستجوی دو دویی در برابر جستجوی ترتیبی

  • جستجوی دودو یی فایلی با n رکورد حد اکثر به

    [log n]+1 مقایسه نیاز دارد .

  • اما جستجوی ترتیبی فایلی مشابه حداکثر به n

    مقایسه و به طور متوسط به n/2 مقایسه نیاز دارد


محدودیت های جستجوی دودویی و مرتب سازی داخلی

  • جستجوی دودویی نیاز به بیش از یک یا دو دسترسی به دیسک دارد.

  • نگهداری یک فایل به صورت مرتب شده خیلی گران تمام می شود.

  • مرتب سازی داخلی تنها در مورد فایل های کوچک عملی است.


مرتب سازی کلیدی سازی داخلی

  • مرتب سازی کلیدی که گاهی به آن مرتب سازی با بر چسب می گویند بر این ایده استوار است که وقتی فایلی را در حافظه مرتب می کنیم , تنها چیزی که به آن نیاز داریم کلید رکورد ها است.


فصل هفتم سازی داخلی

شاخص گذاری


شاخص چیست؟ سازی داخلی

منظور از شاخص مجموعه اي از عناصر شاخص است كه به صورت جفت هاي(x , a ) از داده هايي با طول ثابت است كه به طور فيزيكي كنار هم قرار دارند . x نشانگر كليد و a نشانگر اطلاعات همراه با كليد است .


  • فرض مي كنيم خود شاخص انقدر بزرگ است كه تنها بخش كوچكي از آن را مي توان در يك لحظه در حافظه اصلي نگه داشت . بنا بر اين شاخص بايد در يك حافظه جانبي ذخيره شود . نوع حافظه جانبي دستگاه هايي با دستيابي شبه تصادفي است كه زمان دستيابي يا انتظار آنها نسبتا طولاني است .


  • هدف , پيدا كردن روش كلي براي ذخيره و بازيابي داده ها در سيستم هاي فايل بزرگ بود كه امكان دسترسي با حداقل زمان را فراهم سازد . مك كرايت در سال 1972 اولين مقاله خود را در رابطه با درخت Bمنتشر كرد . پس از آن درخت B به قدري گسترش يافت كه كومر اينگونه نوشت : « درخت B , به طور غير رسمي ساختار استانداردي براي شاخص بندي در بانكهاي اطلاعاتي به شمار مي رود» .


شاخص چند سطحی و بازيابي داده ها در سيستم هاي فايل بزرگ بود كه امكان دسترسي با حداقل زمان را فراهم سازد . مك كرايت در سال 1972 اولين مقاله خود را در رابطه با درخت


مزیت شاخص ها و بازيابي داده ها در سيستم هاي فايل بزرگ بود كه امكان دسترسي با حداقل زمان را فراهم سازد . مك كرايت در سال 1972 اولين مقاله خود را در رابطه با درخت

  • بدون دستکاری محتویات فایل ,به فایل نظم و تر تیب می بخشند.


  • لازمه استفاده از الگوريتم جستجوي دودويي اين است كه بلاك هاي داده اي به طور پيوسته ذخيره شده باشند . اگر بلاك ها به طور ناپيوسته ذخيره و به هم پيوند شده باشند , يافتن آدرس بلاك مياني نا ممكن است .


  • با استفاده از تكنيكهاي ابتدايي ساختمان داده ها به آساني مي توانيم گره هايي را درست كنيم كه شامل فيلد هاي پيوندي چپ و راست باشند و به اين ترتيب درخت جستجوي دودويي را به صورت يك ساختار پيوندي ايجاد كنيم .


  • شكل زير را در نظر بگيريد : ساختمان داده ها به آساني مي توانيم گره هايي را درست كنيم كه شامل فيلد هاي پيوندي چپ و راست باشند و به اين ترتيب درخت جستجوي دودويي را به صورت يك ساختار پيوندي ايجاد كنيم .


  • مشكل درخت جستجوي دودويي اين است كه براي شاخص بندي روي ديسك سرعت لازم را ندارد . اما مشكل مهم ديگر درخت جستجوي دودويي , وجود نداشتن يك راهبرد موثر براي موازينه كردن درخت است براي حل اين مشكلات درختهاي AVL و در ختهاي دوديي صفحه صفحه به ميان آمدند


کاتالوگ کارتی چیست؟ كه براي شاخص بندي روي ديسك سرعت لازم را ندارد . اما مشكل مهم ديگر درخت جستجوي دودويي , وجود نداشتن يك راهبرد موثر براي موازينه كردن درخت است براي حل اين مشكلات درختهاي

مجموعه ای از سه شاخص است که هر کدام از یک فیلد کلید متفاوت استفاده می کنند وهمه آنها از یک شماره کاتالوگ یکسان به عنوان فیلد آدرس بهره می گیرند.


مقایسه سرعت دسترسی كه براي شاخص بندي روي ديسك سرعت لازم را ندارد . اما مشكل مهم ديگر درخت جستجوي دودويي , وجود نداشتن يك راهبرد موثر براي موازينه كردن درخت است براي حل اين مشكلات درختهاي

شاخص باعث می شود تا رکورد ها را به وسیله کلید آنها با سرعت زیادی ÷یدا کنیم .سرعت این کار در مقایسه با حالتی که جستجوی دودویی در یک فایل مرتب موجود در حافظه انجام می شود بیشتر است.


عملیات مورد نیاز برای نگهداری فایل شاخص بندی شده

  • ایجاد فایل داده ها و شاخص خالی اولیه

  • باز کردن فایل شاخص در حافظه ,قبل از به کار گیری آن

  • نوشتن فایل شاخص بر روی دیسک , پس از به کار گیری آن

  • افزودن رکورد هایی به فایل داده ها

  • حذف رکورد ها از فایل داده ها

  • بهنگام کردن رکورد ها در فایل داده ها

  • بهنگام کردن شاخص برای انعکاس تغییرات به عمل آمده در فایل داده ها


ایجاد فایل داده ها و شاخص خالی اولیه

دو فایل باید ایجاد شود:

  • فایل داده ها برای نگهداری اشیائ داده ای

  • فایل شاخص برای نگهداری کلید اولیه


باز کردن فایل شاخص در حافظه ,قبل از به کار گیری آن

بازیابی و ذخیره اشیاء توسط کلاس io buffer انجام می شود.


نوشتن فایل شاخص بر روی دیسک , پس از به کار گیری آن

یکی از خطرات مربوط به خواندن شاخص و نوشتن آن در پایان برنامه آن است که اگر برنامه متوقف شود کپی شاخص که بر روی دیسک است اعتبار ندارد.


برنامه باید حداقل دو مکانیسم زیر را برای محافظت از خطا داشته باشد

  • باید مکانیسمی باشد که به برنامه اطلاع دهد که شاخص در چه زمانی از رده خارج است

  • اگر برنامه تشخیص دهد که شاخص از رده خارج است باید به روالی دستیابی داشته باشد که شاخص را از فایل داده ها بازسازی کند.


افزودن رکورد هایی به فایل داده ها را برای محافظت از خطا داشته باشد

برای افزودن رکورد ها باید همه ورودی هایی را که کلید آنها پس از کلید ورودی جدید است , جابجا کنیم تا پس از این ورودی قرار گیرند.


حذف رکورد ها از فایل داده ها را برای محافظت از خطا داشته باشد

بر خلاف یک فایل داده ای مرتب برای حفظ ترتیب رکورد ها نیاز به جابجایی آنها نیست.به وسیله کلید بدون اختلال در جای رکورد ها می توانیم با سرعت زیادی به رکورد ها دسترسی پیدا کنیم.


بهنگام کردن رکورد ها در فایل داده ها

بهنگام سازی به دو صورت انجام می شود:

  • بهنگام سازی تعداد فیلد و کلید را تغییر می دهد

  • بهنگام سازی بر فیلد کلید تا ثیر نمی گذارد.


بهینه سازی ها

شیوه استاندارد برای انجام این کار افزودن نشانگری به شی شاخص استتا نشان دهد که چه زمانی تغییر کرده است.

هنگامی که رکورد به حاففظه منتقل می شود به این نشانگر ارزش false داده می شود.و هرگاه رکورد شاخص توسط متد های remove و insert تغغییر داده شد به آن ارزش true داده می شود.


شاخص های بزرگ ها

اگر شاخص بیش از حد بزرگ باشد در آن صورت دستیابی به شاخص و دستکاری آن باید در حافظه ثانویه صورت گیرد.


معایب دستیابی به شاخص روی دیسک ها

  • جستجوی دودویی شاخص به جای آنکه با سرعت حافظه صورت پذیرد نیاز به چندین پیگرد دارد.

  • ترتیب مجدد شاخص که از حذف یا افزودن رکورد ناشی می شود نیاز به جابجا کردن یا مرتب سازی رکورد ها در حافظه ثانویه دارد که این کار بسیار گرانتر از اجرای این عملیات در حافظه است.


هرگاه شاخص در حافظه جا نشود باید از موارد زیر استفاده کرد:

  • در صورتی که سرعت دستیابی در اولویت قرار داشته باشد از درهم سازی استفاده شود

  • در صورتی که به هر دو نوع دستیابی کلیدی و ترتیبی نیاز باشد از یک شاخص چند سطحی با ساختار درختی نظیر درخت B استفاده می شود.


نکته 1: از موارد زیر استفاده کرد:

  • شاخص ساده استفاده از جستجوی دودویی را برای دستیابی کلیدی به یک رکورد در فایلی که طول رکورد های آن متغییر است امکان پذیر می سازد.


نکته 2: از موارد زیر استفاده کرد:

  • اگر ورودی های شاخص بسیار کوچکتر از رکورد های فایل داده ها باشد مرتب سازی و نگهداری شاخص نسبت به مرتب سازی و نگهداری فایل داده ها زمان کمتری می برد.


نکته 3: از موارد زیر استفاده کرد:

  • اگر در فایل داده ها رکورد هایی وجود دارند که در جای خود مستقر هستند با استفاده از شاخص می توان ترتیب کلید ها را بدون جابجایی رکورد های داده ها عوض کرد.


افزودن رکورد از موارد زیر استفاده کرد:

  • هنگامی که شاخص ثانویه ای موجود باشد , افزودن یک رکورد به فایل به معنای افزودن یک ورودی شاخص ثانویه است.


نکته از موارد زیر استفاده کرد:

  • اختلاف مهم شاخص اولیه با ثانویه آن است که شاخص ثانویه می تواند حاوی کلید های دوگانه باشد.


حذف رکورد ها از موارد زیر استفاده کرد:

  • حذف یک رکورد به معنای حذف تمامی آدرس های آن رکورد در سیستم فایل است.


بهنگام سازی رکورد ها از موارد زیر استفاده کرد:

  • بهنگام سازی فایل داده ها فقط هنگامی شاخص ثانویه را تحت تا ثیر قرار می دهد که کلید اولیه یا ثانویه تغییر یابند


در بهنگام سازی سه وضعیت پیش می آید:

  • بهنگام سازی با عث تغییر کلید ثانویه می شود

  • بهنگام سازی باعث تغییر کلید اولیه می شود

  • بهنگام سازی محدود به فیلد های دیگر


ساختار های شاخص ثانویه دو مشکل دارند

  • هر بار که رکورد جدیدی به فایل افزوده می شود باید فایل شاخص را دوباره مرتب کنیم.

  • اگر کلید های ثانویه وجود داشته باشد فیلد کلید ثانویه برای هر ورودی تکرار می شود.


انقیاد دارند

منظور از انقیاد این است که کلید در چه نقطه ای به آدرس فیزیکی رکورد مربوط به خود می پیوندد



نکته اولیه به آدرس در زمان ایجاد شدن فایلها رخ می دهد.ولی کلید های ثانویه در زمان استفاده به آدرس خود پیوند می یابند.

  • عیب انقیاد مستقیم در فایل آن است که سازمان دهی دوباره فایل داده ها باید منجر به اصلاح همه فایل های شاخص انقیاد یافته شود.


انقیاد درون داده ها هنگامی بهترین نتیجه را می دهد که:

  • فایل داده ها ایستا یا تقریبا ایستا باشد و نیاز کمی به حذف , اضافه یا بهنگام سازی داده ها داشته باشد.

  • کارایی سریع طی بازیابی واقعی , از اولویت بالایی بر خوردار است.


فصل هشتم بهترین نتیجه را می دهد که:

پردازش کمک ترتیبی و مرتب سازی فایل های بزرگ


عملیات بهترین نتیجه را می دهد که:

  • عملیات کمک ترتیبی شامل پردازش هماهنگ دو یا چند لیست ترتیبی برای ایجاد یک لیست خروجی است.

  • روال زير تطابق بين دو ليست را نشان مي‌دهد.


In +match (char * List1Name, char * List2 name, char * outpute listName)

{

Int More items;

Initialize List (1, List Name)

Initialize List (2, List Name)

Initialize output (Output List Name)

More items; = next ItemINList (1)86 Next ItemInList (2)


While (More items) outpute listName)

{

If (Item (1) < Item (2))

More items= next Item List (1);

Else If Item (1) = Item (2)

{

Process item (1) ; // Match found

More items= next ItemInList;

}

Else

More items = next ItemInList(2)

}

finishup();

Return 1;

}


ترتیب روال همخوانی outpute listName)

  • آماده سازی

  • دستیابی به عضو بعدی لیست

  • همزمان سازی

  • کنترل شرایط پایان فایل

  • تشخیص خطا ها


الگوریتمی برای ادغام outpute listName)k طرفه

تصمیم گیری در این باره که کدامیک از دو عضو ورودی دارای مقدار کمینه است , قرار دادن آن عضو در خروجی و سپس حرکت به طرف جلو


الگوریتمی که می توان برای ادغام outpute listName)k طرفه در نظر گرفت بدینگونه است :

  • Int minitem = minindex (item , k )

  • Process item ( minitem),

  • For (i=0 ; i<k ; i++ )

  • If ( item (minitem) = = item(i)

  • More items[i] = nextiteminlist(i);


مراحل مرتب سازی در حافظه outpute listName)

  • خواندن فایل از روی دیسک به حافظه

  • مرتب سازی رکورد ها با استفاده از یک روال مرتب سازی استاندارد

  • نوشتن دوباره فایل روی دیسک


هرم درختی دودویی با ویژگی های زیر است:

  • هر گره دارای کلیدی است که آن کلید بزرگتر یا مساوی کلید واقع در گره پدرش است.

  • یک درخت دودویی کامل است.

  • بخاطر ویژگی های 1و2 در نگهداری درخت می توان آرایه ای اختصاص داد که در آن گره ریشه اندیس 1 و اندیس های فرزندان چپ و راست گره i به ترتیب برابر با2i,2i+1 باشند .



بازیابی ترتیبی کلید ها به صورت زیر انجام می شود

  • تعیین مقدار کلید موجود در اولین موقعیت هرم

  • انتقال بزرگترین مقدار هرم به اواین محل آن و کم کردن یک واحد از تعداد عناصر

  • ترتیب دوباره هرم


برنامه حذف زیر انجام می شود

char * Heap::Remove ( ) }// remove the smallest element , reorder the Heap

// put the smallest value into 'val' for use in return

char * val = HeapArray [1];

// put largest value into root

HeapArray [1] = HeapArray [NumElements];

// decrease the number of elements

NumElements - - ;

// reorder the heap by exchanging and moving down

int k = 1 ; //node of heap that contains the largest value

int newK ; // node to exchange with largest value

while (2 * K <= NumElements ) //K has at least one child

{ // set nemK to the index of smallest child of K

if Compare (2 * k , 2 * K + 1) < 0 ) newK = 2 * K;

else newK = 2 * K + 1 ;

if (Compar (K,newK) < 0) break ; // in order

Exchange (K,newK ); // K and newK out of order

K = NEWk ; // continue down the tree

}

return val ; }


فايل با ساختار درخت زیر انجام می شودK-D

  • اين فايل گونه اي از ساختار درخت جستجوي دودويي است . اما تفاوت فايل با ساختار درخت K-D با فايل با ساختار درخت جستجوي دودويي دراين است كه فيلد كليد در سطوح مختلف يكسان نيست .

  • به طوركلي ، تعداد درخت هاي K-D براي يك مجموعه از ركوردها مي تواند بيش از يك باشد .انتخاب يك درخت از درختهاي ممكن بستگي به نظمي دارد كه براساس آن مي خواهيم ركوردها را درج كنيم .


مثالي از درخت زیر انجام می شودK-D


مرتب سازی کلیدی دو نارسایی دارد: زیر انجام می شود

  • هنگامی که کلید ها مرتب سازی می شوند باید زمان زیادی صرف این موارد شود ,پیگرد هر رکورد در رکورد های مرتب شده,خواندن هر رکورد به حافظه و سپس نوشتن آن روی فایل مرتب شده.

  • در مرتب سازی کلیدی اندازه فایلی که قابل مرتب سازی است به تعداد جفت کلید/اشاره گری که در حافظه جا شود محدود می شود.


مراحل مرتب سازی زیر انجام می شود

  • خواندن همه رکورد ها به حافظه برای مرتب سازی و تشکیل رانش ها

  • نوشتن رانش های مرتب شده روی دیسک


مراحل ادغام زیر انجام می شود

  • خواندن رانش های مرتب شده به حافظه برای ادغام

  • نوشتن فایل مرتب شده بر روی دیسک


راهکارهای کاهش زمان زیر انجام می شود

  • تخصیص سخت افزار بیشتر نظیر دیسک گردان و حافظه

  • اجرای ادغام در بیش از یک مرحله

  • افزایش طول رانش های مرتب شده از لحاظ الگوریتمی

  • یافتن راههایی برای همپوشانی عملیات i/o


به کمک سخت افزار زیر انجام می شود

  • افزایش مقدار حافظه

  • افزایش تعداد دیسک گردان ها

  • افزایش تعداد کانال های i/o


ابزار هایی برای بهبود کارایی مرتب سازی خارجی

  • برای مرتب سازی درون حافظه ای از مرتب سازی هرمی در یک رانش استفاده می کنیم

  • استفاده از حد اکثر حافظه ممکن

  • اگر تعداد رانش های اولیه بزرگ باشد از ادغام چند مرحله ای استفاده می کنیم

  • استفاده از گزینش جایگزینی برای تشکیل رانش های اولیه

  • از بیش از یک دیسک گردان و کانال io استفاده کنیم


مراحل مرتب سازی روی نوار مرتب سازی خارجی

  • تقسیم فایل مرتب نشده به رانش های مرتب شده

  • ادغام رانش ها به یک فایل مرتب شده


راهکارهای کاهش زمانهای تاخیر چرخشی و پیگرد

  • با اجرای ادغام در بیش از یک مر حله

  • افزایش اندازه رانش های مرتب شده اولیه


مقایسه ی زمان های دستیابی مورد نیاز برای مرتب سازی 80 میلیون رکورد با استفاده از مرتب سازی حافظه ای و گزینش جایگزینی و یک ادغام دو جانبه پس از هریک.


فصل نهم نیاز برای مرتب سازی 80 میلیون رکورد با استفاده از مرتب سازی حافظه ای و گزینش جایگزینی و یک ادغام دو جانبه پس از هریک.

شاخص بندی چند سطحی و درختهای B


اهداف فصل نیاز برای مرتب سازی 80 میلیون رکورد با استفاده از مرتب سازی حافظه ای و گزینش جایگزینی و یک ادغام دو جانبه پس از هریک.

  • توسعه ی درخت های B برای حل مسأله هایی که برای آن ها طراحی شده اند.

  • نگاهی به سایر ساختارهای درختی که ممکن است در حافظه های جانبی مورد استفاده قرار گیرند، مثل درخت AVL صفحه بندی شده (paged).

  • معرفی شاخص های چند رکوردی و چند سطحی و ارزیابی سرعت عمل جستجو.

  • درک ویژگی های مهمی که توسط درخت های B پردازش می شوندو بررسی اهمیت آن ها در حافظه های جانبی.

  • طراحی شیء گرای درخت های B

  • تعریف کلاس BTreeNode، نمایش گره های درخت های B در حافظه.

  • تعریف کلاس BTree، نمایش کامل درخت های B و تمام اعمال آن ها.

  • تشریح پیاده سازی اصول عملیات درخت های B

  • معرفی بافردهی صفحه ای و درخت های B مجازی.

  • توصیف الگوریتم های اصلی درخت B، مثل آن هایی که برای ساختن درخت B* و درخت B با رکوردهای طول متغیر به کار گرفته شده اند.



نکته واقعی:حافظه کر

  • مشکل اصلی نگه داشتن شاخص در حافظه جانبی این است که دسترسی به حافظه جانبی کند است


مشکل قبل به دو مشکل تقسیم می شود: واقعی:حافظه کر

  • جستجو بر حسب شاخص باید سریع تراز جستجوی دودویی باشد.

  • درج و حذف باید با سرعت جستجو کردن انجام شود.


راهکار مشکل اول واقعی:حافظه کر

  • استفاده از درخت های دودویی صفحه ای

در درخت دودويي صفحه اي سعي مي كند با قرار دادن چندين گره دودويي در يك صفحه ديسك مشكل را حل كند . به اين ترتيب كه با يك دستيابي به ديسك بخش بزرگي از درخت را مي توان به دست آورد . ب شاخص هاي صفحه اي مي توان در بين تعداد زيادي كليد , با تعداد كمي دستيابي به ديسك كليدي را جستجو كنيم .


شكل زير نمونه اي از درخت دودويي صفحه اي را نشان مي دهد.


راهکار مشکل دوم صفحه اي را نشان مي دهد.

  • استفاده از درخت موازنه شده


دو مزیت درختهای صفحه اي را نشان مي دهد.AVL

  • با تعیین کردن حداکثر تفاوت مجاز در ارتفاع هر دو زیر درخت این درخت ها حداقل کارایی را در جستجو تضمین می کنند.

  • برای اینکه هنگام درج در درخت AVL ویژگی خود را حفظ کند مستلزم چهار نوع چرخش است.


تاریخچه درخت صفحه اي را نشان مي دهد.B

داگلاس کومر، در مقاله ی تحقیقاتی عالی خود،تحت عنوان " درخت B درهمه جا "از رقابت میان صاحبان صنایع کامپیوتر و گروه های تحقیقاتی مستقل در اواخر دهه ی 1960 صحبت می کند. هدف، پیدا کردن روشی کلی برای ذخیره و بازیابی داده ها در فایل بزرگ بود، که امکان دسترسی سریع با حداقل زمان را فراهم کند. در میان رقبا، بایر و پ. مک کرایت بودند که برای شرکت بویینگ کار می کردند. در سال 1972 آن ها مقاله ای به نام " سازمان دهی و نگهداری شاخص های مرتب شده ی بزرگ " منتشر کردند که درخت B را به جهان معرفی کرد.


درخت صفحه اي را نشان مي دهد.B

هر گره درخت B یک رکورد شاخص است .هر کدام از این رکورد ها تعداد یکسانی از جفتهای کلید – آدرس دارند که مرتبه درخت نام دارد.


متد جستجو در درخت صفحه اي را نشان مي دهد.B

  • به صورت تکراری عمل می کنند.

  • در دو مر حله عمل می کنند : به صورت یک در میان روی کل صفحات.


مراحل درج کردن صفحه اي را نشان مي دهد.

  • جستجو تا سطح برگ با استفاده از متد FINDLEAF قبل از تکرار.

  • درج تشخیص سرریز و تقسیم کردن در مسیر رو به بالا.

  • ایجاد یک ریشه جدید , در صورتی که ریشه فعلی تقسیم شده است.


خواص یک در خت صفحه اي را نشان مي دهد.B از مرتبه m

  • هر صفحه حد اکثر m فرزند دارد.

  • هر صفحه بجز ریشه ها و برگها حداقل [m/2]فرزند دارد.

  • ریشه حد اقل دو فرزند دارد.

  • تمام برگها در یک سطح قرار دارند.

  • سطح برگها, یک شاخص کامل و مرتب شده از داده های مر بوط به درخت را ایجاد می کند.


خواص درختهای صفحه اي را نشان مي دهد.B*

  • هر صفحه حد اکثر m فرزند دارد.

  • هر صفحه بجز ریشه حداقل[(2m-1)/3] فرزند دارد.

  • ریشه حداقل دو فرزند دارد.

  • تمام برگها در یک سطح قرار دارند.


روش صفحه اي را نشان مي دهد.LRU

  • این روش زمانی کارساز است که احتمال در خواست صفحاتی که در بافر است از درخواست احتمال صفحاتی که در بافر وجود ندارند بیشتر باشد.


ارزیابی سرعت درخت صفحه اي را نشان مي دهد.B

درخت B امکان بازیابی، درج و حذف کردن کلیدها را درزمان متناسب با log K I یا بهتر از آن فراهم می کند، I اندازه ی شاخص را نشان می دهد و K یک عدد طبیعی وابسته به دستگاه است که اندازه ی صفحه را نشان می دهد، به طوری که نگهداری و دستیابی، نزدیک به حالت بهینه باشد.


Page fault
PAGE FAULT صفحه اي را نشان مي دهد.

  • فرایند دستیابی به دیسک برای خواندن صفحه ای که در بافر وجود ندارد.


دو علت برای نقص صفحه وجود دارد: صفحه اي را نشان مي دهد.

  • هیچگاه تا کنون از آن صفحه استفاده نکرده ایم.

  • آن صفحه قبلا در بافر بوده است اما صفحه جدیدی جایگزین آن شده است.


فصل دهم صفحه اي را نشان مي دهد.

دستیابی به فایل های ترتیبی شاخص دار و درختهای B+


اهداف فصل صفحه اي را نشان مي دهد.

  • آشنایی با فایل های ترتیبی شاخص دار.

  • شرح عملیات روی مجموعه ای ترتیبی از بلوک ها که رکوردها را به ترتیب توسط کلید ذخیره می کنند.

  • چگونه می توان یک مجموعه شاخص را روی یک مجموعه ی ترتیبی ایجاد و یک ساختار فایل ترتیبی شاخص دار ایجاد نمود.

  • آشنایی با کاربرد درخت B برای حفظ مجموعه شاخص و در نتیجه آشنایی با درخت B+ و درخت B+ پیشوندی ساده (prefix B+ tree).

  • چگونه مجموعه شاخص درخت B در یک درخت B+ پیشوندی ساده، می تواند از مرتبه ی متفاوتی بوده، تعداد متغیری از جدا کننده ها (separators) را نگهداری می کند.

  • مقایسه نقاط ضعف و قوت درخت های B+، درخت های B+ پیشوندی ساده و درخت های B.


فايل با ساختار پايل يا برهم : صفحه اي را نشان مي دهد.

  • اين فايل داراي ساختاري فاقد هر گونه نظم است . يعني ركوردها بر اساس مقادير هيچ نوع كليدي مرتب نشده اند و در بهترين حالت نظم بين ركوردها ، نظمي زماني است .


  • فايل ترتيبي كه بر دو نوع فايل ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .


فايل ترتيبي شاخص دار : ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .

  • اين ساختار براي تسريع واكشي تك ركورد از يك فايل ترتيبي طراحي و ايجاد مي شود . از شاخص براي تسريع واكشي اطلاعات استفاده مي شود .


فايل چند شاخصي : ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .

  • اين ساختار چنان است كه پديده عدم تقارن در آن وجود ندارد ، زيرا روي تعدادي و حتي تمام صفات كليد مي توان شاخص ايجاد كرد .


ساختار فايل مستقيم : ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .

  • در اين ساختار درج و واكشي ركوردها با استراتژي خاصي صورت مي گيرد . به طوريكه يكي از صفات خاصه به عنوان كليد در نظر گرفته شده ، سيستم فايل آن را پردازش مي كند و حاصل آدرسي است كه ركورد بايد در آن جاي گيرد .


ساختار فايل چند حلقه اي : ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .

  • در اين ساختار، ركوردهاي مختلف در حلقه هايي تعويه مي شوند به طوريكه هر عنصر حلقه ، با شروع از سرآيند ، به عنصر بعدي و آخرين عنصر به سرآيند نشانه مي رود . اين ساختار حجم بالايي از نشانه روها را دارد كه مديريت آن مهم ترين مسئله به نظر مي رسد .


فايل ترتيبي با ساختار مستقيم ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .

  • در اين ساختار با استفاده از نشانوند جستجو مي توان از يك نوع تابع درهم ساز براي دستيابي به فايل استفاده كرد . تابع درهم ساز ، پس از اعمال روي مقادير نشانوند جستجو ، براي هر ركورد عددي را به دست مي دهد كه نشان دهنده موقعيت نسبي ركورد در فايل است كه همان آدرس نسبي ركورد (RRN) است . سيستم فايل با داشتن RRN و طول ركورد و نيز آدرس شروع فايل (BOF)‌ آدرس محل درج ركورد را به دست مي دهد .نشانوند جستجوتابع درهم سازRRN است

  • آدرس ركورد با استفاده از فرمول زير حاصل مي شود :

  • آدرس ركورد = آدرس شروع فايل + ( RRN – 1 ) * R


تابع درهم ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .ساز

نشانوند جستجو

RR

  • آدرس ركورد با استفاده از فرمول زير حاصل مي شود :

  • آدرس ركورد = آدرس شروع فايل + ( RRN – 1 ) * R


دستیابی شاخص دار ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .

  • فایل را می توان به عنوان مجمو عه ای از کلید ها در نظر گرفت که توسط کلید شاخص بندی شده اند.


دستیابی ترتیبی ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .

  • به فایل می توان دستیابی ترتیبی داشت (برای رکورد های پیوسته – بدون پیگرد) و رکورد ها را به ترتیب توسط کلید باز گرداند.


مجموعه ترتیبی ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .

  • مجموعه ای از رکورد ها که به طور فیزیکی توسط کلید ها مرتب شده اند و رکورد هایی به آن اضافه یا از آن حذف می شوند.


ته ریز شدن در درخت ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .B می تواند منجر به دو راه حل زیر شود:

  • اگر یک گره مجاور نیز نیمه پر باشد می توان دو گره را در هم ادغام کرد و یکی از آنها را برای استفاده دوباره آزاد ساخت.

  • اگر گره های مجاور بیش از نیمه پر باشند می توان رکورد ها را دو باره میان گره ها توزیع کرد تا توزیع تقریبا متعادل گردد.


اهمیت قرار دادن شاخص در حافظه ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .

  • چون این شاخص از نوع ساده ای است رکورد های مشخص را با جستجوی دودویی اندیس می یابیم .اگر این جستجو در حافظه صورت پذیرد خوب عمل می کند.

  • با تغییر بلوکها در مجموعه ترتیبی , در اثر شکستن بلوکها , ادغام و تو زیع دوباره , شاخص باید بهنگام شود .بهنگام سازی یک شاخص ساده برای رکورد های طول ثابت , در صورتی که نسبتا کوچک باشد و در حافظه نگنجد خوب عمل می کند.


درخت ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .B+ پیشوندی ساده

يك درخت B+ كه مجموعه شاخص آن , حاوي كوچكترين جداكننده يا پيشوندي كليدها باشد ايجاد مي شود درخت B+ پيشوندي نام دارد.

مجموعه انديس يك درخت B است . تغييرات صورت گرفته در مجموعه انديس , تغييرات ثانويه را نتيجه جانبي حاصل از عمليات اصلي روي مجموعه ترتيبي است. د ر همه عمليات درج و حذف , عمل اصلي در مجموعه ترتيبي صورت مي گيرد. چون ركوردها در آن قرار دارند . فقط وقتي جدا كننده جديدي به مجموعه شاخص مي افزاييم كه بلوك جديدي به مجموعه ترتيبي اضافه مي شود .


درخت ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .B+

  • درختي متشكل از يك مجموعه ترتيبي از ركوردها كه به طور ترتيبي بر حسب كليد و به همراه يك مجموعه شاخص كه دستيابي شاخص شده به ركوردها را فراهم مي آورد , مرتب شده اند.

  • همه اين ركوردها د ر مجموعه ترتيبي نگهداري مي شوند. درج و حذف ركوردها از طريق شكافتن , پيوند دادن و توزيع دوباره بلوك ها در مجموعه ترتيبي صورت مي پذيرد.


  • تفاوت ميان درخت ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .B+ يشوندي ساده و درخت B+ آن است كه B+ از پيشوندهايي به عنوان جداكننده استفاده نمي كند . در عوض جدا كننده ها د ر مجموعه انديس , صرفا يك كپي از نمونه هاي واقعي اند.


نکات ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .

  • اگر بلوکها در مجموعه ترتیبی شکافته شوند , یک خط جدا کننده جدید باید در مجموعه شاخص درج گردد.

  • اگر بلوکها در مجموعه ترتیبی ادغام شوند یک جدا کننده باید از مجموعه شاخص حذف گردد.

  • اگر رکورد ها بین بلوکها در مجموعه ترتیبی دوباره توزیع شوند , مقدار یک جداکننده در مجموعه شاخص باید تغییر یابد.


بلوک ترتيبي كليدي و فايل ترتيبي زماني است . در فايل ترتيبي زماني ، ركوردها به ترتيب ورود به سيستم ذخيره مي شوند و در فايل ترتيبي ، لود اوليه تمام نمونه ركوردها بر اساس مقادير صفت كليد ذخيره شده است به طوريكه تمام نمونه ركوردها قالب از پيش طراحي شده اي دارند .

  • اندازه فیزیکی یک گره برای مجموعه اندیس , معمولا برابر با اندازه یک بلوک در مجموعه ترتیبی است.در چنین موردی به جای گره از لفظ بلوک برای مجموعه شاخص استفاده می کنیم .


دلایل استفاده از اندازه بلوک مشترک میان مجموعه های ترتیبی و اندیسی:

  • معمولا از آن رو برای مجموعه شاخص از اندازه بلوک مجموعه ترتیبی استفاده می شود که تطابق خوبی میان اندازه بلوک , ویژگیهای دیسک گردان و مقدار حافظه در دسترس وجود دارد.بنا بر این , اندازه بلوکی که برای مجموعه ترتیبی بهترین باشد , برای مجمو عه شاخص نیز بهترین خواهد بود.


2. با اندازه بلوکهای مشترک , پیاده سازی یک الگوی بافر دهی برای ایجاد درخت B+ پیشوندی ساده مجازی مشابه درختهای B مجازی آسانتر می گردد.


3. بلوکهای مجموعه ترتیبی و بلوکهای مجموعه شاخص غالبا در یک فایل قرار داده می شوند تا از جستجو میان دو فایل جداگانه در هنگام دستیابی به درخت B+ پیشوندی ساده پرهیز شود.استفاده از یک فایل برای هر دو نوع بلوک , در صورت هم اندازه بودن آنها آسانتر صورت می پذیرد.


ساختار درونی بلوکهای مجموعه ترتیبی : یک درخت B از مرتبه متغییر

  • این ساختار بلوک شامل موارد زیر می شود:

  • تعداد جداکننده ها

  • طول کل جدا کننده ها


نکته 1: ترتیبی : یک درخت

  • بلوک صرفا یک دسته برش داده شده از یک فایل همگن نیست , بلکه چیزی بیش از یک مجموعه رکورد است.بلوک خود می تواند دارای یک ساختار درونی پیچیده باشد , که شامل شاخص داخلی آن , مجموعه ای از رکورد های طول متغییر , مجموعه های جداگانه ای از رکورد های طول متغییر و غیره باشد.


نکته 2: ترتیبی : یک درخت

  • هر گره در مجموعه اندیس درخت B از درخت B+ پیشوندی ساده دارای مرتبه متغییر است.زیرا هر بلوک از مجموعه شاخص حاوی تعداد متغیری از جداکننده ها است.


  • دلیل استفاده از کوتاه ترین جدا کننده ها فشرده سازی هر چه بیشتر آنها در یک بلوک از مجموعه شاخص است.این بدان معنا است که , در بلوکهای مجموعه شاخص از فیلد هایی با طول متغییر استفاده می کنیم.


B b b
خصوصیات مشترک درختهای کننده ها فشرده سازی هر چه بیشتر آنها در یک بلوک از مجموعه شاخص است.این بدان معنا است که , در بلوکهای مجموعه شاخص از فیلد هایی با طول متغییر استفاده می کنیم.B و B+ و B+ پیشوندی ساده

1.همگی ساختار های شاخص صفحه ای هستند.یعنی کل اطلا عات موجود در بلوک را یکباره به حافظه منتقل می کنند.در نتیجه می توان از میان حالتهای مختلف تنها با چند پیگرد , حالتی خاص را در دیسک یافت.شکل این درختها پهن و تو خالی است.


2. در هر سه روش درختهایی نگهداری می شود که ارتفاع آنها موازنه است .درختها به شیوه ای غیر عادی که منجر به جستجو های طولانی برای کلید های معین می شود رشد نمی کنند.


3.در همه موارد درختها از پایین به بالا رشد می کنند و موازنه از طریق شکستن بلوک , ادغام و توزیع دوباره حفظ می شود.

4.با هر سه ساختار می توان از طریق استفاده از شکافتگی دو به سه و در صورت امکان توزیع دوباره به جای شکستن بلوک , بازدهی را بالا برد.


5.هر سه روش را می توان به عنوان ساختار های درختی مجازی پیاده سازی کرد که در آن آخرین بلوکهای استفاده شده در حافظه نگهداری می شوند.

6.هر یک از این سه روش را می توان با استفاده از ساختار های موجود در بلوک با رکورد های طول متغییر به کار برد.


تفاوت میان درخت ساختار های درختی مجازی پیاده سازی کرد که در آن آخرین بلوکهای استفاده شده در حافظه نگهداری می شوند.B و B+

تفاوت مهم میان درخت B و B+ در آن است کهدر درخت B+ همه اطلاعات مربوط به کلید ها و رکورد ها در یک مجموعه پیوند یافته از بلوکها موسوم به مجموعه ترتیبی قرار دارند.


دو مزیت مهم ساختار درخت ساختار های درختی مجازی پیاده سازی کرد که در آن آخرین بلوکهای استفاده شده در حافظه نگهداری می شوند.B+ نسبت به درخت B

  • مجموعه ترتیبی را می توان به شیوه ای واقعا ترتیبی و خطی پردازش کرد و در نتیجه به ترتیب کلید ها به رکورد ها دستیابی مو ثری داشت.

  • شاخص با یک کلید منفرد یا جدا کننده به ازای هر بلوک از رکورد های داده ها , به جای یک کلید به ازای هر رکورد ساخته می شود.


پایان ساختار های درختی مجازی پیاده سازی کرد که در آن آخرین بلوکهای استفاده شده در حافظه نگهداری می شوند.


ad