Переписывание запросов PostgreSQL
Это Часть 2 руководства по миграции с PostgreSQL на ClickHouse. Используя практический пример, оно демонстрирует, как эффективно провести миграцию с подходом репликации в реальном времени (CDC). Многие из рассматриваемых концепций также применимы к ручным пакетным передачам данных из PostgreSQL в ClickHouse.
Большинство SQL-запросов из вашей установки PostgreSQL должны выполняться в ClickHouse без изменения и, вероятно, будут исполняться быстрее.
Дедупликация с использованием CDC
При использовании репликации в реальном времени с CDC имейте в виду, что обновления и удаления могут привести к дублированию строк. Для управления этим вы можете использовать методы, связанные с представлениями и обновляемыми материализованными представлениями.
Обратитесь к этому руководству, чтобы узнать, как мигрировать ваше приложение с PostgreSQL на ClickHouse с минимальными затруднениями, используя репликацию в реальном времени с CDC.
Оптимизация запросов в ClickHouse
Хотя миграция с минимальным переписыванием запросов возможна, рекомендуется использовать функции ClickHouse, чтобы значительно упростить запросы и улучшить производительность запросов.
Примеры, приведенные здесь, охватывают общие шаблоны запросов и показывают, как оптимизировать их с помощью ClickHouse. Они используют полный набор данных Stack Overflow (до апреля 2024 года) на эквивалентных ресурсах в PostgreSQL и ClickHouse (8 ядер, 32 ГБ ОЗУ).
Для простоты нижеизложенные запросы не учитывают использование методов для дедупликации данных.
Итоги могут немного отличаться, так как данные Postgres содержат только строки, которые удовлетворяют ссылочной целостности внешних ключей. ClickHouse не накладывает таких ограничений и, следовательно, содержит полный набор данных, включая анонимных пользователей.
Пользователи (с более чем 10 вопросами), которые получили больше всего просмотров:
Какие tags
получают больше всего views
:
Агрегатные функции
По возможности пользователи должны использовать агрегатные функции ClickHouse. Ниже мы показываем использование функции argMax для вычисления самого просматриваемого вопроса каждого года.
Это значительно проще (и быстрее), чем эквивалентный запрос Postgres:
Условия и массивы
Функции условий и массивов значительно упрощают запросы. Следующий запрос вычисляет теги (с более чем 10000 вхождениями) с наибольшим процентным увеличением с 2022 по 2023 год. Обратите внимание, как следующий запрос ClickHouse краток благодаря условиям, массивным функциям и возможности повторного использования псевдонимов в группах HAVING и SELECT.