Databearbeiding direkte i memory på LASR server nye muligheter? Trond Holmen, SAS Institute
Bakgrunn: Hvordan virker en tradisjonell database Store datamengder har tradisjonelt vært lagret på disk For å bearbeide data leses i prinsippet en og en rad fra disk til memory for deretter å bli «bearbeidet» og skrives ut til disk igjen. Ved å lese til og fra disk skapes IO som en flaskehals. Les/skriv til disk tar tid. Ofte tar dette mye mer tid enn selve prosesseringen av dataene. For å bøte på dette er det utarbeidet metoder og teknikker for å speede opp tempoet: Lagre dataene i stjerneskjemaer (Kimbell/Inmon, metodikker) Indeksere utvalgte kolonner for direkte tilgang til rader i stedet for sekvensielt å lese hele datakilden. Lese deler av datakilden inn i memory: arrays, hash-tabeller, oa Lage OLAP kuber Multi-threading
Bakgrunn: Hvordan virker en tradisjonell database For bearbeiding av databasetabeller er det laget spørrespråk mot databasene: For eksempel SQL, MDX og datasteget. Disse spørrespråkene er svært fleksible.
In-Memory Utviklingen av hardware gjør at mye større datakilder kan være i memory samtidig, og dette fører til at applikasjoner som settes på toppen av datakilder i memory har mye raskere responstid. SAS og andre leverandører har derfor laget rapporteringsverktøy som kan gå mot så store mengder detaljedata at man bare kunne drømme om det for få år siden. Man spør derfor direkte mot ferdige tabeller i memory via en rapporteringsløsning. Tradisjonelt har databaser kværnet gjennom data og lastet nye oppdaterte memory-tabeller i batch-jobber på natterstider. De store mengdene memory-data har ført til at batch-jobbene kan være krevende.
Bearbeiding av in-memory data Stadig økende behov for «live data» og oppdatering av in-memory dataene! Behov: Lasting av stjerneskjemaer i memory Hyppig delta-last i memory Aggregeringsfunksjoner i memory Tradisjonell databasefunksjonalitet med f.eks. å lage avledede kolonner If.. Then else / case funksjonalitet Foreløpig bruker mange å gjøre disse operasjonene i en database før man laster dataene opp i memory. Dette er også en anbefalt løsning hvis man kan benytte dette. Hvis man kunne gjøre dette direkte i memory ville det være mer effektivt og sikre «live data» for rapporteringsløsningene.
Hvilke muligheter finnes i SAS? Tradisjonell SAS database: Proc SQL, Datasteget, oa In-Memory LASR: Proc Imstat Består av to deler: Data and server management Analytics Gir enkel stjerneskjema-generering. Enkel update av tabeller Lage avledede kolonner Aggregering Delta-last
Nye måter å tenke på? Store skjulte memory-detaljetabeller som man bruker IMSTAT for å lage håndterbare tabeller for applikasjoner? Backup i HDFS/LASR-database Delta-last til memorytabeller fra trad. Databaser/LASR databaser Bruk av IMSTAT gir ikke lock på tabeller
Problemstilling skjematisk - Telenor Lesing fra disk AST transaksjoner Lesing i minnet Ferdig koblet datakilde fra Oracle Tung batch-jobb om natta SAS Stjerneskjema Stjerneskjema Faktatabell lastes i batch, kobling i LASR Oracle Faktatabell deltalast Deltalast fra Oracle til fakta og bygge stjerne i LASR. Tar en brøkdel av tiden
Aggregering i minnet Fakta Fakta aggregert 1 Fakta aggregert 2
Demo (Litt «hardcore» SAS-kode)