В этом документе приводится краткое введение в миграцию данных из Snowflake в ClickHouse.Snowflake — это облачное хранилище данных, в первую очередь ориентированное на перенос устаревших рабочих нагрузок хранилищ данных из собственной инфраструктуры в облако. Оно хорошо оптимизировано для выполнения длительных отчетных запросов в крупном масштабе. По мере переноса наборов данных в облако владельцы данных начинают задумываться, как еще можно извлечь из них пользу, в том числе использовать эти наборы данных для приложений, работающих в реальном времени, во внутренних и внешних сценариях. Когда это происходит, они часто понимают, что им нужна база данных, оптимизированная для Real-time аналитики, такая как ClickHouse.
Сравнение
Сходства
Различия
- Вычислительные ресурсы в Snowflake предоставляются через концепцию хранилищ. Они состоят из некоторого числа узлов фиксированного размера. Хотя Snowflake не публикует точную архитектуру своих хранилищ, обычно считается, что каждый узел включает 8 vCPU, 16 GiB и 200 GB локального хранилища (для кэша). Число узлов зависит от условного размера: например, x-small имеет один узел, small — 2, medium — 4, large — 8 и т. д. Эти хранилища не привязаны к данным и могут использоваться для выполнения запросов к любой базе данных, размещённой в Объектном хранилище. Когда хранилище простаивает и не получает запросной нагрузки, оно приостанавливается и возобновляет работу при поступлении запроса. Хотя расходы на хранение всегда учитываются в тарификации, за хранилища взимается плата только во время их активности.
- ClickHouse Cloud использует похожий подход с узлами и локальным кэшем. Вместо условных размеров пользователи развёртывают сервис с общим объёмом вычислительных ресурсов и доступной оперативной памяти. Затем он прозрачно автоматически масштабируется (в заданных пределах) в зависимости от нагрузки запросов — либо вертикально, увеличивая (или уменьшая) ресурсы каждого узла, либо горизонтально, увеличивая или уменьшая общее число узлов. Узлы ClickHouse Cloud имеют соотношение CPU к памяти 1:1, в отличие от Snowflake. Хотя возможна и более слабая связность, сервисы привязаны к данным, в отличие от хранилищ Snowflake. Узлы также приостанавливаются в состоянии простоя и возобновляют работу при поступлении запросов. При необходимости вы также можете вручную изменять размер сервисов.
- Кэш запросов в ClickHouse Cloud привязан к конкретному узлу, в отличие от Snowflake, где он реализован на уровне сервиса независимо от хранилища. Согласно бенчмаркам, кэш узлов ClickHouse Cloud превосходит кэш Snowflake.
- Snowflake и ClickHouse Cloud по-разному подходят к масштабированию для увеличения параллелизма запросов. Snowflake решает эту задачу с помощью возможности, известной как multi-cluster warehouses. Эта возможность позволяет добавлять кластеры в хранилище. Хотя это не даёт снижения задержки выполнения запросов, это обеспечивает дополнительный параллелизм и позволяет увеличить число одновременно выполняемых запросов. ClickHouse достигает этого, добавляя сервису больше памяти и CPU за счёт вертикального или горизонтального масштабирования. В этом блоге мы не рассматриваем возможности этих сервисов по масштабированию до более высокого параллелизма, а сосредотачиваемся вместо этого на задержке, но признаём, что такую работу следует выполнить для полноценного сравнения. Тем не менее, мы ожидаем, что ClickHouse покажет себя хорошо в любом тесте на параллелизм, тогда как Snowflake явно ограничивает число одновременных запросов, разрешённых для хранилища по умолчанию до 8. Для сравнения, ClickHouse Cloud позволяет выполнять до 1000 запросов на узел.
- Возможность Snowflake менять объём вычислительных ресурсов для набора данных в сочетании с быстрым возобновлением работы хранилищ делает её отличным решением для ad hoc запросов. Для сценариев хранилищ данных и озёр данных это даёт преимущество перед другими системами.
Real-time аналитика
- Задержка запросов: У Snowflake задержка запросов выше даже при использовании кластеризации таблиц для оптимизации производительности. В наших тестах Snowflake требуется более чем вдвое больше вычислительных ресурсов, чтобы достичь производительности, сопоставимой с ClickHouse, на запросах, где применяется фильтр, входящий в ключ кластеризации Snowflake или primary key ClickHouse. Хотя persistent кэш запросов Snowflake частично компенсирует эти проблемы с задержкой, он неэффективен в случаях, когда критерии фильтра более разнообразны. Эффективность этого кэша запросов также может дополнительно снижаться из-за изменений в исходных данных, поскольку записи кэша инвалидируются при изменении таблицы. Хотя в бенчмарке для нашего приложения это не так, в реальном развертывании потребовалась бы вставка новых, более свежих данных. Обратите внимание, что кэш запросов ClickHouse привязан к конкретному узлу и не является транзакционно согласованным, что лучше подходит для Real-time аналитики. Пользователи также получают детальный контроль над его использованием: можно управлять им для каждого запроса отдельно, задавать его точный размер, определять, кэшируется ли запрос (с ограничениями по длительности или минимальному числу выполнений), а также указывать, должен ли он использоваться только пассивно.
- Более низкая стоимость: Хранилища Snowflake можно настроить на приостановку после периода отсутствия активности запросов. После приостановки плата не взимается. На практике этот порог неактивности можно снизить только до 60 с. Хранилища автоматически возобновляют работу в течение нескольких секунд после получения запроса. Поскольку Snowflake взимает плату за ресурсы только тогда, когда хранилище используется, такое поведение подходит для рабочих нагрузок, которые часто простаивают, например для ad-hoc запросов. Однако многие рабочие нагрузки Real-time аналитики требуют непрерывной ингестии данных в реальном времени и частого выполнения запросов, для которых режим простоя не дает преимуществ (например, клиентские панели мониторинга). Это означает, что хранилища часто должны оставаться полностью активными, а значит, за них будет начисляться плата. Это сводит на нет экономическую выгоду режима простоя, а также любое преимущество в производительности, которое может быть связано со способностью Snowflake быстрее альтернатив возвращаться в рабочее состояние. Это требование постоянного активного состояния в сочетании с более низкой посекундной стоимостью активного состояния в ClickHouse Cloud приводит к тому, что ClickHouse Cloud обеспечивает значительно более низкую совокупную стоимость для таких видов рабочих нагрузок.
-
Предсказуемая стоимость возможностей: Такие возможности, как materialized view
и кластеризация (эквивалент
ORDER BYв ClickHouse), необходимы для достижения максимального уровня производительности в сценариях использования Real-time аналитики. Эти возможности в Snowflake требуют дополнительных расходов, поскольку нужен не только более высокий уровень, что увеличивает стоимость за кредит в 1,5 раза, но и непредсказуемые фоновые затраты. Например, materialized view влечет за собой фоновые расходы на обслуживание, как и кластеризация, и их трудно предсказать до начала использования. В отличие от этого, в ClickHouse Cloud эти возможности не требуют дополнительных затрат, кроме дополнительного использования CPU и памяти во время вставки, что обычно пренебрежимо мало вне сценариев с высокой нагрузкой на вставку. В нашем бенчмарке мы наблюдали, что эти различия наряду с меньшей задержкой запросов и более высоким сжатием приводят к значительно более низкой стоимости при использовании ClickHouse.