Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 16395|Répondre: 0

[Source] Schéma de base de données : séparation de lecture et d’écriture dans CQRS

[Copié le lien]
Publié sur 04/05/2020 09:58:50 | | | |
Séparation lecture-écriture

Lorsque l’activité d’une entreprise continue de croître et que le nombre d’utilisateurs augmente de manière significative, la base de données d’origine risque de ne plus pouvoir se maintenir. Alors oui

  • Le scale-in, qui augmente les performances du matériel, mais il est probable que le nombre d’utilisateurs continue d’augmenter, et que les performances accrues seront bientôt dépassées.
  • Séparation lecture-écriture : La base de données ne peut pas tenir, ce n’est rien d’autre qu’un excès de lecture et d’écriture, surtout s’il y a des requêtes complexes comme les produits les plus populaires des dernières 24 heures. Il nécessite des instructions SQL très complexes, et bien sûr, il est lent à exécuter.


Cependant, pour séparer les lectures et les écritures, la base de données doit être divisée en bibliothèques maîtresses et esclaves.

Les principales bases de données relationnelles sur le marché supportent la réplication des données, ce qui permet de diviser une base de données en deux rôles : maître et esclave, écrire des opérations sur le maître, et synchroniser le serveur maître avec d’autres serveurs esclaves.

Les opérations hors ligne telles que les opérations de lecture et l’analyse des données sont effectuées sur le serveur Slave.

Nous savons que de nombreuses applications sur Internet sont lues, afin que plusieurs esclaves puissent partager la charge et garantir la disponibilité et la correction des données.



Cependant, le code d’application original correspondant doit également être modifié, et il doit être modifié pour utiliser la bibliothèque maîtresse afin d’écrire les données, et utiliser la bibliothèque esclave lors de la lecture des données, ce qui équivaut à la réécriture.

Requêtes complexes

Cependant, même après avoir réécrit le code, j’ai constaté que les performances n’étaient toujours pas significativement améliorées car trop de requêtes complexes étaient utilisées, et nous avons dit dans le composant de base de données que les jointures sont très gourmandes en performance.

Peut-on donc utiliser une table séparée pour stocker les produits populaires des dernières 24 heures, afin que nous n’ayons besoin que de SQL simple pour le faire ?

En d’autres termes, un ensemble unique de tables de base de données est inapproprié pour différents comportements tels que les rapports, les recherches, les transactions, etc.

Le tableau actuel est conçu pour ajouter et modifier des données, et n’est pas adapté aux requêtes complexes.

Mais nous devons aussi considérer comment cette base de requêtes est mise à jour, ou si nous pouvons tolérer ce délai, ou si elle ne peut pas être mise à jour en temps réel.

CQRS

La tolérance du retard doit être vue d’un point de vue commercial, comme les meilleurs produits populaires des dernières 24 heures, un peu d’information obsolète n’a pas beaucoup d’impact, seule la cohérence finale est requise.

Nous pouvons utiliser CQRS (Command Query Responsibility Segregation), c’est-à-dire la séparation des commandes pour ajouter ou modifier des commandes des responsabilités de requête.



Dans CQRS, l’accent est mis sur la séparation entre lecture (requête) et écriture (commande), car les données lues par les utilisateurs sont généralement obsolètes, donc pourquoi avoir besoin de lire depuis la base de données ? On peut établir directement une source de données de lecture. Cela peut être du cache, du XML, du JSON, etc.

Comment résoudre le problème de la mise à jour mentionnée précédemment ? Vous pouvez utiliser Event, c’est-à-dire un événement, par exemple, lorsqu’un produit est vendu, vous pouvez publier un événement pour modifier le modèle de lecture original.

De cette manière, la synchronisation devient asynchrone via le mécanisme d’événement.

Enfin, cette méthode est mieux utilisée uniquement pour des requêtes complexes, et les requêtes simples originales sont toujours récupérées dans la base de données relationnelle. Pourquoi ? Parce que l’introduction d’une nouvelle technologie nécessite un prix, comme des étapes de mutation synchrone et des mécanismes d’événements, nous ne pouvons pas seulement voir les avantages des nouvelles technologies et non les inconvénients.






Précédent:Nouveau coronavirus de Jining : téléchargement du code source du rapport Big Data en temps réel
Prochain:L’impact du fichier dll.refresh lors de la référence à la bibliothèque de classes de projet
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com