Amazon Redshift и традиционные хранилища данных
За последние 12 лет облачная экосистема Amazon пережила поразительный рост. К 2020 году Amazon Web Services (AWS) зарегистрировала выручку в размере 44 миллиардов долларов, что вдвое превышает совокупный доход двух ее ключевых конкурентов в сфере облачных технологий: Google Cloud и Microsoft Azure. AWS Redshift – главный двигатель этого роста.
Облачное хранилище данных AWS Redshift, один из флагманских продуктов Amazon, кардинально меняет правила игры в отрасли. От непревзойденной производительности до неограниченной масштабируемости – число корпоративных клиентов, использующих Redshift, увеличивается с каждым днем. В этой статье мы рассмотрим мир Redshift, его мощные функции и почему так много компаний выбирают Redshift для хранения своих данных и аналитики.
Что такое AWS Redshift?
AWS Redshift – это облачный сервис для хранения данных петабайтного масштаба, одно из решений экосистемы данных Amazon. Платформа, основанная на PostgreSQL, интегрируется с большинством сторонних приложений за счет применения драйверов ODBC и JDBC.
Redshift обеспечивает невероятно высокую производительность за счет использования двух ключевых архитектурных элементов: столбчатого хранилища данных и массивно-параллельной обработки. В 2012 году Amazon инвестировал в поставщика хранилищ данных, ParAccel (сейчас куплен Actian), и использовал свою технологию параллельной обработки в Redshift. Решение быстро стало неотъемлемой частью ландшафта аналитики больших данных благодаря своей способности выполнять запросы на основе SQL в больших базах данных, в которых есть смесь структурированных, неструктурированных и полуструктурированных данных.
За последние пять лет Redshift стал одним из ведущих облачных решений благодаря своей непревзойденной способности предоставлять организациям бизнес-аналитику.
Чем Redshift превосходит традиционные хранилища данных?
Традиционно компании сталкивались с рядом проблем при настройке хранилищ данных. Во-первых, организация таких центров на территории компании дорогая и на ее запуск уйдут месяцы. Этот фактор требовал от руководства твердой бюджетной и стратегической уверенности. Во-вторых, через несколько месяцев или лет объем данных неизменно увеличивался, а это означало, что компаниям приходилось выбирать между инвестированием в новое оборудование или терпимостью к низкой производительности.
Облачное решение Redshift помогает компаниям решить эти проблемы. Создание кластера из консоли AWS занимает считанные минуты. Прием данных в Redshift выполняется простой командой COPY из Amazon S3 (Simple Storage Service) или DynamoDB. Кроме того, масштабируемая архитектура Redshift позволяет компаниям размещать динамический запрос на масштабирование инфраструктуры вверх или вниз по мере изменения требований.
Поскольку кластеры серверов полностью управляются AWS, Redshift избавляет нас от рутинных задач по администрированию баз данных. Сложные задачи, такие как шифрование данных, решаются легко с помощью встроенных функций безопасности Redshift. Платформа также выполняет непрерывное резервное копирование данных, устраняя риск потери данных или необходимость планирования оборудования для резервного копирования.
Учитывая, что Redshift является экономичным, надежным, масштабируемым и быстродействующим решением, компании, естественно, склоняются к такому варианту хранилища данных как услуги (DWaaS).
AWS Redshift – что под капотом?
Основная причина того, что Redshift стала одним из самых популярных решений для облачных хранилищ данных – это архитектурные элементы, лежащие в его основе. AWS фокусируется на постоянных инновациях, добавляя новые функции и предлагая расширения продуктов. Давайте рассмотрим несколько особенностей дизайна Redshift, которые изменили способ получения бизнес-информации.
Хранение данных в столбцах
Традиционные реляционные базы данных используют хранилище на основе строк. Это идеально подходит для тех случаев, когда применяются простые запросы и нужно обновлять определенные строки, например, в приложениях CRM и ERP.
База данных на основе строк будет хранить данные в таблице 1 в таком виде:
ID столбца |
ID сотрудника |
Имя |
Пол |
Возраст |
Зарплата |
001 |
201 |
John |
M |
35 |
500,000 |
002 |
2503 |
Matt |
M |
26 |
98,000 |
003 |
350 |
Sarah |
F |
34 |
350,000 |
ID строки 001: 201,John,M,35,500000
ID строки 002: 2503,Matt,M,26,98000
ID строки 003: 350,Sarah,F,34,350000
При таком подходе таблицы нормализуются и создаются индексы для ускорения запросов к большим наборам записей. Но, поскольку индексы занимают собой полосу пропускания и ресурсы, а многие из них способствуют снижению производительности базы данных, архитекторам баз данных необходимо тщательно оценить, какие столбцы могут запрашиваться чаще, и соответственно создать индексы.
Для операций OLAP с большими данными этот подход накладывает свои ограничения. Трудно сделать вывод, какие столбцы будут запрашиваться чаще, поскольку цель аналитики состоит в том, чтобы безотказно выполнять операции по детализации и получать нужную информацию. Следовательно, возникает потребность в хранении данных в столбцах.
База данных на основе столбцов, такая как Redshift, будет хранить данные в таблице 1 примерно так:
201:001, 2503:002, 350:003;
John:001, Matt:002, Sarah:003;
M:001, M:002, F:003;
35:001, 26:002, 34:003;
500000:001, 98000:002, 350000:003;
Это приводит к группированию схожих типов данных, что позволяет улучшить сжатие данных. Сжатие данных снижает требования к хранилищу и количество операций ввода-вывода. Поскольку для загрузки сжатых данных используется меньше памяти, есть свободная память, доступная для анализа, что повышает производительность системы.
Следовательно, когда вы хотите сделать запрос в Redshift, например, чтобы узнать среднюю зарплату сотрудников, проанализировать, есть ли гендерные предубеждения в зарплатах сотрудников, или понять взаимосвязь между зарплатой и возрастом, платформа может просмотреть миллионы записей, и это будет намного быстрее, чем база данных, сделанная на основе строк.
Массивно-параллельная обработка (MPP)
MPP – это распределенный подход к проектированию, разработанный ParAccel, который обеспечивает высокую скорость обработку больших наборов данных. Здесь набор данных разбивается на множество частей, они обрабатываются параллельно, чтобы быстрее выдать вам результат.
Redshift использует подход MPP в своих кластерах. Хотя технически вы можете развернуть одноузловой кластер, преимущество Redshift заключается в возможности многоузлового кластера, который может обрабатывать данные параллельно. Кластер состоит из нескольких вычислительных узлов с ведущим узлом для управления.
Ведущий узел отвечает за разделение данных, назначение фрагментов различным вычислительным узлам и последующее объединение результатов. Каждый вычислительный узел делится на срезы в зависимости от количества ядер, и, следовательно, каждый фрагмент данных получает для работы свою собственную память и операционную систему.
Этот тип архитектуры называется «без общего доступа», поскольку между системами нет общих знаний, а узлы полностью независимы друг от друга. Поскольку каждый узел содержит только те данные, за которые он отвечает, MPP намного проще поддерживать и развертывать.
Скомпилированный код
Redshift использует интересную стратегию для ускорения выполнения запроса. После однократной компиляции запроса платформа распределяет этот скомпилированный код по кластеру. Когда ведущий узел распределяет данные по вычислительным узлам, он также отправляет скомпилированный код, устраняя любые дополнительные расходы на обработку.
Скомпилированный код также кэшируется и совместно используется сеансами в кластере, что позволяет выполнить один и тот же запрос позже, когда его можно будет выполнить намного быстрее.
Масштабирование параллелизма
AWS Redshift недавно запустил масштабирование параллелизма – новую функцию, созданную для решения проблемы неравномерного использования кластера. Во многих организациях есть случаи, когда аналитики данных выполняют тяжелые задачи в течение определенного временного окна, а в других ситуациях кластеры остаются неиспользованными.
Чтобы противостоять этим резким всплескам активности и сократить расходы в часы низкой нагрузки, Redshift обеспечивает гибкость для увеличения или уменьшения масштабов кластеров по мере необходимости. Функция гибкого изменения размера позволяет добавлять или удалять узлы в кластере за считанные минуты. Вы можете использовать параметр изменения размера непосредственно из консоли AWS или путем вызова API.
Разница между эластичным изменением размера и классической функцией изменения размера Redshift заключается в том, что классическое изменение размера помогает создать новый кластер, а эластичное изменение размера добавляет или удаляет узлы в существующий кластер с минимальными нарушениями.
Безопасность
Redshift содержит большинство тех функций безопасности, которые предлагают другие облачные сервисы AWS. Базовые права доступа контролируются через учетную запись AWS и предоставляются конкретным ресурсам Redshift через учетные записи Управления идентификацией и доступом (IAM). Кроме того, управление кластером осуществляется путем создания определенных групп безопасности кластера и через среду виртуального частного облака (VPC), если ваш вариант использования разрешает частное облако.
Кроме того, во время создания кластера можно включить шифрование данных. Но это – неизменное свойство, которое не может напрямую переключаться с зашифрованного кластера на незашифрованный. Для транзитных данных поддерживается шифрование SSL.
Интеграция с машинным обучением
Используя Redshift, пользователи могут использовать всю облачную экосистему AWS. Один из примеров – возможность Redshift интегрироваться с сервисом AWS Machine Learning (ML). Хотя Redshift позволяет пользователям выполнять операции ETL с невероятной скоростью, специалистам по обработке данных все равно нужно писать собственные алгоритмы для выполнения анализа.
AWS ML расширяет это предложение, предоставляя услугу, которая может обрабатывать данные с помощью внутренних алгоритмов, а затем делать соответствующие прогнозы. В конечном итоге интеграция AWS ML с Redshift в качестве источника данных повышает потенциал этого DWaaS.
Почему выбирают Redshift?
Беспрецедентный рост объемов данных в последнее время создал среду, в которой компании должны сформулировать тщательную стратегию обработки своих данных. Эта стратегия и полученное решение должны учитывать объемы данных, стоимость, масштабируемость и простоту использования.
Redshift отвечает всем этим требованимям.
До недавнего времени большинству компаний приходилось работать только с внутренними источниками данных. В некоторых случаях данные из внешних источников передавались через файлы или технологии промежуточного ПО, такие как публикация-подписка. Сегодня смотреть на изолированные данные в самой компании не так полезно, если не сопоставлять их с другими данными из облачных источников.
Получение данных из нескольких источников – стандартное решение в Redshift, быстрый способ для аналитика получить более глубокое понимание данных. Например, многие компании используют Salesforce для хранения своей информации CRM. Интеграция данных Salesforce с Redshift помогает выявлять модели поведения клиентов, принимать важные решения по привлечению потенциальных клиентов и проводить целевые маркетинговые кампании.
Точно так же данные из других внутренних бизнес-приложений и даже файлы журналов можно преобразовать и загрузить в таблицы Redshift, что дает компаниям более глубокое представление о доступных данных.