Filer vs Direktkoppling för leverans av data till datalager

21 oktober 2016

4 argument från en som gillar filer

Från vissa källsystem får man data levererat i form av filer utan att man själv ansvarar för extraheringen eller har möjlighet att läsa direkt mot systemen, men även när den möjligheten finns så föredrar jag att extrahera data via filer innan det läses in i en staging databas. Så vad är anledningen till det när det låter som att det skulle kunna vara en onödig omväg?

Nr 1 – Spårbarhet av indata

Första argumentet är spårbarhet. Det kommer alltid att komma tillfällen då man ifrågasätter eller vill veta varför data i ett data warehouse ser ut som det gör och då är det väldigt bra att kunna gå tillbaka till hur datan såg ut när det extraherades. Har man ett arkiv med alla sina extraherade filer så har man där svaret på hur datan såg ut just när den extraherades från källan, ett svar som man många gånger inte kan få genom att titta i källsystemet där datan kan ha rört på sig sedan extraheringstillfället.

Nr 2 – Enkelt att ladda om data

Andra argumentet är att filer gör det enkelt att köra om en laddning utan att blanda in källan igen. Anledningar till att man vill kunna göra det är att vissa källsystem inte vill att man är och läser i dem alltför ofta av prestandaskäl eller att man vill återskapa en laddning med precis samma data som det var vid extraheringstillfället.

Nr 3 – Flytta data mellan miljöer

Tredje argumentet är att filer är relativt enkla att flytta mellan olika miljöer, om man t ex skulle vilja köra med data från produktionsmiljön i sin testmiljö. Båda de ovanstående argumenten för filer skulle man kunna lösa på annat sätt med hjälp av tabeller i databaser, men många gånger får man av säkerhetsskäl inte sätta upp en databaskoppling mellan sina olika miljöer för att skicka data den vägen, men däremot brukar det oftast finnas ett sätt att komma åt och kopiera filer mellan miljöer, som t ex SFTP.

Nr 4 – Enhetligt mönster från olika källor

Fjärde och sista argumentet är att man med denna princip får ett enhetligt mönster för hur man hanterar extrakten från alla olika typer av källor, vare sig det läses direkt från databaser, görs via anrop mot web api eller levereras i filer av källsystemen. Och enhetlig struktur, det gillar jag och i regel även de som förvaltar ett system. 🙂