B+ TREE: wyszukiwanie, wstawianie i usuwanie Operanych

โšก Inteligentne podsumowanie

Drzewo B+ to wielopoziomowy, dynamiczny indeks, ktรณry przechowuje wskaลบniki danych tylko w poล‚ฤ…czonych wฤ™zล‚ach liล›ciowych, co zapewnia dokล‚adnoล›ฤ‡ i szybkoล›ฤ‡ wyszukiwania. Obejmuje on reguล‚y drzewa B+, rรณลผnice miฤ™dzy nim a drzewem B oraz operacje wyszukiwania, wstawiania i usuwania.

  • ๐Ÿƒ Przechowywanie liล›ci: Drzewo B+ przechowuje wskaลบniki danych wyล‚ฤ…cznie w wฤ™zล‚ach liล›ciowych, w przeciwieล„stwie do drzewa B.
  • ๐Ÿ”— Poล‚ฤ…czone liล›cie: Wszystkie wฤ™zล‚y liล›ciowe sฤ… poล‚ฤ…czone, wiฤ™c skanowanie peล‚nego zakresu wymaga jednego liniowego przejล›cia.
  • ๐Ÿ” Szukanie: Funkcja wyszukiwania przeprowadza wyszukiwanie binarne w caล‚ym drzewie i zwraca pasujฤ…cy rekord.
  • โž• Wstawiฤ‡: Gdy liล›ฤ‡ siฤ™ zapeล‚ni, poล‚owa jego elementรณw przenosi siฤ™ do nowego liล›cia, a element nadrzฤ™dny zostaje uaktualniony.
  • โž– Kasowaฤ‡: Usuniฤ™cie powoduje usuniฤ™cie wpisu czฤ…stkowego i poลผyczenie lub scalenie wpisรณw pokrewnych w celu zachowania rรณwnowagi.

B+ TREE: wyszukiwanie, wstawianie i usuwanie OperaPrzykล‚ad

Co to jest drzewo B+?

A B+ Drzewo Jest wykorzystywany gล‚รณwnie do implementacji dynamicznego indeksowania na wielu poziomach. W porรณwnaniu z drzewem B, drzewo B+ przechowuje wskaลบniki danych tylko w wฤ™zล‚ach liล›ciowych drzewa, co sprawia, ลผe โ€‹โ€‹proces wyszukiwania jest dokล‚adniejszy i szybszy.

Zasady dla drzewa B+

Poniลผej przedstawiono podstawowe zasady drzewa B+.

  • Liล›cie sล‚uลผฤ… do przechowywania rekordรณw danych.
  • Rekordy przechowywane sฤ… w wewnฤ™trznych wฤ™zล‚ach drzewa.
  • Jeล›li wartoล›ฤ‡ klucza docelowego jest mniejsza niลผ wartoล›ฤ‡ wฤ™zล‚a wewnฤ™trznego, wรณwczas podฤ…ลผany jest wskaลบnik znajdujฤ…cy siฤ™ tuลผ po jego lewej stronie.
  • Jeล›li wartoล›ฤ‡ klucza docelowego jest wiฤ™ksza lub rรณwna wartoล›ci wฤ™zล‚a wewnฤ™trznego, wรณwczas podฤ…ลผany jest wskaลบnik znajdujฤ…cy siฤ™ tuลผ po jego prawej stronie.
  • Korzeล„ ma co najmniej dwรณjkฤ™ dzieci.

Dlaczego warto uลผywaฤ‡ drzewa B+

Oto powody, dla ktรณrych warto uลผywaฤ‡ drzewa B+:

  • Klucze sล‚uลผฤ… przede wszystkim do uล‚atwienia wyszukiwania poprzez wskazanie wล‚aล›ciwego arkusza.
  • Drzewo B+ wykorzystuje โ€žwspรณล‚czynnik wypeล‚nieniaโ€ do zarzฤ…dzania przyrostem i ubytkiem w drzewie.
  • W drzewach B+ na stronie pamiฤ™ci moลผna ล‚atwo umieล›ciฤ‡ wiele kluczy, gdyลผ nie posiadajฤ… one danych powiฤ…zanych z wฤ™zล‚ami wewnฤ™trznymi. Dziฤ™ki temu szybko uzyska dostฤ™p do danych drzewa znajdujฤ…cych siฤ™ w wฤ™ลบle liล›cia.
  • Do peล‚nego skanowania wszystkich elementรณw potrzebny jest tylko jeden przebieg liniowy, poniewaลผ wszystkie wฤ™zล‚y liล›ciowe drzewa B+ sฤ… ze sobฤ… poล‚ฤ…czone.

Drzewo B+ kontra drzewo B

Oto gล‚รณwne rรณลผnice miฤ™dzy drzewem B+ a drzewem B.

B+ Drzewo Drzewo B
Klucze wyszukiwania moลผna powtarzaฤ‡. Klucze wyszukiwania nie mogฤ… byฤ‡ zbฤ™dne.
Dane sฤ… zapisywane tylko w wฤ™zล‚ach liล›ci. Dane mogฤ… byฤ‡ przechowywane zarรณwno w wฤ™zล‚y liล›ciowe, jak i wฤ™zล‚y wewnฤ™trzne.
Dane przechowywane w wฤ™ลบle liล›cia sprawiajฤ…, ลผe wyszukiwanie jest dokล‚adniejsze i szybsze. Przeszukiwanie jest powolne ze wzglฤ™du na dane przechowywane na liล›ciach i wฤ™zล‚ach wewnฤ™trznych.
Usuniฤ™cie nie jest trudne, poniewaลผ element usuwa siฤ™ tylko z wฤ™zล‚a liล›cia. Usuwanie elementรณw jest procesem skomplikowanym i czasochล‚onnym.
Poล‚ฤ…czone wฤ™zล‚y liล›ci sprawiajฤ…, ลผe wyszukiwanie jest wydajne i szybkie. Nie moลผna ล‚ฤ…czyฤ‡ wฤ™zล‚รณw liล›ci.

Szukaj Operacja

W drzewie B+ wyszukiwanie jest jednฤ… z najล‚atwiejszych procedur do wykonania, a jej wyniki sฤ… szybkie i dokล‚adne.

Moลผna zastosowaฤ‡ nastฤ™pujฤ…cy algorytm wyszukiwania:

  • Aby znaleลบฤ‡ wymagany rekord, naleลผy wykonaฤ‡ polecenie wyszukiwanie binarne na dostฤ™pnych rekordach w Drzewie.
  • W przypadku dokล‚adnego dopasowania do klucza wyszukiwania, odpowiedni rekord jest zwracany uลผytkownikowi.
  • W przypadku gdy podczas wyszukiwania nie uda siฤ™ znaleลบฤ‡ dokล‚adnego klucza w wฤ™ลบle nadrzฤ™dnym, bieลผฤ…cym lub potomnym, uลผytkownikowi zostanie wyล›wietlony komunikat โ€žnie znalezionoโ€.
  • Proces wyszukiwania moลผna powtรณrzyฤ‡, aby uzyskaฤ‡ lepsze i dokล‚adniejsze wyniki.

Szukaj OperaAlgorytm

1. Call the binary search method on the records in the B+ Tree.
2. If the search parameters match the exact key
       The accurate result is returned and displayed to the user
   Else, if the node being searched is the current and the exact key is not found by the algorithm
       Display the statement "Recordset cannot be found."

Wyjล›cie: Uลผytkownikowi wyล›wietlany jest zestaw rekordรณw dopasowanych do dokล‚adnego klucza; w przeciwnym razie uลผytkownikowi wyล›wietla siฤ™ informacja o nieudanej prรณbie.

wstawka Operacja

Poniลผszy algorytm ma zastosowanie do operacji wstawiania:

  • 50 procent elementรณw w wฤ™zล‚ach jest przenoszonych do nowego liล›cia w celu przechowywania.
  • Element nadrzฤ™dny nowego liล›cia jest dokล‚adnie powiฤ…zany z minimalnฤ… wartoล›ciฤ… klucza i nowฤ… lokalizacjฤ… w drzewie.
  • Podziel wฤ™zeล‚ nadrzฤ™dny na wiฤ™cej lokalizacji, na wypadek jego peล‚nego wykorzystania.
  • Teraz, aby uzyskaฤ‡ lepsze wyniki, klucz ล›rodkowy jest skojarzony z wฤ™zล‚em najwyลผszego poziomu danego liล›cia.
  • Dopรณki nie zostanie znaleziony wฤ™zeล‚ najwyลผszego poziomu, kontynuuj proces wyjaล›niony w powyลผszych krokach.

wstawka OperaAlgorytm

1. If inserting at least 1 entry into the leaf container does not make it full, then add the record.
2. Else, divide the node into more locations to fit more records.
   a. Assign a new leaf and transfer 50 percent of the node elements to a new placement in the tree.
   b. The minimum key of the binary tree leaf and its new key address are associated with the top-level node.
   c. Divide the top-level node if it gets full of keys and addresses.
      i. Similarly, insert a key in the center of the top-level node in the hierarchy of the Tree.
   d. Continue to execute the above steps until a top-level node is found that does not need to be divided anymore.
3. Build a new top-level root node of 1 key and 2 indicators.

Wyjล›cie: Algorytm okreล›li element i pomyล›lnie wstawi go w wymaganym wฤ™ลบle liล›cia.

wstawka Operacja

Powyลผszy przykล‚adowy przykล‚ad drzewa B+ wyjaล›niono w poniลผszych krokach:

  • Najpierw mamy 3 wฤ™zล‚y, a pierwsze 3 elementy, czyli 1, 4 i 6, dodajemy w odpowiednich miejscach wฤ™zล‚รณw.
  • Nastฤ™pnฤ… wartoล›ciฤ… w serii danych jest 12, ktรณrฤ… naleลผy umieล›ciฤ‡ w Drzewie.
  • Aby to osiฤ…gnฤ…ฤ‡, podziel wฤ™zeล‚ i dodaj 6 jako element wskaลบnikowy.
  • Teraz tworzona jest prawa hierarchia drzewa, a pozostaล‚e wartoล›ci danych sฤ… odpowiednio dostosowywane przez keeping majฤ…c na uwadze obowiฤ…zujฤ…ce zasady wartoล›ci rรณwnych lub wiฤ™kszych od wฤ™zล‚รณw klucz-wartoล›ฤ‡ po prawej stronie.

Usuniฤ™cia Operacja

Zล‚oลผonoล›ฤ‡ procedury usuwania w drzewie B+ przewyลผsza zล‚oลผonoล›ฤ‡ funkcji wstawiania i wyszukiwania.

Poniลผszy algorytm moลผna zastosowaฤ‡ podczas usuwania elementu z drzewa B+:

  • Najpierw musimy zlokalizowaฤ‡ wpis liล›cia w drzewie, ktรณry zawiera klucz i wskaลบnik, a nastฤ™pnie usunฤ…ฤ‡ wpis liล›cia z drzewa, jeล›li liล›ฤ‡ speล‚nia dokล‚adne warunki usuniฤ™cia rekordu.
  • W przypadku gdy wฤ™zeล‚ liล›ciowy speล‚nia jedynie warunek bycia zapeล‚nionym w poล‚owie, operacja zostaje zakoล„czona; w przeciwnym wypadku wฤ™zeล‚ liล›ciowy ma minimalnฤ… liczbฤ™ wpisรณw i nie moลผe zostaฤ‡ usuniฤ™ty.
  • Pozostaล‚e poล‚ฤ…czone wฤ™zล‚y po prawej i lewej stronie mogฤ… zwolniฤ‡ dowolne wpisy, a nastฤ™pnie przenieล›ฤ‡ je do liล›cia. Jeล›li te kryteria nie sฤ… speล‚nione, powinny poล‚ฤ…czyฤ‡ wฤ™zeล‚ liล›cia i jego wฤ™zeล‚ poล‚ฤ…czony w hierarchii drzewa.
  • Po scaleniu wฤ™zล‚a liล›cia z jego sฤ…siadami po prawej lub lewej stronie, wpisy wartoล›ci w wฤ™ลบle liล›cia lub powiฤ…zanym sฤ…siedzie wskazujฤ…ce na wฤ™zeล‚ najwyลผszego poziomu zostajฤ… usuniฤ™te.

Usuniฤ™cia Operacja

Powyลผszy przykล‚ad ilustruje procedurฤ™ usuwania elementu z drzewa B+ o okreล›lonym rzฤ™dzie.

  • Najpierw w drzewie identyfikowane sฤ… dokล‚adne lokalizacje elementu do usuniฤ™cia.
  • W tym przypadku element do usuniฤ™cia moลผna precyzyjnie zidentyfikowaฤ‡ tylko na poziomie liล›cia, a nie na podstawie indeksu. W zwiฤ…zku z tym element moลผna usunฤ…ฤ‡ bez naruszania reguล‚ usuwania, czyli wartoล›ci klucza minimalnego.

Usuniฤ™cia Operacja

  • W powyลผszym przykล‚adzie musimy usunฤ…ฤ‡ 31 z drzewa.
  • Musimy zlokalizowaฤ‡ wystฤ…pienia 31 w indeksie i liล›ciu.
  • Widzimy, ลผe 31 jest dostฤ™pne zarรณwno na poziomie wฤ™zล‚a indeksowego, jak i wฤ™zล‚a liล›ciowego. Dlatego usuwamy je z obu instancji.
  • Musimy jednak uzupeล‚niฤ‡ indeks wskazujฤ…cy na 42. Teraz przyjrzymy siฤ™ odpowiedniemu dziecku poniลผej 25 roku ลผycia i weลบmiemy minimalnฤ… wartoล›ฤ‡, ktรณrฤ… ustawimy jako indeks. Zatem, poniewaลผ 42 jest jedynฤ… obecnฤ… wartoล›ciฤ…, stanie siฤ™ ona indeksem.

Usuniฤ™cia OperaAlgorytm

1) Start at the root and go up to the leaf node containing the key K.
2) Find the node n on the path from the root to the leaf node containing K.
   A. If n is root, remove K
      a. if root has more than one key, done
      b. if root has only K
         i)  if any of its child nodes can lend a node
             Borrow key from the child and adjust child links
         ii) Otherwise merge the children nodes. It will be a new root
      c. If n is an internal node, remove K
         i)  If n has at least ceil(m/2) keys, done!
         ii) If n has less than ceil(m/2) keys,
             If a sibling can lend a key,
                Borrow key from the sibling and adjust keys in n and the parent node
                Adjust child links
             Else
                Merge n with its sibling
                Adjust child links
      d. If n is a leaf node, remove K
         i)  If n has at least ceil(M/2) elements, done!
             In case the smallest key is deleted, push up the next key
         ii) If n has less than ceil(m/2) elements
             If the sibling can lend a key
                Borrow key from a sibling and adjust keys in n and its parent node
             Else
                Merge n and its sibling
                Adjust keys in the parent node

Wyjล›cie: Klucz โ€žKโ€ zostaje usuniฤ™ty, a w razie potrzeby klucze zostajฤ… poลผyczone od wฤ™zล‚รณw pokrewnych w celu dostosowania wartoล›ci w n i jego wฤ™zล‚ach nadrzฤ™dnych.

FAQ

Drzewa B+ indeksujฤ… duลผe tabele i magazyny cech, ktรณre napฤ™dzajฤ… sztucznฤ… inteligencjฤ™ i analitykฤ™. Poniewaลผ liล›cie sฤ… poล‚ฤ…czone, skanowanie zakresรณw wierszy lub osadzeล„ jest szybkie, umoลผliwiajฤ…c potokom sztucznej inteligencji wydajne pobieranie danych treningowych, podczas gdy baza danych zajmuje siฤ™ indeksowaniem.

Tak. Asystenci AI mogฤ… tworzyฤ‡ kod wstawiania, wyszukiwania i usuwania w drzewie B+ C++, Javalub Python Z prostego opisu. Dokล‚adnie przetestuj wynik, poniewaลผ ล‚atwo popeล‚niฤ‡ subtelne bล‚ฤ™dy w logice dzielenia i scalania.

Rzฤ…d (m) to maksymalna liczba potomkรณw, jakฤ… moลผe mieฤ‡ wฤ™zeล‚. Wฤ™zeล‚ moลผe pomieล›ciฤ‡ do m โˆ’ 1 kluczy i musi mieฤ‡ co najmniej ceil(m/2) potomkรณw, co zapewnia rรณwnowagฤ™ i pล‚ytkoล›ฤ‡ drzewa.

Drzewa B+ sฤ… domyล›lnym indeksem w relacyjnych bazach danych, takich jak MySQL (InnoDB), PostgreSQL, Oracleoraz w systemach plikรณw takich jak NTFS i ext4. Ich poล‚ฤ…czone liล›cie sprawiajฤ…, ลผe zapytania o zakresy i sekwencyjne odczyty sฤ… bardzo wydajne.

Podsumuj ten post nastฤ™pujฤ…co: