Datavault: Как получить хэши для отношений с внешним ключом (заполнение таблиц ссылок)

Я прочитал книгу хранилища данных от начала до конца, но я все еще пытаюсь решить одну конкретную вещь, связанную с тем, как вы заполнили бы таблицы ссылок (как получить все хэши для этого). Из блога scalefree: массивно параллельная обработка показывает, что спутники и концентраторы могут быть загружены полностью параллельным способом, но не вдаваться в подробности, связанные с таблицами ссылок.

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

Для конкретной таблицы, такой как "клиент", все просто для хаба и спутника: просто преобразуйте бизнес-ключ в хеш и загрузите их оба параллельно.

Но таблице сведений о клиенте или таблице транзакций из OLTP требуется какое-то соединение, чтобы найти бизнес-ключ для клиента или просмотреть все связанные объекты в транзакции (продукт, клиент, магазин и т. Д.), Поскольку эти таблицы обычно не хранят (все) бизнес-ключ (ы) в качестве атрибута в таблице.

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

  1. Присоединиться к таблицам в исходных системах OLTP, чтобы сгенерировать бизнес-ключи оттуда и распространять их как хэши оттуда? (это неправильно, если бизнес-ключ был выбран неправильно)
  2. Используйте постоянную область подготовки, поэтому никогда не усекаете? (тогда всегда можно присоединиться к любой таблице, чтобы решить)
  3. Используйте какой-нибудь индекс для суррогатных ключей -> бизнес-ключей и выполните поиск оттуда? (минимизирует ввод-вывод немного дальше и представляет собой смесь между поэтапной и постоянной стадиями).
  4. какой-то другой метод...?

По сути, какова лучшая практика для генерации хэшей для всех отношений внешних ключей ваших систем OLTP?

1 ответ

Решение

Я говорил с экспертом об этом, и вот ответ, который я получил от него:

Единственный разумный способ создания хэшей для таблиц, в которых нет всех столбцов, необходимых для создания бизнес-ключа для этой таблицы:

  • В случае, когда у вас есть полная загрузка всех таблиц, которые имеют бизнес-ключи (но могут быть добавочными для таблицы ссылок), присоединитесь к соответствующим исходным таблицам, имеющим бизнес-ключи в стадии подготовки. Это нормально, потому что вы можете гарантировать, что у вас есть все данные в данный момент.
    • В случае, когда у вас есть дополнительные нагрузки для таблиц, имеющих бизнес-ключи, вы должны использовать постоянную промежуточную область (PSA), чтобы сделать это для вас.

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

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