Подходит ли вам эта система?

По мере роста организации требования к хранению, мониторингу и анализу данных также экспоненциально возрастают. Традиционные хранилища данных не всегда легко справляются с огромным ростом. Это вызвало потребность в альтернативных решениях, начиная с середины 2000-х годов. Одним из таких решений является Amazon Redshift от Amazon Web Services.

Что такое Amazon Redshift?

Amazon Redshift - это облачное хранилище данных, предназначенное для крупномасштабных наборов данных. Он был создан, чтобы решить многие проблемы, которые были у предыдущих хранилищ данных, и значительно улучшить их. Он делает это с помощью конкретных проектных решений, таких как ориентация на столбцы, возможность горизонтального масштабирования по нескольким узлам и массовая параллельная обработка. Каждое из этих конкретных проектных решений позволило AWS разработать систему хранения данных, которая работает совершенно иначе, чем ваша традиционная СУБД.

Архитектура высокого уровня

Более крупные организации используют архитектуру высокого уровня, что, очевидно, сложно. Как Redshift справляется с этим?

База данных с ориентацией на столбцы

В отличие от традиционных систем управления базами данных, Redshift хранит данные по столбцам. Разбивая данные по столбцам каждый раз, вы можете получить значение, что также означает, что одно значение для каждого раздела снижает нагрузку на жесткий диск, что приводит к более высокой скорости обработки огромных объемов данных. Кроме того, в Redshift есть концепция сжатия.

Сжимая столбцы с одинаковым значением, он дополнительно улучшает ввод-вывод, поскольку все данные имеют один и тот же тип данных для каждого столбца. Это требует, чтобы разработчик установил правильный тип сжатия для каждого типа данных.

Кластеризация красного смещения

Каждый кластер красного смещения состоит из нескольких машин, на которых хранится часть данных. Эти машины работают параллельно, сохраняя данные, чтобы мы могли эффективно с ними работать. Здесь Redshift имеет несколько вычислительных узлов, которые управляются ведущими узлами для управления распределением данных и выполнением запросов между вычислительными узлами. С этим набором данных дроби, назначенным каждому узлу, Redshift работает эффективно. Это также делает его масштабируемым по горизонтали. Более крупные организации могут даже использовать Redshift для работы с данными в петабайтах и ​​более.

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

Чтобы обрабатывать данные быстрее, Redshift использует несколько вычислительных узлов, что позволяет разбивать работу по узлам (в зависимости от распределения), что может повысить производительность. Это позволяет архитектуре Redshift предлагать максимальную обработку за минимальное время.

Это всего лишь несколько конкретных архитектурных различий, которые важно учитывать при принятии решения о том, подходит ли вам Redshift.

Кроме того, вашей команде нужно будет подумать о том, как они будут проектировать свои таблицы. Вместе с этим появляются концепции ключей сортировки и распределения.

Ключи сортировки

Используете ли вы индексы в своей традиционной базе данных для улучшения времени выполнения запросов?

Redshift также предлагает методы для улучшения времени выполнения запросов путем сортировки данных по ключам. В данном случае они называются ключами сортировки. Ключи сортировки Redshift определяют порядок, в котором строки данных хранятся в таблице. Если эти ключи сортировки настроены правильно, они могут повысить производительность вашего запроса, поскольку уменьшают объем возвращаемых данных. Ключи сортировки позволяют запросам пропускать большие фрагменты данных во время обработки запроса, что также означает, что Redshift требует меньше времени на обработку.

Есть два конкретных ключа сортировки:

  • Составные ключи сортировки: они включают все столбцы, перечисленные в определении ключей сортировки Redshift во время создания таблиц. Он следует порядку, аналогичному порядку предложений в SQL - в частности, сначала сортируется первый столбец, а затем предыдущие столбцы. Обычно это означает, что первый столбец должен быть наиболее запрашиваемым столбцом. СОЕДИНЕНИЕ - это тип ключа сортировки по умолчанию, который также ускоряет соединения. С помощью составных ключей сортировки вы можете легко создавать операции объединения, такие как «Группировать по» и «Сортировать по».
  • Чередующиеся ключи сортировки. Чередующиеся ключи сортировки придают равный вес каждому столбцу, что приводит к повышению производительности запроса, когда ограничительные предикаты используются для вторичных столбцов сортировки. Если в ваших запросах нет доминирующего столбца, этот ключ может быть правильным выбором.

Распространение

Еще один важный фактор - понять, где хранятся данные в Redshift. Ключи распространения Amazon Redshift отвечают на этот запрос, определяя, где хранятся данные. По сути, данные хранятся на вычислительных узлах кластерами, поскольку производительность запросов может сильно пострадать, если большой объем данных хранится на одном узле. Оптимизированный автоматический запрос распределяет данные равномерно по разным узлам, которые могут быть объединены позже.

Здесь могут произойти некоторые интересные вещи, поэтому вам важно подумать о том, как вы распространяете. Мы обсудим это более подробно ниже, но, в частности, когда вы используете распределение ключей, у вас есть шанс распределять неравномерно. Существует три основных типа стилей распределения красного смещения.

Равномерное распределение

Стиль по умолчанию, этот подход распределяет данные равномерно по всем срезам в таблице. В своей документации AWS называет это равномерное распределение циклическим подходом. Это позволяет кластеру равномерно распределять все данные в рациональном порядке, что упрощает обработку для системы. Однако по большей части это означает, что распределение является случайным и не разбивается по какому-либо конкретному полю. Вот тут-то и появляется следующий стиль распространения.

Распределение ключей

При таком подходе данные распределяются на основе значений, содержащихся в столбцах. Например, предположим, что у вас есть ключ, установленный для идентификатора магазина, а также количество продаж за день. Ключ распределения будет разбивать и распределять данные так, чтобы все данные для определенного идентификатора хранилища находились на одном узле. Таким образом, если вы запросите этот конкретный идентификатор магазина, вам не нужно будет проходить через несколько узлов для получения данных.

Все распространение

В этом подходе ведущий узел помещает копию таблицы на каждый вычислительный узел. Это занимает намного больше места и намного медленнее обновляется и вставляется, потому что каждый раз, когда вы загружаете данные, их необходимо реплицировать. Однако он может выполнять соединения намного быстрее. Обычно это параметр распределения для таблицы размерных стилей.

Недостатки Amazon Redshift

Redshift предлагает множество положительных преимуществ для разработки хранилищ данных. Однако недостатков здесь немало.

Не действующая база данных приложения

Извините, что лопнул пузырь, но хотя Redshift отлично справляется с выполнением запросов, обработкой аналитики и созданием отчетов, это не решение для запуска веб-приложений в реальном времени. Redshift не предназначен для одновременной вставки, обновления и выбора сотен тысяч транзакций. Для этого вам понадобится слой кеширования или экземпляр Postgres.

Наборы навыков разработчика

Чтобы работать с Redshift, вы должны понимать оба этих ключа, потому что они определяют, как ваши данные хранятся или индексируются. Поэтому, когда вы выбираете красное смещение для удовлетворения потребностей вашего хранилища данных, вы также должны понимать концепции, лежащие в основе этих ключей, чтобы создать оптимизированную производительность, к которой стремится ваша организация. Поскольку Redshift все еще относительно новый, не все профессионалы в области бизнес-аналитики и данных разработали хранилище данных.

Поддержка только параллельной загрузки

Что касается Redshift, параллельная загрузка поддерживается только Amazon EMR, SE и DynamoDB. Только они используют массивные параллельные процессы и обеспечивают высокую скорость. Если ваш источник данных отличается, эта функция не поддерживается.

Окончательный вердикт: стоит ли выбирать его для следующего проекта?

Если ваша организация хочет создать хранилище данных, которое может легко управлять большими объемами данных, а также аналитическими запросами, возможно, стоит обратить внимание на Redshift. Хотя у этого сервиса есть свои недостатки, у него все еще есть много вариантов использования, в которые стоит инвестировать.

Даже с учетом кривой обучения, оно того стоит, если вы пытаетесь управлять большими объемами данных. Мы обнаружили, что многие компании будут использовать Redshift в качестве основы, а затем применять бизнес-логику, которая вставляет данные в своего рода СУБД. Это может позволить продуктам данных легко получать доступ к данным, не сталкиваясь с аналитикой.