私は時系列データを収集し、それをスナップデータストアに保存したいと考えています。何百万行ものデータを収集し、タイムスライス/範囲を問わずクエリを作成したいと考えています。ここで時系列表のPARTITION BYとは何ですか?
は私がやりたいの例クエリです:
のでselect avg(value)
from example_timeseries_table
where time >= :startDate and time < :endDate;
、私は、時間列にCOLUMN BY PARTITIONではなく、古典的なPRIMARY KEY列を持つようにしたいと考えています。私がCassandra DBに慣れ親しんでいる他のテクノロジーでは、パーティションキーの時間列を使用することで、パーティションに直接アクセスでき、多くの分散ノードではなく、単一のノードでタイムスライスのデータを取得できます。
実行するには、この表の 'time'列で分割する必要があると仮定します。
example_timeseries_table
------------------------
id int not nullable,
value varchar(128) not nullable,
time timestamp not nullable
PERSISTENT ASYNCHRONOUS
PARTITION BY COLUMN time
これは、効率的な、タイムスライスクエリのために分割する正しい列か、それとも私のようにも複数の列にする必要があります:としてそれらのすべての列でYEAR_NUM、month_num、day_num、hour_num列とPARTITIONよく、その後、単一のパーティションは、すべてのデータ、データの単一プロセッサプロセスを持っている場合は?:特定のパーティションのノードにクエリを集中する
select avg(value)
from example_table
where year_num = 2016
and month_num= 1
and day_num = 4
and hour_num = 11
and time >= :startDate and time < :endDate;