1

時系列データを収集し、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;
4

1 に答える 1