/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Data warehouse konstruktion
Fra : Troels Arvin


Dato : 22-02-04 21:16

Hej,

Findes der noget læseværdigt litteratur om, hvordan man skaber data
warehouses?

Hvad gør man typisk i praksis, når man vil samle data fra forskellige
lokationer/DBMS-typer til ét warehouse? Jeg går ud fra, at man kører
nogle tidsstyrede SQL-jobs ude på de enkelte produktionsdatabaser, der
så sender resultatet til et opsamlende warehouse? Findes der nogle (gerne
open source) toolkits, der kan lette arbejdet?

--
Greetings from Troels Arvin, Copenhagen, Denmark


 
 
Stig Johansen (29-02-2004)
Kommentar
Fra : Stig Johansen


Dato : 29-02-04 07:29

Troels Arvin wrote:

> Hej,
[snip]

> Hvad gør man typisk i praksis, når man vil samle data fra forskellige
> lokationer/DBMS-typer til ét warehouse?

Her er et par eksempler på de metoder, jeg har brugt (DW = MSSQL 7.0/2K):
(Subset af) *Stamdata* -
- metode 1: Der findes normalt oplysninger om oprettelses +
ændringstidspunkt i de operationelle databaser. Her bruger jeg et
job/program, der kører hver dag, og gemmer sidste kørselsdato. Jeg kører
normalt på hele dage, da det ikke er muligt at synkronisere klokken 100%
mellem eks. en mainframe og en PC-server.

- metode 2: (Kræver evt. kontrol over applikationen) Der oprettes en tabel,
der indeholder nøgleværdi, samt en status kode. Når brugeren (op)retter
eksempelvis en vare, skrives der varenummer+status 0 i tabellen.
Der kører så en service på enten DW-serveren eller på en særskilt
Applikationsserver. Denne service udfører følgende pseudokode:

Update 'ændringslog' set status=1
Select Varenummer from 'ændringslog' where status=1
loop..
Select 'DeFelteDuSkalBruge' from varer where Varenr = 'VærdiFraRecordset'
'UdførEnSPMedDeFelterDuSkalOpdatere'
loop.. slut
Delete from 'ændringslog' where status=1

Da der kun er tale om ganske få data, kan denne sagtens køre hvert sekund.

(Subset af) *Dynamiske* data -

- Metode 1:
Ved eksempelvis faktureringsrutiner, dannes der en ouput fil fra
faktureringsrutinen, der indeholder de faktiske tal fra en given
faktureringskørsel. Filen FTP'es over på PC-serveren, og indlæses vha. et
program.

- Metode 2:
For finanstransaktioner, er der normalt altid en unik angivelse af
posteringer. Det kan være en global fortløbende tæller, eller en
kombination af en global fortløbende nummerering af en batch, med
tilhørende fortløbende nummerering inden for batchen.
Her gælder det om at finde de posteringer, der har en værdi større end den
sidst opdaterede, og gemme denne ved afslutning.

> Jeg går ud fra, at man kører
> nogle tidsstyrede SQL-jobs ude på de enkelte produktionsdatabaser, der
> så sender resultatet til et opsamlende warehouse?

Som du kan se af ovenstående, er det ikke altid muligt at køre en push
strategi. Det afhænger af sammensætningen af (R)DBMS'er

> Findes der nogle (gerne
> open source) toolkits, der kan lette arbejdet?

Tvivler?

--
Med venlig hilsen
Stig Johansen

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste