2010-03-17 4 views
1

J'ai un service Windows qui reçoit une grande quantité de données qui doivent être transformées et conservées dans une base de données. Pour ne pas perdre de données, je veux créer un "cache d'écriture" pour les données qui continueront, que la base de données soit en ligne ou non. Une fois que la base de données sera à nouveau disponible, je voudrais qu'elle renvoie le contenu du cache dans la base de données.Cache hors ligne d'écriture de base de données en C#

J'ai vu quelques articles indiquant que je pourrais être en mesure de le faire avec NHibernate, mais je ne l'ai pas trouvé de façon concluante. Quelles options existent pour cela, et NHibernate est-il la bonne direction?

Répondre

0

Je suis d'accord avec Paco, mais il y a encore des scénarios comme si une base de données est mise à jour trop fréquemment, alors vous devrez peut-être mettre en œuvre comme vous le demandez.

Ceci est appelé scénario d'écriture derrière

Regardez l'article suivant

http://wiki.tangosol.com/display/COH32UG/Read-Through,+Write-Through,+Refresh-Ahead+and+Write-Behind+Caching

Si vous pensez que vous avez vraiment besoin, vous pouvez utiliser le serveur NCache http://www.alachisoft.com/ncache/

ou il y a d'autres applications sont également disponibles pour gérer une telle situation et vous pouvez également écrire votre propre application ou code pour vous en assurer.

Cordialement Mubashar

1

Que faire si le cache en écriture est déconnecté? Que vous avez besoin d'un autre writecache pour assurer le premier writecache. C'est un modèle récursif de création (fausse) de disponibilité. Utilisez un cluster de plusieurs machines pour réduire les risques d'indisponibilité. La disponibilité d'une base de données SQL est probablement supérieure à celle de tout autre composant de votre système.

Je ne gère pas ce genre d'exceptions dans les services, je rappelle simplement le service (indirect) avec son entrée d'origine quand il échoue pour l'arrêt de tout sous-système. L'entrée d'origine peut être votre "writecache".

+0

C'est à peu près une non-réponse. En supposant que le service utilise le disque dur de la machine sur lequel il s'exécute en tant que cache d'écriture, la probabilité qu'il échoue simultanément (c.-à-d. Que le cache d'écriture soit déconnecté) ET le serveur de base de données est très faible. Votre conseil est valide, en effet, mais vous ne répondez pas à la question. – snicker

Questions connexes