Bonjour, Je travaille sur un projet où nous devons traiter plusieurs fichiers xml une fois par jour et remplir une base de données avec les informations contenues dans ces fichiers.NHibernate bulk insert ou mise à jour
Chaque fichier fait environ 1 Mo et contient environ 1 000 enregistrements; nous avons généralement besoin de traiter entre 12 et 25 de ces fichiers. J'ai vu quelques informations concernant les insertions en vrac utilisant NHibernate mais notre problème est plus compliqué car les fichiers xml contiennent de nouveaux enregistrements mélangés avec des enregistrements mis à jour.
Dans le fichier XML, il y a un drapeau qui nous indique qu'un enregistrement spécifique est un nouveau ou une mise à jour d'un enregistrement existant, mais pas quelles informations ont changé. Les enregistrements xml ne contiennent pas notre identifiant de base de données, mais nous pouvons utiliser un identifiant de l'enregistrement xml pour localiser de manière unique un enregistrement dans notre base de données. Notre stratégie jusqu'ici a été d'identifier si l'enregistrement actuel est un insert ou une mise à jour et sur la base de ce que nous effectuons une insertion sur le DB ou nous faisons une recherche, puis nous mettons à jour les informations sur l'objet avec le informations provenant de l'enregistrement xml et enfin nous faisons une mise à jour sur la base de données. Le problème avec notre approche actuelle est que nous avons des problèmes avec les verrous DB et que nos performances se dégradent très rapidement. Nous avons réfléchi à des alternatives telles que des tables séparées pour les opérations distinctes ou même des DB séparés, mais faire un tel geste signifierait un gros effort donc avant toute décision, je voudrais demander l'avis de la communauté sur cette question, merci d'avance.