Недавно я начал использовать Redshift для размещения миллионов точек данных со схемой, которая выглядит следующим образом:
create table metrics (
name varchar(100),
value decimal(18,4),
time timestamp
) sortkey (name, timestamp);
(Настоящая схема немного сложнее, но это удовлетворит мой вопрос)
Мне интересно, имеет ли смысл нормализовать имя моей метрики (в настоящее время varchar (100)), сопоставив его с целым числом и сохранив только целое число. (например, {id: 1, имя: metric1}). Количество элементов для name
равно ~100. Добавление сопоставления сделало бы логику приложения немного более сложной, поскольку оно имеет много потоков ввода. Кроме того, запрос к нему заранее потребует обратного сопоставления.
В традиционной базе данных sql это было бы очевидным ДА, но я не уверен, как Redshift справляется с этим, поскольку это столбцовое хранилище данных. Я думаю, что было бы неплохо иметь в целом, но я предполагаю, что Redshift может/мог бы сделать некоторое подобное отображение под капотом, поскольку некоторые столбцы в любой таблице имеют меньшую кардинальность, чем другие.