Cassandra vs. MongoDB - Speichern von JSON-Daten mit bisher unbekannten lösen?
Ich versuche zu integrieren, eine NoSQL-Datenbank zum speichern von JSON-Daten, anstatt eine SQL-Datenbank zum speichern von JSON-Daten (Eine Spalte, die speichert JSON-Objekt).
Für MongoDB, ich kann legen Sie eine JSON-Datei einfach machen:
document = <JSON OBJECT>
collection.insert(document)
Jedoch für Cassandra, laut dieser Webseite: http://www.datastax.com/dev/blog/whats-new-in-cassandra-2-2-json-support
Kann es nicht sein schema weniger, was bedeutet, dass ich brauchen würde, um eine Tabelle zu erstellen, vorher:
CREATE TABLE users (
id text PRIMARY KEY,
age int,
state text
);
Und dann die Daten einfügen:
INSERT INTO users JSON '{"id": "user123", "age": 42, "state": "TX"}';
Das Problem ist, dass ich möchte, um zu versuchen, und Cassandra, ich habe gerade DataStax tutorial, aber es scheint, dass ich hätte wissen müssen, der die Schlüssel der JSON-Daten im Voraus ist nicht möglich.
Oder sollte ich ändern Sie die Tabelle, wenn es eine neue Daten-Spalte, wenn es eine unbekannte Schlüssel? Das klingt nicht wie eine sehr gute design-Entscheidung.
Kann jemand mir die richtige Richtung? Dank
- meine Erfahrung ist, müssen Sie Entwurf, das schema vorher, oder ändern Sie es später...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese JSON-Unterstützung ist sehr irreführend - es ist JSON in Cql unterstützt, nicht im Lager.
In der Tat, das ist keine gute Entscheidung - die Felder in JSON können verschiedene Typen haben über Unternehmen, die eine Spalte mit dem Namen konnte Sie nicht dienen Sie alle. Auch das hinzufügen neuer Bereich erfordert schema propagation in Ihrem cluster, so die erste einfügen (die enthalten würde, von alter table + insert-Daten) wäre sehr langsam.
Cassandra nicht geben Ihnen keinen eingebauten Mechanismus, aber was Sie tun können, ist, dass ganze JSON in ein Feld und setzen Sie benötigten Eigenschaften in separaten Spalten. Zum Beispiel:
BTW. AFAIK Cassandra verwendet, um Ihren Fall zu unterstützen, der vor langer Zeit, aber jetzt ist es mehr 'typisiert'.
CQL bietet die Möglichkeit der Erstellung und Verwendung von benutzerdefinierten Datentypen. Sie können erstellen Sie einen Datentyp, um mehrere Felder.
so können Sie einfach
'create type' cql-Befehl
http://www.tutorialspoint.com/cassandra/cassandra_cql_user_defined_datatypes.htm