Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Совет по ХД  [new]
temoxa
Member

Откуда:
Сообщений: 405
Добрый день! Скажите пожалуйста как правильно сделать загрузку данных при таких условиях: есть источник (бд) из которой надо достать данные и положить в стейнженговую базу, и грузить надо только новые записи из источника... Загрузку делаю через пакет SSIS... Спасибо!
26 авг 13, 13:35    [14755488]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
кириллk
Member

Откуда:
Сообщений: 1058
temoxa,

SSIS умеет проверять, были ли уже такие записи, тока не помню как пакет называется
26 авг 13, 14:18    [14755698]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
загрузка данных
Guest
зависит от того какие изменения вы можете делать в источнике
26 авг 13, 14:22    [14755720]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
Santa89
Member

Откуда:
Сообщений: 1496
Компонент Lookup.
Позволяет перехватить новые/измененные записи в источнике
26 авг 13, 15:09    [14755982]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3646
temoxa
Добрый день! Скажите пожалуйста как правильно сделать загрузку данных при таких условиях: есть источник (бд) из которой надо достать данные и положить в стейнженговую базу, и грузить надо только новые записи из источника... Загрузку делаю через пакет SSIS... Спасибо!

использовать либо
1. Спец. поле в источнике заполняемое там же вида - last_changed_datetime
либо
2. CDC
либо сравнение всего обхъема данных - что есть самый плохой вариант
- подходит только для всяких справочников
26 авг 13, 15:13    [14756013]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34746
Блог
еще вариант - либо обновление плавающим окном в N дней,
а по выходным - M*N дней
26 авг 13, 15:24    [14756086]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
Dimais
Member

Откуда:
Сообщений: 227
Критик
еще вариант - либо обновление плавающим окном в N дней,
а по выходным - M*N дней


Ню ню, это только для фактов которые историчны, а если у вас таблица с атрибутами на 300 млн. записей, что прикажете делать ? :-)
27 авг 13, 17:39    [14762299]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
Empirical
Member

Откуда:
Сообщений: 99
а чем merge не подходит?
27 авг 13, 17:46    [14762344]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34746
Блог
Dimais
Ню ню, это только для фактов которые историчны, а если у вас таблица с атрибутами на 300 млн. записей, что прикажете делать ? :-)


Почему 300 млн? Может у автора 10 тысяч записей.

Да и в вашем примере: если принять, что активно изменяется 10% записей в таблице, то 30 млн обновится за 5-6-7 минут.
Конечно, можно убить пару человеко-месяцев и сделать суперсистему, но тут вопрос целесообразности, а надо ли?
27 авг 13, 18:07    [14762456]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31783
temoxa
Добрый день! Скажите пожалуйста как правильно сделать загрузку данных при таких условиях: есть источник (бд) из которой надо достать данные и положить в стейнженговую базу, и грузить надо только новые записи из источника... Загрузку делаю через пакет SSIS... Спасибо!
Самое правильное - уметь отличать новые записи, сделав, например, соответствующее поле. Другие способы будут сильно загружать сервер.
27 авг 13, 18:27    [14762523]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31783
Критик
еще вариант - либо обновление плавающим окном в N дней,
а по выходным - M*N дней
Так для этого тоже надо иметь поле, в котором будет указана дата создания. А в этом случае просто сделать и загрузку только новых данных.
27 авг 13, 18:28    [14762531]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
Dimais
Member

Откуда:
Сообщений: 227
Критик
Dimais
Ню ню, это только для фактов которые историчны, а если у вас таблица с атрибутами на 300 млн. записей, что прикажете делать ? :-)


Почему 300 млн? Может у автора 10 тысяч записей.

Да и в вашем примере: если принять, что активно изменяется 10% записей в таблице, то 30 млн обновится за 5-6-7 минут.
Конечно, можно убить пару человеко-месяцев и сделать суперсистему, но тут вопрос целесообразности, а надо ли?


Вопрос в другом, Вы же сказали про плавающее окно, я поэтому и удивился ...
Плавающее окно актуально только для исторических данных, где есть дата,
А если у вас среди 300 млн. даже 1 запись в день поменялась, Вы как её будете плавающим окном ловить ?
27 авг 13, 18:29    [14762534]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34746
Блог
alexeyvg
Так для этого тоже надо иметь поле, в котором будет указана дата создания. А в этом случае просто сделать и загрузку только новых данных.


Вовсе нет, в 99% случаев достаточно лишь даты самого факта, а не даты создания записи.
Аудита (когда-кто-добавил-изменил-удалил) весьма часто нет даже в покупных системах. Но почти всегда есть трудности с модификацией таких систем. Поэтому вариант с обновлением "активной части" базы вполне имеет право на жизнь. А остальную часть проверять периодически с помощью хешей/контрольных сумм.


Dimais,

Вы про таблицы, которые вообще без дат и содержат 300 млн?

Если бы была задача ловить такие изменения, когда весьма критична даже одна изменившаяся запись, то можно использовать специализированные пакеты вроде Oracle GoldenGate.
27 авг 13, 22:56    [14763269]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31783
Критик
Если бы была задача ловить такие изменения, когда весьма критична даже одна изменившаяся запись
Ну конечно, им важно, что бы на втором сервере были полные записи, как иначе?

Но вообще наверняка можно и поле добавить.
Есть ещё варианты - сделать транзакционную репликацию, можно ещё триггер сделать, который будет писать очередь новых записей - кандидатов на перенос (если нельзя добавить поле в таблицу).
28 авг 13, 00:51    [14763471]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
Dimais
Member

Откуда:
Сообщений: 227
Критик
Dimais,
Вы про таблицы, которые вообще без дат и содержат 300 млн?


Именно.
28 авг 13, 10:59    [14764595]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3646
Критик
Аудита (когда-кто-добавил-изменил-удалил) весьма часто нет даже в покупных системах.

CDC решает проблемы. Правда разные его варианты имеют разный перфоманс.
28 авг 13, 11:09    [14764692]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34746
Блог
Единственный пример, который приходит в голову, это

"заголовочная" таблица (с датой, например, шапка чека в ритейле)
"строковая" таблица (тут позиции чека)

Но и в таком случае для второй таблицы дату получить легко...


Вообще никак не привязанные к датам данные ни разу не встречал.
28 авг 13, 11:10    [14764698]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3646
Критик
Единственный пример, который приходит в голову, это

"заголовочная" таблица (с датой, например, шапка чека в ритейле)
"строковая" таблица (тут позиции чека)

Но и в таком случае для второй таблицы дату получить легко...

Вообще никак не привязанные к датам данные ни разу не встречал.

- список кастомеров на пару миллионов!
- список товаров на пару миллионов SKU
28 авг 13, 11:49    [14765011]     Ответить | Цитировать Сообщить модератору
 Re: Совет по ХД  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34746
Блог
Ivan Durak,

тут речь про 300 млн была )
28 авг 13, 13:43    [14765827]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить