2016-04-14 5 views
0

Ich habe 100 000 Quellen/Sensoren/Symbole. Von jedem lese ich täglich einen Wert.Datenbankpartitionierung zur Analyse von Zeitreihen erstellen

Ich lade eine Datenbanktabelle mit diesen täglichen Daten/Werten. Eine Zeile für jeden Wert UND Symbol, das sind 100 000 Zeilen pro Tag.

Query1:

Als ich täglich Daten über alle Symbole analysieren möchte ich die Datenbank auf Jahr, Monat, Woche, Tag partitionieren.

Query2:

Aber ich mag auch für jedes Symbol Trends/Statistiken über die Zeit analysieren, indem Daten bis zu 24 Monate zurück in der Zeit pro Symbol zu lesen.

Query2 ist entlang einer anderen Dimension (Zeitachse) und ich möchte nicht über mehrere für Abfrage1 optimierte Partitionen (y, m, w, d) abfragen.

Welche Art von Design schlagen Sie vor?

Antwort

0

100k Zeilen pro Tag ist nicht zu viel. Sie erstellen nur eine Partition für ein Jahr. Wenn Sie jedoch auch die Abfrageleistung optimieren möchten, indem Sie nur an einzelnen Partitionen arbeiten, nehmen wir an, dass Sie nach Monat partitionieren.

weiterhin angenommen, ein Cluster mit drei Knoten. Sie möchten wahrscheinlich die Tabelle mit 6 Shards erstellen, die insgesamt 6 * 12 Shards pro Jahr ergeben. wenn Sie ein Replikat konfiguriert haben - 6 * 12 * 2 Shards - das sieht gut aus.

Wenn Sie die Partition in der Where-Klausel angeben, wird diese Shards automatisch nur von Krate aktiviert. aber Sie haben immer noch die ganzen Daten sichtbar.

BTW: Hier ist ein praktischer Link zur Partitionierung nach Zeit: