Question

Dans l'entreprise pour laquelle je travaille, nous utilisons des méthodes de discussion pour réduire la charge de lecture sur notre base de données principale.

Une option suggérée consiste à effectuer une réplication unidirectionnelle en direct de notre base de données principale vers une base de données esclave.Les applications liraient alors à partir de la base de données esclave et écriraient directement dans la base de données principale.Donc...

  • L'application lit depuis l'esclave
  • L'application écrit sur le serveur principal
  • L'esclave principal met automatiquement à jour l'esclave

Quels sont les principaux avantages et inconvénients de cette méthode ?

Était-ce utile?

La solution

Quelques inconvénients :

  • 2 points d'échec
  • La logique applicative devra prendre en compte le délai entre l'écriture d'un élément et sa lecture, car il ne sera pas disponible immédiatement depuis la base de données secondaire.

Une stratégie que j'ai utilisée consiste à envoyer chaque nuit les données de reporting clés à une base de données secondaire, en les dénormalisant en cours de route, afin que des requêtes volumineuses puissent s'exécuter sur cette base de données au lieu de verrouiller les tables et de voler des ressources du serveur OLTP.Je n'utilise aucun outil formel d'entreposage de données ou de réplication, j'identifie plutôt les requêtes problématiques qui sont correctes sans données à jour et je crée des structures de données sur le serveur secondaire spécifiquement pour ces requêtes.

Il y a certainement des avantages à l'approche « tout reproduire » :

  • Vous pouvez exécuter n'importe quelle requête ad hoc sur le secondaire, car il contient toutes vos données
  • Si votre serveur principal tombe en panne, vous pouvez rapidement réutiliser le serveur secondaire pour prendre le relais.

Autres conseils

Nous utilisons des réplications unidirectionnelles, mais pas à partir de la même application.Nos applications lisent-écrivent dans la base de données principale, les données sont synchronisées avec la base de données replca et les outils de reporting utilisent cette réplique.

Nous ne voulons pas que notre application lise à partir d'une base de données différente, donc dans ce scénario, je suggérerais d'utiliser des groupes de fichiers et un partitionnement sur la base de données principale.L'utilisation de groupes de fichiers (en particulier sur différents lecteurs) et le partitionnement de fichiers et d'index peuvent grandement améliorer les performances.

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