дополнительная нагрузка на склад;обновление таблиц измерений - PullRequest
3 голосов
/ 10 декабря 2010

Я пытаюсь выяснить, как постепенно загружать мои таблицы фактов и измерений при поступлении данных в нашу систему.

Есть ли более простой способ, чем:

  • dim_id =выберите идентификатор из dim_table, где dim_table.value = 'dim value';
  • , если rowcount == 0 -> вставить в dim_table ...
  • вставить в фактические (dim, мера) значения (dim_id, 23131)

если я получил 10 измерений, загрузка становится довольно громоздкой

Ответы [ 2 ]

0 голосов
/ 10 декабря 2010

В стандартной схеме «звезда» измерения загружаются раньше фактов. Таким образом, если существует процесс ETL, который выполняется партиями, самое простое решение - попытаться запустить пакет чаще. Если вам требуется загрузка DW в реальном времени, факты должны как-то задерживаться, чтобы убедиться, что измерения загружаются первыми.

Когда речь идет о готовых решениях, вы можете взглянуть на обработку потоковых событий. Существует несколько коммерческих инструментов, но EsperTech с открытым исходным кодом. Система может быть настроена как преобразование ETL, которое выполняется непрерывно. Подумайте о преобразовании Kettle (Talend, SSIS, ..), которое продолжается.

0 голосов
/ 10 декабря 2010

Вам действительно нужно, чтобы они были инкрементными?Разве вы не можете использовать UUID?

Я не понимаю, зачем вам нужен dim_table.

Если вы работаете со звездной схемой, это то, как вы можете заставить ее работать

Fact_table
----------
time_id          character(36)
geographic_id    character(36)
measure          whatyouwant

Dim Time
--------
time_id    character(36) (That matches the time_id inside your fact table)
...
...

Dim Geogrphic
-------------
geographic_id character(36) (that matches the geographic_id inside your fact_Table)
....
....

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

Редактировать: Я думаю, что это может помочь вам http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

...