Як пасябраваць банкаўскую сістэму Progress OpenEdge і СКБД Oracle

З 1999 года для абслугоўвання бэк-офіса ў нашым банку выкарыстоўваецца інтэграваная банкаўская сістэма БІСКВІТ на платформе Progress OpenEdge, якая дастаткова шырока выкарыстоўваецца ва ўсім свеце, у тым ліку і ў фінансавым сектары. Прадукцыйнасць дадзенай СКБД дазваляе чытаць да мільёна і больш запісаў у секунду ў адной базе базы даных (БД). У нас Progress OpenEdge абслугоўвае каля 1,5 млн дэпазітаў фізічных асоб і каля 22,2 дагавораў па актыўных прадуктах (аўтакрэдыты і іпатэка), а таксама адказвае за ўсе разлікі з рэгулятарам (ЦБ) і SWIFT.

Як пасябраваць банкаўскую сістэму Progress OpenEdge і СКБД Oracle

Выкарыстоўваючы Progress OpenEdge, мы сутыкнуліся з тым, што нам неабходна пасябраваць яе з СКБД Oracle. Першапачаткова гэты звязак быў «бутэлькавым горлышкам» нашай інфраструктуры – да таго часу, пакуль мы не ўсталявалі і не наладзілі Pro2 CDC – прадукт Progress, які дазваляе адпраўляць дадзеныя з СКБД Progress у СКБД Oracle напрамую, у анлайн-рэжыме. У гэтым пасце мы падрабязна, са ўсімі падводнымі камянямі распавядзем, як эфектыўна пасябраваць OpenEdge і Oracle.

Як усё было: заліванне дадзеных у КХД праз файлавы абмен

Для пачатку крыху фактаў аб нашай інфраструктуры. Колькасць актыўных карыстальнікаў базы складае прыкладна 15 тысяч. Аб'ём усіх прадуктыўных баз дадзеных, уключаючы рэпліку і стэндбай, – 600 TB, самая буйная БД – 16,5 TB. Пры гэтым базы ўвесь час папаўняюцца: толькі за апошні год дадалося каля 120 TB прадуктыўных дадзеных. Працу сістэмы забяспечваюць 150 фронт-сервераў на платформе x86. БД размяшчаюцца на 21 серверы платформы IBM.

Як пасябраваць банкаўскую сістэму Progress OpenEdge і СКБД Oracle
Фронт-сістэмы, розныя АБС і банкаўскія сэрвісы інтэгруюцца з OpenEdge Progress (ІБС БІСКВІТ) праз шыну Sonic ESB. Выгрузка дадзеных у КХД адбываецца праз файлавы абмен. Такое рашэнне да вызначанага моманту часу мела адразу дзве вялікія праблемы – нізкую прадукцыйнасць выгрузкі інфармацыі ў карпаратыўнае сховішча дадзеных (КХД) і працяглы час выканання зверкі дадзеных (рэкансіляцыі) з іншымі сістэмамі.
Як пасябраваць банкаўскую сістэму Progress OpenEdge і СКБД Oracle
Таму мы пачалі шукаць інструмэнт, які мог бы гэтыя працэсы паскорыць. Рашэннем абедзвюх праблем як раз і стаў новы прадукт Progress OpenEdge - Pro2 CDC (Change Data Capture). Такім чынам, пачнем.

Усталёўваны Progress OpenEdge і Pro2Oracle

Для працы Pro2 Oracle на Windows-кампутары адміністратара досыць усталяваць Progress OpenEdge Developer Kit Classroom Edition, які можна спампаваць бясплатна. Інсталяцыйныя каталогі OpenEdge па змаўчанні:

DLC: C:ProgressOpenEdge
WRK: C:OpenEdgeWRK

Для ETL-працэсаў неабходныя ліцэнзіі Progress OpenEdge версіі 11.7/4 + – а менавіта OE DataServer for Oracle і 2GL Development System. У камплект пастаўкі ProXNUMX гэтыя ліцэнзіі ўваходзяць. Для паўнавартаснай працы DataServer for Oracle з выдаленай базай дадзеных Oracle усталёўваецца Full Oracle Client.

На серверы Oracle трэба ўсталяваць версію Oracle Database 12+, стварыць пустую базу дадзеных і дадаць карыстальніка (назавём яго CDC).

Для ўсталёўкі Pro2Oracle спампоўваем свежы дыстрыбутыў з цэнтра загрузкі Праграмнае забеспячэнне Прагрэс. Распакоўваем архіў у каталог C:Pro2 (для налады Pro2 у Unix выкарыстоўваецца той жа самы дыстрыбутыў і ўжываюцца такія ж прынцыпы налады).

Стварэнне рэплікацыйнай базы даных cdc

Рэплікацыйная база дадзеных cdc (repl) выкарыстоўваецца Pro2 для захоўвання канфігурацыйнай інфармацыі, у тым ліку рэплікацыйнай карты, назваў рэплікаваных баз дадзеных і іх табліц. Тут таксама змяшчаецца рэплікацыйная чарга, якая складаецца з нататак аб факце змены радка табліцы ў зыходнай базе дадзеных. Дадзеныя з рэплікацыйнай чаргі выкарыстоўваюцца ETL-працэсамі для ідэнтыфікацыі радкоў, якія неабходна скапіяваць у Oracle з зыходнай базы дадзеных.

Ствараем асобную базу cdc.

Парадак дзеянняў для стварэння базы

  1. На серверы баз дадзеных ствараем каталог для бд cdc - напрыклад, на серверы /database/cdc/.
  2. Ствараем пустышку для базы cdc: procopy $DLC/empty cdc
  3. Уключаем падтрымку вялікіх файлаў: proutil cdc -C EnableLargeFiles
  4. Падрыхтоўваем скрыпт старту базы дадзеных CDC. Параметры старту павінны быць аналагічныя параметрам старту базы дадзеных, якая рэплікуецца.
  5. Выконваем старт базы даных cdc.
  6. Падлучаемся да базы дадзеных cdc і загружаны схему Pro2 з файла cdc.df, Якая ўваходзіць у камплект пастаўкі Pro2.
  7. У базе дадзеных cdc ствараем наступных карыстальнікаў:

pro2adm - для падлучэння з адміністрацыйнай панэлі Pro2;
pro2etl - для падлучэння ETL-працэсаў (ReplBatch);
pro2cdc - для падлучэння CDC-працэсаў (CDCBatch);

Актывацыя OpenEdge Change Data Capture

Цяпер зоймемся уключэннем самага механізму CDC, з дапамогай якога дадзеныя будуць рэпліцыравацца ў дадатковую тэхналагічную вобласць. У кожную зыходную базу дадзеных Progress OpenEdge неабходна дадаць асобныя вобласці захоўвання, у якія будуць дублявацца зыходныя дадзеныя, і актываваць сам механізм з дапамогай каманды proutil.

Парадак дзеянняў на прыкладзе для базы даных bisquit

  1. Капіяваны з каталога C:Pro2db файл cdcadd.st у каталог зыходнай базы дадзеных bisquit.
  2. Апісваем у cdcadd.st экстэнты фіксаванага памеру для абласцей "ReplCDCArea" и "ReplCDCArea_IDX". Дадаваць новыя вобласці захоўвання можна ў анлайне: prostrct addonline bisquit cdcadd.st
  3. Актывуем OpenEdge CDC:
    proutil bisquit -C enablecdc area "ReplCDCArea" indexarea "ReplCDCArea_IDX"
  4. У зыходнай базе дадзеных неабходна стварыць наступных карыстальнікаў для ідэнтыфікацыі працуючых працэсаў:
    a. pro2adm - для падлучэння з адміністрацыйнай панэлі Pro2.
    b. pro2etl - для падлучэння ETL-працэсаў (ReplBatch).
    c. pro2cdc - для падлучэння CDC-працэсаў (CDCBatch).

Стварэнне Schema Holder для DataServer for Oracle

Далей нам неабходна на серверы, дзе будуць рэпліцыравацца дадзеныя з СКБД Progress у СКБД Oracle, стварыць базу Sсhema Holder. DataServer Sсhema Holder - гэта пустая база дадзеных Progress OpenEdge без карыстачоў або прыкладных дадзеных, утрымоўвальная карту адпаведнікаў зыходных табліц і вонкавых, араклавых табліц.

База Schema Holder для Progress OpenEdge DataServer для Oracle для Pro2 павінна размяшчацца на серверы ETL-працэсаў, яна ствараецца асобна для кожнага філіяла.

Як стварыць Schema Holder

  1. Які распакоўваецца дыстрыбутыў Pro2 у каталог /pro2
  2. Ствараем і пераходзім у каталог /pro2/dbsh
  3. Ствараем базу дадзеных Schema Holder з дапамогай каманды procopy $DLC/empty bisquitsh
  4. Выконваем канвертаванне bisquitsh у неабходную кадоўку — напрыклад у UTF-8 калі базы дадзеных Oracle маюць кадоўку UTF-8: proutil bisquitsh -C convchar convert UTF-8
  5. Пасля стварэння пусты базы дадзеных bisquitsh падлучаемся да яе ў аднакарыстальніцкім рэжыме: pro bisquitsh
  6. Пераходзім у Data Dictionary: Tools -> Data Dictionary -> DataServer -> ORACLE Utilities -> Create DataServer Schema
  7. Запускаем Schema Holder
  8. Наладжваем брокера Oracle DataServer:
    a. Старт AdminServer.
    proadsv -start
    b. Старт брокера Oracle DataServer
    oraman -name orabroker1 -start

Наладжваем адміністрацыйную панэль і рэплікацыйную схему

З дапамогай адміністрацыйнай панэлі Pro2 канфігуруюцца параметры Pro2, уключаючы настройку рэплікацыйнай схемы і генерацыю праграм ETL-працэсаў (Processor Library), праграмы першаснай сінхранізацыі (Bulk-Copy Processor), рэплікацыйныя трыгеры і палітыкі OpenEdge CDC. Тут таксама ёсць першасныя сродкі маніторынгу і кіравання ETL-і CDC-працэсамі. Перш за ўсё наладжваем файлы параметраў.

Як наладзіць файлы параметраў

  1. Пераходзім у каталог C:Pro2bpreplScripts
  2. Адкрываем на рэдагаванне файл replProc.pf
  3. Дадаем параметры падлучэння да рэплікацыйнай базы дадзеных cdc:
    # Replication Database
    -db cdc -ld repl -H <імя хаста асноўных БД> -S <порт брокера БД cdc>
    -U pro2admin -P <пароль>
  4. Дадамо ў replProc.pf параметры падлучэння да зыходных баз дадзеных і Schema Holder у выглядзе файлаў параметраў. Назва файла параметраў павінна адпавядаць назве падключанай зыходнай базы дадзеных.
    # Connect to all replicated source BISQUIT
    -pf bpreplscriptsbisquit.pf
  5. Дадамо ў replProc.pf параметры падлучэння да Sсhema Holder.
    #Target Pro DB Schema Holder
    -db bisquitsh -ld bisquitsh
    -H <імя хаста ETL-працэсаў>
    -S <порт брокера biskuitsh>
    -db bisquitsql
    -ld bisquitsql
    -dt ORACLE
    -S 5162 -H <імя хаста брокера Oracle>
    -DataService orabroker1
  6. Захоўваем файл параметраў replProc.pf
  7. Далей трэба стварыць і адкрыць на рэдагаванне файлы параметраў для кожнай падключанай зыходнай базы дадзеных у каталогу C:Pro2bpreplScripts: bisquit.pf. У кожным pf-файле прапісваюцца параметры падлучэння да адпаведнай базы дадзеных, напрыклад:
    -db bisquit -ld bisquit -H <імя хаста> -S <порт брокера>
    -U pro2admin -P <пароль>

Для настройкі цэтлікаў Windows трэба перайсці ў каталог C:Pro2bpreplScripts і адрэдагаваць ярлык "Pro2 - Administration". Для гэтага адкрыем уласцівасці ярлыка і ў радку Пачніце ў пакажам інсталяцыйны каталог Pro2. Аналагічную аперацыю трэба зрабіць для цэтлікаў "Pro2 – Editor" і "RunBulkLoader".

Настройка Pro2 Administration: загрузка першаснай канфігурацыі

Запускаем кансоль.

Як пасябраваць банкаўскую сістэму Progress OpenEdge і СКБД Oracle

Пераходзім у "DB Map".

Як пасябраваць банкаўскую сістэму Progress OpenEdge і СКБД Oracle

Каб звязаць базы дадзеных у Pro2 - Administration, пераходзім на ўкладку DB Map. Дадаем мапінг зыходных баз дадзеных - Schema Holder - Oracle.

Як пасябраваць банкаўскую сістэму Progress OpenEdge і СКБД Oracle

Пераходзім на ўкладку Карт. У спісе Зыходная база даных па змаўчанні абрана першая падлучаная зыходная база дадзеных. Справа ад спісу павінен быць надпіс All Databases Connected - Выбраныя базы падлучаныя. Ніжэй злева павінен быць бачны спіс табліц Progress з bisquit. Справа - спіс табліц з базы Oracle.

Ствараем SQL-схемы і базы дадзеных у Oracle

Для стварэння рэплікацыйнай карты трэба спачатку згенераваць SQL-схему у Oracle. У Pro2 Administration выконваем пункт меню Tools -> Generate Code -> Target Schema, затым у дыялогавым акне Абярыце База дадзеных вылучаем адну ці некалькі зыходных баз дадзеных і пераносім іх направа.

Як пасябраваць банкаўскую сістэму Progress OpenEdge і СКБД Oracle

Націскаем OK і выбіраемы каталог для захавання SQL-схем.

Далей ствараем базу. Гэта можна зрабіць, напрыклад, праз Распрацоўшчык Oracle SQL. Для гэтага падлучаемся да араклавай базы і загружаем схему для дадання табліц. Пасля змены складу табліц Oracle трэба абнавіць SQL-схемы ў Schema Holder.

Як пасябраваць банкаўскую сістэму Progress OpenEdge і СКБД Oracle

Пасля паспяховага завяршэння загрузкі выходзім з БД bisquitsh і адчыняны адміністрацыйную панэль Pro2. На ўкладцы Mapping справа павінны з'явіцца табліцы з базы Oracle.

Мапінг табліц

Для стварэння рэплікацыйнай карты ў адміністрацыйнай панэлі Pro2 ідзем на ўкладку Mapping, выбіраемы зыходную базу дадзеных. Клікаем па Map Tables, вылучаем злева Select Changes табліцы, якія павінны рэпліцыравацца ў Oracle, пераносім іх направа і пацвярджаем выбар. Для выбраных табліц карта будзе створана аўтаматычна. Паўтараем аперацыю для стварэння рэплікацыйнай карты для іншых зыходных БД.

Як пасябраваць банкаўскую сістэму Progress OpenEdge і СКБД Oracle

Генерацыя бібліятэкі працэсара рэплікацыі Pro2 і праграм працэсара масавай загрузкі (Bulk-Copy)

Бібліятэка працэсара рэплікацыі (Processor Library) прызначаная для адмысловых рэплікацыйных працэсаў (ETL), якія апрацоўваюць рэплікацыйную чаргу Pro2 і перадаюць змены ў базу дадзеных Oracle. Праграмы бібліятэкі працэсара рэплікацыі пасля генерацыі аўтаматычна захоўваюцца ў каталог bprepl/repl_proc (параметр PROC_DIRECTORY). Для генерацыі бібліятэкі працэсара рэплікацыі ідзем у Tools -> Generate Code -> Processor Library. Пасля завяршэння генерацыі праграмы з'явяцца ў каталогу bprepl/repl_proc.

Праграмы працэсара масавай загрузкі прымяняюцца для сінхранізацыі зыходных баз дадзеных Progress з мэтавай базай дадзеных Oracle на аснове мовы праграмавання Progress ABL (4GL). Для іх генерацыі ідзем у пункт меню Tools -> Generate Code -> Bulk-Copy Processor. У дыялогавым акне Select Database вылучаем зыходныя БД, пераносім у правую частку акна і ціснем OK. Пасля завяршэння генерацыі праграмы з'явяцца ў каталогу bpreplrepl_mproc.

Наладжваем рэплікацыйныя працэсы ў Pro2

Падзел табліц на наборы, якія абслугоўваюцца асобным струменем рэплікацыі, дазваляе палепшыць прадукцыйнасць і эфектыўнасць працы Pro2 Oracle. Па змаўчанні ўсе сувязі, якія ствараюцца ў рэплікацыйнай карце, для новых рэплікацыйных табліц прывязваюцца да патоку з нумарам 1. Рэкамендуецца падзяляць табліцы на розныя патокі.

Інфармацыя аб стане рэплікацыйных патокаў адлюстроўваецца на экране Pro2 Administration ва ўкладцы Monitor у секцыі Replication Status. Падрабязнае апісанне значэнняў параметраў можна знайсці ў дакументацыі Pro2 (каталог C: Pro2Docs).

Ствараем і актывуем палітыкі CDC

Палітыкі - гэта набор правілаў для механізму OpenEdge CDC, паводле якіх выконваецца адсочванне змен у табліцах. На момант напісання паста Pro2 падтрымлівае толькі палітыкі CDC з узроўнем 0, гэта значыць адсочваецца толькі факт змены запісу.

Для стварэння палітыкі CDC на адміністрацыйнай панэлі пераходзім на ўкладку Mapping, выбіраемы зыходную базу дадзеных і пстрыкаем па кнопцы Add/Remove Policies. У якое адкрылася акне Select Changes выбіраемы ў левай частцы і пераносім у правую табліцы, для якіх неабходна стварыць або выдаліць палітыку CDC.

Для актывацыі зноў адчыняны ўкладку Mapping, выбіраемы зыходную базу дадзеных і клікаем па кнопцы (In)Activate Policies. Вылучаем і пераносім у правую частку табліцы, палітыкі якіх неабходна актываваць, ціснем OK. Пасля гэтага яны адзначаюцца зялёным колерам. З дапамогай (In)Activate Policies таксама можна дэактываваць палітыкі CDC. Усе аперацыі выконваюцца анлайн.

Як пасябраваць банкаўскую сістэму Progress OpenEdge і СКБД Oracle

Пасля актывацыі палітыкі CDC нататкі аб змененых запісах захоўваюцца ў вобласць захоўвання "ReplCDCArea" у адпаведнасці з зыходнай базай дадзеных. Гэтыя нататкі будуць апрацоўвацца спецыяльным працэсам CDCBatch, які на іх аснове будзе ствараць нататкі ў рэплікацыйнай чарзе Pro2 у базе дадзеных cdc (repl).

Такім чынам, на рэплікацыю ў нас утвараюцца дзве чаргі. Першая чарга - CDCBatch: з зыходнай базы дадзеныя спачатку трапляюць у прамежкавую базу CDC. Другая чарга - калі з базы CDC дадзеныя пераліваюцца ўжо ў Oracle. Гэта асаблівасць бягучай архітэктуры і самога прадукта - пакуль распрацоўшчыкі не змаглі наладзіць прамую рэплікацыю.

Першасная сінхранізацыя

Пасля ўключэння механізму CDC і налады сервера рэплікацыі Pro2 нам неабходна запусціць першасную сінхранізацыю. Каманда запуску першаснай сінхранізацыі:

/pro2/bprepl/Script/replLoad.sh bisquit table-name

Пасля завяршэння першаснай сінхранізацыі, можна запускаць рэплікацыйныя працэсы.

Старт рэплікацыйных працэсаў

Для запуску рэплікацыйных працэсаў трэба выканаць скрыпт replbatch.sh. Перад стартам - пераканацца ў наяўнасці скрыптоў replbatch для ўсіх патокаў - replbatch1, replbatch2 і г.д. Калі ўсё на месцы, адкрываем камандны радок (напрыклад, proenv), пераходзім у каталог /bprepl/scripts і выконваем старт скрыпту. У адміністрацыйнай панэлі правяраем, што які адпавядае працэс атрымаў статут RUNNING.

Як пасябраваць банкаўскую сістэму Progress OpenEdge і СКБД Oracle

Вынікі

Як пасябраваць банкаўскую сістэму Progress OpenEdge і СКБД Oracle
Пасля ўкаранення ў нас моцна паскорылася выгрузка інфармацыі ў карпаратыўнае сховішча дадзеных. Дадзеныя самастойна трапляюць у Oracle у рэжыме анлайн. Не трэба марнаваць час на выкананне нейкіх доўгайграючых запытаў для збору дадзеных з розных сістэм. Да таго ж у гэтым рашэнні працэс рэплікацыі ўмее сціскаць дадзеныя, што таксама дадатна адбіваецца на хуткасці. Цяпер штодзённая зверка сістэмы БІСКВІТ з іншымі сістэмамі стала займаць 15-20 хвілін замест 2-2,5 гадзін, а поўная зверка - некалькі гадзін замест двух сутак.

Крыніца: habr.com

Дадаць каментар