Открыть сервис

Amazon Redshift

Amazon Redshift — это полностью управляемая облачная реляционная база данных, предназначенная для аналитической обработки больших объёмов данных (OLAP). Разработана компанией Amazon Web Services (AWS) и впервые запущена в коммерческую эксплуатацию в феврале 2013 года. Redshift построена на основе массово-параллельной архитектуры (MPP) и использует колоночное хранение данных, что позволяет выполнять сложные запросы к терабайтным и петабайтным наборам данных с высокой производительностью.

Архитектура и принципы работы

Массово-параллельная обработка (MPP)

Ключевой особенностью Amazon Redshift является архитектура MPP, при которой данные распределяются между множеством вычислительных узлов, работающих параллельно. Система состоит из двух основных компонентов:

  • Лидер-узел (Leader Node) — управляет взаимодействием с клиентами, принимает SQL-запросы, оптимизирует их выполнение и координирует работу вычислительных узлов. Лидер-узел не хранит пользовательские данные, но содержит метаданные и информацию о распределении.
  • Вычислительные узлы (Compute Nodes) — хранят сегменты данных и выполняют фактическую обработку запросов. Каждый вычислительный узел делится на слоты (slices), количество которых зависит от типа узла. Слоты обеспечивают параллельную обработку данных внутри одного узла.

Колоночное хранение

В отличие от традиционных реляционных СУБД (например, PostgreSQL или MySQL), которые хранят данные построчно, Redshift использует колоночное хранение. Это означает, что данные одного столбца таблицы хранятся физически вместе, а не в виде строк. Такой подход даёт несколько преимуществ:

  • Снижение ввода-вывода: при выполнении аналитических запросов, которые часто обращаются только к нескольким столбцам таблицы, система считывает только необходимые данные, а не целые строки.
  • Лучшее сжатие: данные одного типа (например, только числа или только строки) сжимаются более эффективно, чем смешанные данные строки.
  • Ускорение агрегаций: операции вроде SUM, AVG, COUNT выполняются быстрее, так как данные одного столбца расположены последовательно.

Распределение данных

Для эффективной параллельной обработки данные в таблицах распределяются по вычислительным узлам. Amazon Redshift поддерживает несколько стратегий распределения:

  • KEY (по ключу) — строки распределяются на основе значения одного столбца (ключа распределения). Строки с одинаковым значением ключа попадают на один узел. Это ускоряет операции соединения (JOIN) по этому ключу.
  • EVEN (равномерно) — строки распределяются циклически (round-robin) по всем узлам без учёта содержимого. Обеспечивает равномерную загрузку, но замедляет соединения.
  • ALL (все) — полная копия таблицы размещается на каждом узле. Используется для небольших таблиц-справочников (dimension tables), чтобы избежать перемещения данных при соединениях.

Сортировка и зонные карты

Для ускорения сканирования данных Redshift использует сортировку таблиц по одному или нескольким ключам (SORTKEY). При сортировке создаются зонные карты (zone maps) — метаданные, которые для каждого блока данных (обычно 1 МБ) хранят минимальное и максимальное значение ключа сортировки. При выполнении запроса с условием WHERE по ключу сортировки система может пропустить целые блоки, не содержащие нужных значений.

История развития

Предпосылки и запуск

До появления Redshift аналитические базы данных в облаке были либо дорогими (например, Oracle Exadata), либо не обладали достаточной производительностью для работы с большими данными. Amazon начала разработку Redshift в 2010 году, взяв за основу код открытой СУБД PostgreSQL 8.x, но полностью переработав движок хранения и выполнения запросов. В феврале 2013 года сервис стал общедоступным.

Основные вехи

  • 2013 год: запуск Redshift с поддержкой узлов типов DC1 (вычислительные) и DS1 (с хранением данных на магнитных дисках).
  • 2014 год: введение функции Spectrum — возможность выполнять запросы к данным, хранящимся в Amazon S3, без их загрузки в кластер.
  • 2016 год: появление узлов DS2 с более быстрыми процессорами и большим объёмом оперативной памяти.
  • 2018 год: запуск узлов RA3 с управляемым хранилищем (Managed Storage) — отделение вычислительных ресурсов от хранилища. Данные хранятся в S3, а на узлах кэшируются горячие данные.
  • 2020 год: внедрение поддержки машинного обучения (Amazon Redshift ML) — возможность создавать модели прогнозирования прямо в SQL-запросах.
  • 2022–2023 годы: добавление поддержки полуструктурированных данных (JSON, Avro, Parquet), улучшение производительности с помощью AQUA (Advanced Query Accelerator) и введение бессерверного режима (Serverless).

Классификация и типы узлов

Amazon Redshift предлагает несколько типов вычислительных узлов, оптимизированных для разных сценариев использования:

Тип узлаГод появленияОсобенностиНазначение
DC22016Высокая вычислительная мощность, локальные SSD-дискиНагрузки с высокой частотой запросов и требованием к низкой задержке
DS22016Магнитные диски, большой объём хранилищаХранение больших объёмов данных с умеренной производительностью
RA32018Управляемое хранилище в S3, локальный кэш на SSDГибкое масштабирование хранилища и вычислений независимо друг от друга
Serverless2022Бессерверная модель, автоматическое масштабированиеНепредсказуемые или периодические нагрузки, отсутствие необходимости управлять кластером

Применение и сценарии использования

Amazon Redshift применяется в различных областях, где требуется анализ больших объёмов структурированных и полуструктурированных данных:

  • Бизнес-аналитика (BI): построение дашбордов и отчётов с использованием инструментов вроде Tableau, Power BI, Looker.
  • Хранилища данных (Data Warehousing): централизованное хранение исторических данных из разных источников (CRM, ERP, веб-аналитика) для последующего анализа.
  • Анализ логов и событий: обработка журналов серверов, данных IoT, потоковых событий.
  • Машинное обучение: подготовка данных для обучения моделей и выполнение прогнозов с помощью Redshift ML.
  • Смешанные нагрузки (HTAP): в сочетании с Amazon Aurora или DynamoDB для выполнения аналитических запросов к операционным данным.

Преимущества и ограничения

Преимущества

  • Высокая производительность: благодаря колоночному хранению, MPP-архитектуре и сортировке данных.
  • Масштабируемость: возможность увеличивать количество узлов или переключаться на более мощные типы узлов без длительного простоя.
  • Интеграция с экосистемой AWS: тесная интеграция с S3, Glue, EMR, Kinesis, QuickSight и другими сервисами.
  • Безопасность: поддержка шифрования данных на диске и при передаче, управление доступом через IAM, VPC, аудит через CloudTrail.
  • Экономичность: модель pay-as-you-go, возможность использовать зарезервированные инстансы для снижения затрат.

Ограничения

  • Не подходит для OLTP: Redshift оптимизирован для аналитических запросов, а не для частых операций вставки, обновления или удаления отдельных строк.
  • Сложность настройки: для достижения максимальной производительности требуется правильный выбор ключей распределения и сортировки, а также регулярное выполнение операции VACUUM для дефрагментации данных.
  • Ограничения PostgreSQL: хотя Redshift использует диалект SQL, близкий к PostgreSQL, многие возможности PostgreSQL (хранимые процедуры на PL/pgSQL, триггеры, внешние ключи) не поддерживаются или реализованы не полностью.
  • Задержка загрузки данных: загрузка данных из S3 в Redshift может занимать значительное время, особенно для больших объёмов.

Конкуренты и альтернативы

Основными конкурентами Amazon Redshift на рынке облачных хранилищ данных являются:

  • Google BigQuery — бессерверное хранилище данных с автоматическим масштабированием и поддержкой стандартного SQL.
  • Snowflake — облачная платформа данных с разделением вычислений и хранилища, поддерживающая несколько облачных провайдеров.
  • Azure Synapse Analytics — аналитическая служба Microsoft Azure, объединяющая хранилище данных и обработку больших данных.
  • Apache Druid — система для интерактивного анализа больших объёмов данных в реальном времени.

Интересные факты

  • Amazon Redshift изначально разрабатывался как внутренний инструмент для анализа данных самой Amazon, но позже был выведен на рынок как коммерческий продукт.
  • В 2017 году Redshift поддерживал кластеры объёмом до 2 петабайт данных на узлах DS2.
  • С помощью функции Spectrum можно выполнять запросы к данным в S3 без необходимости загружать их в кластер, что позволяет обрабатывать экзабайтные объёмы данных.
  • Redshift поддерживает автоматическое сжатие данных при загрузке — система сама выбирает оптимальный алгоритм сжатия для каждого столбца на основе статистики данных.

Источники

  • Документация Amazon Redshift (AWS Documentation)
  • «Amazon Redshift: The Definitive Guide» by Rajesh Francis, Rajiv Gupta, and Milind Oke (O'Reilly Media, 2021)
  • Официальный блог AWS — анонсы и обновления сервиса
  • «Cloud Data Warehousing: A Comparative Study of Amazon Redshift, Google BigQuery, and Snowflake» (Journal of Cloud Computing, 2022)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →