|
|
|
Покритикуйте как лучше обновлять таблицу хранилища?
|
|||
|---|---|---|---|
|
#18+
Может, здесь услышу какие мнения, советы :-) Итак, имею два сервера: OLTP (SQL2000) и базу для OLAP (SQL2005). Для простоты возьмём только одну OLTP-таблицу, в которой порядка 4 (в будущем до 10 тыс. записей), в хранилище-источнике OLAP аналог этой таблицы выполняет роль измерения. Причем измерения с учётом версионности , т.е. SCD2 В процедуре загрузки, обновления данной таблицы делаю следующее: 1. загружаю в локальную временную таблицу (копия OLAP-таблицы) все записи из OLTP-таблицы (локальная временная таблица имеет индекс по ключевому полю). Локальная временная таблица выполняет роль отстойника 2. делаю Updat-эйты- локальной временной таблицы, при этом заполняются остальные поля таблицы данными из других связанных таблиц OLTP-источника. Это делается потому, что на 1-ом этапе стянуть все необходимые данные из OLTP-источника одним запросом с линкованного не представляется возможным, поскольку для извлечения данных с линкованного сервера используются удалённые хранимые процедуры, в которых заложен уже некоторый функционал - чего бы готовы мне воспользоваться? а если переписывать запрос в вдие обращаемся к remote-таблицам и джойним и выбираем всё как надо, то тяжеловатый получился бы запрос. 3. Записи локальной таблицы проверяю на всевозможные условия (NOT NULL, диапазон допустимых значений и т.п.) - если 4. Если п.3 прошёл успешно, то считаю CHECKSUM() по тем полям локальной временной таблицы, изменения по которым обуславливают SCD2. 5. Из локальной временной таблицы в OLAP-таблицу добавляю новые версии записей OLAP-таблицы 6. Из локальной временной таблицы заливаю новые записи в OLAP-таблицу Смущает вот что: 2.1. трудновато выполнить п.3., особенно если уж сосвсем проверочные гайки закручивать, особенно если в специальную лог-таблицу выгружать ключи записей с описанием проблем почему она провальная - "для последующего разбора полёта" 2.2. а если бы в таблице было 10млн записей, то перелив в временную таблицу дороговато встанет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2006, 17:30 |
|
||
|
Покритикуйте как лучше обновлять таблицу хранилища?
|
|||
|---|---|---|---|
|
#18+
1. На том же OLTP-сервере в соседней базе создать постоянную таблицу (таб1) нужной структуры. 2. При изменении записей в основном источнике данных ставить запись в очередь на обработку (SQL2005) либо для (SQL2000) ключ в какую-то простенькую табличку и задание которое эту табличку постоянно раскручивает (типа самописный обработчик очереди). 3. набор процедур выполняются по записям очереди и заполняют таб1 со всеми проверками и доп. полями можно даже с версионностью, но...по одной записи основного источника - огромный выигрыш во времени. 4. процессирование для OLAP идет тупо по таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2006, 11:42 |
|
||
|
Покритикуйте как лучше обновлять таблицу хранилища?
|
|||
|---|---|---|---|
|
#18+
это так, в качестве инфо для размышления...альтернативный вариант. Назначение таких таблиц мне хорошо знакомо, сам работаю в области страхования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2006, 11:44 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33821241&tid=1545172]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
266ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 586ms |

| 0 / 0 |
