powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Покритикуйте как лучше обновлять таблицу хранилища?
4 сообщений из 4, страница 1 из 1
Покритикуйте как лучше обновлять таблицу хранилища?
    #33815102
Фотография superbluesman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, здесь услышу какие мнения, советы :-)

Итак, имею два сервера: 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млн записей, то перелив в временную таблицу дороговато встанет
...
Рейтинг: 0 / 0
Покритикуйте как лучше обновлять таблицу хранилища?
    #33821241
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. На том же OLTP-сервере в соседней базе создать постоянную таблицу (таб1) нужной структуры.
2. При изменении записей в основном источнике данных ставить запись в очередь на обработку (SQL2005) либо для (SQL2000) ключ в какую-то простенькую табличку и задание которое эту табличку постоянно раскручивает (типа самописный обработчик очереди).
3. набор процедур выполняются по записям очереди и заполняют таб1 со всеми проверками и доп. полями можно даже с версионностью, но...по одной записи основного источника - огромный выигрыш во времени.
4. процессирование для OLAP идет тупо по таблице.
...
Рейтинг: 0 / 0
Покритикуйте как лучше обновлять таблицу хранилища?
    #33821247
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это так, в качестве инфо для размышления...альтернативный вариант.

Назначение таких таблиц мне хорошо знакомо, сам работаю в области страхования
...
Рейтинг: 0 / 0
Покритикуйте как лучше обновлять таблицу хранилища?
    #33822433
Фотография superbluesman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To incold:

п.1 НЕ могу реализовать, т.к. для этого потребуется вешать триггера на таблицы OLTP-базы, а она не моя, а внешнего разработчика
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Покритикуйте как лучше обновлять таблицу хранилища?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]