Откриването на допълнения и актуализации на таблици на база данни за репликация на данни, ETL, маскиране на PII и други дейности по постепенно движение и манипулиране на данни може да бъде автоматизирано в работните потоци на IRI Voracity, проектирани и изпълнявани в IRI Workbench (WB). Тази статия обяснява как редовно да проверявате за промени в изходните таблици на Oracle, за да решите кога да преместите данни в цел на MongoDB.
Промените могат да бъдат заредени в различни бази данни или файлове, като се използва команден файл или шел скрипт. Това може да се направи с помощта на времева марка и специфични полета в изходната таблица. Проверката за грешки е включена и може да се реагира.
Този пример ще бъде създаден и стартиран на машина с Windows; обаче може лесно да се модифицира, за да работи на платформа като Linux или Unix.
Създаването на пакетния файл е лесно с помощта на диаграма на потока на Voracity в WB. В този пример изходната таблица съдържа колони с име CREATION_DATE и UPDATE_DATE които са важни в тази работа.
Изображението по-долу показва стъпките, които се съдържат в пакетния файл. За да обобщим:
- заданието се изпълнява в определена директория
- променлива на средата се задава с помощта на времевата марка на последното изпълнение на заданието
- текущият времеви печат се записва
- текущите промени се улавят
- нивото на грешката се проверява и се предприема действия, ако е успешно или не
- текущата дата за време замества последното клеймо за време на изпълнение
- променените данни се преобразуват в CSV
- възниква спиране, за да се изчака съществуването на последния файл
- CSV файлът се импортира в MongoDB
- нивото на грешката е проверено, текущият файл е съкратен
- файлът с промените е изтрит
Всеки блок задачи в работния поток е обяснен по-долу. За инструкции за изграждане на работни потоци на Voracity от палитрата вижте тази статия.
Промяна на директория
Този блок променя текущата работна директория в посочената.
Задайте ПОСЛЕДНО ВРЕМЕ
Този блок на командния ред задава променлива на средата, наречена LASTTIME . Стойността, зададена на променливата, е съдържанието на файла LastTime.txt . Печатът за време в този файл е клеймото за време, което е записано по време на последното изпълнение на това задание. Ако това е първото стартиране, този файл ще трябва да бъде направен ръчно с произволно времево клеймо, датирано преди изпълнението на тази задача.
Timestamp.scl
Този блок за трансформация използва програмата CoSort SortCL в Voracity, за да отправи заявка към изходната база данни за текущото време. Това клеймо за време се записва във файл, наречен LastTimeTemp.txt . Причината да се съхранява във временен файл е така, че както текущото, така и последното времеви печати могат да бъдат запазени, докато не настъпи проверка за грешка.
Важно е времевата марка да идва от базата данни, а не от локалната машина. Това избягва проблеми, при които базата данни и средата за изпълнение не са синхронизирани.
Changes.scl
Този блок за трансформация прави няколко неща. По-долу е показана диаграма на трансформиране на картографиране за този блок. Входът е изходната таблица, а изходът е файлът current.txt .
Във входните Опции на раздел, се изпраща заявка към изходната таблица за всички записи, които имат CREATION_DATE или UPDATE_DATE по-голямо от променливата на средата LASTTIME .
Докато изходът изглежда има две цели, данните всъщност се добавят към един и същ файл с помощта на две различни условия. В първия изходен раздел има Включване оператор, който намира всички записи, които имат CREATION_DATE по-голямо от ПОСЛЕДНО ВРЕМЕ . Има и допълнително изходно поле, наречено CDC_TYPE . Низът „CREATE“ се записва в това ново поле.
Във втория изходен раздел, Включи оператор намира всички записи, които имат UPDATE_DATE по-голямо от ПОСЛЕДНО ВРЕМЕ и където CREATION_DATE не е равно на UPDATE_DATE. Това гарантира, че новосъздадените файлове не са включени в този пропуск. Низът „UPDATE“ е записан в CDC_TYPE.
Грешка CoSort
Този блок за решение проверява променливата ERRORLEVEL за да се уверите, че е върнал 0 (или успех) след изпълнение на CoSort заданието по-горе. Ако не е, задачата продължава до ИЗХОД блок, където работата е прекратена. Ако върне истината, задачата продължава към следващия блок.
Преименуване на LastTimeTemp
Този команден блок копира съдържанието на LastTimeTemp.txt в LastTime.txt. Това записва по-рано заснетото текущо времево клеймо във файла, което да се използва за следващото изпълнение на задание.
Convert.scl
Този блок за трансформиране приема current.txt и го преобразува в changes.csv . Преобразуването е от типа файл с разделители по подразбиране в CSV. Използването на типа CSV процес в CoSort добавя заглавен ред към изходния файл, използвайки имената на полетата. Това е блокът със задачи, където мога да приложа други манипулации (като маскиране на данни) към данните, ако пожелая.
Изчакайте файлове
Този блок за изчакване спира пакетния файл за 3 секунди и след това проверява за съществуването на changes.csv файл, преди да продължите.
MongoImport
Този команден блок изпълнява командата mongoimport, използвайки параметрите, посочени в изгледа на свойствата, както е показано по-долу.
Параметрите показват, че базата данни MongoDB се нарича fnx трябва да се зареди със съдържанието на файла changes.csv който е от типа csv и съдържа заглавие който дефинира полетата.
Имайте предвид, че Voracity поддържа други методи за преместване и манипулиране на данни на MongoDB. Вижте този пример за използване на драйвери на Progress ODBC за маскиране на данни с помощта на вградени функции „FieldShield“. Voracity също може да обработва BSON данни директно чрез API чрез /PROCESS=MongoDB поддръжка в CoSort v10 вече също.
Грешка при зареждане
Този блок за решение проверява променливата ERRORLEVEL за да се уверите, че е върнал 0 (или успех) след импортиране в MongoDB. Ако не е, задачата продължава към Изтриване-Промени и ИЗХОД блокове, където работата е прекратена. Ако върне истината, задачата продължава към следващия блок.
Отрязване на текущия
Този команден блок съкращава файла current.txt . Това е за изчистване на записите, които са били заредени в MongoDB. Ако импортирането е неуспешно и блокът по-горе излезе от заданието, тогава тези променени записи се добавят към следващото преминаване. След това, когато работата се повтаря, те ще бъдат заредени в MongoDB със следващата група от променени записи.
Изтриване на промените
Този команден блок изтрива changes.csv така че следващото преминаване да започне с новосъздадения файл за пропуска.
Пакетен файл
Пакетният файл и скриптовете за трансформация се създават, когато диаграмата на потока се експортира. Копие на пакетния файл е по-долу. Всеки блок добавя изпълними редове към пакетния файл.
Планировчик на задачи
С помощта на Windows Task Scheduler този пакетен файл може да се изпълнява многократно, за да се уловят промените в изходната база данни.
Заключение
С малко планиране и използване на командни блокове, промените в таблицата на базата данни могат да бъдат открити автоматично с помощта на пакетен файл и след това да бъдат планирани за изпълнение на избрани интервали.
Свържете се с [email protected] или с вашия представител на IRI за повече информация или помощ с вашия случай на употреба
- Този подход се различава от базираните на регистрационни файлове решения за улавяне на промяна на данни, които обикновено имат тесни места в производителността и са ограничени до конкретни бази данни и не позволяват едновременна трансформация на данни, маскиране на лични данни, почистване , и отчитане.