Aus Entwicklersicht kann ich sagen, dass fast jede herkömmliche Mainstream-Datenbank-Engine nur skaliert werden kann und das Skalieren sehr viel nachdenklicher ist.
In den letzten Jahren wurden aufgrund des Bedarfs an größerer Skalierbarkeit und hochverfügbaren Systemen Anstrengungen unternommen, bestehende Datenbanken zu skalieren. Da die Entwürfe jedoch durch Legacy-Code behindert werden, sind sie eher an das Design gebunden als grundlegend. Dies tritt auf, wenn Sie versuchen, die meisten bekannten Datenbank-Engines zu skalieren. Das Hinzufügen von Slave-Servern kann sehr schwierig sein, und Sie werden feststellen, dass dies mit erheblichen Einschränkungen verbunden ist, von denen einige möglicherweise ein erneutes Jiggen Ihrer Datenbanktabellen erfordern.
Beispielsweise handelt es sich bei den meisten von ihnen eher um Master- / (Multi-) Slave-Designs als um Multi-Master-Designs. Mit anderen Worten, möglicherweise sitzt nur ein ganzer Server dort und kann keine Abfragen verarbeiten. Einige tun es, aber mit Einschränkungen ... zB Nur-Lese-Multi-Slave-Design. Sie haben also möglicherweise einen Server, der Schreibvorgänge durchführt, und alle anderen stellen schreibgeschützte Daten bereit. Sie werden feststellen, dass die Einrichtung dieser Systeme nicht immer einfach ist und es schwierig ist, eine gute Arbeit zu leisten. Es fühlt sich in vielen Fällen wie ein Blitz an.
Andererseits gibt es einige neuere Datenbank-Engines, die von Anfang an mit Parallelität und Multi-Master-Design entwickelt wurden. NOSQL und NewSQL sind die neuen Designklassen.
Es scheint also der beste Weg zu sein, eine bessere Leistung eines herkömmlichen SQL-Servers zu erzielen, wenn die Skalierbarkeit erhöht wird! Während es mit NOSQL & NewSQL sowohl Scale-up als auch Scale-out ist.
Der Grund, warum herkömmliche RDBMS-Systeme eng miteinander verbunden sind, liegt darin, dass sie alle eine konsistente Sicht auf dieselben Daten benötigen. Welchem Server vertrauen Sie, wenn mehrere Server Aktualisierungen derselben Daten von verschiedenen Clients akzeptieren? Jede Methode, die versucht sicherzustellen, dass die Daten durch eine Art Sperrmechanismus konsistent sind, erfordert die Zusammenarbeit von anderen Servern, die entweder die Leistung beeinträchtigen oder die Datenqualität beeinträchtigen, da alle von einem Client gelesenen Daten möglicherweise veraltet sind. Und die Server müssen selbst entscheiden, welche Daten am aktuellsten sind, wenn sie in denselben Datensatz schreiben. Wie Sie sehen, handelt es sich um ein komplexes Problem, das durch die Verteilung der Arbeitslast auf mehrere Server und nicht nur auf Prozesse oder Threads, bei denen der Zugriff auf die Daten immer noch recht schnell ist, noch komplexer wird.