Skalierbarkeit
Was genau soll skalierbar sein?
- Anzahl der Anfragen
- Zu Speichernde Daten
- Anzahl der Benutzer
Vertikales Skalieren bedeutet den bestehenden Server mit besserer Hardware auf zu stocken.
Horizontales Skalieren bedeutet, die Anzahl der Server zu erhöhen und damit die Lasten aufteilen. Die Aufteilung ist einfach, wenn mein Programm „Stateless“ ist.
Datenbanken sind „Statefull“ und somit erfordern diese eine andere Vorgehensweise.
CAP Theorem
Consistency Level
„Strict Consistency“ bedeutet, dass jede Änderung sofort bei allen greift.
„Eventual Consistency“ bedeutet, dass die Änderung verzögert auftritt und somit die Änderung bei allen anderen auch verzögert greift.
Lese- vs Schreibvorgägne
Ich sollte in Erfahrung bringen, mit was die Datenbank wahrscheinlich am meisten zu tun hat.
Horizontales Skalieren
Ein Load Balancer ist eine Möglichkeit zum Skalieren, wobei sichergestellt werden muss, dass alle Server auf dieselben Daten zugriff haben.
Daten aufteilen (Sharding), z. B. nach Regionen (DE, FR, …) oder nach Hash (Consistent Hashing).
Daten duplizieren, das ist sehr hilfreich, wenn die Datenbanken sehr viel gelesen werden.