Я работаю над созданием базы данных красных смещений, слушая события из разных источников и перекачивая эти данные в кластер красных смещений.
Идея состоит в том, чтобы использовать пожарный шланг Kinesis для перекачки данных в красное смещение с помощью команды COPY. Но у меня здесь дилемма: я хочу сначала запросить некоторую информацию из красного смещения, используя запрос выбора, такой как приведенный ниже:
select A, B, C from redshift__table where D='x' and E = 'y';
После получения необходимой информации от redshift я объединю эту информацию с данными уведомления о событии и отправлю запрос в kinesis. Затем Kinesis выполнит свою работу и выдаст требуемую команду COPY.
Теперь мой вопрос в том, стоит ли многократно запрашивать красное смещение, например, каждую секунду, поскольку это ожидаемое время, по истечении которого я буду получать уведомления о событиях?
Теперь позвольте мне описать альтернативный сценарий:
Если я нормализую свою таблицу и выделю некоторые поля в отдельную таблицу, тогда мне придется выполнять меньше запросов на красное смещение с нормализованным дизайном (может быть один раз в 30 секунд)
Но обратная сторона этого подхода заключается в том, что как только я получу данные в красном смещении, мне придется выполнять соединения таблиц при выполнении аналитики в реальном времени для моих данных красного смещения.
Поэтому я хочу знать на высоком уровне, какой подход будет лучше:
Имейте одну плоскую таблицу, но запрашивайте ее перед отправкой запроса на кинезис при уведомлении о событии. При выполнении аналитики не будет никаких объединений таблиц.
Используйте 2 таблицы и реже выполняйте запросы на красное смещение. Но выполните объединение таблиц при отображении результатов с помощью инструментов бизнес-аналитики / аналитики.
Как вы думаете, какой из этих двух вариантов лучше? Предположим, что в любом случае я буду использовать соответствующие ключи сортировки / ключи распределения.