時系列を保存するための Cassandra データ モデルに取り組んでいます (私は Cassandra の初心者です)。日中の在庫データとセンサー データの 2 つのアプリケーションがあります。
ストックデータは時間分解能1分で保存されます。7 つのデータフィールドが 1 つの時間枠を構築します: シンボル、日時、始値、高値、安値、終値、出来高
主に Symbol と Date でデータをクエリします。たとえば、2013 年 1 月 1 日から 2013 年 1 月 31 日までの AAPL のすべてのデータを日時順に並べてください。Cassandra クエリの推奨事項は、列全体をクエリすることです。したがって、始値、高値、安値、終値、出来高のキーを持つ 5 つの行を作成できます。そして、シンボルと分ごとに独自の列があります。例: "AAPL:2013-01-04T130400Z"。これにより、5 行 n*NT 列のテーブルが作成されます。ここで、n = シンボル数、nT = 分数です。ほとんどの場合、日付範囲を照会します。つまり、1 日のすべての分。したがって、データを再配置して、「AAPL:2013-01-04」という名前の列と行 (OpenT130400Z、HighT130400Z、LowT130400Z、CloseT130400Z、VolumeT130400Z) を持つことができます。これにより、n*nD 列 (n: シンボル数、nD: 日数) と 5*nM 行 (nM: 1 日あたりの分/エントリ数) を持つテーブルが作成されます。
要約すると、1 つのシンボルの 1 日分の情報を保持する列があります。
ここでcassandraで時系列データを処理する方法の説明を見つけましたhttp://www.datastax.com/dev/blog/advanced-time-series-with-cassandra しかし、彼らが列名または行キーとしての時間 (1332960000)!? 時間を行キーとして使用し、小さなタイムステップを列として使用していることを理解しました。したがって、列番号は固定されます。しかし、キーに対して範囲クエリを実行する必要があるため、読み取りには不利です。私は正しいですか?
2 番目の質問: 1 分間のストック データよりもはるかに細かいセンサー データがある場合 (たとえば、マイクロ秒の分解能で時間ステップを保存する必要があるとします)、これをどのように処理しますか? センサー チャネルと時間の複合を保存するために列を使用し、過去 1 時間からのマイクロ秒の行を使用すると、3,600,000,000 行と n*nH 列 (n: センサーの数、nH: 時間数) になります。許可されている 20 億列の数よりも多い 3,60 億ポイントがあるため、最後の 1 時間以降のマイクロ秒を列に使用できませんでした。
私はそれを手に入れましたか?この問題についてどう思いますか。それを解決する方法は?
ありがとうございました!
ベスト、マルテ