Teradata row partitioning (PPIs) VS Snowflake clustering
Неожиданный пост в контексте недоступности этих вендоров в России, но очень интересный в тематике канала.
Недавно наткнулся на заметку широко известного в узких кругах автора Roland Wenzlofsky. В ней автор раскрывает тонкости реализации партиционирования в Teradata и Snowflake.
T - каждый блок данных, удовлетворяющий условию партиционирования физически лежит отдельно, таким образом чтение/изменение данных по ключу затрагивают всегда ожидаемый набор блоков;
S - абсолютно все данные рабиваются на мелкие микро-партиции, а уже для выполнения условия партиционирования собираются отдельные файлы статистики, которые указывают в каких микро-партициях находятся искомые данные по ключу партицирования, таким образом чтение/изменение данных по ключу затрагивает всегда случайный набор блоков.
Исходя из этих знаний можно найти плюсы и минусы одинаковой с точки зрения маркетинга функции:
Teradata Row Partitioning
➕Явное указание партиций → предсказуемость всегда.
➕Отличная производительность, когда предикаты совпадают с ключами разделения.
➕Нулевые затраты на выполнение запросов сверх начальной настройки.
➖Жёсткая структура. Изменение ключа партиционирования требует перезаписи всей таблицы.
➖Требует специальных знаний для проектирования структуры.
➖Неправильный дизайн = плохая производительность вплоть до необходимости редизайна.
Snowflake Clustering
➕Работает из коробки всегда, даже если вы явно не указали на необходимость партиционирования.
➕Гибкость: условия партиционирования могут быть добавлены, изменены или удалены в любое время
➕Нет необходимости заранее проектировать структуру.
➖Недетерминированность: качество проброски запроса к данных зависит от укладки данных в микро-партиции.
➖Поддержка кластеризации потребляет вычислительные ресурсы всегда.
➖Большие беспорядочные обновления быстро ухудшают эффективность.
➖Постоянный мониторинг или автоматическая кластеризация увеличивают операционные расходы.
Post #275
206
Forwarded from DataJourney
