質問

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

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

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

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

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

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

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

専門家が正しい方向を教えてくれたり、誤解を解いたりできますか。

ありがとう

役に立ちましたか?

解決

私はまだ専門家ではありませんが、数日Cassandraで遊んでいますが、いくつかの答えがあります:

  1. 大規模なハードウェアクラスターに$$$があれば、Cassandraなどのシステムとは関係ありません。データ量を気にしないでください。
  

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

Cassandraは、キーの操作方法を知っている場合に非常に便利です。それは非常に迅速にキーをすばやく通過できます。したがって、午後11:00から1:30の間にMSFTを検索するには、次のように行をキー入力する必要があります。

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

  

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

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

  

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

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

覚えておいてください、私はこの初心者です。間違っている場合は、気軽に修正してください。

他のヒント

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

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

尊敬する人は、Open Time Series Databaseを推奨しました。特に、スキーマは彼が今まで見た中で最も素晴らしかった。

http://opentsdb.net/

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

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

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

DataStax Javaドライバーは自動ページングを許可し、イテレーターのように結果をストリーミングし、すべてが組み込まれています。これは、Cassandra 2.0.1にあります- http://www.datastax.com/dev/blog/client-side-improvements-in-cassandra -2-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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top