J'ai un système qui comporte trois parties générales pour faciliter ma description.
1) BASE DE DONNÉES - pour stocker toutes les tables, cette même base de données stockera également des données pour d'autres services, y compris une application web, silverlight etc... (doit être flexible, si elle se trouve sur un serveur distant, elle peut être exposée via un service web, si elle se trouve localement, elle peut se connecter localement ou via TCP au service Windows).
2) BOÎTE NOIRE - traiter UN élément à la fois en injectant la liste des éléments requis à partir de la base de données, comme un tuyau, où l'on introduit un ensemble de conditions, de valeurs pour un seul élément, et où l'on renvoie les résultats pour cet unique élément traité.
3) SERVICE Windows - pour extraire des données de la base de données, les injecter dans la boîte noire, enregistrer les résultats de la boîte noire dans la base de données à des intervalles prédéfinis. Le service peut se trouver sur un serveur différent de celui de la base de données. Il enregistre les erreurs et continue en cas d'erreur.
En moyenne, le service Windows devra traiter environ 5000 éléments, et il faudra à la boîte noire environ 1,5 seconde pour traiter 5000 éléments.
Mes questions sont les suivantes :
a) Le service Windows doit-il obtenir une liste de lots d'éléments à traiter à partir de la base de données, ou doit-il obtenir une liste d'identifiants et, dans une boucle, récupérer chaque élément individuel de la base de données avant de le transmettre à la boîte noire ? Notez que la même base de données est également utilisée par d'autres applications. Je suppose que la base de données devrait être un appel à un service web quelconque.
b) Un article individuel doit-il être sauvegardé immédiatement après son traitement ? Ou doit-on attendre la fin du traitement du lot avant de l'enregistrer ? Étant donné que la sauvegarde de chaque élément individuel après traitement est une bonne chose lorsque le système tombe soudainement en panne au milieu du processus, au moins les éléments traités sont sauvegardés, mais au détriment des performances en raison des 5 000 appels au service web ?
Des conseils sur une solution optimale ?
Santé