Question

J'ai une application Web qui est utilisée sur plusieurs continents. La transaction sous-jacente DB est de verrouillage lorsque des rapports volumineux sont exécutés. Je veux:

  1. faire un temps réel de la base de données SQL Server 2005 à un rapport DB
  2. directe tous les rapports aux rapports DB

En théorie, cela empêchera la transaction de verrouillage pour les insertions et mises à jour. Il est OK si les rapports DB est verrouillé temporairement aussi longtemps que les opérations se poursuivent. Les rapports DB peut recevoir les nouvelles transactions lorsqu'il est sous une charge plus légère. Quelle est la meilleure façon de conserver une copie en temps réel proche de la transaction DB? Dois-je utiliser la réplication, la mise en miroir ou une combinaison des deux? Quelles sont les directives générales que je devrais suivre?

Merci!

Était-ce utile?

La solution

Utilisez Sql réplication de serveur pour mettre en œuvre ce type d'architecture. Par exemple. répliquer les données de votre serveur principal db au serveur de rapports. Il est pas tout à fait en temps réel (quelques systèmes sont), mais peut être très proche.

Il y a plusieurs saveurs avec la réplication SQL Server et vous voudrez probablement serveur-à-serveur. voir aussi cet article sur l'entreposage de données et des rapports . Il décrit le scénario exact que vous êtes contre et vos objectifs:

  

Par la conception, la réplication transactionnelle   répond aux exigences principales   pour ce scénario:

  • cohérence transactionnelles
  • Faible latence
  • High Throughput
  • surcharge minimale

Autres conseils

= Mirroring toute DB, la réplication est un sous-ensemble habituellement en fonction de ce que vous "publier"

Dans ce cas, j'utiliser la réplication si vous avez besoin en temps quasi réel. Je considère que la mise en miroir si les rapports pourrait lag quelques minutes ou des rapports doit être « statique » pendant une période de temps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top