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
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).
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.
- 1. SQLite als Ersatz für fopen()?
- 2. Continuum als Ersatz für Jenkins?
- 3. Robospice als Ersatz für Async Tasks
- 4. Thrift als öffentlicher API-Ersatz für REST?
- 5. Redshift als Ersatz oder Ergänzung
- 6. Leichter Ersatz für System.Data.DataTable
- 7. jQuery-Ersatz für .load()?
- 8. Ersatz für Python statvfs?
- 9. Regex Ersatz für Streifen()
- 10. Ersatz für veraltete eregi
- 11. EasyMock Ersatz für SetReturnValue
- 12. SYSGEN_SYSISAPI Ersatz für WinCE6
- 13. Ersatz für XML-Serialisierung
- 14. Ersatz für document.all.sort.length
- 15. Ersatz für UDC, Nutzungsdatensammler?
- 16. Ersatz für async/erwarten
- 17. Ersatz für UIViews contentStretch?
- 18. CDI-Ersatz für @ManagedProperty
- 19. WinRT Ersatz für System.ComponentModel.TypeConverter
- 20. PHP Ersatz für safe_mode
- 21. Ersatz für Rdoc-Nutzung
- 22. Ersatz für Neuronale Netze
- 23. Ersatz für gefunden = Keine?
- 24. Ersatz für binary_function
- 25. Ersatz für WorkflowUtil.isStale (...)
- 26. CGAL Ersatz für iOS
- 27. Ersatz für JAXMServlet?
- 28. WinAPI Ersatz für reg.exe
- 29. UIDatePicker Ersatz für tvOS?
- 30. Ersatz für AuthenticationException.getAuthentication();