Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / CDC решение / 25 сообщений из 28, страница 1 из 2
01.06.2018, 10:55
    #39653800
akaipbay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
Добрый день,

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

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

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

Как без тригеров, без специфичных CDC для БД, реализовать такой механизм загрузки между таблицами?
...
Рейтинг: 0 / 0
01.06.2018, 11:01
    #39653809
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
у Информатики, у Golden Gate есть - они читают лог и транслируют изменения
...
Рейтинг: 0 / 0
01.06.2018, 11:10
    #39653817
George Nordic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
Oracle Streams еще живы? GG специалисты знакомые хвалили. Но что они, что informatica - не очень дешевые решения, так скажем.

С Уважением,
Георгий
...
Рейтинг: 0 / 0
01.06.2018, 11:47
    #39653854
akaipbay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
Критик,

ETL инструмента нету
...
Рейтинг: 0 / 0
01.06.2018, 11:48
    #39653856
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
akaipbayПодскажите есть ли у кого нибудь готовый механизм для CDC (пакеты, процедуры)?
...
без специфичных CDC для БДу вас СУБД то какая?
опять же что конкретно хотите, внешний ETL тулл или "на уровне процедур в БД"?
...
Рейтинг: 0 / 0
01.06.2018, 12:18
    #39653889
alexdr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
Стесняюсь спросить, а что в Microsoft SSIS механизмы CDC изъяли? И вроде нормальное описалово как все это правильно готовить у майкрософта имелось. Оно вроде с дистрибутива сиквел-сервера ставилось, но отдельно... нет? Да, нет, вроде в моей Visual Studio присутствует такой CDC Control Task. Похоже, все-таки не изъяли.
...
Рейтинг: 0 / 0
01.06.2018, 12:38
    #39653907
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
akaipbay,

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

хотя по мне такое без триггера тоже как-то не по-себе, вдруг учетная система забудет в каком-то месте last_updat-нуть.
...
Рейтинг: 0 / 0
01.06.2018, 13:29
    #39653961
akaipbay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
Дедушка,

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

БД - Оракл но хотелось бы механизм универсальный который легко переделать и для других СУБД потому что источники разные.
...
Рейтинг: 0 / 0
01.06.2018, 13:37
    #39653967
akaipbay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
ShIgor,

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

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

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

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

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

Хер его знает, правильно не правильно, поэтому и спрашиваю
...
Рейтинг: 0 / 0
01.06.2018, 14:42
    #39654027
Alexander Ryndin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
akaipbayДедушка,

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

БД - Оракл но хотелось бы механизм универсальный который легко переделать и для других СУБД потому что источники разные.Если нужен универсальный механизм без триггеров, то это нужно брать промышленный CDC. Например, GoldenGate (поддерживает Oracle, MySQL, MSSQL, DB2, Sybase, Cassandra)
...
Рейтинг: 0 / 0
01.06.2018, 15:32
    #39654069
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
akaipbay,

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

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

и еще раз повторю, без специфичных для БД вещей, шерстить источники и цели будете постоянно
...
Рейтинг: 0 / 0
01.06.2018, 16:29
    #39654109
Sintetik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
akaipbayShIgor,

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

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

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

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

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

Хер его знает, правильно не правильно, поэтому и спрашиваю
если будете хранить всю историю изменений, то нужно просто всасывать на ХД эту таблицу, применять изменения, в исходной ставить флаг, что забрали успешно
если истории нет, то попадалово, нужно тащить всю исходную таблицу на ХД и full outer, я встречал такие решения, причем на приличных объемах 500гиг в день, но тащили в ХД не с боя, а со стенбая. Ограничения те же, проприетарная система, менять ничего нельзя, журналирование включать нельзя, а без него CDC не работают.
...
Рейтинг: 0 / 0
04.06.2018, 13:18
    #39654849
Гулин Федор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
akaipbayShIgor,

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

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

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

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

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

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

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

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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE dlt_Problem (
    id              BIGINT        NOT NULL
	, hash_record 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 таблицы

зы если бы была куча таблиц - не знаю стал бы юзать сей подход
...
Рейтинг: 0 / 0
06.06.2018, 06:48
    #39656056
akaipbay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
Alexander Ryndin,

Конечно это в идеале, но руководство бичует и загрызет за каждую копейку)
...
Рейтинг: 0 / 0
06.06.2018, 06:52
    #39656057
akaipbay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
ShIgor,

Да согласен, тут один мужик посоветовал включить матвью логи на таблицу источник а потом копаться в этих логах и фиксировать изменения, но боюсь что на нон-оракл базы это не прокатит
...
Рейтинг: 0 / 0
06.06.2018, 06:56
    #39656059
akaipbay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
Sintetik,

как раз истории и нету) а можете привести пример с этим full outer, а то уж совсем время поджимает?
...
Рейтинг: 0 / 0
06.06.2018, 06:57
    #39656060
akaipbay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
Гулин Федор,

Блин чето геморно, у меня таблиц хер его туча(
...
Рейтинг: 0 / 0
06.06.2018, 09:45
    #39656136
Полковник.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
akaipbayГулин Федор,

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

Пиши робота, который на основе метаданных, таблицы метаданных я надеюсь у тебя есть в ХД, будет генерить тебе динамический код, запусти в цикле в будет тебе счастье.
...
Рейтинг: 0 / 0
06.06.2018, 12:20
    #39656325
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
Полковник.akaipbayГулин Федор,

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

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

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

В общем, коллеги, вы сами себе пилите сук, на котором сидите. Когда вы говорите заказчикам ХД - "сейчас робот пробежит и все сам сделает", возникает вопрос - а зачем вам столько денег платить, когда достаточно взять студента, умеющего запускать такого робота.
...
Рейтинг: 0 / 0
06.06.2018, 12:22
    #39656328
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
akaipbayПодскажите есть ли у кого нибудь готовый механизм для CDC (пакеты, процедуры)?
Наверняка у кого-то есть. Наверняка у многих. И наверняка эти люди - высококвалифицированные - не очень хотят, чтобы заготовки, которые ИМ облегчают жизнь, попали в руки людей, которые мечтают сократить им зарплату и премии и повысить конкуренцию в их среде. Все в этом мире IT в конечном итоге упирается в деньги. Вот такой циничный расклад.
...
Рейтинг: 0 / 0
27.07.2018, 12:01
    #39680099
kaldorey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
Andy_OLAP,

Самое интересное, что при реализации такого механизма можно начинать решать более интересные задачи. На прошлой работе такой механизм делали на пентахе - там надо было только понимать, каким способом таблицу забирать, full, increment - могут ли быть удаления строк, указываешь все это - и автоматом создавалось, грузилось и обновлялось. С удалением строк все похуже, приходилось выяснять, какой давности строки могут быть удалены, и перезагружать раз в период данные.
А прикол в том, что даже для внедрения GG придется кучу работы проводить, кроме интеграции надо каждую таблицу под требования подводить. Для немасштабных задач проще согласовать, чтобы поле для инкремента появилось, раз так и так работы проводить
...
Рейтинг: 0 / 0
27.07.2018, 13:01
    #39680163
Alexander Ryndin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
kaldoreyAndy_OLAP,

Самое интересное, что при реализации такого механизма можно начинать решать более интересные задачи. На прошлой работе такой механизм делали на пентахе - там надо было только понимать, каким способом таблицу забирать, full, increment - могут ли быть удаления строк, указываешь все это - и автоматом создавалось, грузилось и обновлялось. С удалением строк все похуже, приходилось выяснять, какой давности строки могут быть удалены, и перезагружать раз в период данные.
А прикол в том, что даже для внедрения GG придется кучу работы проводить, кроме интеграции надо каждую таблицу под требования подводить. Для немасштабных задач проще согласовать, чтобы поле для инкремента появилось, раз так и так работы проводитьЭм... А что для GG делать то надо?
...
Рейтинг: 0 / 0
27.07.2018, 13:37
    #39680198
kaldorey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
Alexander Ryndin,

Например, чтобы на каждой реплицируемой таблице был PK - это конечно и так желательно, но часто бывает, что и не подозреваешь, на скольки таблицах этого таки нет. Почему бы заодно и инкрементное поле не навесить?
Также при установке на продуктив надо быть уверенными, что места для хранения файлов хватит и они правильно удаляются по завершении timelive и сервер не навернется в один момент.
А еще, если вдруг захочешь таблицу с историчностью сохранять, а не полную реплику делать, то надо будет думать над схлопыванием изменений строки в рамках одной транзакции, когда несколько изменений под одним scn проходят.
Но опыт был единичный, не исключено, что все гораздо легче, или после пары лет порог вхождения снизился.
Резюмируя, делаю вывод, что копирнуть и обновлять табличку, используя простые запросы, что важно при большом разнообразии источников, гораздо быстрее и легче, GG же стоит юзать, когда есть критичность в производительности системы источника, пропускной способности и необходимости realtime
...
Рейтинг: 0 / 0
27.07.2018, 15:30
    #39680252
Alexander Ryndin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
kaldoreyAlexander Ryndin,

Например, чтобы на каждой реплицируемой таблице был PK - это конечно и так желательно, но часто бывает, что и не подозреваешь, на скольки таблицах этого таки нет. Почему бы заодно и инкрементное поле не навесить?
Также при установке на продуктив надо быть уверенными, что места для хранения файлов хватит и они правильно удаляются по завершении timelive и сервер не навернется в один момент.
А еще, если вдруг захочешь таблицу с историчностью сохранять, а не полную реплику делать, то надо будет думать над схлопыванием изменений строки в рамках одной транзакции, когда несколько изменений под одним scn проходят.
Но опыт был единичный, не исключено, что все гораздо легче, или после пары лет порог вхождения снизился.
Резюмируя, делаю вывод, что копирнуть и обновлять табличку, используя простые запросы, что важно при большом разнообразии источников, гораздо быстрее и легче, GG же стоит юзать, когда есть критичность в производительности системы источника, пропускной способности и необходимости realtime1) Можно и без PK. Особенно, если вам нужна просто история.
2) Файлы можно не приземлять на проде. Сразу настраиваете передачу в RMTTRAIL. Следить за их удалением может сам GG
3) Изменения схлопывать в рамках одной транзакции... Да, наверное. Но зато вы получаете полную историю. А как сделать полную историю (да и вообще историю) без парсинга логов? Триггеры вешать, которые всю строку откладывают в соседнюю таблицу? Это жестко.

По поводу того, где использовать GG... ну да, его нужно использовать в этих кейсах
...
Рейтинг: 0 / 0
28.07.2018, 09:22
    #39680499
Полковник.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDC решение
Andy_OLAPПолковник.пропущено...


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

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

В общем, коллеги, вы сами себе пилите сук, на котором сидите. Когда вы говорите заказчикам ХД - "сейчас робот пробежит и все сам сделает", возникает вопрос - а зачем вам столько денег платить, когда достаточно взять студента, умеющего запускать такого робота.

Знаешь чем отличается инженер от работяги? Инженер сначала строит экскаватор а потом копает им яму за час, а работяга берет лопату и сразу начинает копать и копает ее два месяца. Что лучше?

Когда в ХД пара тысяч таблиц а не пара таблиц, то только робот спасет положение, если ты будешь лепить пару тысяч трансформаций то сколько же в них будет человеческого фактора, сколько это отлаживать нужно?
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / CDC решение / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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