2012-04-14 14 views
12

私はデータのような時系列データを扱うサイドプロジェクトを計画しています。これらの新しいNoSQL DBの1つを試してみることをお勧めしたいと思います。疎な時系列データのようなNoSQL DBは何ですか?

symbolsのセットについては、(time,value)のタプル(時間の経過とともに増加する)のリストがあります。 すべてsymbolsが更新されるわけではありません。 symbolsは更新されても、更新されないかもしれないし、まったく新しいsymbolsが追加されるかもしれない。

データベースは、したがって、許可する必要があります。

  • は、最初の1要素(タプル)のリストにシンボルを追加します。例えば。 A:[(2012-04-14 10:23、50)]
  • シンボルを新しいタプルで更新します。 (タプルをそのシンボルのリストに追加する)。
  • 特定のシンボルのデータを読み取ります。 (理想的には、データが返されるべき時間枠を指定させることさえできます)

作成操作と更新操作はおそらくアトミックでなければなりません。一度に複数のシンボルを読むことが可能なら、それは興味深いでしょう。

パフォーマンスは重要ではありません。更新/作成は数時間に1回程度発生します。

+0

[スタックオーバーフローは推奨エンジンではありません](http://meta.stackexchange.com/a/128562/172496) –

答えて

17

実際に大量のデータを持っていない場合は、文字通りすべての主要なNoSQLデータベースがその要件をサポートすると思います。

しかし、私は最近、時系列データ用のNoSQLデータベースを設計して使用しなければならなかったので、そのデザインにいくつかのインプットを与えることができます。

私たちの選択したデータベースがCassandraだった、と次のように私たちのデザインだった:

  • すべての「シンボルの
  • のための単一の鍵空間は、各シンボルは、各タイムエントリは新しい列だった新しい行
  • ましたその関連する行の
  • 各値は、時間エントリの値の一部であった(単一の値以上であることができる)

これはあなたが求めたすべてのものを達成することができます。特に、単一シンボルのデータを読み込み、必要に応じて範囲を使用する(列範囲呼び出し)ことができます。パフォーマンスは重大ではないと言われましたが、それは私たちのためのものでした。これは、単一のシンボルのすべてのデータが定義によってソートされ(列名ソート)、常に同じノードに格納されます)。最後に、この設計は、動的列を持つ他のNoSQLデータベースにうまく変換されます。(必要に応じて頂いたコレクション)

これにさらに

は、ここでいくつかのMongoDBを使用しての情報が時系列店のためです:MongoDB as a Time Series Database

最後に、ここでは時系列のためのNoSQL対SQLの議論があります:https://dba.stackexchange.com/questions/7634/timeseries-sql-or-nosql

私はその議論に以下を追加することができます。NoSQLのため

  • 学習曲線が高くなり、あなたは「ソフトコスト」の面で自由のための柔軟性と機能性を得ることはありません。誰がこのデータベースを操作上サポートしていますか?
  • この機能が将来的に大きくなる(各時間エントリに追加するフィールドが増えたり、シンボルの数やシンボルの時系列のサイズの点ではるかに多くの容量が必要になる)場合は、NoSQLを使用してください。柔軟性のメリットは巨大で、「シンボルあたり」と「シンボル数」の両方で(上記の設計で)得られるスケーラビリティはほとんど無制限です(私はほとんど無制限と言っています - 1行あたりの最大列数は、キー空間あたりの行数は無制限です)。
4

hbaseを使用するオープンソース時系列データベースopentsdb.orgを見てください。彼らはTSをどのように保存するかについて精通しています。 http://opentsdb.net/misc/opentsdb-hbasecon.pdf

+0

+1のopentsdb:これは、巨大なデータを格納するのに最適なOSSソリューションです時系列(forexティックデータのような)。 Hbaseをセットアップするのは面倒なことかもしれませんが、OpenTsdbのpythonコレクタ(OpenTsdbのソートのトランスアクタ)では、ストリーミングデータをすぐに保存することが非常に簡単です。 –

関連する問題