Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 CDC решение  [new]
akaipbay
Member

Откуда:
Сообщений: 107
Добрый день,

Подскажите есть ли у кого нибудь готовый механизм для CDC (пакеты, процедуры)?

Задача такая:

Есть таблица Source_Table (операционная) есть копия этой таблицы с доп инфой Interface_Table (для ETL) на которую смотрит ХД и забирает данные с некоторой периодичностью.

Как без тригеров, без специфичных CDC для БД, реализовать такой механизм загрузки между таблицами?
1 июн 18, 10:55    [21460135]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33093
Блог
у Информатики, у Golden Gate есть - они читают лог и транслируют изменения
1 июн 18, 11:01    [21460178]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
George Nordic
Member

Откуда: Moscow
Сообщений: 1030
Oracle Streams еще живы? GG специалисты знакомые хвалили. Но что они, что informatica - не очень дешевые решения, так скажем.

С Уважением,
Георгий
1 июн 18, 11:10    [21460231]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
akaipbay
Member

Откуда:
Сообщений: 107
Критик,

ETL инструмента нету
1 июн 18, 11:47    [21460457]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5113
akaipbay
Подскажите есть ли у кого нибудь готовый механизм для CDC (пакеты, процедуры)?
...
без специфичных CDC для БД
у вас СУБД то какая?
опять же что конкретно хотите, внешний ETL тулл или "на уровне процедур в БД"?
1 июн 18, 11:48    [21460466]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
alexdr
Member

Откуда:
Сообщений: 214
Стесняюсь спросить, а что в Microsoft SSIS механизмы CDC изъяли? И вроде нормальное описалово как все это правильно готовить у майкрософта имелось. Оно вроде с дистрибутива сиквел-сервера ставилось, но отдельно... нет? Да, нет, вроде в моей Visual Studio присутствует такой CDC Control Task. Похоже, все-таки не изъяли.
1 июн 18, 12:18    [21460674]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2032
akaipbay,

как вообще такое возможно без специфичных вещей для БД?
тупо: поле last_update и забирай сам когда посчитаешь нужным.

хотя по мне такое без триггера тоже как-то не по-себе, вдруг учетная система забудет в каком-то месте last_updat-нуть.
1 июн 18, 12:38    [21460793]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
akaipbay
Member

Откуда:
Сообщений: 107
Дедушка,

Да на уровне процедур и джобов, без ETL туллов

БД - Оракл но хотелось бы механизм универсальный который легко переделать и для других СУБД потому что источники разные.
1 июн 18, 13:29    [21461102]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
akaipbay
Member

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

А если last_update нет?) и тригеры нельзя использовать потому что все загнется

Есть таблицы которые имеют ласт_апдейт но есть и которые емют просто ключи и писать для каждой таблицы свой ЕТЛ не вариант так как таблиц хер его туча.

Пока в голову приходит мысль что нужно создать таблицу где хранится

Таблица_Откуда, Таблица_Куда, Колонка_для_CDC, Последнее_Значение

И написать одну процедуру которая берет и ложит.

Хер его знает, правильно не правильно, поэтому и спрашиваю
1 июн 18, 13:37    [21461147]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
Alexander Ryndin
Member

Откуда:
Сообщений: 4769
Блог
akaipbay
Дедушка,

Да на уровне процедур и джобов, без ETL туллов

БД - Оракл но хотелось бы механизм универсальный который легко переделать и для других СУБД потому что источники разные.
Если нужен универсальный механизм без триггеров, то это нужно брать промышленный CDC. Например, GoldenGate (поддерживает Oracle, MySQL, MSSQL, DB2, Sybase, Cassandra)
1 июн 18, 14:42    [21461469]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2032
akaipbay,

одной колонкой не обойдется.
надо знать: "где" изменилось и "что" изменилось (или просто что-то изменилось) + в идеале причина изменений (Ins/Upd/Del), ну и без "когда" тоже мало толку
теперь попробуйте написать свой собственный фреймворк для этого..

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

и еще раз повторю, без специфичных для БД вещей, шерстить источники и цели будете постоянно
1 июн 18, 15:32    [21461708]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
Sintetik
Member

Откуда: SpB->Msk->...
Сообщений: 8686
akaipbay
ShIgor,

А если last_update нет?) и тригеры нельзя использовать потому что все загнется

Есть таблицы которые имеют ласт_апдейт но есть и которые емют просто ключи и писать для каждой таблицы свой ЕТЛ не вариант так как таблиц хер его туча.

Пока в голову приходит мысль что нужно создать таблицу где хранится

Таблица_Откуда, Таблица_Куда, Колонка_для_CDC, Последнее_Значение

И написать одну процедуру которая берет и ложит.

Хер его знает, правильно не правильно, поэтому и спрашиваю

если будете хранить всю историю изменений, то нужно просто всасывать на ХД эту таблицу, применять изменения, в исходной ставить флаг, что забрали успешно
если истории нет, то попадалово, нужно тащить всю исходную таблицу на ХД и full outer, я встречал такие решения, причем на приличных объемах 500гиг в день, но тащили в ХД не с боя, а со стенбая. Ограничения те же, проприетарная система, менять ничего нельзя, журналирование включать нельзя, а без него CDC не работают.
1 июн 18, 16:29    [21461982]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 953
akaipbay
ShIgor,

А если last_update нет?) и тригеры нельзя использовать потому что все загнется

Есть таблицы которые имеют ласт_апдейт но есть и которые емют просто ключи и писать для каждой таблицы свой ЕТЛ не вариант так как таблиц хер его туча.

Пока в голову приходит мысль что нужно создать таблицу где хранится

Таблица_Откуда, Таблица_Куда, Колонка_для_CDC, Последнее_Значение

И написать одну процедуру которая берет и ложит.

Хер его знает, правильно не правильно, поэтому и спрашиваю


делал чего-то похоже для Частного случая мс-скл - но таблиц там было 5-6
(и они были по 5-10 миллионов - не такие большие )

создал отдельную БД - в ут писать нелья было
в той БД создал синонимы

CREATE TABLE dlt_Problem (
    id              BIGINT        NOT NULL
	, [b]hash_record[/b] bigint  
	, dt_insert datetime default getdate() 
	, dt_lastupdate datetime 
	, dt_delete datetime 
	, flag_delete bit default 0
	CONSTRAINT PK_dlt_Problem PRIMARY KEY  ( id  )
);

CREATE PROCEDURE usp_dlt_Problem_LoadMark
		@What_do  int  = 1 -- @What_do = 1 Return Delta 
, @What_do = 2 Update Deleta file (Merge )


создал по процедуре для каждой таблицы -

hash_record через CHECKSUM всех (ну или набора ) полей в строку через CAST

геморно - но др.выбора не было

зы там есть ид инкрементное - если бы не было апдейтов - было бы проще - хватило бы одной спец. таблицы
но апдейты И делете есть и а даты посл. изменний увы нет


и вызывал их в пакете SSIS - 1 пакет для 1 таблицы

зы если бы была куча таблиц - не знаю стал бы юзать сей подход
4 июн 18, 13:18    [21466294]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
akaipbay
Member

Откуда:
Сообщений: 107
Alexander Ryndin,

Конечно это в идеале, но руководство бичует и загрызет за каждую копейку)
6 июн 18, 06:48    [21471488]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
akaipbay
Member

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

Да согласен, тут один мужик посоветовал включить матвью логи на таблицу источник а потом копаться в этих логах и фиксировать изменения, но боюсь что на нон-оракл базы это не прокатит
6 июн 18, 06:52    [21471489]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
akaipbay
Member

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

как раз истории и нету) а можете привести пример с этим full outer, а то уж совсем время поджимает?
6 июн 18, 06:56    [21471493]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
akaipbay
Member

Откуда:
Сообщений: 107
Гулин Федор,

Блин чето геморно, у меня таблиц хер его туча(
6 июн 18, 06:57    [21471494]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
Полковник.
Member

Откуда:
Сообщений: 1699
akaipbay
Гулин Федор,

Блин чето геморно, у меня таблиц хер его туча(


Пиши робота, который на основе метаданных, таблицы метаданных я надеюсь у тебя есть в ХД, будет генерить тебе динамический код, запусти в цикле в будет тебе счастье.
6 июн 18, 09:45    [21471724]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
Andy_OLAP
Member

Откуда: я знаю, что Зенит - чемпион
Сообщений: 2166
Полковник.
akaipbay
Гулин Федор,

Блин чето геморно, у меня таблиц хер его туча(


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

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

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

В общем, коллеги, вы сами себе пилите сук, на котором сидите. Когда вы говорите заказчикам ХД - "сейчас робот пробежит и все сам сделает", возникает вопрос - а зачем вам столько денег платить, когда достаточно взять студента, умеющего запускать такого робота.
6 июн 18, 12:20    [21472253]     Ответить | Цитировать Сообщить модератору
 Re: CDC решение  [new]
Andy_OLAP
Member

Откуда: я знаю, что Зенит - чемпион
Сообщений: 2166
akaipbay
Подскажите есть ли у кого нибудь готовый механизм для CDC (пакеты, процедуры)?

Наверняка у кого-то есть. Наверняка у многих. И наверняка эти люди - высококвалифицированные - не очень хотят, чтобы заготовки, которые ИМ облегчают жизнь, попали в руки людей, которые мечтают сократить им зарплату и премии и повысить конкуренцию в их среде. Все в этом мире IT в конечном итоге упирается в деньги. Вот такой циничный расклад.
6 июн 18, 12:22    [21472257]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить