web-dev-qa-db-ja.com

BigTableデリバティブに大量の順序付けられた時系列データを保存する

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

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

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

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

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

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

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

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

ありがとう

38
Shahbaz

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

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

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

Cassandraは、キーの操作方法を知っている場合に非常に役立ちます。キーを介してSwift非常に迅速に実行できます。したがって、11:00から1:30 pmの間にMSFTを検索するには、次のように行にキーを設定する必要があります。

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

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

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

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

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

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

21
Gotys

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

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

13
Shane

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

http://opentsdb.net/

12
Lance Norskog

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

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

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

2
user1052080

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

1

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

http://www.timescale.com/

このブログは読む価値があります。その特別な場合にCassandra

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

0