2016-06-02 8 views
2

Ich habe viele Zeilendaten für Ereignisse. Diese Ereignisse teilen einige gemeinsame Kennungen, aber auch Daten, die für das Ereignis eindeutig sind.Speichern von Daten als Blob vs Spalten in Cassandra

Da Cassandra where-Klauseln über Felder, die nicht indiziert sind, nicht erlaubt, gibt es einen Vorteil, eine Zeile für jeden dieser Schlüssel zu machen, oder wäre es einfacher, die json-Daten einfach in einem Blob zu speichern?

Beispiel

Tabelle hat eine Taste (event_type, Zeitstempel) von EVENT_TYPE partitioniert

event_type click könnte ts:12345 page_uri: "ABC1234" user_id: "1235567" click_location: "1234,564" event_type haben keyboard_input könnte ts:1245 page_uri: "ABC345" words_entered: "foobar"

haben Gibt es einen Vorteil davon als Speicher Tabelle mit Zeilen:

event_type, ts, page_uri, user_id, click_location, words_entered

vs einen Tisch

event_type, ts, blob

wo blob eine json codierte Karte des Restes der Daten ist.

Antwort

1

Einige unmittelbare Vorteile, die Daten in den Spalten in den Sinn kommen zu speichern:

  1. Sie können einen neuen Index zu einem späteren Zeitpunkt hinzufügen, wenn Sie feststellen, müssen Sie plötzlich von einem anderen Feld abfragen.
  2. Sie können nur bestimmte Felder aktualisieren, ohne die gesamte Zeile zu aktualisieren. Mit einem Blob müssen Sie den gesamten Blob lesen und aktualisieren. Gleichzeitige Updates für verschiedene Felder könnten im Blob-Fall als Ergebnis gelöscht werden.
  3. Sie können weniger Daten mit jedem Update aufgrund von # 2 oben schreiben.
  4. Sie können weniger Daten mit jeder Auswahl lesen, wenn Sie nicht alle Spalten
  5. # 3 und # 4 oben benötigen, kann zu einem Leistungsvorteil führen.
Verwandte Themen