|
|
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
Добрый день, Подскажите есть ли у кого нибудь готовый механизм для CDC (пакеты, процедуры)? Задача такая: Есть таблица Source_Table (операционная) есть копия этой таблицы с доп инфой Interface_Table (для ETL) на которую смотрит ХД и забирает данные с некоторой периодичностью. Как без тригеров, без специфичных CDC для БД, реализовать такой механизм загрузки между таблицами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 10:55 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
у Информатики, у Golden Gate есть - они читают лог и транслируют изменения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 11:01 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
Oracle Streams еще живы? GG специалисты знакомые хвалили. Но что они, что informatica - не очень дешевые решения, так скажем. С Уважением, Георгий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 11:10 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
Критик, ETL инструмента нету ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 11:47 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
akaipbayПодскажите есть ли у кого нибудь готовый механизм для CDC (пакеты, процедуры)? ... без специфичных CDC для БДу вас СУБД то какая? опять же что конкретно хотите, внешний ETL тулл или "на уровне процедур в БД"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 11:48 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
Стесняюсь спросить, а что в Microsoft SSIS механизмы CDC изъяли? И вроде нормальное описалово как все это правильно готовить у майкрософта имелось. Оно вроде с дистрибутива сиквел-сервера ставилось, но отдельно... нет? Да, нет, вроде в моей Visual Studio присутствует такой CDC Control Task. Похоже, все-таки не изъяли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 12:18 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
akaipbay, как вообще такое возможно без специфичных вещей для БД? тупо: поле last_update и забирай сам когда посчитаешь нужным. хотя по мне такое без триггера тоже как-то не по-себе, вдруг учетная система забудет в каком-то месте last_updat-нуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 12:38 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
Дедушка, Да на уровне процедур и джобов, без ETL туллов БД - Оракл но хотелось бы механизм универсальный который легко переделать и для других СУБД потому что источники разные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 13:29 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
ShIgor, А если last_update нет?) и тригеры нельзя использовать потому что все загнется Есть таблицы которые имеют ласт_апдейт но есть и которые емют просто ключи и писать для каждой таблицы свой ЕТЛ не вариант так как таблиц хер его туча. Пока в голову приходит мысль что нужно создать таблицу где хранится Таблица_Откуда, Таблица_Куда, Колонка_для_CDC, Последнее_Значение И написать одну процедуру которая берет и ложит. Хер его знает, правильно не правильно, поэтому и спрашиваю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 13:37 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
akaipbayДедушка, Да на уровне процедур и джобов, без ETL туллов БД - Оракл но хотелось бы механизм универсальный который легко переделать и для других СУБД потому что источники разные.Если нужен универсальный механизм без триггеров, то это нужно брать промышленный CDC. Например, GoldenGate (поддерживает Oracle, MySQL, MSSQL, DB2, Sybase, Cassandra) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 14:42 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
akaipbay, одной колонкой не обойдется. надо знать: "где" изменилось и "что" изменилось (или просто что-то изменилось) + в идеале причина изменений (Ins/Upd/Del), ну и без "когда" тоже мало толку теперь попробуйте написать свой собственный фреймворк для этого.. не имея специфичных для конкретной БД механизмов придется это все определять тупым сравнением двух наборов, источника и вот этой (выше) промежуточной информации.. или, что хуже, целевым набором на небольших объемах это все работать будет, проверено (у меня подобная задача есть, но я не могу контролировать источник - он сам пушит мне инфу, а я должен убедиться, что такой у меня нет, или есть подобная, но изменилась, и внести соотв изменения, но вот контроль удаления отсутствует вовсе) и еще раз повторю, без специфичных для БД вещей, шерстить источники и цели будете постоянно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 15:32 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
akaipbayShIgor, А если last_update нет?) и тригеры нельзя использовать потому что все загнется Есть таблицы которые имеют ласт_апдейт но есть и которые емют просто ключи и писать для каждой таблицы свой ЕТЛ не вариант так как таблиц хер его туча. Пока в голову приходит мысль что нужно создать таблицу где хранится Таблица_Откуда, Таблица_Куда, Колонка_для_CDC, Последнее_Значение И написать одну процедуру которая берет и ложит. Хер его знает, правильно не правильно, поэтому и спрашиваю если будете хранить всю историю изменений, то нужно просто всасывать на ХД эту таблицу, применять изменения, в исходной ставить флаг, что забрали успешно если истории нет, то попадалово, нужно тащить всю исходную таблицу на ХД и full outer, я встречал такие решения, причем на приличных объемах 500гиг в день, но тащили в ХД не с боя, а со стенбая. Ограничения те же, проприетарная система, менять ничего нельзя, журналирование включать нельзя, а без него CDC не работают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 16:29 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
akaipbayShIgor, А если last_update нет?) и тригеры нельзя использовать потому что все загнется Есть таблицы которые имеют ласт_апдейт но есть и которые емют просто ключи и писать для каждой таблицы свой ЕТЛ не вариант так как таблиц хер его туча. Пока в голову приходит мысль что нужно создать таблицу где хранится Таблица_Откуда, Таблица_Куда, Колонка_для_CDC, Последнее_Значение И написать одну процедуру которая берет и ложит. Хер его знает, правильно не правильно, поэтому и спрашиваю делал чего-то похоже для Частного случая мс-скл - но таблиц там было 5-6 (и они были по 5-10 миллионов - не такие большие ) создал отдельную БД - в ут писать нелья было в той БД создал синонимы Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. создал по процедуре для каждой таблицы - hash_record через CHECKSUM всех (ну или набора ) полей в строку через CAST геморно - но др.выбора не было зы там есть ид инкрементное - если бы не было апдейтов - было бы проще - хватило бы одной спец. таблицы но апдейты И делете есть и а даты посл. изменний увы нет и вызывал их в пакете SSIS - 1 пакет для 1 таблицы зы если бы была куча таблиц - не знаю стал бы юзать сей подход ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 13:18 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
Alexander Ryndin, Конечно это в идеале, но руководство бичует и загрызет за каждую копейку) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2018, 06:48 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
ShIgor, Да согласен, тут один мужик посоветовал включить матвью логи на таблицу источник а потом копаться в этих логах и фиксировать изменения, но боюсь что на нон-оракл базы это не прокатит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2018, 06:52 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
Sintetik, как раз истории и нету) а можете привести пример с этим full outer, а то уж совсем время поджимает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2018, 06:56 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
Гулин Федор, Блин чето геморно, у меня таблиц хер его туча( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2018, 06:57 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
akaipbayГулин Федор, Блин чето геморно, у меня таблиц хер его туча( Пиши робота, который на основе метаданных, таблицы метаданных я надеюсь у тебя есть в ХД, будет генерить тебе динамический код, запусти в цикле в будет тебе счастье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2018, 09:45 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
Полковник.akaipbayГулин Федор, Блин чето геморно, у меня таблиц хер его туча( Пиши робота, который на основе метаданных, таблицы метаданных я надеюсь у тебя есть в ХД, будет генерить тебе динамический код, запусти в цикле в будет тебе счастье. Вот эта вся автоматизация приведет к тому, что потом программистов, которые ETL делают вручную, смотрят таблицы, отбирают нужные столбцы и пишут код, сократят, наберут студентов, потом что-нибудь сломается, никто не будет понимать, как этот динамический код починить, а сроки внедрения будут поджимать, а клиенты таки очень переживать и грозить штрафами. Как говорят в таких случаях - "таблица таблице рознь" и "не спеши перекладывать на завтра то, что можно сделать послезавтра". В общем, коллеги, вы сами себе пилите сук, на котором сидите. Когда вы говорите заказчикам ХД - "сейчас робот пробежит и все сам сделает", возникает вопрос - а зачем вам столько денег платить, когда достаточно взять студента, умеющего запускать такого робота. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2018, 12:20 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
akaipbayПодскажите есть ли у кого нибудь готовый механизм для CDC (пакеты, процедуры)? Наверняка у кого-то есть. Наверняка у многих. И наверняка эти люди - высококвалифицированные - не очень хотят, чтобы заготовки, которые ИМ облегчают жизнь, попали в руки людей, которые мечтают сократить им зарплату и премии и повысить конкуренцию в их среде. Все в этом мире IT в конечном итоге упирается в деньги. Вот такой циничный расклад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2018, 12:22 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
Andy_OLAP, Самое интересное, что при реализации такого механизма можно начинать решать более интересные задачи. На прошлой работе такой механизм делали на пентахе - там надо было только понимать, каким способом таблицу забирать, full, increment - могут ли быть удаления строк, указываешь все это - и автоматом создавалось, грузилось и обновлялось. С удалением строк все похуже, приходилось выяснять, какой давности строки могут быть удалены, и перезагружать раз в период данные. А прикол в том, что даже для внедрения GG придется кучу работы проводить, кроме интеграции надо каждую таблицу под требования подводить. Для немасштабных задач проще согласовать, чтобы поле для инкремента появилось, раз так и так работы проводить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 12:01 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
kaldoreyAndy_OLAP, Самое интересное, что при реализации такого механизма можно начинать решать более интересные задачи. На прошлой работе такой механизм делали на пентахе - там надо было только понимать, каким способом таблицу забирать, full, increment - могут ли быть удаления строк, указываешь все это - и автоматом создавалось, грузилось и обновлялось. С удалением строк все похуже, приходилось выяснять, какой давности строки могут быть удалены, и перезагружать раз в период данные. А прикол в том, что даже для внедрения GG придется кучу работы проводить, кроме интеграции надо каждую таблицу под требования подводить. Для немасштабных задач проще согласовать, чтобы поле для инкремента появилось, раз так и так работы проводитьЭм... А что для GG делать то надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 13:01 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
Alexander Ryndin, Например, чтобы на каждой реплицируемой таблице был PK - это конечно и так желательно, но часто бывает, что и не подозреваешь, на скольки таблицах этого таки нет. Почему бы заодно и инкрементное поле не навесить? Также при установке на продуктив надо быть уверенными, что места для хранения файлов хватит и они правильно удаляются по завершении timelive и сервер не навернется в один момент. А еще, если вдруг захочешь таблицу с историчностью сохранять, а не полную реплику делать, то надо будет думать над схлопыванием изменений строки в рамках одной транзакции, когда несколько изменений под одним scn проходят. Но опыт был единичный, не исключено, что все гораздо легче, или после пары лет порог вхождения снизился. Резюмируя, делаю вывод, что копирнуть и обновлять табличку, используя простые запросы, что важно при большом разнообразии источников, гораздо быстрее и легче, GG же стоит юзать, когда есть критичность в производительности системы источника, пропускной способности и необходимости realtime ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 13:37 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
kaldoreyAlexander Ryndin, Например, чтобы на каждой реплицируемой таблице был PK - это конечно и так желательно, но часто бывает, что и не подозреваешь, на скольки таблицах этого таки нет. Почему бы заодно и инкрементное поле не навесить? Также при установке на продуктив надо быть уверенными, что места для хранения файлов хватит и они правильно удаляются по завершении timelive и сервер не навернется в один момент. А еще, если вдруг захочешь таблицу с историчностью сохранять, а не полную реплику делать, то надо будет думать над схлопыванием изменений строки в рамках одной транзакции, когда несколько изменений под одним scn проходят. Но опыт был единичный, не исключено, что все гораздо легче, или после пары лет порог вхождения снизился. Резюмируя, делаю вывод, что копирнуть и обновлять табличку, используя простые запросы, что важно при большом разнообразии источников, гораздо быстрее и легче, GG же стоит юзать, когда есть критичность в производительности системы источника, пропускной способности и необходимости realtime1) Можно и без PK. Особенно, если вам нужна просто история. 2) Файлы можно не приземлять на проде. Сразу настраиваете передачу в RMTTRAIL. Следить за их удалением может сам GG 3) Изменения схлопывать в рамках одной транзакции... Да, наверное. Но зато вы получаете полную историю. А как сделать полную историю (да и вообще историю) без парсинга логов? Триггеры вешать, которые всю строку откладывают в соседнюю таблицу? Это жестко. По поводу того, где использовать GG... ну да, его нужно использовать в этих кейсах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 15:30 |
|
||
|
CDC решение
|
|||
|---|---|---|---|
|
#18+
Andy_OLAPПолковник.пропущено... Пиши робота, который на основе метаданных, таблицы метаданных я надеюсь у тебя есть в ХД, будет генерить тебе динамический код, запусти в цикле в будет тебе счастье. Вот эта вся автоматизация приведет к тому, что потом программистов, которые ETL делают вручную, смотрят таблицы, отбирают нужные столбцы и пишут код, сократят, наберут студентов, потом что-нибудь сломается, никто не будет понимать, как этот динамический код починить, а сроки внедрения будут поджимать, а клиенты таки очень переживать и грозить штрафами. Как говорят в таких случаях - "таблица таблице рознь" и "не спеши перекладывать на завтра то, что можно сделать послезавтра". В общем, коллеги, вы сами себе пилите сук, на котором сидите. Когда вы говорите заказчикам ХД - "сейчас робот пробежит и все сам сделает", возникает вопрос - а зачем вам столько денег платить, когда достаточно взять студента, умеющего запускать такого робота. Знаешь чем отличается инженер от работяги? Инженер сначала строит экскаватор а потом копает им яму за час, а работяга берет лопату и сразу начинает копать и копает ее два месяца. Что лучше? Когда в ХД пара тысяч таблиц а не пара таблиц, то только робот спасет положение, если ты будешь лепить пару тысяч трансформаций то сколько же в них будет человеческого фактора, сколько это отлаживать нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2018, 09:22 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=39653817&tid=1857819]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
181ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 295ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...