Перейти к основному содержимому
Перейти к основному содержимому

Переписывание запросов PostgreSQL в ClickHouse

Это Часть 4 руководства по миграции с PostgreSQL на ClickHouse. Это содержание можно считать вводным, с целью помочь пользователям развернуть первоначальную функциональную систему, которая соответствует лучшим практикам ClickHouse. Оно избегает сложных тем и не приведет к полностью оптимизированной схеме; скорее, оно предоставляет прочную основу для пользователей, чтобы построить производственную систему и на основе этого углубить свои знания.

Ниже приведены примеры запросов, сравнивающие PostgreSQL и ClickHouse. Этот список направлен на то, чтобы продемонстрировать, как использовать возможности ClickHouse для значительного упрощения запросов. Эти запросы, в большинстве случаев, также будут выполняться быстрее в ClickHouse. Примеры используют полный набор данных Stack Overflow (до апреля 2024 года) на эквивалентных ресурсах в PostgreSQL и ClickHouse (8 ядер, 32GiB оперативной памяти).

Количества здесь могут чуть отличаться, так как данные Postgres содержат только строки, которые удовлетворяют ссылочной целостности внешних ключей. ClickHouse не накладывает таких ограничений и, таким образом, имеет полный набор данных, например, включая анонимных пользователей.

Пользователи (с более чем 10 вопросами), которые получают наибольшее количество просмотров:

Какие tags получают наибольшее количество views:

Агрегатные функции

При возможности пользователи должны использовать агрегатные функции ClickHouse. Ниже мы показываем использование функции argMax для вычисления наиболее просматриваемого вопроса каждого года.

Это значительно проще (и быстрее), чем эквивалентный запрос Postgres:

Условные выражения и массивы

Условные и массивные функции значительно упрощают запросы. Следующий запрос вычисляет теги (с более чем 10000 вхождений) с наибольшим процентным увеличением с 2022 по 2023 год. Обратите внимание, как следующий запрос ClickHouse лаконичен благодаря условным выражениям, массивным функциям и возможности повторного использования псевдонимов в предложениях HAVING и SELECT.

Это заключает наше базовое руководство для пользователей, мигрирующих с Postgres на ClickHouse. Мы рекомендуем пользователям, мигрирующим с Postgres, прочитать руководство по моделированию данных в ClickHouse, чтобы узнать больше о продвинутых функциях ClickHouse.