ETL staat voor Extract, Transform en Load. ETL-tools extraheren gegevens uit verschillende bronnen en transformeren deze naar een tussenliggend formaat dat geschikt is voor doelsystemen of de vereisten van het gegevensmodel. En ten slotte laden ze gegevens in een doeldatabase, datawarehouse of zelfs datalake.
Ik herinner me tijden van 15 tot 20 jaar geleden toen de term ETL iets was dat maar weinigen begrepen wat het is. Toen verschillende custom batch jobs hun hoogtepunt hadden op de on-premise hardware.
Veel projecten deden een vorm van ETL. Zelfs als ze het niet wisten, zouden ze het ETL moeten noemen. Gedurende die tijd, telkens als ik een ontwerp uitlegde waarbij ETL-processen betrokken waren, en ik ze op die manier noemde en beschreef, leek het bijna op een andere wereldtechnologie, iets heel zeldzaams.
Maar vandaag zijn de dingen anders. Migratie naar de cloud heeft de hoogste prioriteit. En ETL-tools zijn het zeer strategische onderdeel van de architectuur van de meeste projecten.
Uiteindelijk betekent migreren naar de cloud de gegevens van on-premise als bron nemen en deze transformeren in clouddatabases in een vorm die zo compatibel mogelijk is met de cloudarchitectuur. Precies de taak van de ETL-tool.
Geschiedenis van ETL en hoe het aansluit op het heden
Bron: aws.amazon.com
De belangrijkste functies van ETL waren altijd hetzelfde.
ETL-tools halen gegevens uit verschillende bronnen (zoals databases, platte bestanden, webservices of, de laatste tijd, cloudgebaseerde applicaties).
Het betekende meestal het nemen van bestanden op het Unix-bestandssysteem als invoer en voorverwerking, verwerking en nabewerking.
Je zou het herbruikbare patroon van mapnamen kunnen zien, zoals:
- Invoer
- Uitgang
- Fout
- Archief
Onder die mappen bestond ook een andere submappenstructuur, voornamelijk gebaseerd op datums.
Dit was gewoon de standaardmanier om binnenkomende gegevens te verwerken en voor te bereiden om in een soort database te laden.
Tegenwoordig zijn er geen Unix-bestandssystemen (niet op dezelfde manier als voorheen)—misschien zelfs geen bestanden. Nu zijn er API’s – interfaces voor applicatieprogrammering. Dat kan, maar u hoeft geen bestand als invoerformaat te hebben.
Het kan allemaal worden opgeslagen in het cachegeheugen. Het kan nog steeds een bestand zijn. Wat het ook is, het moet een gestructureerd formaat volgen. In de meeste gevallen betekent dit JSON- of XML-indeling. In sommige gevallen zal het oude, goede door komma’s gescheiden waarden (CSV)-formaat het ook doen.
U definieert het invoerformaat. Of het proces ook inhoudt dat u de geschiedenis van invoerbestanden maakt, is geheel aan u. Het is geen standaardstap meer.
Transformatie
ETL-tools zetten de geëxtraheerde gegevens om in een geschikt formaat voor analyse. Dit omvat het opschonen van gegevens, gegevensvalidatie, gegevensverrijking en gegevensaggregatie.
Zoals vroeger het geval was, gingen de gegevens door een aantal complexe aangepaste logica van Pro-C of PL/SQL procedurele gegevensstaging, gegevenstransformatie en opslagstappen voor gegevensdoelschema’s. Het was een vergelijkbaar verplicht standaardproces als het scheiden van de inkomende bestanden in submappen op basis van het stadium waarin het bestand was verwerkt.
Waarom was het zo natuurlijk als het tegelijkertijd ook fundamenteel verkeerd was? Door de inkomende gegevens direct te transformeren zonder permanente opslag, verloor u het grootste voordeel van onbewerkte gegevens: onveranderlijkheid. Projecten hebben dat gewoon weggegooid zonder enige kans op wederopbouw.
Nou, raad eens. Hoe minder transformatie van onbewerkte gegevens u vandaag uitvoert, hoe beter. Voor de eerste gegevensopslag in het systeem, dat wil zeggen. Het kan zijn dat de volgende stap een serieuze dataverandering en datamodeltransformatie zal zijn, zeker. Maar u wilt de onbewerkte gegevens in een zoveel mogelijk ongewijzigde en atomaire structuur hebben opgeslagen. Een flinke verschuiving ten opzichte van de on-premise tijden, als je het mij vraagt.
Laden
ETL-tools laden de getransformeerde gegevens in een doeldatabase of datawarehouse. Dit omvat het maken van tabellen, het definiëren van relaties en het laden van gegevens in de juiste velden.
De laadstap is waarschijnlijk de enige die al eeuwenlang hetzelfde patroon volgt. Het enige verschil is een doeldatabase. Waar het voorheen meestal Oracle was, kan het nu alles zijn wat beschikbaar is in de AWS-cloud.
ETL in de hedendaagse cloudomgeving
Als je van plan bent om je data van on-premise naar de (AWS) cloud te brengen, heb je een ETL-tool nodig. Het kan niet zonder en daarom werd dit onderdeel van de cloudarchitectuur waarschijnlijk het belangrijkste stukje van de puzzel. Als deze stap verkeerd is, volgt er nog iets anders, overal dezelfde geur delend.
En hoewel er veel competities zijn, zou ik me nu concentreren op de drie waarmee ik de meeste persoonlijke ervaring heb:
- Data Migration Service (DMS) – een native service van AWS.
- Informatica ETL – waarschijnlijk de belangrijkste commerciële speler in de ETL-wereld, die zijn activiteiten met succes heeft getransformeerd van on-premise naar cloud.
- Matillion voor AWS – een relatief nieuwe speler binnen cloudomgevingen. Niet native voor de AWS, maar native voor de cloud. Met niets zoals geschiedenis vergelijkbaar met Informatica.
AWS DMS als ETL
Bron: aws.amazon.com
AWS Data Migration Services (DMS) is een volledig beheerde service waarmee u gegevens uit verschillende bronnen naar AWS kunt migreren. Het ondersteunt meerdere migratiescenario’s.
- Homogene migraties (bijv. Oracle naar Amazon RDS voor Oracle).
- Heterogene migraties (bijv. Oracle naar Amazon Aurora).
DMS kan gegevens uit verschillende bronnen migreren, waaronder databases, datawarehouses en SaaS-applicaties, naar verschillende doelen, waaronder Amazon S3, Amazon Redshift en Amazon RDS.
AWS beschouwt de DMS-service als de ultieme tool om gegevens uit elke databasebron naar cloud-native doelen te brengen. Hoewel het hoofddoel van DMS alleen het kopiëren van gegevens naar de cloud is, kan het de gegevens onderweg ook goed transformeren.
U kunt DMS-taken in JSON-indeling definiëren om verschillende transformatietaken voor u te automatiseren terwijl u de gegevens van de bron naar het doel kopieert:
- Voeg meerdere brontabellen of kolommen samen tot één waarde.
- Bronwaarde splitsen in meerdere doelvelden.
- Vervang brongegevens door een andere doelwaarde.
- Verwijder onnodige gegevens of creëer volledig nieuwe gegevens op basis van de invoercontext.
Dat betekent – ja, u kunt DMS zeker gebruiken als ETL-tool voor uw project. Misschien is het niet zo geavanceerd als de andere opties hieronder, maar het zal zijn werk doen als u het doel van tevoren duidelijk definieert.
Geschiktheidsfactor
Hoewel DMS enkele ETL-mogelijkheden biedt, gaat het vooral om datamigratiescenario’s. Er zijn enkele scenario’s waarin het misschien beter is om DMS te gebruiken in plaats van ETL-tools zoals Informatica of Matillion:
Matillion ETL
Bron: matillion.com
is een cloud-native oplossing en u kunt deze gebruiken om gegevens uit verschillende bronnen te integreren, waaronder databases, SaaS-applicaties en bestandssystemen. Het biedt een visuele interface voor het bouwen van ETL-pijplijnen en ondersteunt verschillende AWS-services, waaronder Amazon S3, Amazon Redshift en Amazon RDS.
Matillion is gebruiksvriendelijk en kan een goede keuze zijn voor organisaties die nieuw zijn met ETL-tools of met minder complexe behoeften op het gebied van gegevensintegratie.
Aan de andere kant is Matillion een soort tabula rasa. Het heeft een aantal vooraf gedefinieerde potentiële functionaliteiten, maar u moet het op maat coderen om het tot leven te brengen. Je kunt niet van Matillion verwachten dat hij het werk kant-en-klaar voor je doet, ook al is de mogelijkheid er per definitie.
Matillion beschreef zichzelf ook vaak als ELT in plaats van een ETL-tool. Dat betekent dat het voor Matillion natuurlijker is om vóór de transformatie een lading te doen.
Geschiktheidsfactor
Met andere woorden, Matillion is effectiever in het transformeren van de gegevens als ze al in de database zijn opgeslagen dan voorheen. De belangrijkste reden daarvoor is de reeds genoemde custom scripting verplichting. Aangezien eerst alle bijzondere functionaliteit moet worden gecodeerd, zal de effectiviteit dan sterk afhangen van de effectiviteit van de aangepaste code.
Het is niet meer dan normaal om te verwachten dat dit beter zal worden afgehandeld in het doeldatabasesysteem en dat er op Matillion slechts een eenvoudige 1:1 laadtaak overblijft – veel minder mogelijkheden om het hier met aangepaste code te vernietigen.
Hoewel Matillion een reeks functies voor gegevensintegratie biedt, biedt het mogelijk niet hetzelfde niveau van gegevenskwaliteit en beheerfuncties als sommige andere ETL-tools.
Matillion kan omhoog of omlaag worden geschaald op basis van de behoeften van de organisatie, maar is mogelijk niet zo effectief voor het verwerken van zeer grote hoeveelheden gegevens. De parallelle verwerking is vrij beperkt. In dit opzicht is Informatica zeker een betere keuze, omdat het geavanceerder en tegelijkertijd rijker aan functies is.
Voor veel organisaties kan Matillion voor AWS echter voldoende schaalbaarheid en parallelle verwerkingsmogelijkheden bieden om aan hun behoeften te voldoen.
Informatica ETL
Bron: informatica.com
Informatica voor AWS is een cloudgebaseerde ETL-tool die is ontworpen om te helpen bij het integreren en beheren van gegevens uit verschillende bronnen en doelen in AWS. Het is een volledig beheerde service die een scala aan functies en mogelijkheden biedt voor gegevensintegratie, waaronder gegevensprofilering, gegevenskwaliteit en gegevensbeheer.
Enkele van de belangrijkste kenmerken van Informatica voor AWS zijn:
Geschiktheidsfactor
Het is duidelijk dat Informatica de ETL-tool met de meeste functies op de lijst is. Het kan echter duurder en complexer zijn om te gebruiken dan sommige andere ETL-tools die beschikbaar zijn in AWS.
Informatica kan duur zijn, vooral voor kleine en middelgrote organisaties. Het prijsmodel is gebaseerd op gebruik, wat betekent dat organisaties mogelijk meer moeten betalen naarmate hun gebruik toeneemt.
Het kan ook complex zijn om in te stellen en te configureren, vooral voor degenen die nieuw zijn bij ETL-tools. Dit kan een aanzienlijke investering in tijd en middelen vergen.
Dat leidt ons ook tot iets dat we een “complexe leercurve” kunnen noemen. Dit kan een nadeel zijn voor degenen die snel gegevens moeten integreren of beperkte middelen hebben voor training en onboarding.
Ook is Informatica mogelijk niet zo effectief voor het integreren van gegevens uit niet-AWS-bronnen. In dit opzicht zou DMS of Matillion een betere optie kunnen zijn.
Ten slotte is Informatica in hoge mate een gesloten systeem. Er is slechts een beperkte mogelijkheid om het aan te passen aan de specifieke behoeften van het project. Je moet gewoon leven met de setup die het out of the box biedt. Dat beperkt dus op de een of andere manier de flexibiliteit van de oplossingen.
laatste woorden
Zoals het in veel andere gevallen gebeurt, is er geen universele oplossing, zelfs niet zoiets als de ETL-tool in AWS.
U kunt bij Informatica kiezen voor de meest complexe, uitgebreide en dure oplossing. Maar het is zinvol om het meeste te doen als:
- Het project is vrij groot en u weet zeker dat de hele toekomstige oplossing en gegevensbronnen ook op Informatica zijn aangesloten.
- U kunt het zich veroorloven om een team van bekwame Informatica-ontwikkelaars en -configurators mee te nemen.
- U kunt het robuuste ondersteuningsteam achter u waarderen en daar goed voor betalen.
Als er iets van bovenaf niet klopt, kun je het een kans geven bij Matillion:
- Als de behoeften van het project over het algemeen niet zo complex zijn.
- Als u enkele zeer aangepaste stappen in de verwerking moet opnemen, is flexibiliteit een belangrijke vereiste.
- Als je het niet erg vindt om de meeste functies helemaal opnieuw te bouwen met het team.
Voor alles wat nog minder gecompliceerd is, is de voor de hand liggende keuze de DMS voor AWS als een native service, die waarschijnlijk goed voor uw doel kan dienen.
Bekijk vervolgens tools voor gegevenstransformatie om uw gegevens beter te beheren.