درخت بی‌پلاس

B+ tree
گونهدرختی (ساختار اطلاعات)
زمان اجرای الگوریتم بر پایه نماد O بزرگ
الگوریتم میانگین بدترین حالت
فضا O(n) O(n)
جستجو O(log n) O(log n)
درج O(log n) O(log n)
حذف O(log n) O(log n)

درخت بی برای اولین بار در مقاله 《Organization and Maintenance of Large Ordered Indices. Acta Informatica 1: 173–189 (1972) 》به وسیله‌ی رودلف بایر و ادوارد م. مک کریت توصیف شد. هیچ مقاله تنهایی وجود ندارد که مبحث درخت بی پلاس را معرفی کند. درعوض، مفهوم نگهداری همه داده‌ها در برگ‌ها به‌طور مکرر به عنوان یک متغیر جذاب پرورش یافته‌است. یک برآورد اولیه از درختان بی، که درختان بی پلاس را هم دربر می‌گیرد در دوگلاس کومر دیده می‌شود:《"The Ubiquitous B-Tree", ACM Computing Surveys 11(2): 121–137 (1979)》. کومر ذکر کرده که درخت بی پلاس در نرم‌افزار دسترسی به داده‌های 《VSAM 》متعلق به شرکت 《IBM》 مورد استفاده قرار گرفته و او به یک مقاله منتشر شده 《IBM》 در سال ۱۹۷۳ اشاره می‌کند.

درخت بی پلاس

در علوم کامپیوتر، یک درخت بی پلاس درختی است که داده مرتب شده را به شکلی نشان می‌دهد که درج، دریافت و حذف اطلاعات که هر کدام با یک کلید مشخص می‌شود، کارآمد باشد. این یک حافظه ذخیره‌ای پویا و چند سطحی است، با پیوندهای بیشینه و کمینه بین تعداد کلیدهای هر خانه ذخیره‌ای (عموماً به آن‌ها گره یا بلوک گفته می‌شود). در یک درخت بی پلاس، بر خلاف یک درخت بی ماینس، تمام رکوردها در سطح برگ‌های درخت ذخیره می‌شوند؛ تنها کلیدها در گره داخلی ذخیره می‌شوند.

ارزش اولیهٔ یک درخت بی پلاس در ذخیره کردن داده‌های آن با مفهوم یک ذخیره‌سازی بلوک-محور به‌طور خاص سیستم فایل‌ها برای بازیابی کار آمد است. این عمدتاً به دلیل این است که بر خلاف درخت جستجوی دودویی، درختان بی پلاس گنجایش خروجی زیادی دارند (به‌طور نمونه‌ای از مرتبه ۱۰۰ یا بیشتر)، که تعداد عملیات ورودی/خروجی مورد نیاز برای پیدا کردن یک عنصر در درخت را کاهش می‌دهد.

سیستم فایل هایJFS, NTFS, NSS, Reiser FS, JFS همگی از این نوع درخت برای ذخیره‌سازی (فهرست سازی) اطلاعات دربارهٔ داده‌ها استفاده می‌کنند. سیستم‌های مدیریتی رابطه‌ای پایگاه‌های داده مثل IBM DB2، Informix, Microsoft SQL Server, Oracle 8، Sybase ASE, PostgerSQL, Firebird, MySQL واس‌کیوال لایت این نوع درخت را برای جدول خانه‌های حافظه پشتیبانی می‌کنند. سیستم‌های مدیریتی کلید-مقدار مانند Tokyo Tyrant و Tokyo Cabinet این نوع درخت را برای دسترسی به داده‌ها تأیید می‌کند. InfinityDB یک درخت ب متقارن است.

نکته‌ها

درجه یا عامل شاخه‌ای شدن یک درخت بی پلاس با مقدار b، گنجایش گره‌ها (تعداد فرزندان گره‌ها) را برای گره‌های داخلی درخت محاسبه می‌کند. تعداد فرزندان واقعی برای هر گره، که آن را با m مشخص می‌کنند، برای گره‌های داخلی محدود می‌شود در نتیجه . ریشه درخت یک استثنا است: تنها مجاز است که دو فرزند داشته باشد. برای مثال: اگر درجهٔ یک درخت بی پلاس ۷ باشد، هر گره داخلی (به جز ریشه) ممکن است بین ۴ تا ۷ فرزند داشته باشد؛ برگ‌ها فرزندی ندارند (بر اساس تعریف)، ولی محدود شده‌اند در نتیجه تعداد کلیدها باید حداقل و حد اکثر b-1 باشد. در حالتی که یک درخت بی پلاس تقریباً خالی است، تنها یک گره دارد، که یک برگ است. (ریشه نیز در این مورد یک برگ تنها است). این گره مجاز است که در صورت نیاز فقط یک کلید داشته باشد.

جستجو

الگوریتم انجام دادن یک جستجو برای یک رکورد r اشاره گرها را تا فرزند درست هر گره دنبال می‌کند تا زمانی که به یک برگ برسد. پس از آن، برگ پیمایش می‌شود تا زمانی که رکورد صحیح یافت شود (یا تا زمانی که شکست بخورد).

 function search(record r)
 u:= root
 while (u is not a leaf) do
 choose the correct pointer in the node
 move to the first node following the pointer
 u:= current node
 scan u for r

این سودوکد فرض کرده که هیچ تکراری مجاز نیست.

جستجو خیلی سریع است.

درج

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

حذف

  • از ریشه شروع کن، برگ L را که وارده تعلق دارد پیدا کن.
  • وارده را حذف کن
 * اگر L حداقل نیمه پر است، انجام بده!
 *اگر L کمتر از آنچه که باید ورودی داشته باشد،
 * توزیع مجدد انجام دهید، از همزادها قرض کنید.
 * اگر توزیع مجدد با شکست مواجه شد،L و همزاد را ادغام کنید.
  • اگر ادغام رخ داد، باید وارده (اشاره‌کننده به L یا همزاد) را از والد حذف کنید.
  • ادغام باید به ریشه منتشر شود، ارتفاع کاهش یابد.

بارگذاری قسمت

  • یک مجموعه از رکوردهای داده، داده شده‌است. می‌خواهیم یک درخت +B اندیس روی برخی فیلد کلید بسازیم. یک روش این است که هر رکورد را در داخل یک درخت تهی قراردهیم. اگرچه نسبتاً گران است، چون برای هر وارده نیازداریم از ریشه شروع کنیم و پایین برویم تابه صفحه برگ مناسب برسیم. راه دیگر، استفاده از bulk-loading است.
 *اولین مرحله این است که وارده‌های داده را مطابق با یک کلید جستجو مرتب کنیم.
  • یک صفحه خالی اختصاص می‌دهیم تا به جای ریشه به کار رود و یک اشاره گر به صفحه اول وارده‌ها در داخل آن قرار می‌دهیم. زمانی که ریشه پراست، ریشه را تقسیم می‌کنیم، ویک صفحه ریشه جدید ایجاد می‌کنیم

ویژگی‌ها

برای یک درخت بی پلاس از درجهٔ b با h تعداد طبقهٔ ذخیره شده:

  • بیشینهٔ تعداد رکوردهای ذخیره شده برابر است با
  • کمینه تعداد کلیدها برابر است با
  • حافظهٔ مورد نیاز برای ذخیره درخت از(O(nاست
  • درج کردن یک رکورد در بدترین حالت به عملیات نیاز دارد
  • جستجوی یک رکورد در بدترین حالت به عملیات نیاز دارد
  • حذف کردن یک رکورد (قبلاً یافت شده) در بدترین حالت به عملیات نیاز دارد
  • انجام یک جستجوی حوزه‌ای با k عنصر در آن محدوده در بدترین حالت به عملیات نیاز دارد
  • انجام یک جستجوی صفحه‌ای با اندازه صفحه s و شماره صفحه p به (s*p)عملیات نیاز دارد.

اجرا

برگ‌های (پایین‌ترین بلوک‌های ذخیره‌ای) درخت بی پلاس اغلب در یکلیست پیوندی به یکدیگر متصل هستند؛ این، جستجوی حوزه‌ای یا بازگویی (ترتیبی) از طریق بلوک‌ها را آسان تر و کارآمد تر می‌کند (با این که پیوند بالایی ذکر شده بدون این مورد اضافه شده نیز امکان‌پذیر است). این نگهداری و مصرف فضا روی درخت را عمدتاً افزایش نمی‌دهد.

اگر بلوک‌های ذخیره‌ای یک سیستم دارای سایز B بایت باشند، و تعداد کلیدهایی که باید ذخیره شوند k باشد، به‌طور مستدل کارآمدترین درخت بی پلاس آن است که b = (B / k) – 1. با این که ایجاد این محدودیت به‌طور نظری ضروری نیست، اما در عمل، اغلب کمی فضای اضافی توسط بلوک‌های ذخیره‌ای گرفته می‌شود (به عنوان مثال، ارجاع‌های لیست پیوندی در بلوک‌های برگ). داشتن یک بلوک ذخیره‌ای که کمی بزرگتر از بلوک واقعی سیستم ذخیره‌ای است یک کاهش اساسی در کارایی را نشان می‌دهد؛ در نتیجه احتیاط بیش از حد ترجیح داده می‌شوداست.

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

درختان بی پلاس همچنین برای داده‌های ذخیره شده در RAM استفاده می‌شوند. در این مورد یک انتخاب معقول برای سایز بلوک‌ها برابر سایز پهنای باند حافظه نهان(cache) پردازنده‌است. اگر چه بعضی از تحقیقات نشان داده‌است که یک بلوک با سایزی که چند برابر سایز پهنای باند حافظه نهان پردازنده‌است می‌تواند اجرای بهتری داشته باشد اگر واکشی از قبل توسط حافظه نهان استفاده شود.

بهینه بودن فضا در درخت بی پلاس می‌تواند با استفاده از بعضی تکنیک‌های فشرده‌سازی بهبود پیدا کند. یک راه استفاده از رمزگذاری دلتا (اختلافی) برای فشرده کردن کلیدهای ذخیره شده در هر بلوک است. برای بلوک‌های داخلی، حفظ فضا با فشرده‌سازی کلیدها یا اشاره گرها بدست می‌آید. برای کلیدهای رشته‌ای(string)، فضا می‌تواند با استفاده از روش زیر ذخیره شود: معمولاً i امین ورودی یک بلوک داخلی اولین کلید بلوک i+1 ام را دربردارد. به جای ذخیره کردن کل کلید می‌توان کوتاه‌ترین پیشوند از اولین کلید بلوک i+1 ام که اکیداً (در ترتیب واژه نگاری) بزرگ‌تر از آخرین کلید از بلوک i است. همچنین راه ساده‌ای برای فشرده‌سازی اشاره گرها وجود دارد: اگر فرض کنیم که بعضی از بلوک‌های پشت سر هم i+k...i+1،i به صورت متصل و نزدیک به هم ذخیره می‌شوند، پس تنها ذخیرهٔ اشاره گر به اولین بلوک و تعداد بلوکهای پی در پی کفایت می‌کند.

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

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

منابع

  • Ramakrishnan Raghu, Gehrke Johannes - Database Management Systems, McGraw-Hill Higher Education (2000), 2nd edition (en) page 267
  • B+ tree


Read other articles:

الصومال Somalia Italiana الصومال الإيطالي مستعمرة إيطالية 1889 – 1936 الصومال الإيطاليعلم الصومال الإيطاليشعار الصومال الإيطالي الصومال الإيطالي عاصمة مقديشيو نظام الحكم غير محدّد اللغة الرسمية الإيطالية  اللغة إيطالية وصومالية الديانة إسلام وكاثوليكية رومانية الحاكم توم

 

ترينا معلومات شخصية اسم الولادة (بالإنجليزية: Katrina Laverne Taylor)‏  الميلاد 3 ديسمبر 1978 (العمر 45 سنة)فلوريدا، الولايات المتحدة الأمريكيةميامي  الجنسية أمريكية العشير ليل وين (2005–2006)كينيون مارتن (2007–2009)  الحياة الفنية النوع موسيقى الراب الآلات الموسيقية صوت بشري  شركة ...

 

Rusland Eerste deelname 2005 Aantal deelnamen 17 Aantal gewonnen 2 Zender Rusland-1 Statistieken Hoogste positie 1ste (2006, 2017) Laagste positie 13de (2019) Portaal    Eurovisiesongfestival Vlad Kroetskich in Hasselt (2005). Polina Bohusevich haalde de tweede overwinning voor Rusland binnen. Rusland neemt sinds 2005 deel aan het Junior Eurovisiesongfestival. Geschiedenis De Russische deelname viel in de eerste 14 deelnames nooit buiten de top tien. Rusland...

Australian musician and actor This biography of a living person needs additional citations for verification. Please help by adding reliable sources. Contentious material about living persons that is unsourced or poorly sourced must be removed immediately from the article and its talk page, especially if potentially libelous.Find sources: Tim Rogers musician – news · newspapers · books · scholar · JSTOR (January 2013) (Learn how and when to remove ...

 

كأس البرازيل 2011 تفاصيل الموسم كأس البرازيل  النسخة 23  البلد البرازيل  التاريخ بداية:16 فبراير 2011  نهاية:8 يونيو 2011  المنظم اتحاد البرازيل لكرة القدم  البطل نادي فاسكو دا غاما  مباريات ملعوبة 111   عدد المشاركين 64   أهداف مسجلة 315   كأس البرازيل 2010  كأس ا

 

Port Elizabeth redirects here. For other uses, see Port Elizabeth (disambiguation). City in Eastern Cape, South AfricaGqeberha Port ElizabethiBhayiCityGqeberhaCity Hall, Market SquareGqeberhaShow map of Eastern CapeGqeberhaShow map of South AfricaGqeberhaShow map of AfricaCoordinates: 33°57′29″S 25°36′00″E / 33.95806°S 25.60000°E / -33.95806; 25.60000Country South AfricaProvince Eastern CapeMunicipalityNelson Mandela BayEstablished1820Government&#...

Santo KasparKaspar bersama dengan Melkior dan Baltasar - dari ensiklopedia bergambar Hortus Deliciarum karya Herrad dari Landsberg yang direproduksi oleh Christian Maurice EngelhardtTiga Orang Majus, Tiga Raja, Tiga Pria BijakDihormati diGereja Katolik RomaGereja Ortodoks TimurKomuni AnglikanGereja LutheranKanonisasiPra-KongregasiTempat ziarahKuil Tiga Raja, Katedral KolnPesta6 Januari (Epifani)11 Januari23 Juli (terjemahan relik)24 Juli (Koln, Jerman)AtributRaja yang memberikan hadiah, raja ...

 

Indigenous ethnic group in North America Crow Tribe of MontanaApsáalookeTribal FlagPauline Small on horseback. She carries the flag of the Crow Tribe of Montana. As a tribal official, she is entitled to carry the flag during the Crow Fair parade.Total population12,000 enrolled membersRegions with significant populationsUnited States (Montana)LanguagesCrow, English, Plains Sign TalkReligionChristianity, Crow Way, Tobacco SocietyRelated ethnic groupsHidatsa Apsáalookechildren of the ravenPeop...

 

Zwemmen is een van de olympische sporten die beoefend werden tijdens de Olympische Jeugdzomerspelen 2014 in Nanking. De competitie liep van 17 tot en met 22 augustus in het Nanjing Olympic Sports Center. Er werd in 36 onderdelen gestreden voor de gouden medaille: zeventien bij de jongens, zeventien bij de meisjes en twee gemengde teamcompetities. De 800 meter vrije slag was voor meisjes en jongens toegevoegd aan het programma. Kalender Augustus 17 18 19 20 21 22 23 24 25 26 27 Zwemmen 3 8 5 7...

Swiss single engine STOL utility transport aircraft, 1959 PC-6 Porter/Turbo-Porter A PC-6 Turbo-Porter, B2-H4 PT6A-34 variant, used for skydiving in Spain Role STOL passenger and utility aircraftType of aircraft Manufacturer Pilatus AircraftFairchild Aircraft First flight Porter - 4 May 1959Turbo-Porter - 2 May 1961. Status In service Primary users Civil aviationAustrian Air Force, Myanmar Air Force, Swiss Air Force Produced 1959–2022[1] Number built 604[1] Variants Fai...

 

Welf IICount of AltdorfCount Welf II in the Weingarten Stifterbüchlein, c. 1510Died10 March 1030Bodman CastleBuriedWeingarten AbbeyNoble familyElder House of WelfSpouse(s)Imiza of LuxembourgIssueWelf, Duke of CarinthiaKunigunde of AltdorfFatherRudolf II, Count of AltdorfMotherIta of Öhningen Welf II (c. 960/70 - died 10 March 1030) was a Swabian count and a member of the Elder House of Welf. Life He was a younger son of Count Rudolf II and Ita, a daughter of Duke Conrad I of Swa...

 

Winship Capers Connor22nd Mayor of DallasIn office1887–1894Preceded byJohn Henry BrownSucceeded byBryan T. Barry Personal detailsBorn(1848-06-22)June 22, 1848Red Sulphur Springs, Hardin County, TennesseeDiedApril 8, 1921(1921-04-08) (aged 72)Long Beach, CaliforniaResting placeOakland Cemetery, DallasNationalityAmericanSpouse(s)Tullora Fannie Cornelius, Ada Cheatham RyeChildrenAnna F. Connor, Walker Cornelius Connor, Edward Cowen ConnorOccupationMerchant Winship Capers Connor (Jun 1...

Indian film actor, director, and writer Salim KumarSalim Kumar receiving Kerala State Film Award in 2011Born (1969-10-10) 10 October 1969 (age 54)Chittatukara, North Paravur, Kerala, IndiaOccupationsActordirectorYears active1996–presentSpouseSunithaChildren2AwardsNational Film Awards (2010)Kerala State Film Awards (2005, 2010, 2013, 2016)Filmfare Awards South (2011) Salim Kumar (born 10 October 1969) is an Indian actor, comedian, director and writer in Malayalam cinema.[1]...

 

今泉 正隆(いまいずみ まさたか、1926年〈大正15年〉3月3日[1] - 2022年〈令和4年〉5月17日[2])は、日本の警察官僚。第72代警視総監。位階勲等は正四位勲二等。 経歴 佐賀県出身。佐賀高等学校を卒業。1947年12月、高等試験行政科試験に合格。1948年3月、東京大学法学部を卒業。内務省に入省し総理庁内事局に配属された[3]。 以後、国家地方警察高知県本...

 

World Wrestling Entertainment pay-per-view event Survivor SeriesPromotional poster featuring The UndertakerPromotionWorld Wrestling EntertainmentBrand(s)RawSmackDown!DateNovember 27, 2005CityDetroit, MichiganVenueJoe Louis Arena[1]Attendance15,000[2]Buy rate400,000[3]Tagline(s)The Beginning of the EndPay-per-view chronology ← PreviousTaboo Tuesday Next →Armageddon Survivor Series chronology ← Previous2004 Next →2006 The 2005 Survivor Series ...

American actor (born 1941) Nick NolteNolte in 2008BornNicholas King NolteFebruary 8, 1941 (age 82)Omaha, Nebraska, U.S.OccupationActorYears active1969–presentSpouses Sheila Page ​ ​(m. 1966; div. 1970)​ Sharyn Haddad ​ ​(m. 1978; div. 1983)​ Rebecca Linger ​ ​(m. 1984; div. 1994)​ Clytie Lane ​(m. 2016)​ PartnersKar...

 

Die Mausgeste für ein „zurück“ im Browser Opera – der Benutzer hält die rechte Maustaste gedrückt, bewegt die Maus nach links, und lässt die Taste wieder los. Als „Mausgesten“ werden bestimmte Kombination von Mausklicks und speziellen Mausbewegungen bezeichnet, mit denen ein Programm oder Teile davon gesteuert werden kann. Inhaltsverzeichnis 1 Verwendung 2 Ausführung 3 Vorteile 4 Nachteile 5 Programme, die Mausgesten unterstützen 6 Weblinks Verwendung Die Technik wird bis heu...

 

18th-century theatre in New York City John Street TheatreInterior of John Street TheatreGeneral informationLocationManhattan, New York CityOpened1767Demolished1798 John Street Theatre, situated at 15–21 John Street, sometimes called The Birthplace of American Theatre,[1] was the first permanent theatre in the Financial District of Manhattan, New York.[2] It opened on December 7, 1767, and was operated for several decades by the American Company. It closed on January 13, 1798...

Peta T dan O, dari versi cetakan pertama Etymologiae karya Isidore, mengidentifikasi tiga benua yang dikenal identifies the three known continents as populated by descendants of Sem, Iafeth (Yafet) dan Cham (Ham). Dunia berdasarkan kitab-kitab Musa (peta tahun 1854) Daftar keturunan Nuh (bahasa Inggris: Generations of Noah) juga disebut Tabel Bangsa-bangsa (bahasa Inggris: Table of Nations) Kejadian 10 (Kejadian 10:1–32) dengan salinan dalam 1 Tawarikh 1 (1 Tawarikh 1:1–27) pada A...

 

DarkPlaces Тип Игровой движок (Список) Ключевой программист Форест «LordHavoc» Хейл Аппаратная платформа IBM PC-совместимый компьютер Поддерживаемая ОС LinuxmacOSMicrosoft Windows Написан на языке Си Лицензия GNU General Public License Последняя версия 20140513 Официальный сайт Шейдерная вода, которая отража...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!