Wat is het geneste setmodel?
Het geneste setmodel is ook bekend als het gemodificeerde preorder tree traversal algoritme en is een manier om hiërarchische gegevens op te slaan in relationele databases. Dit model heeft het voordeel dat het zeer snelle toegang biedt en kan het best worden geïmplementeerd in hiërarchieën die vaker worden gelezen dan waarnaar wordt geschreven. Aan elk knooppunt in het informatiemodel worden twee nummers toegewezen die worden opgeslagen als attributen. Het opvragen van het geneste set-model is vrij eenvoudig omdat beide waarden kunnen worden gebruikt om de benodigde gegevens op te halen. Het maken van invoegingen, verwijderingen, bewegingen en updates is echter veel omslachtiger omdat het kan gaan om het opnieuw nummeren van de knooppunten.
Meestal gebruikt om geneste sets of hiërarchische informatie in de vorm van bomen weer te geven, werd het geneste set-model geïntroduceerd door Joe Celko. Een boom is in dit geval een gegevensstructuur die een aantal gekoppelde knooppunten bevat. Een ouderknooppunt kan bijvoorbeeld verbinding maken met verschillende onderliggende knooppunten en deze structuur wordt door de boom herhaald op verschillende niveaus.
Bomen zijn een geweldige manier om informatie in een bepaalde volgorde binnen een relationele database op te slaan. Dit is een gegevensset die gegevens opslaat afhankelijk van gemeenschappelijke kenmerken. Productinformatie in de voedselsectie van een winkel kan bijvoorbeeld beginnen met voedsel, vertakking in fruit, groenten en vlees. Fruit kan verder worden onderverdeeld in bessen, meloenen en appels en groenten in knollen, groen en andere, en vlees in varkensvlees, schapenvlees en kalfsvlees.
Een relationele database slaat al deze informatie op in een gemakkelijk te begrijpen vorm, en een genest setmodel maakt het mogelijk om de boomstructuur efficiënt te beheren. Met het bovenstaande voorbeeld zou de wortelknoop voedsel zijn, dat wordt voorgesteld door twee waarden. Gegeven de linker waarde voor voedsel als 1, krijgen de andere items in de boom een nummer aan de linkerkant in volgorde. Vruchten krijgen links een waarde van 2, bessen 3, enzovoort. De waarden worden vervolgens aan de rechterkant toegewezen, en werken helemaal door de boom, van onder naar boven, door elke tak tot de laatste waarde is toegewezen aan voedsel aan de rechterkant.
Elk item in de structuur heeft twee waarden, zeg lft voor left en rgt voor right, die kunnen worden gebruikt om ze te identificeren en hun relatie met andere items aan te geven. Als fruit bijvoorbeeld een waarde heeft van 2 en 15, dan zijn alle knooppunten met een linkerwaarde groter dan 2 en een rechterwaarde kleiner dan 15 afstammelingen van de fruitboom 2-15. Het wordt gemakkelijk om informatie over alle fruitsoorten in één keer op te halen, omdat deze waarden in een enkele query naar de database kunnen worden opgegeven.
Dit model is uitstekend voor het opslaan van informatie die vaak wordt gebruikt, maar invoegingen, verwijderingen en herschikken van informatie in het geneste set-model worden erg vervelend. Het herschrijven van indexen en het hernummeren van de informatie kan ervoor zorgen dat de database crasht, vooral als de boom groeit met honderdduizenden knooppunten. Het geneste set-model is het beste voor systemen voor het beheer van lichte inhoud die minimale invoegingen en wijzigingen hebben. Invoegingen kunnen veel sneller worden gemaakt in het geneste intervalmodel omdat het de positie van elke knoop in de boom opslaat met behulp van decimalen met drijvende komma, terwijl ook de padinformatie wordt gecodeerd.