Перейти к основному содержанию
Это Часть 2 руководства по миграции с PostgreSQL на ClickHouse. На практическом примере здесь показано, как эффективно выполнить миграцию с использованием подхода CDC (фиксации изменений данных) в реальном времени. Многие из рассмотренных концепций также применимы к ручному переносу больших объемов данных из PostgreSQL в ClickHouse.
Большинство SQL-запросов из PostgreSQL должны выполняться в ClickHouse без изменений и, вероятно, будут работать быстрее.

Дедупликация с использованием CDC (фиксация изменений данных)

При использовании репликации в реальном времени с CDC (фиксация изменений данных) имейте в виду, что обновления и удаления могут приводить к появлению дубликатов строк. Чтобы решить эту проблему, можно использовать методы на основе представлений и Refreshable Materialized Views. Обратитесь к этому руководству, чтобы узнать, как перенести приложение с PostgreSQL на ClickHouse с минимальными усилиями при миграции с использованием репликации в реальном времени с CDC (фиксация изменений данных).

Оптимизация запросов в ClickHouse

Хотя миграция возможна с минимальным переписыванием запросов, рекомендуется использовать возможности ClickHouse, чтобы значительно упростить запросы и еще больше повысить их производительность. Примеры ниже охватывают распространенные шаблоны запросов и показывают, как оптимизировать их с помощью ClickHouse. В них используется полный набор данных Stack Overflow (по апрель 2024 года включительно) на эквивалентных ресурсах в PostgreSQL и ClickHouse (8 ядер, 32 GiB оперативной памяти).
Для простоты в приведенных ниже запросах не используются методы дедупликации данных.
Приведенные здесь значения будут немного отличаться, поскольку данные в Postgres содержат только строки, удовлетворяющие ограничениям ссылочной целостности внешних ключей. В ClickHouse таких ограничений нет, поэтому он содержит полный набор данных, включая, например, анонимных пользователей.
Пользователи (с более чем 10 вопросами), набравшие больше всего просмотров:
У каких tags больше всего views:
Агрегатные функции По возможности используйте агрегатные функции ClickHouse. Ниже показано, как с помощью функции argMax определить самый просматриваемый вопрос за каждый год.
Это значительно проще (и быстрее), чем аналогичный запрос в Postgres:
Условные выражения и массивы Условные выражения и функции для работы с массивами существенно упрощают запросы. Следующий запрос находит теги с наибольшим процентным ростом с 2022 по 2023 год среди тех, что встречаются более 10 000 раз. Обратите внимание, насколько лаконичен этот запрос к ClickHouse благодаря условным выражениям, функциям для работы с массивами и возможности повторно использовать псевдонимы в секциях HAVING и SELECT.
Нажмите здесь, чтобы перейти к части 3
Последнее изменение 10 июня 2026 г.