2016-07-28 6 views
0

Ich benutze influxDB und verwenden Line-Protokoll, um große Menge von Daten in Datenbank einfügen. Die Daten, die ich erhalte, haben die Form eines Schlüsselwertpaares, wobei Schlüssel eine lange Zeichenfolge mit hierarchischen Daten und Wert ein einfacher ganzzahliger Wert ist.InfluxDB Design-Problem

Beispielschlüsselwertdaten:

/path/units/unit/subunits/subunit[name\='NAME1']/memory/chip/application/filter/allocations 
value = 500 

/path/units/unit/subunits/subunit[name\='NAME2']/memory/chip/application/filter/allocations 
value = 100 
(Note Name = 2) 

/path/units/unit/subunits/subunit[name\='NAME1']/memory/chip/application/filter/free 
value = 700 
(Note Instead of allocation it is free at the leaf) 

/path/units/unit/subunits/subunit[name\='NAME2']/memory/graphics/application/filter/swap 
value = 600 
Note Instead of chip, graphics is in path) 

/path/units/unit/subunits/subunit[name\='NAME2']/harddisk/data/size 
value = 400 
Note Different path but till subunit it is same 

/path/units/unit/subunits/subunit[name\='NAME2']/harddisk/data/free 
value=100 
Note Same path but last element is different 

unten ist das Leitungsprotokoll i Daten einzufügen verwenden.

interface, Key= /path/units/unit/subunits/subunit[name\='NAME2']/harddisk/data/free, valueData= 500 

Ich verwende eine Messung nämlich Interface. Und ein Tag und ein Feldsatz. Dieses DB-Design verursacht jedoch Probleme beim Abfragen von Daten.

Wie kann ich die Datenbank so entwerfen, dass ich Abfragen wie, Get alle Datensätze für die Untereinheit wo name = Name1 oder erhalten Sie alle Größe Daten für jede Festplatte.

Vielen Dank im Voraus.

+0

Ich bin ein wenig verwirrt darüber, was hier los ist. Können Sie mir die Beispielabfrage geben, die Sie ausführen möchten? –

+0

@MichaelDesa Ich frage mich über Schema-Design für die effiziente Abfrage von oben erwähnten Daten: für z.B./Pfad/Einheiten/Einheit/Untereinheiten/Untereinheit [Name \ = 'NAME2']/Festplatte/Daten/frei oder/Pfad/Einheiten/Einheit/Untereinheiten/Untereinheit [Name \ = 'NAME2']/Festplatte/Daten/Zuordnung – Ammad

+0

Was ist die Kardinalität des 'Schlüssel' Wertes? –

Antwort

1

Das Schema wäre ich würde empfehlen, die folgenden:

interface,filename=/path/units/unit/subunits/subunit[name\='NAME2']/harddisk/data/free value=500 

Wo filename ein Tag ist und value ist das Feld.

Angesichts der Kardinalität von filename in den Tausenden dieses Schema sollte gut funktionieren.

+0

Danke Michael, wie kann ich Teilzeichenfolge Teil der Schlüssel abfragen? für z.B. Zählen Sie den 'Wert' für alle "/ Festplatte" mit name = "NAME2" – Ammad

+0

InfluxQL unterstützt reguläre Ausdrücke auf Tags, so dass Ihre Abfrage etwa wie folgt aussehen würde: 'SELECT * FROM interface WHERE filename = ~/harddisk /'. Wenn Sie jedoch viele Abfragen mit Übereinstimmungen mit regulären Ausdrücken ausführen, würde ich Ihnen empfehlen, 'filename' in mehrere Tags aufzuteilen. –

Verwandte Themen