Имеет ли таблицы распределение ключи распространения, но не объявленный внешний ключ? - PullRequest
0 голосов
/ 16 мая 2018

Если в Redshift таблица измерений и таблица фактов имеют свои PK и FK (соответственно) в качестве ключа распределения, но в DDL таблицы фактов не объявлено ограничение внешнего ключа, будут ли таблицы размещаться и объединяться без перераспределения?

1 Ответ

0 голосов
/ 16 мая 2018

Во-первых, стоит отметить, что Amazon Redshift не применяет внешние ограничения, но они используются для оптимизации запросов.См .: Определение ограничений первичного ключа и внешнего ключа

Colocation

Если таблица имеет ключ распределения, то строки распределяются по всем срезами, но все строки, относящиеся к определенному значению DISTKEY, будут расположены в одном и том же слайсе.

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

  • Допустим, есть две таблицы: Table-A и Table-B
  • Table-A со значением DISTKEY, установленным в столбец PK
  • Table-B имеет DISTKEY, установленный в столбец FK
  • Строка сохраняется в Table-A с PK = 100
  • Строка сохраняется в Table-B с FK = 100

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

...