Breng structuur aan in je data
De meest gebruikte vormen van dataopslag uitgelegd
- Artikel
- Data Engineering
Er zijn veel verschillende vormen van dataopslag. In de praktijk worden een (relationele) database, een datawarehouse en een data lake het meest gebruikt én door elkaar gehaald. In dit artikel lees je wat ze inhouden en hoe je ze gebruikt.
Welke vormen van dataopslag zijn er?
In de praktijk worden deze drie vormen van dataopslag met meest gebruikt:
- Een relationele database (doorgaans simpelweg een database genoemd, al zijn er ook andere vormen van databases) wordt vaak gebruikt voor operationele processen. Data in een relationele database is gestructureerd in een vast datamodel en wordt vaak opnieuw gebruikt door andere operationele processen. Daarom is het belangrijk dat de data nauwkeurig en betrouwbaar wordt overgeschreven.
- Een datawarehouse is een opslagplek voor datadie niet (direct) door operationele systemen gebruikt wordt. Een datawarehouse heeft een gestructureerde manier van opslag, maar wordt gebruikt voor analytische doeleinden.
- Een data lake heeft veel overeenkomsten met een datawarehouse, maar biedt meer vrijheid in de manier waarop je je data opslaat. Een data lake is in de basis een “gewone” bestandsopslag, waardoor verscheidene bestandstypen ondersteund worden. Een data lake heeft als enige van de drie opslagvormen geen ingebouwde engine om data te verwerken.
Wat is een relationele database?
Een relationele database is opgebouwd volgens een relationeel datamodel. De data wordt opgeslagen in tabellen, met rijen en kolommen met een vaste structuur (het ‘schema’). Relationele databases zijn een traditionele database structuur.
De vaste structuur zorgt voor efficiëntie en consistentie, wat leidt tot een hoge betrouwbaarheid van de data. Data ophalen uit relationele databases gebeurt met Standard Query Language (SQL). Een ander kenmerk van relationele databases is dat ze door veel users tegelijk gebruikt kunnen worden.
De afkorting OLTP zie je vaak terugkomen bij een omschrijving van relationele databases. Deze afkorting staat voor ‘online transactional processing’. Het woord ‘transactie’ verklapt al dat relationele databases het sterkst zijn in het verwerken van gestructureerde data, zoals transacties van een winkel of webshop.
Wanneer een relationele database gebruiken?
- Bij behoefte aan hoge nauwkeurigheid, zoals het verwerken van transacties of financiële data;
- Bij kleinere gegevensvolumes (dus geen big data);
- Als je makkelijk aanpassingen wilt kunnen maken;
Wanneer geen relationele database gebruiken?
- Voor data-analyse zijn relationele databases vaak te langzaam;
- Als je grote datavolumes hebt: relationele databases zijn geen gedistribueerde databases en daardoor kunnen ze alleen verticaal schalen door meer opslag in de machine zelf toe te voegen;
- Als je een flexibel schema nodig hebt;
- Relationele databases zijn niet ontworpen om ongestructureerde gegevens te verwerken. Als je data verschillende formaten heeft (json, xml), kan een NoSQL database een beter alternatief zijn.
Wat is een data warehouse?
Een data warehouse is zeer geschikt voor data-analysedoeleinden. In een data warehouse wordt data uit verschillende bronnen ingeladen en samengevoegd. Een data warehouse werkt wel met een relationele structuur, maar kan allerlei data bevatten en is specifiek gestructureerd voor query’s en analyses.
Het ophalen van data gebeurt vaak in batches, niet telkens wanneer een transactie plaatsvindt in het bronsysteem, zoals vaak wel het geval is in een relationele database.
Data warehouses maken vaak gebruik van een ETL-pijpleiding (Extract, Transform, Load):
- Extract – Data wordt opgehaald uit verschillende bronnen (data lake, database enz.)
- Transform – Data uit verschillende bronnen wordt gecombineerd en getransformeerd tot een datamodel dat is geoptimaliseerd op basis van je doelen
- Load – Data uit een data warehouse wordt vaak geladen in een BI- of dashboardingtool
Het datamodel voor een data warehouse moet worden ontworpen om het eenvoudig te maken voor gebruikers om met de data te werken ende prestaties van query's te verbeteren.
Tegenwoordig worden databewerkingen niet altijd meer uitgewerkt in het datawarehouse zelf, maar toegepast middels DBT. Dit is een techniek waarin alle bewerkingen los, en grotendeels agnostisch, van het data warehouse worden opgeslagen. Het heeft interessante features, zoals het automatisch uitvoeren van datakwaliteit tests en een snelle en intuïtieve manier van documenteren.
Ook stelt het je in staat om modellen en bewerkingen te hergebruiken. Je gebruikt echter nog steeds de query engine van het datawarehouse, en kan gebruiken maken van functionaliteiten zoals de web interface en user management.
Wanneer een data warehouse gebruiken?
- Als je meerdere databronnen wilt combineren;
- Als je behoefte hebt aan 1 centrale plek voor een single source of truth.
- Bij behoefte aan betere performance voor analyses;
- Als toegang tot data centraal geregeld moet worden; omdat alle data op één plek wordt opgeslagen;
- Bij grote datavolumes;
- Als je data hebt die gestructureerd kan worden.
Wanneer geen data warehouse gebruiken?
Een data warehouse is ontzettend krachtig en moderne clouddata warehouses zijn vaak ook erg kostenefficiënt. Je betaalt alleen voor wat je verbruikt. Toch zijn er situaties waarin een data warehouse niet de juiste oplossing is:
- Operationele data, zoals transacties, kun je vaak beter kwijt in een relationele database.
- Voor analyses over deze data kan een data warehouse wél de juiste oplossing zijn;
- Als de data ongestructureerd is en niet in een strak schema past, zou bijvoorbeeld een data lake een beter alternatief kunnen zijn;
- Als je data verschillende data formats heeft (json, xml), kunnen een data lake of een NoSQL database een beter alternatief zijn.
- Bij analyse-doeleinden waarbij tijdigheid belangrijk is zoals real-time analyses.
Wat is een data lake?
Een data lake is een gecentraliseerde opslagplaats, waarin je zowel gestructureerde data als ongestructureerde data op kunt slaan. Data lakeszijn in staat om hele grote volumes dataen met uiteenlopende structuren op te slaan.
Een data lake is vergelijkbaar met een folder op de computer waarin allerlei bestanden opgeslagen kunnen worden(tekst,csv,json, foto’s, video’s, spraak etc.), zonder dat de gegevens eerst gestructureerd hoeven te worden.
Op data in een datalake kun je verschillende soorten analyses uitvoeren, dashboards en visualisaties maken. Ook kun je(big)dataprocessing toepassen en machine learning modellen draaien. Je hebt hiervoor echter wel een losse query engine nodig. De samenkomst van deze twee technieken wordt ook wel een data lake house genoemd.
Wanneer een data lake gebruiken?
- Als je ongestructureerde gegevens wilt analyseren;
- Als je grote datavolumes hebt;
- Wanneer je de vrijheid wilt om te spelen met datasets en ad-hoc analyses te doen (vaak het geval bij Data Scientists);
- Als je verwacht dat je usecase voor data-analyse in de toekomst nog gaat veranderen. Een data lake is goed geschikt om gegevens historisch op te slaan, voordat deze verwerkt worden in een gestructureerd datamodel;
- Als je data wilt analyseren zonder deze in te voegen in een vooraf gedefinieerd schema. Met "schema-on-read" kun je query’s runnen op bestanden zonder vooraf een tabel aan te maken.
Wanneer geen data lake gebruiken?
Data lakes zijn flexibel en je kunt er veel mee, maar ze zijn niet altijd de juiste toepassing voor ieder vraagstuk.
- Operationele data, zoals transacties, kun je vaak beter kwijt in een relationele database vanwege de toegankelijkheid van de data;
- Data-analyse op gestructureerde data is soms eenvoudiger en sneller in een data warehouse, met een duidelijk gedefinieerd datamodel;
- De ongestructureerde aard van het data lake vereist structuur aan de kant van de gebruiker om het overzicht te houden.
Data opslaan voor analytische doeleinden? Gebruik een datamodel
Als je data voor analytische doeleinden wilt verwerken in een data-infrastructuur, moet je de data opslaan. Dat gebeurt op een bepaalde manier. Dit is het datamodel waarin de data wordt opgeslagen.
Een datamodel kan veel vrijheid bevatten – denk bijvoorbeeld aan de opslag op een laptop, waarbij alle bestanden door elkaar kunnen staan – of juist veel orde bevatten – denk dan bijvoorbeeld aan een database, waarbij alle data in een vast schema wordt opgeslagen.
Hoe meer vrijheid je toestaat in de manier van opslaan, hoe lastiger het is om de data later te verwerken voor analytische doeleinden. Het hebben van een goed doordacht en georganiseerd datamodel is cruciaal voor hoe de data later gebruikt kan worden. Query’s die eenvoudig en simpel hadden kunnen zijn, kunnen heel ingewikkeld worden als het datamodel niet goed is doordacht.
Datamodellering is geen vaststaand proces. Het is iteratief naarmate nieuwe eisen en gegevens worden ingevoerd. Flexibiliteit helpt als nieuwe informatie beschikbaar komt.
Het juiste datamodel voor jouw organisatie
Het datamodel voor een datawarehouse kan worden opgesteld door data architecten, data engineers, data modelleurs, en andere data professionals met verstand van data modelleren.
Elke vorm heeft zo zijn voor- en nadelen en er is geen one-size-fits-all, ook al willen sommige voorstanders van een typering dat wel doen geloven. Vaak liggen er onder de one-size-fits-all benaderingen aannames die in de praktijk onhaalbaar zijn. Hierbij is te denken aan goed gedefinieerde en weinig veranderlijke business datadefinities.
Analytics engineers zijn specialisten die zowel kennis hebben van het opstellen van een datamodel, als de implementatie ervan. Dit houdt in dat de professional de requirements voor het datamodel ophaalt bij de business, deze vervolgens verwerkt tot een model, en dit implementeert middels technieken zoals SQL en DBT.
Wat is een data-infrastructuur?
Achter een goed datamodel ligt een goede data-architectuur, waarin generieke richtlijnen zijn opgesteld over hoe een datamodel moet worden opgesteld. Deze generieke richtlijnen zijn in de meeste gevallen toereikend, maar specifieke data vraagt vaak ook om specifieke oplossingen.
Zolang er goed is nagedacht over waarom er een specifieke oplossing nodig is voor die data – en waarom er dus afgeweken wordt van de generiek voorgeschreven oplossing – kan dat prima passen binnen een volwassen data-architectuur.
Een architectuur wordt doorgaans opgezet door een solution architect. Zij kunnen de business context en functionele requirements omzetten naar een technisch ontwerp.
Hulp of advies nodig over de opslag van de data binnen jouw organisatie?
Onze data-experts denken graag met je mee! Plan een online meeting in om te sparren over jouw uitdagingen.
Dit is een artikel van Oskar
Oskar van den Berg is Data Engineer en Team Lead, en reeds 7 jaar werkzaam bij Digital Power. Met zijn werkervaring als Data Engineer binnen startup- en enterprise organisaties kan hij klanten op zowel technisch als strategisch niveau adviseren.
Data Engineeroskar.vandenberg@digital-power.com
Oskar schreef dit artikel samen met Dennis Dickmann, Data Engineer bij Digital Power.
1x per maand data insights, praktijkcases en een kijkje achter de schermen ontvangen?
Meld je aan voor onze maillijst en blijf 'up to data':