Meine Anwendung speichert Performance-Zeitreihendaten in CrateDB, und um das Setup richtig zu machen, habe ich ein paar Fragen, da es rund 72M Datensätze pro Tag sein wird und es sollte richtig skalieren :). Mein Ziel ist es, die resultierenden Daten mit Grafana sichtbar zu machen und zur Zeit habe ich die folgende Struktur im Sinn:Wie speichern Sie die Leistungsdaten in CrateDB am besten?
CREATE TABLE metrics (
ts TIMESTAMP,
hostname STRING,
servicename STRING,
perfdata OBJECT(DYNAMIC)
)
// for example
{
"hostname": "localhost",
"servicename": "ping",
"timestamp": 1483699527,
"perfdata": {
"rta": {
"current": 0.5,
"unit": "ms",
"warn": 100,
"critical": 200
},
"pl": {
"current": 0,
"unit": "%",
"warn": 10,
"crit": 20
}
}
}
Die wichtigen Bits sind die Host-/Servicename, der Name der Metrik und Werte, und der Zeitstempel. Welches wäre auch das alternative Schema:
CREATE TABLE metrics (
ts TIMESTAMP,
hostname STRING,
servicename STRING,
metric OBJECT(DYNAMIC) AS (
unit STRING,
name STRING,
value DOUBLE,
)
)
Also welches wäre der bevorzugte Weg, um die Daten zu speichern? Muss ich auch partitionieren? Meine Aggregationen zeigen normalerweise die letzten 24h und selten den letzten Monat ...
Vielen Dank!