Bonjour,
Nous avons une base de donnée postgresql qui sert de stockage pour une application serveur java. Cette base de donnée est alimentée (complétée ou mise à jour) chaque 8 heures par plusieurs centaines de milliers d'enregistrements de différents type provenant de fichiers XML.
L'alimentation se fait par un programme java externe, le but serait de pouvoir réaliser l'importation d'une façon qui perturbe le moins possible le fonctionnement de l'application serveur. L'idéal recherché est de pouvoir charger et valider toutes les données nouvelles sur le serveur, puis ensuite de pouvoir les merger avec les données de production.
A noter que nous recevons à chaque importation l'intégralité des données, donc l'importation n'est pas incrémental, on doit s'inquiéter nous-mêmes de ce qui doit être inséré ou simplement mis à jour.
Une idée de solution est de mettre tout le contenu de ces fichiers dans des tables temporaires cotés serveurs qui correspondent 1:1 aux tables de production, puis ensuite à l'aide de requêtes avec jointures faire ce fameux merge / insert de la façon la plus atomique possible.
Le problème est que j'ai du mal à me rendre compte si les tables temporaires sont une bonne idée pour cela. Je n'arrive pas à trouver sur le net des informations sur leur fonctionnement dessous le capot (mémoire / disque?).
Car entièrement en mémoire j'ai peur que cela fasse trop.
Des avis ou conseils sont le bienvenu.
Partager