Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

B+-Ağaçları.

Benzer bir sunumlar


... konulu sunumlar: "B+-Ağaçları."— Sunum transkripti:

1 B+-Ağaçları

2 İkincil Depolama için İndeksleme
AVL ağacı, eğer bütün yapı ana hafızaya sığabilirse iyi bir indeksleme yapısıdır. Bir işaretçiyi bulmak veya güncellemek için bir hafıza birimi (döngüsü) yeterlidir. Eğer veri hafızaya sığamayacak kadar büyükse, AVL ağacının performansı ciddi ölçüde düşer Bir işaretçiyi bulma veya güncelleme diske erişimi gerektirir. Kökten ağaca kadar gezme diske log2 n zamanı kadar erişmeyi gerektirir. n = = 220 olduğu zaman 20 disk erişimi gerekir. 7200rpm hızla dönen bir disk için, bu işlem saniye alır arama işlemi 1 saniyeden fazla zaman alacaktır. Bu oldukça yavaştır.

3 B+ Ağacı İşlemci çok hızlı olduğu için, daha çok cpu komutu kullanarak diske erişimi azaltmak önemlidir. fikir: ağacın düğümlerinin çok çocuğa sahip olmasına izin verilmelidir. Eğer ağaçtaki herbir iç düğüm M çocuğa sahip olursa, ağacın yüksekliği log2 n yerine logM n olacaktır. Örnek olarak, eğer M = 20, öyleyse log < 5. Böylece, arama işlemini önemli ölçüde hızlandırabiliriz.

4 B+ Ağacı Pratikte: Herbir iç düğüm için aynı sayıda çocuk tutmak imkansızdır. M ≥ 3 olan bir B+-ağaç M-ary ağaçtır ve aşağıdaki özellikleri sağlar : Herbir iç düğüm en fazla M çocuğa sahiptir. Herbir iç düğüm, kök hariç, M/2-1 ve M-1 arasında anahtara sahiptir Bu ağacın ikili ağaca dönüşmemesini sağlar. Herbir düğümdeki anahtar sıralıdır. Kök ya bir yaprağa sahiptir yada 1 ve M-1 arası kadar anahtara sahiptir. Veri öğeleri yapraklarda depolanır. Bütün yapraklar aynı derinliktedir. Herbir yaprak L/2-1 ve L-1 arası kadar veri öğesi içerir. Bazıları için L (genellikle L << M, fakat çoğu örnekte M=L olduğu varsayılacak)

5 Örnek Burada, M=L=5 Kayıtlar yapraklarda depolanmıştır, fakat burada sadece anahtarlar gösterilmektedir. İç düğümlerde, sadece anahtarlar sıralıdır (bunlara ayırıcı anahtarlar da denilir.)

6 M=L=4 için bir B+ ağaç Bu durumda sol ve sağ çocuk işaretçilerinden hala sözedebiliriz Örnek, N in sol çocuk işaretçisi, J nin sağ çocuk işaretçisi ile aynıdır. İç düğümlerin sol alt ağaç ve sağ alt ağaçlarından söz edilebilir

7 B+ Ağaç İç düğümlerde hangi anahtarlar depolanır.
Bunu yapmanın değişik yolları vardır. Farklı kitaplar farklı yöntemler gösterir. Bu ders kapsamında aşağıdaki mantık kullanılacaktır: bir iç düğümün içindeki anahtar i, kendisinin i+1 altağacındaki en küçük anahtardır. (örnek. Anahtar i nin sağ altağacı) Bu mantık takip edilse bile, aynı kümedeki elemanlar için tek bir B+-ağaç yapısı yoktur.

8 B+ ağaç Herbir düğüm/yaprak, bir I/O bloğunun içerisine sığması için tasarlanmıştır. Bir I/O blok oldukça fazla veri tutabilir. Böylece, bir iç düğüm çok fazla sayıda anahtar (çok büyük M değeri gibi) tutabilir. Bu ağacın birkaç katmanının olduğunu ifade eder ve birkaç disk erişii ile arama, ekleme veya silme işlemi yapılabilir. B+-ağacı ticari veritabanlarında kullanılan popüler bir yapıdır. Aramayı daha fazla hızlandırmak için B+-ağacın ilk bir veya iki katmanı hafızada tutulur. B+-ağacın dezavantajı düğümlerin çoğunun, çoğu zaman M-1 den daha az anahtar ihtiva etmesidir. Bu ciddi alan israfına yolaçabilir. Böylece, hafızada tutulan veri için iyi bir indeksleme yapısı değildir.

9 Arama Varsayalım ki K anahtarı bulunmak isteniyor. Koyu ile gösterilen yok takip edilir.

10 Arama x aranacak olan key olsun. Kökten aramaya başlanır.
Eğer bir iç düğüm v ile karşılaşılınırsa v’de depolanan anahtarlarda x’ i lineer olarak ara. Eğer v’ de x < Kmin ise, Kmin ’in sol çocuk işaretçisinden devam et. Eğer v’ de ard arda olan Ki için Ki+1 Ki ≤ x < Ki+1 , Ki+1 in sol çocuk işaretçisinden devam et. Eğer v’de x ≥ Kmax ise, Kmax ın sağ çocuk işaretçisinden devam et Eğer leaf v ile karşılaşırsak, v’de depolanan anahtarlar içinden x ‘ i lineer arama ile ararız. Eğer bulunursa, bütün kayıdı döndeririz, yoksa bulunamadı diye rapor edilir.

11 Ekleme Farzadelimki K anahtarını ve bu anahtarla ilgili kayıdı ekmek istiyoruz. Arama işlemini kullanarak anahtar K’yı ara. Bu bizi x yaprağına götürecektir K’ yı x’e ekle Düğümlerin bölünmesi (AVL ağaçlardaki dönüşler yerine) B+-ağaçların özelliklerini sağlamak için kullanılır [sonraki slayt]

12 Bir yaprağa Ekleme Eğer x yaprağı < M-1 anahtar içerirse, x’e K’yı ekle (x düğümündeki doğru yere eklenecek) Eğer x önceden dolu ise (yani M-1 anahtar içeriyorsa). X’i böl x’i ebeveyninden ayır. K yı x’e ekle, x’ de K için alan varmış gibi davran. Şimdi x M anahtara sahip. K’yı ekledikten sonra, x’i xL ve xR olarak iki parçaya böl, xL M/2 en küçük anahtarları içerecek, ve xR kalanM/2 anahtarı içerecek. J xR daki en küçük anahtar olsun. xL ve xR nin ebeveyni olarak J yi ata ve x’in ebeveynine J yi ve yeni çocukları ekle

13 Dolu olmayan yaprağa ekleme

14 Yaprağın bölünmesi: T’ yi ekle

15 Devamı

16 İki yaprağı yazmak için iki disk erişimi olur, ebeveyni güncellemek için bir disk erişim olur.
L=32 için, 16 ve17 eleman içeren yapraklar oluşturulur. Başka bölme işlemi olmaksızın 15 daha fazla ekleme yapılabilir.

17 Başka bir örnek:

18 Devamı => Need to split the internal node

19 Bir iç düğümü bölme Dolu iç düğüm x içine K anahtarının eklenmesi:
x’i ebeveynınden ayır. K’yı ve onun sol ve sağ çocuk işaretçilerinin ekle, Bu durumda x M anahtara sahiptir. xL and xR olarak x’i 2’y2 böl, xL ( M/2 - 1 ) en küçük ahahtarları içerecektir, ve xR M/2 en büyük anahtarları içerecektir. (M/2)inci anahtar J, xL or xR ın içine yerleştirilmemiştir. J yi xL ve xR‘ın ebeveyni yap ve x’ın eski ebeveynine J’ yı ve onun çocuk işaretçilerini ekle.

20 Örnek: İç düğümü bölme

21 Devamı

22 Sonlandırma Bölme dolu iç düğümlerle karşılaştığımız sürece devam edecektir. Eğer bölünen x’in ebeveyni yoksa yeni bir kök oluşturulur ve yeni kök J’yi ve onun iki çocuğunu içerir.


"B+-Ağaçları." indir ppt

Benzer bir sunumlar


Google Reklamları