39

私は、bigtable、hbase、cassandraなどのこれらの新しいデータストアが実際に何であるかを正確に把握しようとしています。

私は大量の株式市場データ、毎日数百ギガバイトを追加できる数十億行の価格/見積もりデータを処理します(ただし、これらのテキストファイルは少なくとも1桁圧縮されることがよくあります)。このデータは基本的に、少数の数値、2つまたは3つの短い文字列、およびタイムスタンプ(通常はミリ秒レベル)です。行ごとに一意の識別子を選択する必要がある場合は、行全体を選択する必要があります(交換により、同じミリ秒で同じシンボルに対して複数の値が生成される可能性があるため)。

このデータをbigtable(その派生物を含む)にマッピングする最も簡単な方法は、シンボル名と日付(非常に大きな時系列を返す可能性があり、100万を超えるデータポイントは前代未聞ではありません)によるものだと思います。説明を読むと、これらのシステムでは複数のキーを使用できるようです。また、10進数はキーの候補としては適切ではないと思います。

これらのシステムの一部(たとえば、Cassandra)は、範囲クエリを実行できると主張しています。たとえば、特定の日の午前11時から午後1時30分までのMSFTのすべての値を効率的にクエリできますか?

特定の日のすべてのシンボルを検索し、価格が$ 10〜 $ 10.25のすべてのシンボルを要求したい場合はどうなりますか(値を検索し、結果としてキーを返したい場合)?

2つの時系列を取得し、一方を他方から減算し、2つの時系列とその結果を返したい場合、自分のプログラムで彼のロジックを実行する必要がありますか?

関連する論文を読むと、これらのシステムは大規模な時系列システムにはあまり適していないことがわかります。しかし、グーグルマップのようなシステムがそれらに基づいているなら、時系列もうまくいくはずだと思います。たとえば、時間をx軸、価格をy軸、シンボルを名前付きの場所と考えてください。突然、bigtableが時系列の理想的なストアになるはずです(地球全体を保存、取得できる場合) 、ズームおよび注釈付きの株式市場データは些細なものである必要があります)。

専門家が私を正しい方向に向けたり、誤解を解いたりできますか。

ありがとう

4

6 に答える 6

21

私はまだ専門家ではありませんが、カサンドラと数日間遊んでいます。いくつか答えがあります。

  1. 大規模なハードウェアクラスターに$$$がある場合、データの量について心配する必要はありません。Cassandraのようなシステムとは関係ありません。

これらのシステムの一部(たとえば、Cassandra)は、範囲クエリを実行できると主張しています。たとえば、特定の日の午前11時から午後1時30分までのMSFTのすべての値を効率的にクエリできますか?

カサンドラは、キーの操作方法を知っている場合に非常に便利です。キーをすばやく処理できます。したがって、11:00から1:30 pmの間にMSFTを検索するには、次のように行にキーを設定する必要があります。

MSFT-timestamp、GOOG-timestamp、.. etc次に、Cassandraに、MSFT-nowで始まりMSFT-now+1hourで終わるすべてのキーを検索するように指示できます。

特定の日のすべてのシンボルを検索し、価格が$ 10〜 $ 10.25のすべてのシンボルを要求したい場合はどうなりますか(値を検索し、結果としてキーを返したい場合)?

私は専門家ではありませんが、これまでのところ、Cassandraは値で検索しないことに気づきました。したがって、上記を実行する場合は、この問題専用の別のテーブルを作成し、ケースに合うようにスキーマを設計する必要があります。しかし、それは私が上で説明したものと大差ありません。キーと列に名前を付けることがすべてです。カサンドラはそれらを非常に素早く見つけることができます!

2つの時系列を取得し、一方を他方から減算し、2つの時系列とその結果を返したい場合、自分のプログラムで彼のロジックを実行する必要がありますか?

正解です。すべてのロジックはプログラム内で実行されます。これはMySQLではありません。これは単なるストレージエンジンです。(しかし、次のバージョンはこれらの種類のものを提供すると確信しています)

私はこれの初心者であることを忘れないでください。間違っている場合は、遠慮なく訂正してください。

于 2009-11-03T22:08:28.493 に答える
13

大規模な時系列データベースを扱っている場合、標準は次のとおりです。

これらは安価ではありませんが、データを非常に効率的に処理できます。

于 2009-11-03T22:43:12.013 に答える
12

私が尊敬する人がOpenTimeSeriesDatabaseを推薦しました。特に、そのスキーマは彼が今まで見た中で最も素晴らしいものでした。

http://opentsdb.net/

于 2011-03-25T02:23:11.240 に答える
2

「同じ山の前に立っています。cassandraに関する私の主な問題は、たとえばイテレータの形式で、結果セットのストリームを取得できないことです。

私はすでにドキュメントとネットを上下に見ていますが、何もありません。

何十億もの行がこれを不可能にするので、すべてのキーをフェッチしてから行を取得することはできません。

于 2012-01-30T16:46:46.763 に答える
1

DataStax Javaドライバーは自動ページングを可能にするため、イテレーターのように結果をストリーミングし、すべてが組み込まれています。ちなみに、これはCassandra2.0.1にあります-http: //www.datastax.com/dev/blog/client -side-improvements-in-cassandra-2-0

于 2013-12-18T12:09:36.807 に答える
0

2018年にこれを完全に読むために、TimescaleDBと呼ばれる時系列データ専用の特別なデータベースがあります。

http://www.timescale.com/

このブログは読む価値があります。その特殊なケースでCassandraのようなソリューションよりも優れている理由と、リレーショナルPostgreSQLデータベース上に構築することを決定した理由を説明しています。

https://blog.timescale.com/time-series-data-why-and-how-to-use-a-relational-database-instead-of-nosql-d0cd6975e87c

于 2018-03-01T10:34:37.403 に答える