Download as pdf or txt
Download as pdf or txt
You are on page 1of 39

B+Trees

Dr. Ömer ASLAN


Bandırma Onyedi Eylül Üniversitesi Bilgisayar Mühendisliği
İçindekiler

• Sıralı sette işlemler

• B+ Tree

• B+ Tree’ de Eklemeler ve Silmeler


İndekslenmiş ve Sıralı Görünüm

• Bazı uygulamalar bir dosyanın iki görünümünü gerektirir: indexed (indekslenmiş) ve sequential
(sıralı) view (görünüm).

İndekslenmiş Görünüm Sıralı Görünüm

Kayıtlar bir anahtara göre indekslenir Kayıtlara anahtar kullanarak sırayla erişilebilir

Doğrudan, indekslenmiş erişim Sıralı erişim (fiziksel olarak bitişik kayıtlar)

Etkileşimli, rastgele erişim Toplu işleme


Örnek Uygulamalar

• Üniversitede öğrenci kayıt sistemi


• İndekslenmiş görünüm: bireysel kayıtlara erişim
• Sıralı görünüm: notları gönderirken veya ücretler ödendiğinde toplu işleme

• Kredi kart sistemi


• İndekslenmiş görünüm: etkileşimli hesap kontrolü
• Sıralı görünüm: ödeme makbuzlarının toplu işlenmesi

• Sorunun iki yönünü ela alalım


• Bir dizi setini yeniden düzenlemek: kayıtları sırayla tutmak
• Dizi setine bir indeks seti ekleme
Bir Dizi Setini Yeniden Düzenlemek

• Ekleme ve silme işlemlerinden sonra sıralama ve yeniden düzenleme


• Dizi setini şöyle organize edebiliriz
• Kayıtlar bloklar halinde gruplandırılmıştır
• Blokların en az yarısı dolu olmalıdır

• Bağlantı alanları, önceki bloğa ve sonraki bloğa işaret etmek için kullanılır (çift bağlantılı listeye
benzer)

• Değişiklikler (ekleme/silme) bloklar halinde yerelleştirilir:


• 1. Ekleme taşmaya neden olduğunda blok bölme yapılır
• 2. Silme işlemi küçülmeye neden olduğunda blok birleştirme veya yeniden dağıtma yapılır
Örnek

• Blok Boyutu = 4
• Anahtar = Soyadı

• İleri İşaretçi
• Geri İşaretçi
Taşmalı Ekleme

• BAIRD...” di ekleme
Birleştirmeli Silme
• “DAVIS...” i silme
Birleştirmeli Silme

• Blok 3 yeniden kullanıma hazır


'BYNUM' Ardından 'CARTER' ı Silin
1. Çözüm

• Blok 2 ve 4'ü birleştirebiliriz


2. Çözüm: Yeniden Dağıtımla Silme
Sıralı Setin Avantaj ve Dezavantajları

• Avantajlar
• Ekleme/silme işleminden sonra tüm dosyayı yeniden düzenlemeye gerek yoktur

• Dezavantajları
• Dosya, bloklanmamış dosyalardan daha fazla yer kaplar (çünkü bloklar yarı dolu olabilir)

• Kayıtların sırası mutlaka fiziksel olarak sıralı değildir (sadece blok içinde fiziksel sıralılık
garanti edilir)
Sıralı Sete İndeks Seti Ekleme
• İndeks, anahtarlar yerine ayırıcılar içerecektir
Basit Önek B+ Ağacı

• Basit önek B+ ağacı şunlardan oluşur:

• Sıralı set

• İndeks Seti: B-ağacı indeksine benzer, ancak sıralı set için en kısa ayırıcıları saklar
B+ Ağaç Dosyası Organizasyonu
• B+ Ağacı, adından da anlaşılacağı gibi, kayıtları dosyada depolamak için ağaç benzeri bir
yapı kullanır.

• B+ ağacı bir m-ary ağacıdır.

• B+ ağaç dosyası organizasyonu, indekse alınmış sıralı erişim yönteminin gelişmiş


yöntemidir.

• Bir B+ ağacı, her düğümün yalnızca anahtarlar içerdiği (anahtar/değer çiftlerini değil) ve
bağlantılı izinle en altta ek bir düzeyin eklendiği bir B-tree ağacı olarak görülebilir.

• Sıralamak için birincil anahtarın kullanıldığı anahtar indeksleme kavramını kullanır.


B+ Ağaç Dosyası Organizasyonu

• Her birincil anahtar için bir indeks değeri oluşturulur ve kayıtla eşlenir.

• Bir kaydın indeksi, dosyadaki kaydın adresidir.

• B+ Ağacı, ikili arama ağacına çok benzer, tek farkı iki çocuk yerine ikiden fazla çocuğa
sahip olabilmesidir.

• Tüm bilgiler yaprak düğümde saklanır ve ara düğümler, yaprak düğümlere işaretçi görevi
görür.

• Yaprak düğümlerdeki bilgiler her zaman sıralanmış sıralı bağlantılı bir liste olarak kalır.
B+ Ağaç Artı ve Eksileri

• Artıları
• Ağacı dolaşma daha kolay ve hızlıdır.
• Tüm kayıtlar yalnızca yaprak düğümlerinde saklandığından ve sıralı bağlantılı listede
sıralandığından arama yapmak kolaydır.
• Dengeli bir ağaç yapısıdır ve herhangi bir ekleme/güncelleme/silme işlemi ağacın performansını
etkilemez.
• B+ ağaç boyutunda herhangi bir kısıtlama yoktur.
• Veri boyutu arttıkça/azaldıkça büyüyebilir/daralabilir.

• Eksileri
• Statik tablolar için verimsiz.
B+ Tree Zaman Karmaşıklığı
B+ Tree Kullanım Yerleri
• ReiserFS, NSS, XFS, JFS, ReFS ve BFS dosya sistemlerinin tümü, meta veri indeksleme için bu tür
ağaç kullanır.
• BFS (Breadth-first search) ayrıca dizinleri depolamak için B+ ağaçlarını kullanır.

• NTFS (New technology file system), dizin ve güvenlikle ilgili meta veri indeksleme için B+
ağaçlarını kullanır.

• EXT4 (Extended file system), dosya kapsamı indekslemesi için kapsam ağaçlarını (değiştirilmiş bir
B+ ağacı veri yapısı) kullanır.

• APFS, dosya sistemi nesne kimliklerinden diskteki konumlarına eşlemeleri depolamak ve dosya
sistemi kayıtlarını (dizinler dahil) depolamak için B+ ağaçlarını kullanır, ancak bu ağaçların yaprak
düğümlerinde kardeş işaretçiler yoktur.

• IBM Db2, Microsoft SQL Server, Oracle, Sybase ve SQLite gibi ilişkisel veritabanı yönetim
sistemleri tablo indeksleri için bu tür ağaçları destekler.
B- Tree ve B+ Tree Farkları
• B+ ağacı, veri işaretçilerini yalnızca ağacın yaprak düğümlerinde depolayarak indeksleme için
kullanılan B-ağacı dezavantajını ortadan kaldırır.

• Bu nedenle, bir B+ ağacının yaprak düğümlerinin yapısı, B ağacının iç düğümlerinin yapısından


oldukça farklıdır.

• Burada, veri işaretçileri yalnızca yaprak düğümlerinde mevcut olduğundan, yaprak düğümlerin
bunlara erişmek için tüm anahtar değerleri ve bunlara karşılık gelen veri işaretçilerini disk dosya
bloğuna kaydetmesi gerektiği not edilebilir.

• Ayrıca, yaprak düğümler, kayıtlara sıralı erişim sağlamakla bağlantılıdır.


• Bu nedenle yaprak düğümler, çok düzeyli bir dizinin diğer düzeylerini oluşturan iç düğümlerle
birlikte dizinin ilk düzeyini oluşturur.
B- Tree ve B+ Tree Farkları
B- Tree ve B+ Tree Farkları

B tree B+ tree
Tüm dahili ve yaprak düğümlerin veri işaretçileri Yalnızca yaprak düğümlerin veri işaretçileri
vardır vardır
Tüm anahtarlar yaprakta bulunmadığından, Tüm anahtarlar yaprak düğümlerindedir, bu
arama genellikle daha uzun sürer nedenle arama daha hızlı ve doğrudur
Ağaçta hiçbir anahtar kopyası tutulmaz Anahtarların kopyası korunur ve tüm düğümler
yaprakta bulunur
Ekleme daha fazla zaman alır ve bazen Ekleme daha kolaydır ve sonuçlar her zaman
öngörülebilir değildir aynıdır
Dahili düğümün silinmesi çok karmaşıktır ve Herhangi bir düğümün silinmesi kolaydır çünkü
ağaç birçok dönüşümden geçmek zorundadır tüm düğümler yaprakta bulunur
Yaprak düğümleri yapısal bağlantılı liste olarak Yaprak düğümleri yapısal bağlantılı liste olarak
saklanmaz saklanır
3 Seviyeli İndeks Seti
B+ Ağacında Arama
• “EMBRY” için arama yapın
• Düğüm 0'ı (Kök) Al
• “EMBRY”> “E” olduğundan, sağa gidin ve Düğüm 2'yi alın.
• “EMBRY”< “F” olduğundan, sola gidin ve Blok # 4
• Blok # 4'te “EMBRY” anahtar ile kaydı arayın
B+ Ağaç İşlemleri
•Sıra setinde blok faktörü 4

•İndeks seti 3. dereceden bir B ağacıdır


B+ Ağaç İşlemleri
• Sıra setindeki tek bloklarda yerel olan değişiklikler
– “U” yu ekleme
• Köke git
• “O”nun sağına git
• Bloğa 3’ e “U” yu ekle

• İndeks setinde değişiklik yok


B+ Ağaç İşlemleri
– “O”yu silin
• Köke git
• “O”nun sağına gidin
• Blok 3'ten “O”yu silin
• İndeks setinde herhangi bir değişiklik yok: “O” hala Blok 2 ve 3 için mükemmel bir ayırıcıdır.
B+ Ağaç İşlemleri
• Dizi setinde birden fazla blok içeren değişiklikler
• “S” ve “U”yu silin
• Artık Blok 3 yarıdan az (½) dolu olmakta (Underflow)
B+ Ağaç İşlemleri

• Blok 2 dolu olduğundan, tek pozisyon Blok 2'den Blok 3'e bir anahtar getiren yeniden dağıtımdır.

• “O” ayırıcısını “N” olarak güncelleriz


B+ Ağaç İşlemleri
• “B” yi ekleme
• Köke git
• Blok 1'e “H”nin soluna gidin
• Blok 1, A,B,C,E,G'yi tutmaktaydı
• Blok 1 bölünmekte
B+ Ağaç İşlemleri

• Bu, düğüm 1'in bölünmesine neden olur


B+ Ağaç İşlemleri
B+ Ağaç İşlemleri
• F’i ekleme
B+ Ağaç İşlemleri
• J ve L’yi silme

• Bu durumda bir tarafta az elaman kalır.


• Blok 2 ve 4'ü yeniden dağıtırsak: E,F,G,H: E,F ve G,H olur.
B+ Ağaç İşlemleri
• Bu neden mümkün değil?
• Blok 2 ve 4 kardeş değildir! Onlar kuzendir
• Blok 2 ve 3'ü birleştir
• Blok 3'ü UYGUN LİSTESİNE gönder
• Düğüm 2 ile blok 3 arasındaki bağlantıyı kaldırın
B+ Ağaç İşlemleri
• Düğüm 2 ve 3'ü UYGUN LİSTESİNE gönderin
B+ Ağaç İşlemleri

• Bloklar yeniden bir araya geldi


Referanslar
• https://web.itu.edu.tr/~bkurt/Courses/blg341/lecture12_6_slides_per_page.pdf
• https://www.geeksforgeeks.org/file-organization-in-dbms-set-3/#:~:text
• https://www.javatpoint.com/dbms-b-plus-file-organization
• https://web.cs.hacettepe.edu.tr/~bbm371/slides/11_Tree-based_Indexing.pdf
• https://en.wikipedia.org/wiki/B%2B_tree
• https://e-bergi.com/y/b-agaclari/
• Giampaolo, Dominic (1999). Practical File System Design with the Be File System (PDF). Morgan
Kaufmann. ISBN 1-55860-497-9.
• "B-Trees". Apple File System Reference (PDF). Apple Inc. 2020-06-22. p. 122. Retrieved 2021-03-
10.
• Ramakrishnan Raghu, Gehrke Johannes – Database Management Systems, McGraw-Hill Higher
Education (2000), 2nd edition (en) page 267

You might also like