Kas yra pažingsninis .df failas?
Pažingsninis .df failas yra schemos skirtumų tarp dviejų duomenų bazių momentinė nuotrauka (snapshot). Vietoj viso schemos eksportavimo, jis fiksuoja tik pakeitimus, todėl puikiai tinka skirtingoms aplinkoms (pvz., kūrimo ir produkcijos) sinchronizuoti, nereikalaujant pilno perkūrimo.
Komandoms, prižiūrinčioms dideles ar kritinės svarbos sistemas, tai žymiai sumažina atnaujinimų diegimo riziką ir pastangas. Šis metodas ypač naudingas aplinkose, kuriose prastova (downtime) yra brangi arba nepriimtina.
Sužinokite daugiau apie mūsų Progress OpenEdge paslaugas.
Kas pasikeitė OpenEdge 12.4 versijoje?
Nuo Progress OpenEdge 12.4 versijos pažingsninio .df failo formatas buvo patobulintas, kad palaikytų internetinius (online) schemos pakeitimus, padalijant failą į struktūrizuotas sekcijas:
- PreDeploy – netrikdantys internetiniai (online) veiksmai.
- Trigger – visi trigerio apibrėžimo pakeitimai.
- PostDeploy – trikdantys internetiniai veiksmai, tokie kaip lauko pašalinimas (field drop).
- Offline – pakeitimai, kurie turi vykti tik duomenų bazei neveikiant (offline).
Šis etapinis metodas suteikia programuotojams daugiau lankstumo ir kontrolės diegimo metu veikiančiose sistemose – ypač naudojant CI/CD procesuose.

Kaip tai veikia?
Pažingsninio .df failo eksportavimas/įkėlimas per GUI
.df failus seno ar naujo formato galite generuoti per Data Administration Tool įrankį. Norėdami įjungti sekcijomis padalintą formatą:
- Eikite į Dump Incremental Definitions.
- Pažymėkite „Dump definitions in sections for phased load“.

Įkeliant delta.df failą, galite pasirinkti, ar įkelti jį pagal sekcijas, ir net pasirinkti, kurias sekcijas taikyti. Norėdami atlikti internetinius (online) schemos pakeitimus, būtinai pažymėkite „Add new objects online“ Load Data Definitions lange.

Įkėlimas per konsolę: load_df_silent.p
Pažingsninius .df failus taip pat galite įkelti tyliuoju (silent) būdu, naudodami konsolę ir procedūrą load_df_silent.p, kuri yra Progress OpenEdge pirminio kodo (source code) dalis.
Pastaba: jei src/prodict.pl trūksta jūsų diegime, galite jį atsisiųsti iš Progress GitHub ADE saugyklos.
Įvesties parametrai (Input Parameters)
pcFileName: kelias iki .df failo.
pcOptions: kableliais atskirti žymikliai (flags), įskaitant:
AddObjectsOnline– įkelti naujas lenteles ir sekas (sequences) internetiniu būdu;ForceCommit– patvirtinti (commit) net esant klaidoms;ForceIndexDeactivate– sukurti naujus indeksus kaip neaktyvius;ForceSharedSchema– ignoruoti daugianuomininkystės (multi-tenant) savybes;PreDeployLoad– įkelti PreDeploy sekciją;TriggerLoad– įkelti trigerio sekciją;PostDeployLoad– įkelti PostDeploy sekciją;OfflineLoad– įkelti Offline sekciją.
Išvesties parametrai (Output Parameters)
pcWarnings– rodomi įspėjimai.
Pavyzdžiai:
Viso turinio įkėlimas internetiniu būdu:
DEFINE VARIABLE pcWarnings AS CHARACTER NO-UNDO.
run C:\Progress\OpenEdge\prodict\load_df_silent.p ("delta.df","AddObjectsOnline", OUTPUT pcWarnings).
Pasirinktų internetinių pakeitimų įkėlimas:
DEFINE VARIABLE pcWarnings AS CHARACTER NO-UNDO.
run C:\Progress\OpenEdge\prodict\load_df_silent.p (
"delta.df",
"AddObjectsOnline,PreDeployLoad,PostDeployLoad",
OUTPUT pcWarnings).
Pastebėtas konsolės elgesys:
- AddObjectsOnline perdavimas su konkrečiomis sekcijomis veikia tinkamai.
- AddObjectsOnline perdavimas nenurodant sekcijų sukelia klaidą, jei egzistuoja offline pakeitimų.
Reikia pagalbos automatizuojant schemos atnaujinimus ar CI/CD integraciją? Pasikalbėkite su mūsų Progress OpenEdge ekspertais.
Palaikomi schemos pakeitimų tipai
Šie schemos pakeitimo veiksmai negali būti atlikti internetiniu (online) būdu, todėl reikalauja išskirtinio (exclusive) schemos užrakto duomenų bazėje.
Svarbios išlygos: laukų pašalinimas internetiniu būdu
Taip – laukus galima pašalinti internetiniu (online) būdu, su tam tikrais apribojimais:
- duomenų bazė ir visi klientai turi veikti Progress OpenEdge 12.4 ar naujesnėje versijoje;
- per vieną transakciją galima pašalinti tik vieną neindeksuotą lauką;
- negali būti didesnio transakcijų bloko dalis;
- negali būti taikoma LOB laukams;
- reikalauja, kad būtų įjungtas dbnotification.
Nuo OpenEdge 12.5 versijos:
- galima pašalinti kelis neindeksuotus laukus internetiniu būdu – tačiau tik po vieną per operaciją.
Kitos pastabos:
- jei laukas yra indeksuotas, sakinys perkeliamas į Offline sekciją;
- jei egzistuoja keli Drop Field sakiniai, tik pirmasis patenka į PostDeploy sekciją; likę tvarkomi kaip Offline.
Pilną techninę informaciją rasite Progress dokumentacijoje apie internetinius schemos pakeitimus. Įsitikinkite, kad naudojate tinkamą duomenų bazės versiją ir konfigūraciją – pasiteiraukite mūsų Progress OpenEdge komandos.
Rezultatai ir nauda
Testavome įvairius schemos pakeitimus, naudodami naująjį sekcijomis padalintą .df formatą. Visi pakeitimai PreDeploy, Trigger ir PostDeploy sekcijose buvo sėkmingai pritaikyti internetiniu būdu – tiek pavieniui, tiek kartu.
Bandymai pritaikyti Offline pakeitimus internetiniu režimu buvo teisingai atmesti, iškeliant klaidas ir atšaukiant (rolled back) transakcijas.
Naudojant struktūrizuotą .df formatą, kūrimo ir operacijų komandos įgyja geresnę kontrolę, nuspėjamumą ir diegimo efektyvumą.
Kodėl tai svarbu
Šis struktūrizuotas metodas sumažina prastovą, pagerina planavimą ir įgalina komandas saugiai bei pažingsniui (incrementally) įgyvendinti pakeitimus.
Norite supaprastinti ir automatizuoti schemos atnaujinimus visose savo aplinkose? Susipažinkite su visu mūsų Progress OpenEdge paslaugų spektru.
Dažniausiai užduodami klausimai
Kas yra pažingsninis .df failas OpenEdge aplinkoje?
Tai schemos skirtumų tarp dviejų duomenų bazių momentinė nuotrauka, fiksuojanti tik pakeitimus, o ne visą schemą. Tai leidžia sinchronizuoti skirtingas aplinkas be pilno perkūrimo.
Ar laukus galima pašalinti veikiant duomenų bazei (online)?
Taip, su apribojimais: duomenų bazė ir klientai turi veikti OpenEdge 12.4+ versijoje, per transakciją galima pašalinti tik vieną neindeksuotą lauką, ir reikalingas įjungtas dbnotification. Nuo 12.5 versijos galima pašalinti kelis neindeksuotus laukus, bet po vieną per operaciją.
Kokie schemos pakeitimai reikalauja, kad duomenų bazė būtų neprisijungus (offline)?
Offline sekcijai priklauso indekso ar lauko pašalinimas, aktyvaus indekso keitimai, sekų ir apribojimų (constraints) atnaujinimas bei lentelių šalinimas – šie veiksmai reikalauja išskirtinio schemos užrakto.
Kaip įkelti pažingsninį .df failą be GUI sąsajos?
Naudojant procedūrą load_df_silent.p per konsolę, nurodant .df failo kelią ir pasirinktinius parametrus (pvz., AddObjectsOnline, PreDeployLoad), galima tyliuoju būdu įkelti pakeitimus be grafinės sąsajos.

