Was bedeutet Skalierbarkeit von Datenbanken?
Auf dieser Seite werden die folgenden Punkte behandelt, damit Sie die Skalierbarkeit von Datenbanken besser verstehen:
- Horizontale versus vertikale Skalierung
- Herausforderungen bei der Skalierbarkeit von Datenbanken
- Wie man die Skalierbarkeit von Datenbanken verbessert
- Skalierbarkeit von NoSQL gegenüber relationalen Datenbanken
- Schlussfolgerung
Was ist Skalierbarkeit von Datenbanken? Die Skalierbarkeit von Datenbanken ist nicht nur die Fähigkeit einer Datenbank, mehr Last zu bewältigen, sondern auch die Leistung zu verbessern, wenn die geschäftlichen Anforderungen an eine Anwendung steigen. Beachten Sie, dass Skalierung nicht nur bedeutet, dass Ressourcen nach oben skaliert werden, um eine größere Nachfrage zu befriedigen, sondern auch nach unten, wenn die Nachfrage sinkt.
Wenn eine Datenbank nicht skaliert werden kann, hat dies in der Regel drei Folgen: Überlastung von CPU und Speicher, Überlastung des Speichers und Überlastung des Netzwerks, die den Datenverkehr beeinträchtigt. Jedes dieser Probleme oder eine Kombination aus ihnen kann Ihre Anwendung zum Erliegen bringen und Ihr Unternehmen ernsthaft beeinträchtigen.
Diese Seite befasst sich mit zwei Arten der Skalierung, den jeweiligen Herausforderungen und den empfohlenen Lösungen, um diese Herausforderungen zu überwinden. Schließlich werden NoSQL- und relationale Datenbanken im Zusammenhang mit der Skalierbarkeit verglichen und es wird gezeigt, warum Couchbase die beste Wahl für Skalierbarkeit ist.
Horizontale versus vertikale Skalierung
Es gibt zwei Möglichkeiten, wie eine Datenbank ihre Verfügbarkeit und ihr Verhalten verbessern kann, wenn mehr Ressourcen benötigt werden: vertikale Skalierung und horizontale Skalierung.
Was ist horizontale Skalierung?
Die horizontale Skalierung, die besser in nicht-relationalen Systemen möglich ist, bezieht sich auf das Hinzufügen weiterer Knoten, um eine erhöhte Last zu teilen. Diese Knoten sind Teil eines Clusters, der über mehrere Server verteilt sein kann, und die Daten können über Joins verbunden werden. Die horizontale Skalierung wird auch als Skalierung nach außen bezeichnet.
Was ist vertikale Skalierung?
Vertikale Skalierung bezieht sich auf das Hinzufügen weiterer physischer oder virtueller Ressourcen zu einer Datenbank, die auf einem einzigen Server ausgeführt wird. Dies kann durch Hinzufügen von mehr CPU-Leistung, Arbeitsspeicher oder Speicherkapazität erreicht werden. Vertikale Skalierung wird auch als Aufwärtsskalierung bezeichnet.
Was ist besser, horizontale oder vertikale Skalierung?
Welche Art der Skalierung Sie wählen sollten, hängt von Ihrer Anwendung und den besonderen Herausforderungen ab, die Sie bewältigen müssen. Zu berücksichtigende Faktoren:
- Vertikale Skalierung ist eine gute erste Option, wenn Sie keinen massiven Skalierungssprung benötigen und die Änderungen am Gesamtsystem über die Änderungen an Ihren Rechenressourcen hinaus minimieren möchten.
- Vertikale Skalierung kann zu Ausfallzeiten führen, wenn Sie den Rechner wechseln, um mehr Ressourcen zu erhalten.
- Wenn Ihre Rechenressourcen wachsen, kann es letztendlich teurer werden, Ihre Datenbank durch vertikale Skalierung zu erweitern und zu pflegen.
Wenn Sie auf diese Probleme stoßen oder Ihr System für verschiedene Wachstumsszenarien zukunftssicher machen wollen, ist die horizontale Skalierung der richtige Weg.
- Die horizontale Skalierung kann die Fehlertoleranz und die Verfügbarkeit verbessern, da sie die Auswirkungen des Ausfalls eines einzelnen Servers verringert.
- Die horizontale Skalierung kann Änderungen an der Architektur und am Code Ihrer Anwendung erfordern. Die Auswirkungen werden jedoch durch moderne Datenbanken wie Couchbase, die automatische Skalierungsfunktionen bieten, gemildert.
Herausforderungen bei der Skalierbarkeit von Datenbanken
Die Skalierung einer Datenbank kann kompliziert sein, und die Herausforderungen, denen Sie begegnen, hängen von einer Reihe von Faktoren ab. Die erste Herausforderung kann darin bestehen, dass Sie eine Legacy-Anwendung haben, die auf einer relationalen Datenbank läuft. In diesem Fall müssen Sie sich entscheiden, ob Sie mehr physische/virtuelle Ressourcen zur Verfügung stellen oder Ihre Anwendung so umgestalten, dass sie auf einer Datenbank läuft, die horizontale Skalierung unterstützt.
Eine weitere Herausforderung bei der Skalierung moderner Anwendungen ist die Verwaltung der Kosten in Abhängigkeit von der jeweiligen Auslastung. Sie möchten nicht in Zeiten geringer und hoher Auslastung den gleichen Preis für Rechenressourcen zahlen. Sie möchten, dass Ihre Kosten dem Bedarf entsprechen.
Eine dritte Herausforderung ist, dass horizontal skalierte Datenbanken komplizierter zu warten und zu verwalten sind. Couchbase Capella™ ist in diesem Fall eine ideale Lösung, da es eine vollständig verwaltete Database-as-a-Service (DBaaS) ist, die Replikation und Sharding sowie multidimensionale Skalierung.
Wie man die Skalierbarkeit von Datenbanken verbessert
Sie können die horizontale Skalierung verbessern, indem Sie sowohl Replikation als auch Sharding unterstützen.
Replikation
Die Replikation ist eine Form der Skalierung, bei der Kopien einer Datenbank oder von Datenbankknoten erstellt werden. Wenn ein Knoten ausfällt, kann eine Kopie seiner Daten von einem anderen Knoten abgerufen werden. Ein weiterer Vorteil der Replikation besteht darin, dass Anfragen an verschiedenen Knoten an unterschiedlichen Orten eingehen können, wodurch die Last auf einem bestimmten Knoten verringert wird.
Einige Schl�sselkomponenten von Couchbase basieren auf einer Master-Master-Replikationstopologie, bei der mehrere Couchbase-Instanzen als Master-Knoten fungieren und Daten untereinander replizieren können:
- Couchbase verwendet Replikationsströme um Daten zwischen Knoten zu replizieren. Ein Replikationsstrom ist ein kontinuierlicher bidirektionaler Datenstrom zwischen zwei Knoten.
- Couchbase speichert Daten in EimernDies sind logische Container, in denen zusammengehörige Daten gruppiert werden. Jeder Bucket kann so konfiguriert werden, dass seine Daten auf einen oder mehrere andere Knoten repliziert werden.
- Rechenzentrumsübergreifende Replikation (XDCR) ist ein Feature in Couchbase, das die Replikation zwischen Rechenzentren ermöglicht. XDCR ermöglicht die Replikation zwischen Couchbase Clustern, die sich in verschiedenen Regionen oder Verfügbarkeitszonen befinden können.
- In einer Master-Master Replikationstopologie kann es zu Konflikten kommen, wenn mehrere Knoten gleichzeitig den gleichen Teil der Daten aktualisieren. Couchbase hat eine Konfliktlösungsmechanismus die sich auf die Versionskontrolle von Dokumenten und Zeitstempel stützt, um Konflikte zu lösen.
Sharding
Sharding, auch bekannt als Partitionierung, basiert ebenfalls auf dem Prinzip, Daten über mehrere Knoten zu verschieben. Im Gegensatz zur Replikation werden beim Sharding die Daten aufgeteilt und nicht kopiert. Datenbank Sharding unterteilt den gesamten Datenbestand in mehrere Gruppen, die als Shards bezeichnet werden. Nach der Aufteilung kann jeder Shard unabhängig gespeichert werden, in der Regel auf mehreren Servern, die oft als Cluster bezeichnet werden. Auf jeden Shard kann unabhängig zugegriffen werden, was bedeutet, dass Sie schneller auf die Daten zugreifen können und mehr Ressourcen für die Verarbeitung, die Datenverarbeitung und die Speicherung zur Verfügung haben.
Sharding ermöglicht eine schnellere Leistung, führt aber auch zu mehr Komplexität. Zu dieser Komplexität gehört das Konzept des Rebalancing, bei dem Daten im Laufe der Zeit zwischen Shards verschoben werden, um sie gleichmäßig zu verteilen.
Weitere Einzelheiten finden Sie unter diese Anleitung zum Sharding in Couchbase.
Skalierbarkeit von NoSQL gegenüber relationalen Datenbanken
NoSQL-Datenbanken sind von Natur aus besser skalierbar als relationale Datenbanken, da sie sowohl vertikal als auch horizontal skaliert werden können. Außerdem verfügen sie über eine verteilte Architektur, die darauf ausgelegt ist, große Datenmengen über mehrere Server hinweg zu verarbeiten.
Bei herkömmlichen relationalen Datenbankmanagementsystemen (RDBMS) wie Oracle steht die Konsistenz im Vordergrund und nicht die Verfügbarkeit. NoSQL-Datenbanken hingegen stellen die Verfügbarkeit über die Konsistenz und konzentrieren sich mehr auf die Unterstützung größerer Nutzer- und Datenmengen. Außerdem ist die Datenverteilung fehlertoleranter, wenn einige Knoten ausfallen.
Schlussfolgerung
Um Ihren Skalierungsanforderungen immer einen Schritt voraus zu sein, sollten Sie regelmäßige Lasttests durchführen und eine Datenbank wählen, die die für Ihre Anwendung und Ihre Geschäftsanforderungen am besten geeignete Skalierungsmethode unterstützt. Sie sollten sich darüber im Klaren sein, dass sowohl bei der horizontalen als auch bei der vertikalen Skalierung Kompromisse eingegangen werden müssen, z. B. die Entscheidung zwischen Kosten und Komplexität oder zwischen Betriebszeit und Konsistenz.
Nutzen Sie diese Ressourcen, um mehr über die Skalierung von Datenbanken mit Couchbase zu erfahren:
- Mehrdimensionale Datenbank-Skalierung - Details zu Couchbase Services, Rebalancing, Status, Events und Jobs
- Warum eine NoSQL-Datenbank wählen? - was NoSQL ist, wie es funktioniert und wofür NoSQL-Datenbanken gut sind
- Serverlose Datenbanken - Vorteile für Entwickler, Datenpersistenz für Anwendungen und unterstützte Anwendungen
- Couchbase Capella DBaaS - der einfachste und schnellste Weg, mit Couchbase zu beginnen und das Datenbankmanagement zu eliminieren