複数のプロジェクトでは、単純な測定値を保存、集計、評価する必要があります。通常、1つの行はタイムスタンプ、値、および値の属性で構成されます。アプリケーションによっては、1秒あたり1000個以上の値を保存したい場合があります。値の有効期間は1年程度に制限されているため、これらの値は挿入するだけでなく、同じレートで削除する必要があります(異なる集計ステップでは、年間を通じて1000/sを保存しません)。
これまで、さまざまなソリューションを開発してきました。 1つはFirebirdに基づいており、もう1つはOracleに基づいています。しかし、これらのどれも非常に満足のいくソリューションではありません。
両方のRDBMSソリューションは、目的のデータフローを処理できません。それに加えて、値を提供するアプリケーション(デバイスドライバーなど)をデータベースに簡単に接続することはできません。挿入ステートメントは扱いにくいものです。そして最後に、データへのSQLインターフェースを持つことが強く望まれていますが、一般的な評価はSQLで定式化するのが難しく、実行が遅くなります。例えば。先月のすべての測定について、15分ごとのタイムスタンプで最大値を見つけます。
自作のソリューションは挿入率を処理でき、それを行うためのクライアントフレンドリーなAPIを備えていますが、クエリ言語のようなものはなく、標準インターフェースを介して他のアプリケーションで使用することはできません。レポート用。
私の夢の中で最高の解決策は、次のようなデータベースシステムです。
これらの要件に近いデータベースを知っていますか、それとも別の方法で問題に取り組みますか?
他のほとんどの答えは、SQLベースのデータベースに言及しているようです。 NoSQLベースのデータベースは、この種の点ではるかに優れています。
いくつかのオープンソース時系列データベース:
クラウドベース:
influxdb ::外部依存関係のないオープンソースの分散時系列データベース。
IBMを考慮してください Informix Dynamic Server with TimeSeries DataBlade。
ただし、これは作業中の極端なデータレートです。 (CERNの亜原子物理学には至っていませんが、その一般的な方向に向かっています。)
公正な開示:私はIBMのInformix DBMSで働いていますが、TimeSeries DataBlade自体ではありません。
SQL Server StreamInsight
時系列データにHDF5を試すことができます。このようなアプリケーションには非常に高速です。
ジョナサンレフラーが言ったように、Informix Timeseries機能を試す必要があります。 Informixのすべてのエディションに追加料金なしで含まれています。サポートするTimeSeries関数をご覧ください。
SQL関数または仮想ビューインターフェイスを介してデータにアクセスできます。ビューに挿入することもできます。