ClickHouse спонсировал этот пост. Insight Partners является инвестором ClickHouse и TNS.
Postgres — распространенный выбор для загрузки приложения, поскольку он хорошо известен, гибок и надежен. Его гибкость означает, что он может какое-то время справляться с большинством задач, которые вы ему ставите. По мере масштабирования приложения Postgres часто оказывается на пределе своих возможностей из-за рабочих нагрузок, для которых он не был создан.
Точка, в которой приложение достигает этих пределов, не изменилась, но время, необходимое для достижения этой точки, значительно сократилось благодаря ИИ.
Одним из способов решения этой проблемы является объединение Postgres с ClickHouse. В этой архитектуре Postgres продолжает обслуживать транзакционные рабочие нагрузки, а ClickHouse занимается аналитикой. Обе базы данных имеют открытый исходный код, и сложилась экосистема, которая сближает их.
Масштабирование за пределами PostgreSQL
В эпоху искусственного интеллекта рост, который раньше длился годами, теперь происходит за месяцы. Разработчики гораздо быстрее достигают пределов возможностей Postgres, поскольку рабочие нагрузки, управляемые искусственным интеллектом, ускоряют разработку продуктов, создание данных и удовлетворение аналитических потребностей.
Эта тенденция не ограничивается внутренними информационными панелями или оффлайн-отчетностью. Чаще всего это затрагивает пользовательские приложения. Панели мониторинга в реальном времени, системы рекомендаций и поиск по большим наборам данных зависят от быстрых аналитических запросов. Как только эти функции станут частью пользовательского опыта, архитектура должна поддерживать доступ к большим объемам данных с малой задержкой, и одного Postgres недостаточно.
Как Postgres + ClickHouse работают вместе
Создание приложения, использующего и Postgres, и ClickHouse, обычно сопряжено с двумя основными проблемами. Первый — это интеграция данных, то есть как переместить нужные данные в нужную базу данных. Второй — интеграция приложений, то есть как гарантировать, что приложение знает, к какой базе данных обращаться для каждой операции.
Интеграция данных
Существует два распространенных шаблона интеграции ClickHouse с PostgreSQL.
Разделенная или двойная запись: приложения записывают данные непосредственно в PostgreSQL и ClickHouse в зависимости от конкретного варианта использования. Шаблон разделенной записи записывает данные только в ту базу данных, которая в них нуждается, тогда как шаблон двойной записи отправляет все данные в обе системы одновременно. Этот подход хорошо работает, когда есть четкое разграничение того, для чего используются данные. Например, маловероятно, что события телеметрии или отслеживания пользователей необходимо отправлять в Postgres, поскольку они, скорее всего, используются только для анализа. Поддержка этого шаблона означает обновление приложения для отправки данных в нужную базу данных.
Сбор измененных данных (CDC): Все записи происходят в PostgreSQL, который остается источником истины. Процесс CDC передает вставки, обновления и удаления в ClickHouse, поэтому аналитические запросы всегда отражают последнее состояние, не создавая дополнительной нагрузки на транзакционную базу данных. Этот шаблон подходит для случаев использования операционной аналитики, когда согласованность важна, но аналитическая производительность остается приоритетом. Это позволяет командам поддерживать гарантии транзакций в PostgreSQL и при этом независимо масштабировать аналитические запросы в ClickHouse.
Интеграция приложений
Цель интеграции Postgres и ClickHouse — использовать каждую базу данных для тех рабочих нагрузок, с которыми она наиболее сильна. Это значит, что часть запросов останется в Postgres, а часть перенесётся в ClickHouse.
Многие приложения используют реляционные преобразователи объектов (ORM) с Postgres, но в аналитических базах данных это встречается реже. Существует несколько проектов с открытым исходным кодом, таких как MooseStack, которые могут обеспечить для ClickHouse возможности, подобные ORM. Чаще всего для интеграции используются клиенты ClickHouse на родном языке.
Интеграция начнется с определения запросов, которые будут перемещены, например запросов, выполняющих большие агрегатные запросы. Маршруты API для этих запросов необходимо обновить, чтобы отправлять SQL в ClickHouse. Можно использовать шаблон обратной совместимости, который позволяет переключать эти маршруты в Postgres или ClickHouse и обратно во время тестирования. Этот шаблон используется clickhouse.build, агентным интерфейсом командной строки, который может автоматически переносить базы кода TypeScript для использования Postgres и ClickHouse для прототипирования.
Альтернативным подходом может быть использование оболочки внешних данных (FDW) внутри Postgres, которая позволяет отправлять запросы в Postgres как есть и прозрачно передавать их в ClickHouse. Это уменьшает объем работы, необходимой для совместного использования Postgres и ClickHouse, но может привести к потере некоторого контроля над интеграцией.
Экосистема с открытым исходным кодом
Экосистема Postgres и ClickHouse превратилась в хорошо зарекомендовавший себя стек. Многие команды теперь по умолчанию объединяют две базы данных, а набор зрелых коммерческих инструментов с открытым исходным кодом упрощает работу этой архитектуры в промышленном масштабе. Цель этих инструментов узкая и целенаправленная: надежная репликация Postgres, быстрая загрузка в ClickHouse и плавная интеграция с существующими рабочими процессами Postgres.
ПирБД
PeerDB — это проект с открытым исходным кодом, который обеспечивает высокопроизводительный CDC PostgreSQL и надежную репликацию в ClickHouse. Он поддерживает большие потоки обновлений, обрабатывает изменения схемы и позволяет избежать нагрузки на транзакционную базу данных. PeerDB также поддерживает управляемые сервисы, такие как ClickPipes для ClickHouse Cloud.
Расширяемость PostgreSQL и FDW
Модель расширения PostgreSQL помогает командам переносить аналитические рабочие нагрузки на ClickHouse, не меняя код приложения. FDW делают это возможным, предоставляя внешние системы как обычные таблицы PostgreSQL. ClickHouse FDW от Supabase, clickhouse_fdw с открытым исходным кодом и подобные расширения позволяют приложениям продолжать выдавать знакомый SQL-код через Postgres, в то время как тяжелые аналитические запросы выполняются в ClickHouse. Это сохраняет уровень приложений нетронутым и обеспечивает плавный переход аналитики с Postgres по мере роста рабочих нагрузок.
ORM и инструменты разработчика
Такие проекты, как MooseStack, показывают, что инструменты для разработчиков идут в ногу со временем. Они упрощают использование ClickHouse в средах, где ORM или шаблоны разработки на основе схем являются стандартными.
В целом экосистема Postgres и ClickHouse — это не просто набор инструментов. Это целенаправленный, хорошо принятый стек, предназначенный для команд, которые переросли одну базу данных онлайн-обработки транзакций (OLTP) и нуждаются в быстром аналитическом механизме, не теряя при этом знакомый рабочий процесс разработки Postgres.
Будущее
Сегодня многие приложения начинаются с Postgres, а затем после появления уязвимостей переходят на ClickHouse. Поскольку эти сроки сокращаются, принятие этой архитектуры имеет больше смысла с самого начала жизненного цикла продукта. Разработчики должны иметь возможность начать с Postgres + ClickHouse «из коробки» с минимальным влиянием на скорость разработки продукта.
Управляемые сервисы, размещенная репликация и более глубокая интеграция инструментов уже движутся в этом направлении. Цель — обеспечить бесперебойную работу, при которой транзакционные и аналитические системы по умолчанию работают вместе.
Основной принцип остается неизменным: Postgres и ClickHouse не являются конкурирующими технологиями. Они дополняют друг друга и вместе образуют основу современной архитектуры данных с открытым исходным кодом, которая является гибкой, прозрачной и готовой к использованию.
ClickHouse — это самая быстрая аналитическая база данных с открытым исходным кодом, созданная для скорости в масштабе. ClickHouse используется для хранения данных, анализа в реальном времени, наблюдения и обеспечения работы агентного искусственного интеллекта, где важны производительность и стоимость. Узнайте больше Последние новости от ClickHouse ТЕНДЕНЦИОННЫЕ ИСТОРИИ YOUTUBE.COM/THENEWSTACK Технологии развиваются быстро, не пропустите ни одной серии. Подпишитесь на наш канал YouTube, чтобы смотреть все наши подкасты, интервью, демонстрации и многое другое. ПОДПИСАТЬСЯ Группа, созданная в Sketch. Лайонел Палацин — инженер по маркетингу продуктов в ClickHouse, где он создает общедоступные демоверсии, чтобы показать пользователям продукт в действии, и пишет о нем статьи в блогах. До этого он несколько лет проработал в Elastic, работая с клиентами и писал… Подробнее от Лайонела Палацина.