Post on 12-Jun-2015
description
ETL performance:
aandachtsgebieden en
tips voor een snellere
ETL-batch
Door: Ron Hoes
ETL performance: aandachtsgebieden en tips voor een snellere ETL-batch
Pg, 2
Dit artikel is onderdeel van de themareeks BI & Techniek, bedoeld om de meer technische
aspecten van BI voor het voetlicht te krijgen. Het is geschreven voor beheerders en
ontwikkelaars binnen de BI, die zich afvragen hoe zij de steeds langer wordende doorlooptijden
van de ETL batch in de hand kunnen houden.
Steeds meer en steeds sneller
Dashboards die 's ochtends om 7.00 uur landelijke verkoopcijfers tot en met de avond ervoor
moeten tonen. Actueel inzicht in de winkelvoorraden vóórdat de winkels openen. Business
Intelligence wordt vandaag de dag niet alleen breder en frequenter ingezet, maar de
beschikbaarheid ervan is ook vanzelfsprekender geworden.
Er moet direct gestuurd kunnen worden op informatie die zojuist beschikbaar is gekomen.
Ondanks de opkomst van tools en technieken voor directe analyses op bron-data, blijft de vraag
naar datawarehouses met historische, gestructureerde gegevens ten behoeve van een up-to-
date BI-omgeving onverminderd actueel.
ETL performance: aandachtsgebieden en tips voor een snellere ETL-batch
Pg, 3
De verwerking van de groeiende hoeveelheid data en de toenemende vraag naar snellere
informatie door managers, maakt dat er steeds meer gegevens in minder tijd moeten worden
verwerkt.
De druk op de doorlooptijd van het laden van nieuwe data in het datawarehouse neemt daarmee
toe. En de tijd dat het batch-window van 19.00 tot 7.00 uur het exclusieve domein van de ETL-
batch was, ligt ver achter ons.
Opzet
Zonder in te gaan op specifieke oorzaken en al teveel in technische details te treden, wil ik de
belangrijke oorzaken van een uit de hand lopende doorlooptijd van de ETL-batch in een aantal
gebieden indelen:
te veel verplaatsingen van hoge volumes aan data en inefficiënte bewerkingen op de
data.
ETL performance: aandachtsgebieden en tips voor een snellere ETL-batch
Pg, 4
hardware die te zwaar wordt belast waardoor tijdens de ETL-batch de
verwerkingscapaciteit onevenredig wordt aangetast.
onbekendheid met de data en mogelijkheden van de ETL-tool.
Grote data-volumes
Breng het volume aan data dat door het ETL-proces loopt, zo vroeg mogelijk in het proces terug.
Data-verplaatsingen en daarmee I/O zijn in veel gevallen een belangrijke boosdoener voor een
slechte performance.
Selecteer om te beginnen alleen die data die nodig is voor de verwerking; filter, of liever nog,
vermijd inlezen van rijen en kolommen die niet gebruikt worden in het proces. Een verdere stap
hierin is het apart opslaan van zogenaamde 'hete' en 'koude' data, zodat data die vrijwel nooit
wordt gebruikt ('koud') niet telkens wordt gelezen. Zorg dat het proces dat 'hete' en 'koude' data
eventueel opnieuw indeelt, buiten het kritische batch-window loopt.
ETL performance: aandachtsgebieden en tips voor een snellere ETL-batch
Pg, 5
Splits waar mogelijk de te verwerken gegevens al vroeg in het proces op, naar later gebruik. Als
ETL-deelprocessen A, B, C allen geïnteresseerd zijn in orders met status 'open' en alleen proces
D ook in status 'closed', loont het de moeite op voorhand twee order-bestanden aan te maken,
een order-open en een order-closed. Alleen proces D leest beide bestanden, de processen A, B
en C lezen een veel kleinere set.
Indien de snelheid van de schijven of het netwerk en daarmee de I/O een belangrijke bottleneck
is, kun je zelfs overwegen de data gecomprimeerd op te slaan. De CPU krijgt het dan weliswaar
wat drukker, maar dat wordt vaak ruimschoots gecompenseerd door het feit dat je nog maar
zo'n 10 procent van het data-volume van de schijf hoeft te lezen.
ETL performance: aandachtsgebieden en tips voor een snellere ETL-batch
Pg, 6
Hardware-benutting
Bereid waar mogelijk bestanden alvast voor, buiten het kritische batch-window. Alle
bewerkingen die je al kunt doen voordat de nachtelijke ETL-batch losbrandt en die niet
afhankelijk zijn van dat ene, laatste bronbestand dat nog om 23.00 uur arriveert, zijn mooi
meegenomen. Je verkort daarmee sowieso de doorlooptijd van je kritische batchdeel en spreidt
daarnaast de belasting van de server.
Benut de mogelijkheden van je ETL-tool bijvoorbeeld op het gebied van partitionering. Bij een
goed gebruik van partitionering wordt de workload zo efficiënt mogelijk over alle beschikbare
processoren verspreid. Ook bieden veel ETL-tools de mogelijkheid om bestanden vooraf in het
geheugen te laden, zodat de grote bulk aan data daar snel tegenaan gehouden kan worden
tijdens de ETL-batch.
Onbekendheid met ETL-tool en/of de bron-data
Vaak door onbekendheid met de ETL-tool of de data(-volumes) worden dure bewerkingen het
proces 'binnengesleept'.
ETL performance: aandachtsgebieden en tips voor een snellere ETL-batch
Pg, 7
Een sorteerfunctie is makkelijk op te nemen in het verwerkingsproces en werkt vermoedelijk
prima op de testbestanden. Maar die 'sort' kan eenmaal in productie heel goed een vreselijke
performance laten zien. Vermijd onnodig dure bewerkingen zoals een dergelijke sortering. Mocht
je er echt niet onderuit kunnen komen, plan de sortering dan zodanig dat vervolg-processen
daar baat bij hebben of kunnen volstaan met de veel voordeligere 'sortering binnen een groep'.
Conclusie
Naast toenemende data-volumes groeien ook de verwachtingen van de BI-gebruiker. De
verwerking van grote hoeveelheden gegevens hoeft geen probleem te zijn als je er
weloverwogen mee omgaat. Know your data; weet waar in het proces de volumes zitten. Daar
ligt de sleutel voor een tijdige data verwerking binnen de BI-omgeving.
ETL performance: aandachtsgebieden en tips voor een snellere ETL-batch
Pg, 8
Je kunt je hieronder abonneren op ons Thema BI & Techniek:
Dit blogartikel is geschreven door Ron Hoes.
Wil je meer informatie? Neem dan een kijkje op ons blog.