ClickHouseにおけるPostgreSQLクエリの書き換え
これはPostgreSQLからClickHouseへの移行に関するガイドの第4部です。この内容は入門的なもので、ユーザーがClickHouseのベストプラクティスに従った初期機能システムを展開する手助けをすることを目的としています。複雑なトピックは避けられており、完全に最適化されたスキーマには至りませんが、ユーザーが生産システムを構築し、学ぶための堅固な基盤を提供します。
以下はPostgreSQLとClickHouseを比較した例のクエリです。このリストは、ClickHouseの機能を利用してクエリを大幅に簡素化する方法を示すことを目的としています。これらのクエリは大抵の場合、ClickHouseでより速く実行されます。ここでの例は、PostgreSQLとClickHouseで同等のリソース(8コア、32GiB RAM)を持つフルなStack Overflowデータセット(2024年4月までのもの)を使用しています。
ここでのカウントは、Postgresのデータが外部キーの参照整合性を満たす行のみを含んでいるため、わずかに異なります。ClickHouseにはそのような制約はなく、例えば無名ユーザーも含む全データセットを持ちます。
ユーザー(質問が10件以上ある)の中でビュー数が最も多いユーザー:
最も視聴されるtags
:
集約関数
可能な限り、ユーザーはClickHouseの集約関数を活用すべきです。以下に、各年の最も視聴された質問を計算するためのargMax関数の使用を示します。
これは、同等のPostgresクエリよりも大幅に簡素化され(かつ速く)、速さも向上しています:
条件文と配列
条件文および配列関数は、クエリを大幅に簡素化します。以下のクエリは、2022年から2023年にかけて変化率が最も大きい(10,000件以上出現した)タグを計算します。以下のClickHouseクエリは条件文、配列関数、HAVINGおよびSELECT句内でのエイリアス再利用により簡潔になっていることに注意してください。
これで、PostgresからClickHouseに移行するユーザーのための基本ガイドは終了です。Postgresから移行するユーザーは、ClickHouse内のデータモデリングに関するガイドを読むことをお勧めします。より高度なClickHouseの機能について学ぶことができます。