Ich habe viele NoSQL-Datenbanken und SQL-Datenbanken kennengelernt. Es gibt verschiedene Parameter, um die Stärken und Schwächen dieser Datenbanken zu messen, und die Skalierbarkeit ist einer von ihnen. Was ist der Unterschied zwischen horizontaler und vertikaler Skalierung dieser Datenbanken?
Antworten
Zu viele Anzeigen?Traditionelle relationale Datenbanken wurden als Client/Server-Datenbanksysteme konzipiert. Sie können zwar horizontal skaliert werden, aber der Prozess dazu ist in der Regel komplex und fehleranfällig. NewSQL-Datenbanken wie NuoDB sind speicherzentrierte, verteilte Datenbanksysteme, die für eine horizontale Skalierung konzipiert sind und gleichzeitig die SQL/ACID-Eigenschaften herkömmlicher RDBMS beibehalten.
Für weitere Informationen über NuoDB lesen Sie bitte die technisches Weißbuch .
SQL-Datenbanken wie Oracle und db2 unterstützen auch die horizontale Skalierung durch Shared-Disk-Cluster. Zum Beispiel Oracle RAC, IBM DB2 purescale oder Sybase ASE Cluster Edition. Neue Knoten können zum Oracle RAC-System oder DB2 purescale-System hinzugefügt werden, um eine horizontale Skalierung zu erreichen.
Der Ansatz unterscheidet sich jedoch von NoSQL-Datenbanken (wie Mongodb, CouchDB oder IBM Cloudant) darin, dass die Datenaufteilung nicht Teil der horizontalen Skalierung ist. In noSQL-Datenbanken werden die Daten während der horizontalen Skalierung geshared.
Die akzeptierte Antwort bezieht sich auf die grundlegende Definition von horizontaler und vertikaler Skalierung. Im Gegensatz zu der weit verbreiteten Meinung, dass eine horizontale Skalierung von Datenbanken nur mit Cassandra, MongoDB usw. möglich ist, möchte ich jedoch hinzufügen, dass eine horizontale Skalierung auch mit jedem herkömmlichen RDMS möglich ist, und zwar ohne den Einsatz von Drittanbieterlösungen.
Ich kenne viele Unternehmen, insbesondere SaaS-Unternehmen, die dies tun. Dies geschieht mit einer einfachen Anwendungslogik. Man nimmt eine Reihe von Benutzern und verteilt sie auf mehrere DB-Server. So würden Sie zum Beispiel typischerweise eine "Meta"-Datenbank/Tabelle haben, die Clients, DB-Server/Verbindungsstrings usw. speichert, und eine Tabelle, die die Client/Server-Zuordnung speichert.
Dann leiten Sie einfach Anfragen von jedem Client an den DB-Server, dem sie zugeordnet sind.
Einige mögen nun sagen, dass dies einer horizontalen Partitionierung ähnelt und keine "echte" horizontale Skalierung ist, und sie werden in gewisser Weise Recht haben. Aber das Endergebnis ist, dass Sie Ihre DB über mehrere Db-Server skaliert haben.
Der einzige Unterschied zwischen den beiden Ansätzen zur horizontalen Skalierung besteht darin, dass bei einem Ansatz (MongoDB usw.) die Skalierung von der DB-Software selbst vorgenommen wird. In diesem Sinne "kaufen" Sie die Skalierung. Beim anderen Ansatz (für die horizontale Skalierung von RDBMS) wird die Skalierung durch den Anwendungscode/die Logik vorgenommen.
Das Hinzufügen von vielen Load Balancern erzeugt zusätzlichen Overhead und Latenz, und das ist der Nachteil bei der horizontalen Skalierung von Nosql-Datenbanken. Es ist wie die Frage, warum die Leute sagen, dass RPC nicht empfohlen wird, da es nicht robust ist.
Ich denke, dass wir in einem echten System sowohl SQL- als auch Nosql-Datenbanken verwenden sollten, um sowohl die Multicore- als auch die Cloud-Computing-Fähigkeiten der heutigen Systeme zu nutzen.
Andererseits haben komplexe transaktionale Abfragen eine hohe Leistung, wenn Sql-Datenbanken wie Oracle verwendet werden. NoSql könnte für Bigdata und horizontale Skalierbarkeit durch Sharding verwendet werden.
Sie haben ein Unternehmen, in dem es nur 1 Mitarbeiter gibt, aber Sie haben 1 neues Projekt, für das Sie einen neuen Mitarbeiter einstellen - das ist horizontale Skalierung, wobei ein neuer Mitarbeiter eine neue Maschine und ein Projekt ein neuer Datenverkehr/Aufruf Ihrer APIs ist.
Wobei 1 Projekt mit einem IIT/NIT-Mann, der alle Anfragen an Ihre Api/Verkehr bearbeitet. Wenn irgendwann mehr Anfragen an Ihre APIs gestellt werden, feuern Sie ihn und ersetzen ihn durch einen NIT/IIT-Mitarbeiter mit hohem IQ - das ist vertikale Skalierung.
- See previous answers
- Weitere Antworten anzeigen