Ich versuche, eine neue Anwendung zu entwerfen, die Cassandra anstelle einer traditionellen SQL-Datenbank verwendet. Die Clustering- und horizontalen Skalierungsfunktionen sind besonders nützlich für meinen Anwendungsfall.Speichern von flexiblen Schema in Cassandra
Ich habe diese Situation, wo ich mehrere Datensätze habe, die sich sehr voneinander unterscheiden könnten. Wenn ich zum Beispiel verschiedene Sportinformationen speichere, würde ich für Fußball Dinge wie die beiden Mannschaften, die Spieler, die Ergebnisse nach der Halbzeit und die volle Zeit, rote Karten, gelbe Karten usw. speichern, während es bei einem Tennisspiel sein würde Dinge wie die zwei Gegner, Anzahl der Sätze, etc.
Ich möchte keine Tabelle für jede Sportart haben (es gibt Lasten), und will in der Lage sein, neue Sportarten hinzuzufügen, ohne die Datenbank jedes Mal ändern zu müssen . Ich möchte es flexibel halten, wo diese Informationen sich je nach Sportart des Datensatzes beliebig ändern können.
Wie ist es am besten, diese Art von Informationen in Cassandra zu modellieren? Ich weiß, dass es keine "Dokument" -orientierten Datenbanken wie MongoDB usw. ist, aber für den Rest der Anwendung ist die "tabellenartige" Struktur, die Cassandra anbietet, ideal.
Ich weiß, ich kann es einfach als JSON-Zeichenfolge in einem Textfeld speichern und auf Anwendungsebene verarbeiten, aber ich befürchte, dass dies die zukünftige Anforderung zur Massenabfrage der Felder innerhalb der JSON-Zeichenfolge (z. B. alle Übereinstimmungen) begrenzt das hatte einen bestimmten Schiedsrichter).
Ich weiß, dass es eine andere Alternative gibt, um es als eine Karte zu speichern. Indizes scheinen jedoch ein wenig begrenzt zu sein, alle Beispiele scheinen den Index basierend auf dem Kartenschlüssel zu finden, nicht auf dem Wert. Und einige Leute scheinen auch die Verwendung von Indizes in Google Maps zu verhindern.
Welche Optionen habe ich?
Wenn die Frage ist "Welche Optionen habe ich?" dann hast du es schon beantwortet. – OrangeDog
Ich würde vorschlagen, Cassandra als Schlüsselwert (was es wirklich ist) und nicht als "Tisch-Like". Beachten Sie auch, dass Sie keine Karten verschachteln können, aber wenn Sie undurchsichtige JSON-as-Text-Felder verwenden. – OrangeDog
@OrangeDog Die JSON-Struktur kann tatsächlich flach sein, das ist also kein Problem. Meine Frage ist eher, ob ich mit Hilfe einer Karte einen gefährlichen Weg fahren werde, ob es irgendwelche Nachteile gibt, über die ich nicht gelesen habe, und ob es andere Möglichkeiten gibt. – jbx