Ich möchte etwas zu speichern und Zeitreihendaten, die aus einer Vielzahl von Quellen in unterschiedlichen Zeitintervallen kommt zu dienen. Dies umfasst sowohl Rohdaten als auch berechnete Daten. Nehmen wir zum Beispiel an, ich möchte alle 30 Sekunden eine Temperaturmessung protokollieren und eine Temperaturprognose, die ich alle 5 Minuten separat berechne.Design-Ideen für die Bereitstellung von Hochfrequenz-Daten
Ich muss in der Lage sein, die Daten schnell abzufragen, und ich habe festgestellt, dass eine relationale Datenbank überhaupt nicht gut funktioniert, sobald sie zu groß wird. Ich habe also überlegt, eine Art In-Memory-Sache zu erstellen, aber ich bin mir sicher, dass es irgendwann zum Absturz kommen wird. Daher muss ich die Daten auf der Festplatte speichern. Ich habe mich also gefragt, warum nicht einfach die ganze Sache auf Festplatten basieren, mit einer Art Caching für häufig angeforderte Daten?
aber ich bin ein bisschen ratlos, wie man das macht. Ich stelle mir vor, dass Datenquellen in regelmäßigen Abständen Aktualisierungsdatensätze an den Server übermitteln, indem sie eine Art String-Schlüssel/-Symbol verwenden, um die Daten zu identifizieren. der Server bekommt die Daten und was dann? schreibe es in eine Art Binärdatei? Könnte ich in eine Datei pro Symbol schreiben? (nehmen Sie über 100k Symbole an)
Ich denke, was ich will, ist googles BigTable ähnlich, aber in einem viel kleineren Maßstab. Im Grunde eine verteilte Hash-Tabelle, die einen String-Schlüssel einer Zeitreihe zugehöriger Daten zuordnet, mit sehr schnellem Abruf und der Möglichkeit, eine Bereichsabfrage nach Zeit abzurufen. und zusätzliche Punkte für mehrdimensionale Daten.
Oh, und dies würde (idealerweise) von einem C#/Windows-Projekt - es muss nicht sein, dass hohe Leistung.
Datenbankpartitionierung? – CookieOfFortune