時系列データを収集し、snappydata ストアに保存したいと考えています。何百万行ものデータを収集し、タイムスライス/範囲全体でクエリを実行したいと考えています。
これが私がやりたいクエリの例です:
select avg(value)
from example_timeseries_table
where time >= :startDate and time < :endDate;
そこで、従来の PRIMARY KEY 列ではなく、TIME 列に PARTITION BY COLUMN を配置したいと考えています。私がよく知っている Cassandra DB などの他のテクノロジでは、パーティション キーで時間列を使用すると、パーティションが直接示され、多くの分散ノードではなく、単一のノードでタイムスライスのデータを取得できます。
パフォーマンスを向上させるには、このテーブルの「時間」列でパーティション分割する必要があると思います。
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 BY COLUMN のような列をさらに作成する必要がありますか?次に、次のようなクエリを実行します。これにより、クエリを特定のパーティション ノードに集中させることができますか?:
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;