2017-07-18 3 views
0

Ist Cassandra mit mehreren Knoten eine gute Wahl als Ersatz für PostgreSql? Daten, die gespeichert werden, sind eine Zeitreihe. Es ist bereits etwa zehn Gigabyte groß und wird voraussichtlich wachsen. Die Datenbank sollte in eine Pipeline mit Apache-Funke als Quelle und möglicherweise Ergebnisziel integriert werden. Was benötigt:
1) Redundanz: ein Knotenausfall sollte das System nicht stoppen (alle Daten sollten zur Verfügung stehen)
2) Geschwindigkeit: mehr Knoten - weniger Zeit pro Einzeleinsatz/wählen für einen Client
3) Parallelität: mehr Knoten - eine höhere Geschwindigkeit für die gleichzeitige Einsätze/wählt aus verschiedenen KundenCassandra als Ersatz für PostgreSQL

Antwort

1

für Ihre Punkte:

1) Dies ist eine Frage, die bis zu Ihnen, während der Schlüsselraum Replikationsfaktor RF und die Konsistenzstufen wählen CL Ihrer Einsätze und wählt. Um verfügbar und konsistent zu sein, benötigen Sie RF = 3 auf Ihrem und CL.QUORUM sowohl zum Einfügen als auch zum Auswählen für den Verlust eines Knotens (für QUORUM benötigen Sie RF/2 + 1 Knoten online, 3/2 + 1 = 2 - ganzzahlige Division , mit RF = 5 würden Sie 5/2 + 1 = 3 Knoten online benötigen, so dass Sie mit Verlust von 2 umgehen können.

2) Eine einzelne Anfrage wird von einem einzelnen Knoten als Koordinator in Ihrem Cluster bearbeitet. Mit einzelnen und synchronen Requests gewinnen Sie nicht viel Leistung. Wenn Sie Anfragen stellen und Async verwenden, teilen Sie Ihre Anfragen auf mehrere Knoten auf und steigern die Leistung.

3) Bei mehr Clients haben Sie den gleichen Effekt - der Koordinator wird zufällig ausgewählt (ok, es gibt die TokenAwarePolicy, die einen geeigneten Koordinator auswählt).

1

Sie haben erwähnt, dass Sie Zeitreihendaten verwenden. 1. Natürlich können Sie den Replikationsfaktor und die Konsistenzstufe variieren. Also ja, Cassandra wäre gut als Ersatz.
2. Die Einfügung wäre sehr schnell, da Cassandra zuerst den Speicher schreibt. Also ja, Cassandra wäre gut als Ersatz.
3. Cassandra hat lineare horizontale Skalierbarkeit. Also ja, Cassandra wäre gut als Ersatz.
Die Nachteile sind, dass Cassandra ein Schlüssel-Wert-Speicher ist. Daher sollten Sie die Tabellenstruktur um die Abfragen herum modellieren. Und PostgreSQL als RDBMS ist flexibler, da es den gesamten Satz von SQL-Operationen unterstützt.
Sie können mehr über einige Vor- und Nachteile der Verwendung von Cassandra mit Zeitreihendaten here und here lesen.