What is subsetting

Coming soon

Deze functie zal binnenkort worden vrijgegeven.

Database subsetting verwijst naar de praktijk van het maken van een kleinere, representatieve subset van een grotere database. Hiermee kun je op een efficiënte manier de grootte van je doeldatabase verkleinen met behoud van de referentiële integriteit van de gegevens. Je kunt instellen hoe Syntho een subset moet genereren. Je kunt bijvoorbeeld instellen dat subsetting slechts 5% van alle transacties of alle gegevens van patiënten in Nederland bevat.

Subsetting kan om verschillende redenen relevant zijn:

  1. Testen: Een subset van een database kan worden gebruikt voor het testen van nieuwe functies, wijzigingen of upgrades voordat deze in de productiedatabase worden geïmplementeerd. Dit kan helpen om potentiële problemen of bugs te identificeren voordat ze de hele database beïnvloeden.

  2. Ontwikkeling: Ontwikkelaars hebben vaak een subset van de database nodig om aan nieuwe functies of toepassingen te werken zonder de productiedatabase te verstoren. Dit kan het ontwikkelingsproces versnellen en het risico op gegevensverlies of corruptie verkleinen.

  3. Training: Een (synthetische) subset van de database kan worden gebruikt voor trainingsdoeleinden, zodat gebruikers kunnen leren hoe ze de database moeten gebruiken in een veilige en gecontroleerde omgeving.

  4. Naleving: Sommige wettelijke vereisten of privacywetten kunnen het gebruik van een subset van gegevens vereisen voor specifieke doeleinden, zoals testen of auditen, om ervoor te zorgen dat gevoelige informatie wordt beschermd.

Subsetting modi

Subsetting in Syntho maakt gebruik van foreign keys om relaties in de gegevens te identificeren. Deze relaties zijn al aanwezig in de brondatabase of kunnen worden aangemaakt met de foreign keys tool van Syntho. Het subsettingproces gebruikt deze relaties om door de database te navigeren en de subset op te bouwen.

Elke tabel in de brondatabase valt in een van de volgende categorieën voor subsetting:

  1. Target table: De doeltabel is het startpunt voor het opbouwen van de subset en levert de initiële set rijen. Syntho haalt gegevens op uit de doeltabel om vervolgens informatie uit gekoppelde tabellen te identificeren. Een doeltabel bevat meestal entiteiten die geassocieerd zijn met de meeste andere informatie in de database, zoals patiënten, klanten of transacties. Om referentiële integriteit te waarborgen, kan niet meer dan één doeltabel worden ingesteld.

  2. Linked tables: Deze tabellen zijn direct of indirect verbonden met een doeltabel.

    • Downstream tabellen bevatten gegevens die nodig zijn om de referentiële integriteit in de subset te behouden en hebben primaire sleutels waarnaar verwezen wordt door foreign keys in gerelateerde tabellen.

    • Upstream tabellen bevatten gegevens met een foreign key die verwijst naar een primary key in de doeltabel en kunnen nuttige informatie bevatten.

    Sommige verwante tabellen kunnen zowel stroomopwaarts als stroomafwaarts zijn, in welk geval filtering alleen kan worden toegepast op stroomopwaarts records. Syntho haalt gegevens uit gekoppelde tabellen om referentiële integriteit te behouden in de output subset. Koppelingen tussen tabellen kunnen direct zijn, zoals een doeltabel met allergieën die verwijst naar een patiëntentabel via een foreign key relatie, of indirect, zoals een doeltabel die verwijst naar een patiëntentabel die op zijn beurt verwijst naar een ziekenhuistabel. De subset bevat alle relevante informatie uit gekoppelde tabellen.

  3. Duplicated tables: Een dubbeltabel bevat statische waarden die gebruikt worden in andere tabellen in de subset. Syntho haalt alle gegevens in een opzoektabel op, ongeacht of en waar de waarden gebruikt worden. Relaties met dubbele tabellen worden niet meegenomen in de subsetting.

  4. Excluded tables: Tabellen die niet zijn aangemerkt als doeltabellen, gekoppelde tabellen of gedupliceerde tabellen, worden uitgesloten van de subset.

Hoe werkt Syntho subsetting?

Het Syntho subsetting algoritme behandelt een brondatabase als een gerichte acyclische grafiek waarin elke tabel een knooppunt is en de relaties de gerichte randen zijn. Met deze abstractie in gedachten kunnen we de hele grafiek doorkruisen vanaf elk punt (doeltabel) naar alle andere verbonden tabellen met behulp van de topologische volgorde.

Zodra de doeltabel naar de doeldatabase is gekopieerd, begint het upstream en downstream proces waarbij gegevens voor de gekoppelde tabellen zodanig worden gekopieerd dat naar alle rijen correct wordt verwezen zodat referentiële integriteitscontrole niet faalt. Als er dubbele of uitgesloten tabellen zijn ingesteld in de configuratie, worden deze als volgt gekopieerd, maar de referentiële integriteit kan niet worden gegarandeerd.

Een algemeen overzicht van de subsetting stroom kan hieronder worden gezien:

  1. Verwijder cyclische relaties uit de database

  2. Doeltabel kopiëren van bron- naar doeldatabase

  3. Duplicaattabellen naar doeldatabase kopiëren

  4. Kopieer upstream tabellen naar doel database

  5. Downstream tabellen naar doel database kopiëren

Beperkingen en aanbevelingen

  • Het subsetting proces neemt als invoer een acyclische gerichte grafiek en als de bron database cycli bevat zou dit niet werken. Syntho kan zulke gevallen behandelen door een van de randen te verwijderen die de cyclus veroorzaakt. Dit betekent ook dat referentiële integriteit niet behouden kan blijven in het eindproduct. Het wordt aanbevolen om cycli handmatig te verwijderen om de meest representatieve subset te krijgen.

  • Het subsetproces is erg afhankelijk van de configuratie van de doeltabel. Hoewel de gebruiker 5% van de doeltabel kan selecteren, betekent dat niet dat de uiteindelijke database 5% van alle gegevens zal bevatten. Er is een mogelijkheid dat de 5% van de doeltabel koppelt aan alle gegevens in de andere tabellen, wat betekent dat om referentiële integriteit te behouden alle andere records worden gekopieerd. Om de uiteindelijke subsetwaarden dicht bij de koppelingen te krijgen, moet een geschikte doeltabel worden geselecteerd.

Caution: Het subsettingproces is van nature niet parallelleerbaar, wat betekent dat het proces voor grote databases uren kan duren, of zelfs een hele dag, omdat het afhangt van de lees- en schrijfsnelheid van de database.

Last updated