19. december 2003 - 10:33Der er
3 kommentarer og 1 løsning
Replikering af DB'er
Jeg har to databaser, hvor tabeller, skemaer osv er ens. De to databaser er lokaliseret i Danmark og USA, hvor data i fremtiden skal være tilgængelige for begge grupper. Yderligere skal begge grupper have adgang til at opdatere alle data (oprettet både i DK og US). De to DB'er skal for brugerne opfattes som én DB, så data fra de to DB'er kan integreres og arbejdes på samtidig.
På stående fod kan jeg ikke give sige noget om DB's størrelse udover at der er ca 4GB datafiler og 2GB system filer. DB's har været i luften i tre år og forventes at vokse MINDRE i fremtiden.
Planen er at implementere en regelmæssig/daglig synkronisering/replikering af de to DB'er. Pt. har de samme tabeller i de to DB sammenfaldende række/primær nøgle ID'er.
1) Hvordan sættes replikeringen op? Gerne overordnet beskrevet og vedlæg gerne links til websites eller bøger.
2) Er det et problem, at der er fælles ID'er i "samme" tabeller i de to DB'er? Eller kan man blot give/rename ID'erne (ex. DK ID'er får extension DK, og US ext. US) eller er der en smart løsning?
3) Er replikering trivielt eller kræver det en hard-core Oracle DBA?
Replikering er flere ting - hvor svært det er, afhænger af hvad brugerne skal have mulighed for. Men replikering generelt kræver ret megen indsigt og dataforståelse for at kunne løse konflikter.
Skal data flyttes mellem systemerne millisekunder efter data er opdateret (eller i samme transaktion) - så kræver det ret meget, specielt hvis data skal kunne krydsredigeres - hvis du blot skal have data over med dages/timers/minutters intervaller, så er det en anden snak.
Der findes "simple" værktøjer til den sidste slags "replikeringsløsninger" - bl.a. DataStage, PowerMart, PowerCenter etc - eller du kan skrive et selv fra bunden i PL/SQL.
ad 1) Det kommer an på hvad slags... ad 2) Ja - renaming er nødvendigt hvis du vil samle data i tabellerne. ad 3) Kan kræve hardcore DBA, kræver altid dataforståelse.
Alt skal være online - det din replikeringsløsning skal, er jo reelt set at finde alle ikke overførte rækker og overføre dem samt finde alle tidligere overførte rækker som siden er blevet opdateret og så opdatere dem plus finde evt slettede rækker og så slette dem (farlig operation - en fejl her vil kunne slette samtlige data i baserne)
Den lille historie skal så foregå begge veje.
Jeg mener at Oracel 9i har en MERGE kommando - en blanding af INSERT og UPDATE som må kunne bruges hvis man skriver replikeringsløsningen selv.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.