Mit Cassandra für time series data
Ich bin auf meiner recherche für die Speicherung von Protokollen zu Cassandra.
Das schema für Protokolle wäre so etwas wie dieses.
EDIT: ich habe mich verändert das schema um einige Klarstellungen.
CREATE TABLE log_date (
userid bigint,
time timeuuid,
reason text,
item text,
price int,
count int,
PRIMARY KEY ((userid), time) - #1
PRIMARY KEY ((userid), time, reason, item, price, count) - #2
);
Eine neue Tabelle erstellt werden, die für das Tag täglich.
So eine Tabelle enthält Protokolle nur für einen Tag.
Meine Abfragen Zustand ist wie folgt.
Abfrage alle Protokolle, die von einem bestimmten Benutzer auf einem bestimmten Tag(Datum, nicht Uhrzeit).
Also der Grund, item, Preis, Anzahl, wird nicht verwendet werden, die als Hinweise oder Bedingungen, die für Abfragen in allen.
Meine Frage ist die PRIMARY KEY-design passt besser.
EDIT: Und der Schlüssel hier ist, ich möchte speichern Sie die Protokolle in einer schematischen Art und Weise.
Wenn ich wählen #1 so viele Spalten erstellt werden, pro log. Und die Möglichkeit, mehrere Werte pro Protokoll ist sehr hoch. Das schema oben ist nur ein Beispiel. Das Protokoll kann Werte enthalten, wie subreason, friendid und so weiter.
Wenn ich wählen Sie #2-eine (sehr) composite-Spalte erstellt wird pro Protokoll, und so weit ich konnte nicht finden alle wertvollen Informationen über den Aufwand der composite-Spalten.
Welche soll ich wählen? Bitte helfen Sie.
InformationsquelleAutor Woojun Kim | 2015-05-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mein Rat ist, dass keine der beiden Optionen scheint mir ideal für Ihr time-Serie, die Tatsache, das Sie erstellen, eine Tabelle pro Tag scheint nicht optimal.
Stattdessen würde ich empfehlen zum erstellen einer einzelnen Tabelle und partition by-user-id und Tag, und verwenden Sie eine Zeit-uuids als der gruppierten Spalte für die Veranstaltung, ein Beispiel würde wie folgt Aussehen:
Dies ermöglicht es Ihnen, alle Ereignisse in einem Tag, in einer einzigen Zeile und können Sie in Ihrer Abfrage pro Tag pro Benutzer.
Indem er die
time
gruppierten Spalte erlaubt eine Reihe, wo man einfügen kann, als eine viele Veranstaltungen wie Sie brauchen, in einem Tag.Also die Zeile key ist ein
composite key
von der userid und plus Datum im text z.B.insert into log_per_day (userid, date, time, value) values (1000,'2015-05-06',aTimeUUID1,'my value')
insert into log_per_day (userid, date, time, value) values (1000,'2015-05-06',aTimeUUID2,'my value2')
Den beiden Platten oben werden in der gleichen Zeile, und daher werden Sie in der Lage zu Lesen, in einer einzigen Abfrage.
Auch wenn Sie möchten mehr Informationen über time-Serien, die ich sehr empfehlen Sie zu prüfen, Erste Schritte mit Zeitreihen-Daten Modellierung
Hoffe es hilft,
José Luis
Ich Stimme mit @jbarrueta für die Partitionierung/clustering. Bei der Lagerung von rest der log-Daten, Wie es sein kann, variable, u haben zwei mögliche Ansätze: 1. Map-Datentyp für die Speicherung von Schlüssel-Wert-Paaren 2. Daten als json gespeichert im text-Datentyp format. P. S. :der Zweite Ansatz ist leicht auf Speicher-Anforderungen.
LInk muss aktualisiert werden, um: academy.datastax.com/resources/...
InformationsquelleAutor jbarrueta