Bonjour,
je construis une sorte d'ETL pour différents tiers (=client) utilisant la même base oracle (10g). Pour chacun des clients je dois produire un export csv de différentes tables (40 à 50 tables par client). Chaque client possède donc un répertoire avec son export personnalisé.
1 - La première version du projet effectuait une extraction à la demande de chaque client mais prenait un temps considérable (le temps était surtout passé dans l'écriture des fichiers csv - la base n'est accessible que via une page web, qui n'était pas faite pour des temps d'attente allant jusqu'à 5 minutes).
2- Pour la seconde version, j'ai pensé qu'il était donc préférable d'observer les changements sur les tables et de générer à l'avance mes exports (il s'agit de table qui ne sont pas souvent modifiées). Pour cela j'ai fait polling sur les différentes tables impliquées et je récupère leur ORA_ROWSCN (pas de rowdependencies possible car je ne peux intervenir sur la définition des tables pour les recréer).
=>Cela fonctionne mieux mais vu que je n'ai pas toute la finesse possible je suis obligé de réextraire les données d'une table modifiée pour l'ensemble des clients même si la modification ne concernait que l'un d'entre eux...
3. Je m'oriente désormais vers Change Data Capture pour arriver à mes fins mais avant d'y foncer tête baissée, je voulais avoir votre avis :
- à savoir y aurait il mieux comme technique?
- Je dois observer les modifications sur 40 voire 50 tables => est ce que cela va avoir des impacts considérables sur les performances des autres applications y travaillant sur la base (oltp) ?
Merci pour toute aide,
Lek
Partager