Du point de vue du développeur, je peux dire que presque tous les moteurs de base de données traditionnels traditionnels ne peuvent évoluer et que la mise à l'échelle est une réflexion après coup.
Ces dernières années, avec le besoin d'une plus grande évolutivité et de systèmes hautement disponibles, des efforts ont été déployés pour faire évoluer les bases de données existantes. Mais parce que les conceptions sont gênées par le code hérité, il est tout simplement boulonné plutôt que fondamental pour la conception. Vous le rencontrerez si vous essayez de faire évoluer la plupart des moteurs de base de données bien connus. L'ajout de serveurs esclaves peut être assez difficile à configurer et vous remarquerez qu'il est livré avec des limitations importantes, dont certaines peuvent nécessiter de redéfinir vos tables de base de données.
Par exemple, la plupart d'entre eux sont des conceptions maître / (multi) esclaves plutôt que multi-maîtres. En d'autres termes, il se peut que vous ayez un serveur entier juste assis là et incapable de traiter les requêtes. Certains le font, mais avec des limitations ... par exemple en lecture seule, conception multi-esclave. Vous pouvez donc avoir un serveur qui prend des écritures et tous les autres fournissent des données en lecture seule. Vous remarquerez que lorsque vous configurez ces systèmes, ce n'est pas toujours un processus simple et difficile à bien travailler. Cela se sent très bien dans de nombreux cas.
D'un autre côté, certains moteurs de base de données plus récents sont en cours de développement avec une conception simultanée et multi-maîtres depuis le début. NOSQL et NewSQL sont la nouvelle classe de conception.
Il semble donc que la meilleure façon d'obtenir de meilleures performances à partir d'un serveur SQL traditionnel soit de passer à l'échelle supérieure! Alors qu'avec NOSQL et NewSQL, il est à la fois évolutif et évolutif.
La raison pour laquelle les systèmes SGBDR traditionnels sont étroitement couplés est qu'ils ont tous besoin d'une vue cohérente des mêmes données. Lorsque vous avez plusieurs serveurs acceptant les mises à jour des mêmes données de différents clients, lequel avez-vous confiance? Toute méthode qui tente de garantir la cohérence des données via une sorte de mécanisme de verrouillage nécessite la coopération d'autres serveurs, ce qui nuit aux performances ou affecte la qualité des données dans la mesure où les données lues à partir d'un client peuvent être obsolètes. Et les serveurs doivent décider entre eux quelles données sont les plus récentes lors de l'écriture dans le même enregistrement. Comme vous pouvez le voir, c'est un problème complexe rendu plus complexe par le fait que la charge de travail est répartie entre les serveurs et pas seulement entre les processus ou les threads où l'accès aux données est encore assez rapide.