Beste Methode zum Speichern von Zeitreihendaten mit hoher Schreibdichte und hoher Aggregation. (~ 1 Milliarde Punkte)

8

Ich suche nach einer Möglichkeit, Daten mit einem Zeitstempel zu speichern.

Jeder Zeitstempel kann 1 bis 10 Datenfelder enthalten.

Kann ich Daten mit einer einfachen Datenlösung oder SQL als (time, key, value) speichern? wie würde das im vergleich zu noSQL-lösung wie mongo, wo ich {time:.., key1:..., key2:...} speichern können?

Es speichert ungefähr 10 Datenpunkte mit maximal ungefähr 10 Feldern pro Sekunde. Und die Daten könnten so lange wie 10 Jahre gesammelt werden, leicht eine Milliarde Datensätze zu sammeln. Die Datenbank sollte in der Lage sein, Daten mit Zeitbereichsabfragen grafisch darzustellen.

Es sollte in der Lage sein, mit einer hohen Schreibfrequenz umzugehen, ~ 100 pro Sekunde (ok, das ist nicht so hoch, aber immer noch ...), und gleichzeitig in der Lage, Abfragen zu verarbeiten, die ungefähr eine Million Datensätze zurückgeben noch mehr)

Daten selbst sind sehr einfach, sie sind nur elektronische Messungen. Einige müssen mit einer hohen Frequenz (~ 100 Millisekunden) und andere alle 1 Minute oder so gemessen werden.

Kann jemand, der so etwas benutzt, die Plus- und Minuspunkte der Methode, die er benutzt hat, kommentieren?

(Offensichtlich ist dies ein sehr spezifisches Szenario, also ist dies definitiv nicht dazu gedacht, sich an die Frage zu wenden, die die beste Datenbank ist).

Beispieldaten:

%Vor%

Danke.

    
xcorat 08.05.2013, 19:43
quelle

3 Antworten

6

Sehen Sie sich einige Zeitreihen-Datenbanken an:

Installierte Software

Dienstleistungen

Andrew C 10.05.2013 23:06
quelle
4

Andere, die einen Blick wert sind:

John 06.01.2014 01:20
quelle
2

Der Einfachheit halber würde ich einfach eine Tabelle mit Zeitstempeln mit einer Spalte für jeden Messpunkt erstellen, und ein ganzzahliger Primärschlüssel wäre technisch redundant, da der Zeitstempel einen Messpunkt eindeutig identifiziert, es jedoch einfacher ist, auf eine bestimmte Zeile zu verweisen Nummer als nach Zeitstempel. Sie werden Nullen für jeden gemessenen Parameter haben, der während dieses Zeitstempels nicht genommen wurde, der ein paar zusätzliche Bits pro Zeile (Log-Base 2 der Anzahl der Spalten, aufgerundet) benötigt, aber Sie müssen auch keine Joins machen . Es ist wahr, wenn Sie entscheiden, dass Sie später Spalten hinzufügen möchten, aber das ist wirklich nicht zu schwierig, und Sie könnten einfach eine andere separate Tabelle erstellen, die auf diesem Schlüssel.

Sehen Sie hier ein Beispiel mit Ihren Daten: Ссылка

Ich würde empfehlen, einige Dummy-Datenbanken von großer Größe zu machen, um sicherzustellen, dass die von Ihnen verwendete Struktur immer noch angemessen funktioniert.

Die (time,key,value) suggestion Gerüche mögen EAV , was ich vermeiden würde, wenn Sie eine Skalierung planen.

    
engineerC 09.05.2013 21:10
quelle