B+ TREE: Zoeken, invoegen en verwijderen Operaties

โšก Slimme samenvatting

Een B+ Tree is een dynamische index met meerdere niveaus die alleen gegevenspointers opslaat bij gekoppelde bladknooppunten, waardoor zoekopdrachten nauwkeurig en snel zijn. Dit artikel behandelt de regels van een B+ Tree, hoe deze verschilt van een B Tree, en de zoek-, invoeg- en verwijderbewerkingen.

  • ๐Ÿƒ Bladopslag: Een B+ boom bewaart, in tegenstelling tot een B boom, alleen datapointers bij de bladknoppen.
  • ๐Ÿ”— Verbonden bladeren: Alle bladknooppunten zijn met elkaar verbonden, dus een volledige bereikscan vereist รฉรฉn lineaire doorgang.
  • ๐Ÿ” Zoeken: De zoekfunctie voert een binaire zoekopdracht uit in de boomstructuur en retourneert het overeenkomende record.
  • โž• Plaats: Wanneer een blad vol is, verplaatst de helft van de elementen zich naar een nieuw blad en wordt het bovenliggende blad bijgewerkt.
  • โž– Verwijderen: Bij verwijdering wordt een bladvermelding verwijderd en worden verwante vermeldingen geleend of samengevoegd om het evenwicht te bewaren.

B+ TREE: Zoeken, invoegen en verwijderen Operaties Voorbeeld

Wat is een B+-boom?

A B+ Boom Het wordt voornamelijk gebruikt voor het implementeren van dynamische indexering op meerdere niveaus. In vergelijking met een B-boom slaat de B+ boom de datapointers alleen op bij de bladknoppen van de boom, waardoor het zoekproces nauwkeuriger en sneller verloopt.

Regels voor B+ Boom

Hieronder volgen de essentiรซle regels voor een B+-boom.

  • Bladeren worden gebruikt om gegevensrecords op te slaan.
  • De gegevens worden opgeslagen in de interne knooppunten van de boomstructuur.
  • Als de waarde van een doelsleutel kleiner is dan die van het interne knooppunt, wordt de aanwijzer direct links daarvan gevolgd.
  • Als de waarde van een doelsleutel groter is dan of gelijk aan de waarde van het interne knooppunt, wordt de aanwijzer direct rechts daarvan gevolgd.
  • De wortel heeft minimaal twee kinderen.

Waarom B+Tree gebruiken

Hieronder volgen redenen om een โ€‹โ€‹B+ boom te gebruiken:

  • Sleutels worden voornamelijk gebruikt om het zoeken te vergemakkelijken door naar het juiste blad te wijzen.
  • Een B+ boom gebruikt een "vullingsfactor" om de toename en afname in een boom te beheren.
  • In B+-bomen kunnen eenvoudig talloze sleutels op de geheugenpagina worden geplaatst, omdat ze niet de gegevens bevatten die zijn gekoppeld aan de interne knooppunten. Daarom heeft het snel toegang tot boomgegevens die zich op het bladknooppunt bevinden.
  • Een volledige scan van alle elementen vereist slechts รฉรฉn lineaire doorgang, omdat alle bladknoppen van een B+-boom met elkaar verbonden zijn.

B+ Boom versus B Boom

Hieronder volgen de belangrijkste verschillen tussen een B+ boom en een B boom.

B+ Boom B Boom
Zoektoetsen kunnen worden herhaald. Zoeksleutels mogen niet overbodig zijn.
Gegevens worden alleen opgeslagen op de bladknooppunten. Zowel bladknooppunten als interne knooppunten kunnen gegevens opslaan.
Gegevens die op het bladknooppunt zijn opgeslagen, maken de zoekopdracht nauwkeuriger en sneller. Het zoeken verloopt traag omdat de gegevens zijn opgeslagen op bladknooppunten en interne knooppunten.
Verwijderen is niet moeilijk, aangezien een element alleen uit een bladknooppunt wordt verwijderd. Het verwijderen van elementen is een ingewikkeld en tijdrovend proces.
Gekoppelde bladknooppunten maken het zoeken efficiรซnt en snel. U kunt bladknooppunten niet koppelen.

Zoeken Operatie

In een B+ boom is een zoekopdracht een van de eenvoudigste procedures om uit te voeren en levert deze snelle en nauwkeurige resultaten op.

Het volgende zoekalgoritme is van toepassing:

  • Om het vereiste record te vinden, moet u de opdracht uitvoeren Binaire zoekopdracht op de beschikbare records in de boom.
  • Bij een exacte match met de zoeksleutel wordt het bijbehorende record teruggegeven aan de gebruiker.
  • Als de exacte sleutel niet kan worden gevonden door de zoekopdracht in het bovenliggende, huidige of bladknooppunt, wordt er een 'niet gevonden'-bericht aan de gebruiker weergegeven.
  • Het zoekproces kan opnieuw worden uitgevoerd voor betere en nauwkeurigere resultaten.

Zoeken Operaalgoritme

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."

Output: De overeenkomende recordset voor de exacte sleutel wordt aan de gebruiker getoond. Anders wordt een mislukte poging aan de gebruiker getoond.

Invoegen Operatie

Het volgende algoritme is van toepassing op de invoegbewerking:

  • 50 procent van de elementen in de knooppunten wordt voor opslag naar een nieuw blad verplaatst.
  • De ouder van het nieuwe blad is nauwkeurig gekoppeld aan de minimale sleutelwaarde en een nieuwe locatie in de boomstructuur.
  • Splits het bovenliggende knooppunt op in meer locaties voor het geval het volledig wordt benut.
  • Voor betere resultaten wordt de centrale sleutel nu gekoppeld aan het knooppunt op het hoogste niveau van dat blad.
  • Totdat het knooppunt op het hoogste niveau niet is gevonden, blijft u het proces herhalen dat in de bovenstaande stappen is uitgelegd.

Invoegen Operaalgoritme

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.

Output: Het algoritme bepaalt het element en voegt het met succes in het vereiste bladknooppunt in.

Invoegen Operatie

Het bovenstaande B+ Tree-voorbeeldvoorbeeld wordt in de onderstaande stappen uitgelegd:

  • Allereerst hebben we 3 knooppunten, en de eerste 3 elementen, namelijk 1, 4 en 6, worden op de juiste plaatsen in de knooppunten toegevoegd.
  • De volgende waarde in de reeks is 12, die onderdeel moet worden van de boomstructuur.
  • Om dit te bereiken, deel je het knooppunt en voeg je 6 toe als aanwijzerelement.
  • Nu wordt een rechts-hiรซrarchie van een boom gecreรซerd en worden de resterende gegevenswaarden dienovereenkomstig aangepast door kee.ping Houd daarbij rekening met de geldende regels voor waarden die gelijk zijn aan of groter zijn dan de waarden die gelden voor de sleutel-waardeparen aan de rechterkant.

Verwijdering Operatie

De complexiteit van de verwijderprocedure in de B+ Tree overtreft die van de invoeg- en zoekfunctionaliteit.

Het volgende algoritme is van toepassing bij het verwijderen van een element uit de B+ Tree:

  • Allereerst moeten we een bladvermelding in de boomstructuur vinden die de sleutel en de aanwijzer bevat. Vervolgens verwijderen we die bladvermelding uit de boomstructuur als deze voldoet aan de exacte voorwaarden voor het verwijderen van een record.
  • Als het bladknooppunt slechts voor de helft gevuld is, is de bewerking voltooid; anders bevat het bladknooppunt te weinig gegevens en kan het niet worden verwijderd.
  • De andere gekoppelde knooppunten aan de rechter- en linkerkant kunnen alle vermeldingen vrijmaken en deze vervolgens naar het blad verplaatsen. Als aan deze criteria niet wordt voldaan, moeten ze het bladknooppunt en het daaraan gekoppelde knooppunt in de boomstructuur samenvoegen.
  • Bij het samenvoegen van een bladknooppunt met zijn buren aan de rechter- of linkerkant worden de waarden in het bladknooppunt of de gekoppelde buur die naar het knooppunt op het hoogste niveau verwijzen, verwijderd.

Verwijdering  Operatie

Het bovenstaande voorbeeld illustreert de procedure voor het verwijderen van een element uit een B+ boom van een specifieke orde.

  • Ten eerste worden de exacte locaties van het te verwijderen element in de boom geรฏdentificeerd.
  • Het te verwijderen element kan hier alleen nauwkeurig worden geรฏdentificeerd op het bladniveau en niet op indexniveau. Het element kan dus worden verwijderd zonder de verwijderingsregels te beรฏnvloeden, wat de waarde van de minimale sleutel is.

Verwijdering  Operatie

  • In het bovenstaande voorbeeld moeten we 31 uit de boom verwijderen.
  • We moeten de instanties van 31 in de index en de bladeren lokaliseren.
  • We zien dat 31 zowel op index- als op bladknooppuntniveau aanwezig is. Daarom verwijderen we het uit beide instanties.
  • Maar we moeten de index die naar 42 verwijst invullen. We kijken nu naar het juiste kind onder de 25 en nemen de laagste waarde om die als index te gebruiken. Omdat 42 de enige aanwezige waarde is, wordt dat de index.

Verwijdering Operaalgoritme

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

Output: De sleutel "K" wordt verwijderd en sleutels worden van broers en zussen geleend om de waarden in n en de bovenliggende knooppunten indien nodig aan te passen.

Veelgestelde vragen

B+ bomen indexeren de grote tabellen en feature stores die de basis vormen voor AI en analyses. Omdat de bladeren met elkaar verbonden zijn, zijn bereikscans over rijen of embeddings snel, waardoor AI-pipelines efficiรซnt trainingsdata kunnen ophalen terwijl de database de indexering afhandelt.

Ja. AI-assistenten kunnen code genereren voor het invoegen, zoeken en verwijderen van B+-bomen. C++, Javaof Python op basis van een eenvoudige beschrijving. Test de uitvoer zorgvuldig, aangezien de logica voor splitsen en samenvoegen gemakkelijk subtiel fout kan gaan.

De orde (m) is het maximale aantal kinderen dat een knooppunt kan hebben. Een knooppunt kan maximaal m โˆ’ 1 sleutels bevatten en moet minstens ceil(m/2) kinderen hebben, wat de boom evenwichtig en ondiep houdt.

B+ bomen zijn de standaardindex in relationele databases zoals MySQL (InnoDB), PostgreSQLen OracleEn in bestandssystemen zoals NTFS en ext4. De gekoppelde bladeren maken bereikquery's en sequentiรซle leesbewerkingen zeer efficiรซnt.

Vat dit bericht samen met: