Oracle-ден PostgreSQL-ге көшірудің жұмыс көлемін бағалау — бастамас бұрын
Oracle-ден PostgreSQL-ге көшірудің жұмыс көлемін бағалау: объектілерді инвентаризациялау әдісі, пакеттерді, триггерлерді және джобтарды баллдық бағалау — жұмыстар көлемін алдын ала көру үшін.

Бастамас бұрын жұмыс көлемін не үшін бағалау керек
Деректерді көшіру әдетте логиканы көшіруден жылдамырақ өтеді. Кестелерді шығарып алып, қайта жүктеуге, содан кейін сәйкестік пен тексерулер арқылы тексеруге болады. Ал бизнес-ережелер Oracle-де пакеттерге, триггерлерге, джобтарға, пайдаланушы типтеріне және жылдар бойы қолданылған «оңай» мүмкіндіктерге шашырап жүреді. Негізінен дәл осы аспектілер мерзімдерді ең көп «жейді».
Егер бастапқы бағалау өткізілмесе, тосын сыйлар бұлтартпас. «Бірнеше процедура ғана» болып көрінген пакет ондаған тәуелділіктерді, жаһандық айнымалыларды және күрделі ерекшеліктерді ұстап тұруы мүмкін. Триггерлер деректерді көрінбейтін түрде өзгертеді, операцияларды шектейді, аудит жүргізеді. Джобтар мен кестелер инфрақұрылым мен рұқсаттарға тәуелді. Ал Oracle-дің өзіне тән типтері мен ерекшеліктері (мысалы, коллекциялар, күндер мен жолдардағы нюанстар) кейде схеманы және кодты қайта қарауды талап етеді.
Мерзімдерді атаудан және команданы жинаудан бұрын үш сұраққа жауап берген жөн: нақты қанша логиканы қайта жазу керек, не шамамен тура көшіріледі, және қай жерде тәуекелдер ең жоғары. Сол кезде бағалау «болжамнан» емес, басқарылатын жоспарлаудан тұрады.
Жақсы бастапқы бағалау нақты артефактілер береді: негізгі объектілер мен олардың тәуелділіктерінің реестрі, күрделіліктің жуықша жіктелуі, тәуекел аймақтарының тізімі (не есепке, төлемдерге, есепке, аудитке әсер етуі мүмкін), командада қажетті рөлдердің түсінігі және жұмыстардың алғашқы тәртібі.
Простой мысал: «жинақтау» модулінде деректерді бір күнде көшіруге болады, бірақ есептеу 15 триггер мен жалпы жадысы бар бір үлкен пакетті ұстанады. Бағалау болмаса, бұл әзірлеу кезінде ғана ашылады, сол кезде мерзім мен бюджетті қайта құру қиын болады.
Нені бағалаймыз және шекара қайда өтеді
Бастапқы бағалау объектілер санын есептеуден емес, шекаралардан басталады. Оларды бекіткені жоқ болса, кез келген «әсем сан» алғашқы аптада есепке алынбаған схемалар, джобтар немесе интеграциялар шыққанда құриды.
Периметрді анықтаңыз: қандай схемалар мен модульдер жұмыстың құрамына кіреді, қандай орталар ескеріледі (dev, test, prod), және база айналасында не болып жатыр. Егер логиканың бір бөлігі деректер қорында, ал бір бөлігі қосымшада тұрса, келісілген шекараларсыз бағалау үнемі «өсіп» отырады, не дәл қандайсы көшіру керектігі туралы даулар пайда болады.
Не «миграция» деп аталады дегенге келіңіз. Практикада бұл әдетте бір деңгейдің бірі:
- структура мен деректер (DDL + деректер);
- барлық серверлік логика (пакеттер, процедуралар, функциялар, триггерлер);
- плюс эксплуатация (расписания, мониторинг, бэкапы, құқықтар, рөлдер);
- плюс қосымша өзгерістер (драйвер, SQL-диалект, транзакциялар, қателерді өңдеу).
Одан кейін бағалаусыз қиындықтарға әкелетін минималды артефактілерді жинаңыз: схемалардың DDL, PL/SQL бастапқы кодтары (пакеттерті қоса), триггерлер анықтамалары, жоспарлағыш конфигурациялары (DBMS_SCHEDULER/DBMS_JOB), құқықтар мен рөлдер, сыртқы тәуелділіктердің тізімі (очереди, сыртқы кестелер, dblink, файл операциялары).
Және бөлек допущенияларды тіркеңіз: Oracle нұсқасы (және қолданылатын режимдері), мақсаттағы PostgreSQL нұсқасы, мінез-құлықты үйлестіру талаптары және «дайын» критерийлері. Қандай заттар бағалауға кірмейтінін дереу жазып қою пайдалы: деректер моделін қайта жобалау, сұрауларды оңтайландыру, бизнес-логиканы рефакторлау — егер бұл келісілмеген болса.
Шекаралар анық болғанда инвентаризация модульдер арасында салыстырмалы болады, ал мерзімдер туралы талқылау — нақты.
Объектілер инвентаризациясы: жаза бермей қамту үшін минималды жиын
Бағалау көбінесе бір жерде сәтсіздікке ұшырайды: «схеманы» санағанмен, шын мәнінде ережелерді, автоматтандыруды және қолжетімділікті көшіріп жатыр. Сондықтан инвентаризация қысқа болуы керек, бірақ барлық объектілер кластарын қамтуы қажет.
Әр объект үшін кем дегенде мына ақпаратты тіркеңіз: атауы, иесі (схема), бір сөйлеммен мақсаты, код мөлшері (егер код болса), және ең бастысы — Oracle-ге тән тәуелділігі бар ма. Осы жеткілікті болады, объектілерді «жеңіл/орташа/ауыр» категорияға бөліп шығару үшін.
Реестрге әдетте келесілерді қосқан жөн:
- деректер мен құрылым: кестелер, секционирование, индекстер, көріністер (materialized қоса), тізбектер (sequences);
- код пен бизнес-логика: процедуралар, функциялар, пакеттер (спецификациялары мен денелері);
- жоспарлағыш пен интеграциялар: DBMS_SCHEDULER/DBMS_JOB, сыртқы шақырулар (shell, HTTP, очереди), файлға тәуелділіктер;
- қауіпсіздік және «жапсырулар»: синонимдер, рөлдер, гранттар, қолжетімділік саясаттары, аудит;
- сақтау және файлдар: LOB (BLOB/CLOB), сыртқы кестелер, каталог операциялары.
Одан ары егжей-тегжейге құйылудың қажеті жоқ. Негізгі мақсат — логиканың қай жерде жасырынып тұрғанын көру. «Шоттар» модулі қарапайым көрінуі мүмкін: 20 кесте және 30 индекс. Бірақ реестрде 8000 жолдық пакет, лимиттерді қайта есептейтін триггерлер және түнгі кезеңді жауып тұратын джобтар анықталуы мүмкін. Сонда нақты көлем солармен бағаланады.
Практикалық ереже: егер объект деректерге қосымшасыз әсер етсе (триггерлер, джобтар, пакеттелген процедуралар), оны әрқашан тізімге енгізіңіз, тіпті «қосымша» сияқты көрінсе де.
Пакеттер мен PL/SQL: қайта жазу көлемін тез бағалау
Oracle пакеттері көбінесе негізгі бизнес-логиканы ұстанады, сондықтан олар мерзімдерге қатты әсер етеді. Бастапқы прикид үшін әр жолын оқудың қажеті жоқ. Маңыздысы — көлем мен жұмыс формасын түсіну: логика бірліктері қанша, олар қаншалықты байланысқан және қай жерлер тура көшірілмейді.
Жалпылай санаудан бастаңыз: пакеттер саны, олардың ішіндегі процедуралар мен функциялар саны, және код көлемі (шартты түрде: кіші — 300–500 жолға дейін, орташа — 2000 жолға дейін, үлкен — одан жоғары). Мүмкіндігінше спецификация мен денеге де қараңыз: интерфейс шағын болуы мүмкін, ал реализация тармақтар мен жанама әсерлерге бай болуы ықтимал.
Көбінесе мерзімдерді «үлкейтіп» жіберетіндер — ерекше өңделген қателер, күйді ұстаған курсорлар (арнайы бірнеше өтуі бар), және динамикалық SQL, онда сұрау жолдардан құралып, параметрлерге тәуелді болады. Бұл жиі «аударудан» гөрі қайта жобалауды қажет етеді.
Пакеттің кестелерге, көріністерге, триггерлерге және джобтарға тәуелділігін белгілеңіз. Егер пакет басқа пакеттерді шақырса немесе жалпы типтер мен константтарды қолданса, қайта жазу «шынжырға» айналады.
Күрделі екендігінің белгілері: CASE/IF-тердің терең ілмектелуі, жұмыс режимдерінің көптігі мен параметрлер, белсенді динамикалық SQL, ішкі COMMIT/ROLLBACK, және Oracle-ге күшті тәуелділік.
Триггерлер: жасырын ережелер қайда жүреді
Триггерлер көбіне «кестедегі кішкентай ереже» сияқты көрінгенімен, оларда бизнес-логика, аудит және жанама эффекттер жасырынады. Оларды басында ескермеу бағаны төмен бағалауға әкеледі.
Алдымен масштабты анықтаңыз: қанша триггер және қай кестелерде, қандай оқиғаларды қамтиды (INSERT, UPDATE, DELETE). Бір маңызды кестеде 5–10 триггер болуы мүмкін, олар бірге модуль мінезін қалыптастырады.
Триггерлерді тағайындалуына қарай тез жіктеу
Деректерді бақылауды интеграциялардан бөліп алу пайдалы. Бақылау көбіне модельге жақын: шектеулер, әдеттегі мәндер, есептелетін өрістер, тұтастық тексерулері. Интеграциялар әдетте қосымшада немесе бөлек сервис арқылы қайта жазуды талап етеді.
Практикада триггерлер әдетте мына түрлерге жатады: валидация және тыйымдар, автотолтыру, каскадты өзгерістер, логтау және аудит, интеграциялар (очереди, сыртқы шақырулар, хабарландырулар).
Жанама әсерлер және жоғары күрделілік белгілері
Триггерлердің қауіптілігі — анықталмаған салдары: бір жаңарту қосымша жазбалар мен өзгерістер тізбегін тудыруы мүмкін. Бағалау үшін «қызыл ту» ретінде келесілерді белгілеңіз: көптеген кестелерге сілтеме, жолдар бойынша циклдер, статустарды күрделі өңдеу, уақытқа тәуелділік, журналға немесе очередқа жазу.
Триггерлердің бір бөлігін триггер емес затпен ауыстыру мағыналы екенін тексеріңіз. Мысалы, құру күнін DEFAULT арқылы қою оңайырақ, ал кейбір тексерулерді CHECK немесе сыртқы кілттерге ауыстыру тестілеуді жеңілдетеді.
Инвентаризация үшін минималды техникалық қадамды Oracle-да бір сұраумен алуға болады:
SELECT table_name, trigger_name, triggering_event, status
FROM user_triggers
ORDER BY table_name, trigger_name;
Әр триггер үшін кішкентай карточка жеткілікті: кесте, оқиға, не өзгертеді, қандай кестелерге тиесілі, сыртқы әсерлер бар ма.
Джобтар мен расписания: тасымалдау мүмкіндігі мен тәуекелдерді бағалау
Джобтар нақты күрделілікті ашатын орын: бұл тек SQL емес. Расписания артында процедуралар тізбегі, витриналарды жаңарту, есептердің генерациясы, файлдарға экспорт және сыртқы скрипттерді шақыру тұр. Сондықтан маңызды емес «қанша джоб» емес, «олар не істейді» және шекаралары қайда деген сұрақ.
Расписанияның критикалықлігі қателіктің құнына байланысты анықталады. Түндік уақыт аралығы бар процесстерді, сағаттық есептеулерді және дерлік нақты уақыттағы тапсырмаларды белгілеңіз. Қабылданатын терезе қаншалықты аз болса, мониторингке, очередтерге және қайта іске қосуға талаптар соғұрлым жоғары.
Тасымалдану фильтрі
Әр тапсырма үшін 4–5 сипаттама жинау пайдалы: не іске қосылады (SQL, процедура, пакет, сыртқы скрипт), тәуелділіктер қайда (файлдар, SFTP, пошта, API), қандай құқықтар қажет (каталогтар, есептік жазбалар, кілттер), күй бар ма (аралық кестелер, очередтер, чекпоинттар), қалай қайта жүктеледі.
Орын босатуға және қалпына келтіруге тәуекелдер
Джоб ортасында тоқтап қалса не болатынын тексеріңіз. Oracle-да бұл транзакциялар мен статус флагтері арқылы «жапылып» тұруы мүмкін. PostgreSQL-ге өткенде логика көпшілік жағдайда айқын болуы тиіс: идемпотенттілік (қайта іске қосқанда дубль болмауы), қадамдарды журналға жазу, уақытша деректерді қауіпсіз тазалау. Егер мұндай механизмдер жоқ болса, бағалау тек расписанияны көшіру емес, қалпына келтіру сценарийлерін доработкалауды да қамтуы керек.
Oracle-дің арнайы типтері мен мүмкіндіктері: күрделілікті тез фильтрациялау
Мерзімдер әдетте кестелер мен қарапайым сұраулардан емес, Oracle-дің ерекше типтері мен сервистерінен «қаулап кетеді». Жылдам фильтр қай жерлерде тікелей көшіру жүзеге асатынын, ал қай жерлерде қайта өңдеу керек екенін көрсетеді.
Алдымен әдетте жеке шешімді талап ететін объектілерді белгілеңіз: XMLTYPE, пайдаланушы типтері (UDT), VARRAY және nested tables. PostgreSQL-де көп нәрсені ауыстыруға болады, бірақ баға әртүрлі: кейде jsonb және қарапайым кестелер жеткілікті, кей кездері деректер келісімшартын және кодты өзгерту қажет.
Сол уақытта Oracle-дің «кеңейтім пакеттерін» тексеріңіз: DBMS_SCHEDULER, UTL_FILE, UTL_HTTP және ұқсас элементтер ортаны, құқықтарды, файлдық жүйені және желілік ережелерді қолданады. PostgreSQL-де бұл жиі сыртқы сервистерге, фондық тапсырмаларға, кеңейтімдерге немесе қосымша кодының ішіне ауысады.
Инфрақұрылымдық мүмкіндіктерді бөлек белгілеп қойыңыз: секционирование, материализованные көріністер, арнайы индекстер (мысалы, bitmap), сығу, hints. Бұлар мінез-құлыққа және өнімділікке әсер етеді.
Қысқа күрделілік фильтрі:
- PostgreSQL немесе кеңейтімде тура аналог бар ма;
- функция критикалық бизнес-процесте қолданыла ма;
- ол ОС, файлдар немесе желіге тәуелді ме;
- бұрынғы өнімділік «сияқты» қажет пе;
- талаптарды жоғалтпай тәсілді өзгертуге бола ма.
Әр тармақ бойынша шешімді тіркеңіз: «аналог бар», «қайта өңдеу қажет» немесе «тәсілді өзгертеміз». Мысалы, есеп беру модуліндегі XMLTYPE жиі jsonb-ге және кіріс трансформациясына ауысады, ал UTL_FILE әдетте қайта қарауды талап етеді: файлдарды қайда жазамыз, кімнің қолжетімдігі бар және қалай мониторинг жүргіземіз.
Баллдық әдіс: инвентарьды жұмыс күші бағасына аудару
Бастапқы бағалау болжамға айналмас үшін инвентарьдегі объектілерді ұпайларға аудару тиімді. Идея қарапайым: әр объектке базалық балл бересіз, оны объект түрінің салмағына және тәуекел коэффициенттеріне көбейтесіз. Нәтижесінде «нақты смета» емес, түсінікті аралық және жобаны «тартатын» элементтердің тізімі шығады.
1) Күрделілік: анық белгілері бар 3 деңгей
Шкала барлық командаға бірдей түсінікті болуы керек. Мысалы: жеңіл (1), орташа (3), ауыр (7).
Критерийлерді қысқа ұстаңыз: жеңіл — шарттар аз және динамикалық SQL жоқ; орташа — бірнеше логика тармақтары, курсорлар, қателерді өңдеу; ауыр — динамикалық SQL, Oracle-ге тән тәуелділік, көп ерекшеліктер, күрделі транзакциондық талаптар немесе қатал өнімділік талаптары.
2) Объект түрі бойынша салмақтар және тәуекел коэффициенттері
Базалық ұпайларды объект түрінің салмағы бойынша көбейтіңіз, сол арқылы бірдей «3 күрделілік» триггер мен пакет үшін бірдей саналмағаны жөн. Бастапқыда келесі топтар жеткілікті:
- пакеттер/процедуралар/функциялар: x3;
- триггерлер: x2;
- джобтар/расписания: x2;
- Oracle-дің арнайы мүмкіндіктері (типтер, кіріктірілген пакеттер, SQL ерекшеліктері): x4;
- «қарапайым» объектілер (кестелер, индекстер — ерекше емес): x1.
Одан жоғары тәуекел коэффициенттерін (әдетте 1.1–1.5) қосыңыз және оларды тек нақты бар жерде қолданыңыз: құжаттама әлсіз, бизнеске әсері жоғары, көп интеграциялар/сыртқы шақырулар, қатал жауап уақыты талаптары.
Практикалық нәтиже: модуль бойынша жиынтық ұпайлар және ең көп үлес қосатын «топ-10» объект. Осы бойынша шағын тексеріс (spike) жоспарлаңыз — көбінесе объектілердің 10%-ы жұмыстың 60–80% құрайды.
Бастапқы бағалауда жиі жіберілетін қателер
Ең қымбат қате — тек объектілер санын санау және соған негіздеп мерзімдер шығару. Шын күрделілік объектілер арасындағы байланыстарда және кодта жылдар бойы жасырылған қабылданған допущениях жатыр.
Бірінші тұзақ — тәуелділіктер. Бір пакет ондаған кестелерді, көріністерді, триггерлерді, синонимдерді және басқа пакеттерді шақыруы мүмкін. Тек пакет мәтінін бағалап, оның «құйрығын» есептемесе, мерзімдер міндетті түрде төмен бағаланатын болады. Практикада ваза осылай көрінеді: модульді көшіреміз, бірақ кейін жинау мен тестілеу барысында жетіспейтін функциялар мен типтер ғана шығады.
Екінші қате — құқықтар, рөлдер мен схемаларды ұмыту. Oracle-да қолжетімділік жиі рөлдерде, «ролдер арқылы» берілген гранттарда және definer/invoker ерекшеліктерінде тұрады. PostgreSQL-де мінез басқа болуы мүмкін, және проблемалар деректерді көшіруде емес, пайдаланушылар жұмыс бастағанда шығады.
Үшіншісі — типтер, күндер және жолдарға баға бермеу. Бос жол мен NULL арасындағы айырмашылық, имплицит түрлендірулер, кодировкалар, NLS баптаулары, уақыт белдеулері, DATE vs TIMESTAMP — бәрі тыныш қателер тудырады: сұрау «жұмыс істейді», бірақ нәтижелер сәл өзгеше.
Бастапта тексеруге тұратындар:
- тәуелділіктерді тіркеңіз: пакет/триггер не шақырады және оларды не шақырады;
- қолжетімділік матрицасын жасаңыз: рөлдер, гранттар, схемалар, сервистік аккаунттар;
- «қауіпті орындарды» белгілеңіз: күндер, жолдар, дөңгелектеулер;
- автоконверсияға сеніп қалмаңыз, таңдамалы қолмен тексеру жасаңыз;
- тесттерді жоспарлаңыз: нәтижелерді салыстыру, регресс, негізгі жылдамдық өлшемдері.
Төртінші қате — «конвертер бәрін аударып береді» деген сенім. Автоматтандыру көмектеседі, бірақ көбіне қолмен түзету қабаты керек: ерекшеліктер, курсорлар, пакет архитектурасы, транзакция ерекшеліктері.
Бесіншісі — тест жоспардың болмауы. Эталонды деректер жиынтығы және салыстыру сценариилері болмаса, айырмашылықтарды тым кеш білесіз, әрі түзетулер бұрын көшірілген бөліктерді бұза бастайды.
Қысқа чеклист: бастауға дайынсыз ба
Мерзімдер мен бюджетті атаудан бұрын негізгі нәрселерді тексеріңіз. Бұл чеклист бағалаудың қаншалықты сенімді екенін және қай жерде «жұмқарып қалуға» болатынын көрсетеді.
Инвентаризациядан бастаңыз, бірақ тек объектілер тізімін шығару жеткіліксіз. Иелері мен жауаптыларды тіркеңіз: қай пакет/триггер/джоб нақты қажет екенін кім растайды және бизнес-мағынаны кім түсіндіреді.
Сосын критикалық процестерді белгілеңіз. Көбіне мәселе код көлемінде емес, уақыт талабында: түнгі терезелер, айлық жабу, интеграциялық тізбектер. Егер расписаниялар мен жүктеме шыңдары белгіленбесе, тәуекелдерді адал бағалай алмайсыз.
Жылдам күрделілік фильтрін жасаңыз: қай объектілер стандартты типтерден тыс, сыртқы шақырулармен, тәуелділік шынжырларымен, рұқсаттармен немесе сессия контекстіне тәуелді. Бір «ауыр» объект ондаған жеңілдердідей шығын келтіруі мүмкін.
Практикалық минимумға кіретіндер:
- иелері мен статусы көрсетілген объектілер реестрі (пайдаланылады/күмәнді/керексіз болуы мүмкін);
- критикалық сценарийлер картасы және джобтардың орындалу терезелері, оның ішінде «шектік күндер» (ай жабуы, есептер);
- жоғары күрделілік объектілерінің тізімі және себебі (тәуелділіктер, сыртқы шақырулар, Oracle ерекшеліктері);
- келісілген допущениялар мен қабылдау критерийлері: «бірдей жұмыс істеу» деген не, жылдамдық және қолжетімділік талаптары;
- 1–2 типтік модульге пилот жоспары және табыс метрикалары.
Мысал: егер пилот модульде 2 пакет, 10 триггер және 3 джоб болса, бірақ бір пакет интеграцияны және көптеген ерекшеліктерді тартады, оны бөлек шығару пайдалы. Пилот шынайы қайта жазу мен тест өткізу жылдамдығын көрсетеді, орташа көрсеткішті емес.
Кіші модульге бағалау сценариі мысалы
Бастапқы есеп жүйесі модулін елестетейік: күндіз пайдаланушылар операция енгізеді, түнде есептеулер іске қосылады (жинақтау, сәйкестендіру, есептерге арналған витриналар). Деректер сапасын бақылау некоторые триггерлерге тікелей жазылған: лимиттер тексеріледі, статустар реттеледі, жою тыйым салынады, өрістер автотолтырылады.
Инвентаризацияда анықталды: 3 PL/SQL пакеті (орташа көлем), 20 триггер (күрделі), 5 джоб (орташа). Мұнда маңызды тек сан емес, логиканың сипаты. Жай пакет, кестелерді оқып-жазатын болса, әдетте триггерден тез өтеді, ал триггер басқа объектілерді шақырып, Oracle ерекшеліктеріне сенген жағдайда көп уақыт алады.
Жылдам есепті былай құра аласыз: пакеттерге базалық күрделілік беріңіз, триггерлерді жасырын ережелер мен жанама әсерлерге байланысты жоғарырақ тармақтаңыз, джобтардың жер ауыстыру мүмкіндігі мен тәуелділіктерін бағалаңыз. Содан кейін бизнесті мына сұрақтармен шыдамсыздыққа салмаңыз:
- алғашқы апталарда қай 2–3 есеп пен жинақ маңызды?;
- триггерлерден кейбір ережелерді қосымшаға немесе айқын процедураларға көшіруге бола ма?;
- түнгі терезені және есептер орындалу тәртібін өзгертуге бола ма?;
- триггерлер қазір қандай қателерді «ұстайды» және пайдаланушылар оларды қалай тексереді?
Нақтылаудан кейін бағалауды шағын жоспарға айналдырыңыз, онда тез қадамдар мен тәуекелді аймақтар көрініп тұрады. Мысалы, пилотты бір түнгі есеп пен бірнеше кестелермен бастау және параллель деректерді көшіруге дайындау.
- пилот: 1 пакет + 2–3 негізгі триггерді көшіру және бақылау сценариілерін жүргізу;
- деректер көшіру: жүктеу ережелері, сәйкестік тексеру, оралу жоспары;
- логиканы қайта жазу: қалған пакеттер, триггерлер, джобтар мен расписанияларды көшіру;
- тесттер: критикалық есептер бойынша регресс, түнгі жүктеме, бизнестің қабылдауы.
Осыдан көрініп тұрады: 20 күрделі триггер 3 «орташа» пакеттің уақытын көбінесе «жұта» алады, сондықтан талаптарды алдын ала тексеріп алыңыз.
Келесі қадамдар: бастапқы бағалаудан жоба жоспарына
Бастапқы бағалаудан кейін цифрлар мен ескертулерді жұмыс жоспарына тез аудару маңызды. Осы кезеңдегі мақсат — нәтижелерді әзірлеушілер де, бизнес те пайдалана алатындай тіркеу.
Ыңғайлы формат — жалпы инвентарь реестрі. Әр объект (пакет, триггер, job, тип, view) үшін модуль, қысқаша мақсаты, күрделілік бағасы (S/M/L), негізгі тәуекелдер (тәуелділіктер, сыртқы утилиталар, Oracle ерекшеліктері), логиканың иесі және дайындық критерийі (тесттер, есептер, SLA) жазыңыз.
Содан кейін белгісіздікті азайтатын көшіру стратегиясын таңдаңыз: әуелі код базасы туралы ең көп білім беретін бөліктер. Әдетте бұл бизнес маңыздылық пен техникалық тәуелділіктердің үйлесімі.
Бағалауды жоспарға айналдыру үшін бірнеше қадамды бекітіңіз: жұмыстарды модульдер мен тәуелділіктер бойынша бөліңіз, блоктаушы объектілерді белгілеңіз, рөлдерді тағайындаңыз (әзірлеушілер, DBA, тестілеу, процесс иелері), қабылдау критерийін келісіңіз және бір типтік модуль бойынша пилот жоспарлап, бағада түзетулер жасауға уақыт бөліңіз.
Егер инфрақұрылым және қолдау бойынша серіктес керек болса, оны GSE.kz (gse.kz)-пен талқылауға болады: жүйелік интегратор ретінде компания PostgreSQL үшін контур жобалауға және қолдауды ұйымдастыруға, соның ішінде критикалық жүйелерге тәулік бойы қызмет көрсетуге көмектеседі.