2

tldr:1行にそれぞれ1から10列のスーパー列が多すぎますか?〜1500はどうですか?列の値はそれぞれ約6バイトです。

完全な質問

時系列データについては、さまざまなデータストアを調査しています。CassandraやHBaseなどの列指向データベースは非常に適しているように見えます。

要件は、(最小)1分間隔で送信される何百万もの一連のデータを保存することです。理想的には、ビジネスニーズがそれを要求する場合、1秒間隔をサポートできるでしょう(おそらくそうなるでしょう)。

このブログ投稿で提供され、 OpenTSDBで使用されているアドバイスは非常に理にかなっています。

基本的に、キーはその日の最初のタイムスタンプに連結されたシリーズIDであり、列はその日の測定ごとに作成されます。これは、1行あたり約86400列です。

ただし、データの不変性/バージョン管理は非常に重要です。ビジネスニーズは、データの完全な履歴を保持しながらシリーズ値を更新する機能を指示します。

値をバージョン管理するために別のディメンションを提供するためにCassandraのスーパー列を調べると、86400のスーパー列になります。各スーパー列には、値が最初に作成されたときに1つの列(おそらくTimeUUID)が含まれ、その後、各「更新」でさらに1つの列が追加されます。シリーズと値の限定されたサブセットに対して定期的に更新が行われます。理想的な条件下では、更新はありません。理想的には、これは、各スーパー列にロードする大量のデータがなく、ほとんどのアクセスが最新の値にのみ行われることを意味します。

質問に戻るには:

行ごとにその数(86k)のスーパー列を使用することを探しているパフォーマンスのヒットまたは問題はありますか?

4

1 に答える 1

2

控えめに100Kのスーパーカラムと1つのスーパーカラムあたり1Kを使用すると、1行あたり100MBになります。これは、Cassandraが処理できる範囲内です。

考慮すべきもう1つの要素は、行数です。「1つの大きな行」は、行がパーティション化の単位であるため、不適切なデータモデルです。ノードよりも多くの行がある限り、問題はありません。

于 2012-01-25T04:49:21.767 に答える