Frage

Ich versuche, genau herauszufinden, was diese neumodischen Datenspeicher wie BigTable, hbase und Cassandra wirklich sind.

Ich arbeite mit riesigen Mengen von Börsendaten, Milliarden von Reihen von Preis / Kursdaten, die jeden Tag zu 100s von Gigabyte (obwohl diese Textdateien oft komprimieren um mindestens eine Größenordnung) hinzufügen können. Diese Daten sind im Grunde eine Handvoll Zahlen, zwei oder drei kurze Strings und einem Zeitstempel (in der Regel Millisekunden-Ebene). Wenn ich eine eindeutige Kennung für jede Zeile auswählen müsste, würde ich die ganze Reihe holen (da ein Austausch in derselben Millisekunde mehr Werte für das gleiche Symbol erzeugen kann).

ich die einfachste Art und Weise annehmen, diese Daten zu BigTable zur Karte (Ich bin seine Derivate) ist durch das Symbol Namen und das Datum (das eine sehr große Zeitreihe zurückkehren kann, mehr als eine Million Datenpunkte sind nicht unbekannt). Aus ihren Beschreibungen lesen, es sieht aus wie mehrere Schlüssel können mit diesen Systemen verwendet werden. Ich gehe davon aus, dass auch Dezimalzahlen sind keine guten Kandidaten für Schlüssel.

Einige dieser Systeme (Cassandra, zum Beispiel) behauptet der Lage sein, Bereichsabfragen zu tun. Würde ich in der Lage sein, effizient abzufragen, sagen wir, alle Werte für MSFT, für einen bestimmten Tag, von 11.00 bis 01.30?

Was passiert, wenn ich will über alle Symbole für einen bestimmten Tag suchen, und alle Symbole anfordern, die einen Preis zwischen $ 10 und $ 10.25 hat (also die Werte, die ich bin auf der Suche, und will Schlüssel als Ergebnis zurückgegeben werden)?

Was passiert, wenn ich zweimal Serie erhalten möchten, subtrahieren eine von der anderen, und kehren die beiden Zeitreihen und ihr Ergebnis, werde ich seine Logik in meinem eigenen Programm zu tun?

relevante Papiere Lese scheint zu zeigen, dass diese Systeme nicht eine sehr gute Passform für massive Zeitreihen-Systeme sind. wenn Systeme wie Google Maps basieren jedoch auf sie, ich denke, Zeitreihe sollte auch funktionieren. Zum Beispiel, denken Sie an Zeit wie die x-Achse, die Preise als y-Achse und Symbole als benannte Stellen - ganz plötzlich es wie BigTable sieht sollte der ideale Speicher für Zeitreihe (wenn die ganze Erde gespeichert werden kann, abgerufen , gezoomt und mit Anmerkungen versehen, Börsendaten sollten trivial sein).

Kann einige Experten mir in die richtige Richtung oder jegliche Missverständnisse klären.

Danke

War es hilfreich?

Lösung

Ich bin kein Experte noch, aber ich habe jetzt ein paar Tage mit Cassandra gespielt, und ich habe ein paar Antworten für Sie:

  1. Sie über Datenmenge keine Sorgen, es ist irrelevant mit Systemen wie Cassandra, wenn Sie $$$ für eine große Hardware-Cluster haben.
  

Einige dieser Systeme (Cassandra, zum Beispiel) behauptet der Lage sein, Bereichsabfragen zu tun. Würde ich in der Lage sein, effizient abzufragen, sagen wir, alle Werte für MSFT, für einen bestimmten Tag, von 11.00 bis 01.30?

Cassandra ist sehr nützlich, wenn Sie wissen, wie mit den Tasten zu arbeiten. Es kann zügig durch Tasten sehr schnell. So sucht für MSFT 11.00 bis 13.30 Uhr, dann würden Sie haben Ihre Zeilen wie diese Taste:

MSFT-Zeitstempel, GOOG-Zeitstempel, ..etc Dann können Sie Cassandra sagen alle Schlüssel zu finden, die mit MSFT-jetzt beginnen und enden mit MSFT-now + 1 Stunde.

  

Was passiert, wenn ich will über alle Symbole für einen bestimmten Tag suchen, und alle Symbole anfordern, die einen Preis zwischen $ 10 und $ 10.25 hat (also die Werte, die ich bin auf der Suche, und will Schlüssel als Ergebnis zurückgegeben werden)?

Ich bin kein Experte, aber bisher wurde mir klar, dass Cassandra ‚durch Werte gar nicht suchen. Wenn Sie also die oben tun wollen, werden Sie eine andere Tabelle gewidmet nur für dieses Problem und gestalten Sie Ihre Schema vornehmen müssen, um den Fall zu passen. Aber es wird nicht viel anders sein, von dem, was ich oben beschrieben. Es geht um Ihre Schlüssel und Spalten zu benennen. Cassandra können sie sehr schnell finden!

  

Was passiert, wenn ich zweimal Serie erhalten möchten, subtrahieren eine von der anderen, und kehren die beiden Zeitreihen und ihr Ergebnis, werde ich seine Logik in meinem eigenen Programm zu tun?

Richtig, alle Logik in Ihrem Programm. Dies ist nicht MySQL. Dies ist nur ein Speicher-Engine. (Aber ich bin sicher, dass die nächsten Versionen diese Art von Dingen anbieten werden)

Bitte beachten Sie, dass ich bin ein Neuling in diesem, wenn ich falsch bin, können Sie mich korrigieren.

Andere Tipps

Wenn Sie mit einer massiven Zeitreihen-Datenbank zu tun hat, dann die Standards sind:

Diese sind nicht billig, aber sie Ihre Daten sehr effizient verarbeiten kann.

Jemand, den ich die Open-Zeitreihen-Datenbank empfohlen Respekt. Insbesondere, dass das Schema der schönsten war er je gesehen hatte.

http://opentsdb.net/

"Ist vor dem gleichen Berg. Mein Hauptproblem mit Cassandra ist, dass ich nicht einen Strom auf der Ergebnismenge, zum Beispiel in Form eines Iterators bekommen kann.

Ich suche bereits nach oben und unten der Dokumentation und das Netz, aber nichts.

Ich kann nicht alle Schlüssel holen und erhalten dann die Zeilen als Milliarden von Zeilen dieses unmöglich macht.

.

Die DataStax Java-Treiber für automatisches Paging ermöglicht, so dass die Ergebnisse streamen wie ein Iterator und es ist alles eingebaut Dies ist in Cassandra 2.0.1 by the way - http://www.datastax.com/dev/blog/client-side-improvements-in-cassandra -2-0

Nur aus Gründen der Vollständigkeit dies im Jahr 2018 zu lesen, gibt es jetzt eine spezielle Datenbank nur für Zeitreihendaten genannt TimescaleDB

http://www.timescale.com/

Dieser Blog ist lesenswert, es erklärt, warum es ist überlegen Lösungen wie Cassandra für diesen speziellen Fall und warum beschlossen sie es oben auf der relationalen PostgreSQL Datenbank zu erstellen

https://blog.timescale.com/time-series-data-why-and-how-to-use-a-relational-database-instead-of-nosql-d0cd6975e87c

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top