Является ли 100-200 операций вставки и вставки в 10-секундном окне в кластер красных смещений из 3 узлов реалистичной архитектурой? - PullRequest
0 голосов
/ 10 мая 2019

Под 3 узлами, используя красное смещение, мы планируем делать 50-100 вставок каждые 10 секунд.В этом 10-секундном окне мы также попытаемся сделать эквивалент апсайта красного смещения, как описано здесь https://docs.aws.amazon.com/redshift/latest/dg/c_best-practices-upsert.html, примерно на 50-100 строках.

Я в принципе не знаю, реалистично ли 10-секундное окно или 10-минутное окно ... и т. Д. Для такой нагрузки.Должна ли это быть ежедневная партия?Должен ли я попытаться изменить архитектуру, чтобы избавиться от аппетитов?

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

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

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

Ответы [ 2 ]

3 голосов
/ 10 мая 2019

Не думаю, что вы достигнете желаемой производительности.

Выполнение большого количества операторов INSERT не является оптимальным способом загрузки данных в Amazon Redshift.

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

Если у вас нет реальной необходимости немедленно получать данные в Redshift, было бы лучше пакетировать данные в S3 за определенный период времени (чем больше пакет,тем лучше), потом загружай через COPY.Это также будет хорошо работать с подходом Staging Table к выполнению UPSERTS.

Лучший способ узнать, справится ли Redshift с определенной нагрузкой, это попробовать!Раскрутите другой кластер и попробуйте различные методы, каждый раз измеряя производительность.

2 голосов
/ 10 мая 2019

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

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

https://docs.aws.amazon.com/ses/latest/DeveloperGuide/event-publishing-redshift-firehose-stream.html

Он собирает их партиями, сжимает и загружает в Redshift.

Процесс Upsert:

Если вы хотите использовать upsert, я бы сделал их масштабируемым образом,

Таблица DynamoDB (Обновление) -> Потоки DynamoDB -> Лямбда -> Пожарный шланг -> Redshift

Иметь запланированное задание для очистки любых дублирующихся записей на основе созданного timestamp.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...