Следует ли использовать AWS Redshift для онлайн-запросов?

У меня есть случай использования, когда довольно массивную (более 1 ТБ) базу данных SQL необходимо перенести в облако, и я подумывал об использовании Redshift вместо какого-либо решения RDS, поскольку оно немного дешевле, и у меня все в порядке с задержками меньше, чем 10 секунд для моих запросов. Приложение будет запрашивать БД очень редко - около 100 раз в день.

Будет ли разумно выбрать вариант с Redshift, если посмотреть на экономию средств по сравнению с RDS?

Обновление: система будет обновлять БД один или два раза в день.

3 ответа

Аргумент о том, что будет лучшим для вашего бизнеса, будет всегда, и лучшие решения будут приниматься вами лучше, учитывая все затраты и компромиссы производительности, но, учитывая весь мой опыт и информацию, предоставленную вами выше, я могу с уверенностью позволить вам знать о влиянии следующих действий:

  1. Кто напишет в таблицы Redshift?

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

  1. Операции записи мучительно медленны в Redshift

Ожидается, что объемные записи будут кропотливо медленными. Поэтому, если вы вставляете данные, убедитесь, что это происходит в полночь, чтобы ЦП не использовался в задачах ETL.

  1. Какой набор данных будет запрошен?

Если набор данных OLAP, то Redshift идеален. Если данные являются OLTP, то при переключении на производительность производительности не будет, хотя это может сэкономить некоторые затраты. И это будет болевая точка, когда ваш бизнес растет

Нам нужно понять, что Amazon Redshift не похож ни на одно хранилище данных на основе строк. Используется в аналитических целях. Если вы генерируете объемные данные (в миллионах за день) и вам нужно их запрашивать, то это инструмент для вас. Компании используют Amazon Redshift для когортирования, поведения пользователей и анализа тенденций, поскольку для этого требуется запрос огромного набора данных. Столбчатые базы данных используются для запроса миллионов записей, так как ориентация столбцов оптимизирована для запроса набора данных мамонта.

Если вы храните наборы данных OLTP, такие как созданные пользователи, размещенные заказы, атрибуты заказов, предпочтения, баланс и т. Д., То Amazon Amazon Redshift - не инструмент для вас. Запись будет медленной, и вы не увидите какого-либо улучшения производительности при запросе такого небольшого набора данных OLTP.

Более того, если ваша архитектура имеет Master - Slave В конфигурации вы НЕ МОЖЕТЕ терпеть никаких задержек, а использование RS вызовет задержки при переносе данных в подчиненное устройство, поскольку оно не оптимизировано для операций записи. Ожидается, что ведомый будет точной копией главного устройства, содержащей данные почти в реальном времени, и использование RS для этой архитектуры приведет к бесполезным задержкам.

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

Я бы посоветовал перейти на Redshift, только если вы видите улучшение производительности. Если вы переключитесь только на меры по снижению затрат и в будущем ваш бизнес будет расширяться, вам будет очень трудно снова перейти на соответствующую архитектуру.

Похоже, в зависимости от вашего варианта использования Redshift может подойти. Redshift - это скорее OLAP, чем база данных OLTP. В языке, не являющемся базой данных, он больше предназначен для вставки или чтения в реальном времени (в режиме реального времени меньше секунды). Redshift также будет иметь намного меньший параллелизм, чем что-то вроде RDS, но это также не похоже на то, что вам это сильно нужно.

RDS будет иметь смысл, если вам нужно:

  • вставки отдельных записей в реальном времени
  • второстепенные запросы
  • до тысячи запросов в секунду.

Потому что вы можете обрабатывать запросы в течение 1 секунды, но не более 10, а рабочая нагрузка на запрос не слишком велика. Redshift должен работать нормально.

AWS уже четко позиционирует Redshift: это значит для хранилищ баз данных.

Одним словом, AWS ожидает администратора:

  • Массаж базы данных в соответствии с потребностями хранилища базы данных
  • Знать, как разбить / разделить базу данных
  • Знать, как оптимизировать базу данных, например, денормализовать при необходимости (то есть преобразовать или перенести таблицы из OLTP(обработка транзакций OnLine) в дружественную OLAP(обработку аналитики OnLine).
  • Вам может понадобиться больше дискового пространства при переходе на Redshift, потому что это создаст дополнительные индексы для внутренней оптимизации.

Короче говоря, переход на красное смещение может быть, а может и не дать вам никаких преимуществ в плане затрат и / или производительности. Это НЕ волшебная пуля.

Другие вопросы по тегам