Für meinen Fall muss ich 15 Leistungsmesswerte für Geräte erfassen und in InfluxDB speichern. Jedes Gerät hat eine eindeutige Geräte-ID.InfluxDB Leistung
Metriken werden auf folgende Weise in InfluxDB geschrieben. Hier zeige ich nur einen als Beispiel
new Serie.Builder("perfmetric1")
.columns("time", "value", "id", "type")
.values(getTime(), getPerf1(), getId(), getType())
.build()
Schreiben von Daten ist schnell und einfach. Aber ich sah eine schlechte Leistung, wenn ich eine Abfrage ausführte. Ich versuche, alle 15 metrischen Werte für die letzte Stunde zu erhalten.
select value from perfmetric1, perfmetric2, ..., permetric15
where id='testdeviceid' and time > now() - 1h
Für eine Stunde hat jede Metrik 120 Datenpunkte, es 1800 Datenpunkte insgesamt. Die Abfrage dauert ca. 5 Sekunden bei einer c4.4xlarge EC2-Instanz, wenn sie inaktiv ist.
Ich glaube, InfluxDB kann es besser machen. Ist das ein Problem meines Schemadesigns oder ist es etwas anderes? Würden die Abfragen in 15 parallele Anrufe aufgeteilt werden?
Danke für die schnelle Antwort! Ich bin ziemlich neu bei InfluxDB, im Grunde nur experimentieren. Es macht alles Sinn. Ich bin ein wenig überrascht, weil dies ein sehr häufiger Anwendungsfall zu sein scheint. Tag-Indizierung ist etwas Neues in der Version 0.9.0 - ich betreibe derzeit den stabilen 0.8.8. "Um Dinge wie Tags und schnelle Suchvorgänge für bestimmte Spaltenwerte zu aktivieren, fügen wir jetzt Unterstützung für Spaltenindizes hinzu. Hier ist das Problem, Spaltenindizes zu verfolgen." –
Die Software ist im Alpha-Zustand der Entwicklung, so dass eine Menge Dinge fehlen und viele Bugs – valentin