Ungakugwema kanjani ukuzidubula onyaweni usebenzisa i-Liquibase

Akukaze kwenzeke ngaphambili, futhi nakhu sihamba futhi!

Kuphrojekthi yethu elandelayo, sanquma ukusebenzisa i-Liquibase kusukela ekuqaleni ukuze sigweme izinkinga esikhathini esizayo. Njengoba kuvela, akuwona wonke amalungu eqembu amancane azi ukuthi angayisebenzisa kanjani ngendlela efanele. Ngabamba ishabhu yangaphakathi, ngase nginquma ukuyishintsha ibe isihloko.

I-athikili ihlanganisa amathiphu awusizo kanye nencazelo yezingibe ezintathu ezisobala kakhulu ongawela kuzo lapho usebenza ngamathuluzi okuthutha esizindalwazi esihlobene, ikakhulukazi i-Liquibase. Idizayinelwe onjiniyela be-Java kumaleveli e-Junior kanye naphakathi; konjiniyela abanolwazi oluthe xaxa kungase kube nentshisekelo yokuhlela nokuphinda lokho okungenzeka ukuthi sekuvele kwaziwa.

Ungakugwema kanjani ukuzidubula onyaweni usebenzisa i-Liquibase

I-Liquibase ne-Flyway iwubuchwepheshe obuqhudelanayo obuyinhloko bokuxazulula izinkinga zokulawula inguqulo yezakhiwo zobudlelwano emhlabeni we-Java. Eyokuqala imahhala ngokuphelele, ekusebenzeni ivame ukukhethwa ukuthi isetshenziswe, yingakho i-Liquibase ikhethwe njengeqhawe lokushicilelwa. Kodwa-ke, ezinye zezinqubo ezichazweyo zingase zenzeke emhlabeni wonke, kuye ngesakhiwo sohlelo lwakho lokusebenza.

Ukufuduka kwezakhiwo ezihlobene kuyindlela ephoqelelwe yokubhekana nokuguquguquka okubuthakathaka kwezitolo zedatha yobudlelwano. Esikhathini semfashini ye-OOP, isitayela sokusebenza nezizindalwazi sasisho ukuthi sizochaza i-schema kanye futhi singaphinde sisithinte. Kodwa iqiniso lihlala liwukuthi izinto ziyashintsha, futhi izinguquko esakhiweni setafula ziyadingeka kaningi. Ngokwemvelo, inqubo ngokwayo ingaba buhlungu futhi ingajabulisi.

Ngeke ngingene ngijule encazelweni yobuchwepheshe nemiyalo yokwengeza ilabhulali kuphrojekthi yakho; kubhalwe izindatshana ezimbalwa ngalesi sihloko:

Ngaphezu kwalokho, kwase kunesihloko esihle kakhulu esihlokweni samathiphu awusizo:

Amathiphu

Ngifuna ukwabelana ngezeluleko zami kanye nokuphawula kwami, okwazalwa ngomjuluko, igazi nobuhlungu bokuxazulula izinkinga ngokufuduka.

1. Ngaphambi kokuqala umsebenzi, kufanele uzijwayeze nesigaba semikhuba emihle kakhulu isayithi I-Liquibase

Lapho izinto ezilula kodwa ezibaluleke kakhulu zichazwe, ngaphandle kwalokho ukusebenzisa umtapo wezincwadi kungenza impilo yakho ibe nzima. Isibonelo, indlela engahlelekile yokuphatha izinguquko ngokushesha noma kamuva izoholela ekudidekeni nasekufudukeni okuphukile. Uma ungakhiphi izinguquko ezincike ngokufanayo kusakhiwo sesizindalwazi kanye nengqondo yesevisi ngesikhathi esifanayo, maningi amathuba okuthi lokhu kuzoholela ekuhlolweni okubomvu noma endaweni ephukile. Ukwengeza, izincomo zokusebenzisa i-Liquibase kuwebhusayithi esemthethweni ziqukethe isigatshana mayelana nokuthuthukiswa nokuhlolwa kwemibhalo yokubuyisela emuva kanye nemibhalo eyinhloko yokufuduka. Awu, esihlokweni https://habr.com/ru/post/178665/ Kunezibonelo zamakhodi mayelana nokufuduka kanye nendlela yokuhlehlisa.

2. Uma uqala ukusebenzisa amathuluzi okuthutha, ungavumeli ukulungisa okwenziwa ngesandla esakhiweni sesizindalwazi

Njengoba isisho sithi: “Once Persil, always Persil.” Uma isisekelo sohlelo lwakho lokusebenza siqala ukuphathwa yi-Liquibase, noma yiziphi izinguquko ezenziwa mathupha ngokushesha ziholela esimweni sokungaguquki, futhi izinga lokwethemba ezinguqulweni liba nguziro. Izingozi ezingaba khona zihlanganisa amahora ambalwa achithwa kubuyiselwa isizindalwazi; esimweni esibi kakhulu, iseva efile. Uma une-DBA Architect "yesikole esidala" ethimbeni lakho, mchazele ngesineke nangokucabangisisa ukuthi izinto zizoba zimbi kangakanani uma evele ehlele imininingwane ngokuqonda kwakhe kunjiniyela we-SQL onemibandela.

3. Uma i-changeset isivele iphushelwe endaweni yokugcina, gwema ukuhlela

Uma omunye umthuthukisi edonse futhi wasebenzisa isishintshi, esizohlelwa kamuva, nakanjani uzokukhumbula ngegama elinomusa lapho ethola iphutha lapho eqala uhlelo lokusebenza. Uma ukuhlela i-changeset ngandlela thize kuvuza ekuthuthukisweni, kuzodingeka ulandele ukuthambekela okushelelayo kwama-hotfixes. Ingqikithi yenkinga incike ekuqinisekiseni izinguquko nge-hash sum - indlela eyinhloko ye-Liquibase. Lapho uhlela ikhodi yokushintsha, inani le-hashi liyashintsha. Ukuhlela amasethingi okushintsha kungenzeka kuphela uma kungenzeka ukusebenzisa yonke imininingwane egciniwe kusukela ekuqaleni ngaphandle kokulahlekelwa idatha. Kulesi simo, ukwenza kabusha ikhodi ye-SQL noma ye-XML, ngokuphambene nalokho, kwenze ukuphila kube lula futhi kwenze ukufuduka kufundeke kakhudlwana. Isibonelo kungaba isimo lapho, ekuqaleni kwesicelo, i-schema sesizindalwazi somthombo kwavunyelwana ngaso ngaphakathi kwethimba.

4. Yiba nezipele ezigciniwe eziqinisekisiwe uma kungenzeka

Lapha, ngicabanga, konke kucacile. Uma kungazelelwe ukuthutha akuphumelelanga, konke kungabuyiselwa emuva. I-Liquibase inethuluzi lokubuyisela emuva izinguquko, kodwa izikripthi ze-rollback nazo zibhalwa ngumthuthukisi ngokwakhe, futhi zingaba nezinkinga ngamathuba afanayo njengemibhalo ye-changeset eyinhloko. Lokhu kusho ukuthi kuyasiza ukuyidlala iphephile ngama-backups kunoma yikuphi.

5. Sebenzisa izipele ezigciniwe ezifakazelwe ekuthuthukisweni, uma kungenzeka

Uma lokhu kungangqubuzani nezinkontileka nobumfihlo, ayikho idatha yomuntu siqu ku-database, futhi ayinayo isisindo selanga ezimbili - ngaphambi kokuyisebenzisa kumaseva okufuduka bukhoma, ungabheka ukuthi izosebenza kanjani emshinini womthuthukisi futhi ubale. cishe u-100% wezinkinga ezingaba khona ngesikhathi sokufuduka.

6. Xhumana nabanye onjiniyela eqenjini

Enqubweni yokuthuthukisa ehlelwe kahle, wonke umuntu oseqenjini uyazi ukuthi ubani owenza ini. Eqinisweni, lokhu ngokuvamile akunjalo, ngakho-ke, uma ulungiselela izinguquko kwisakhiwo sedathabhesi njengengxenye yomsebenzi wakho, kuhle ukuthi wazise ithimba lonke ngalokhu. Uma othile enza izinguquko ngokuhambisanayo, kufanele uhlele ngokucophelela. Kuyafaneleka ukuxhumana nozakwethu ngemva kokuqeda umsebenzi, hhayi nje ekuqaleni. Izinkinga eziningi ezingaba khona ngoshintsho zingaxazululwa esigabeni sokubuyekeza ikhodi.

7. Cabanga ngalokho okwenzayo!

Kungase kubonakale njengeseluleko esisobala esisebenza kunoma yisiphi isimo. Kodwa-ke, izinkinga eziningi bezingagwenywa ukube umthuthukisi ubephinde wahlaziya akwenzayo nokuthi yini ebingathinta. Ukusebenza ngokufuduka kudinga ukunakwa okwengeziwe nokunemba.

Izicupho

Manje ake sibheke izicupho ezijwayelekile ongawela kuzo uma ungasilandeli iseluleko esingenhla, futhi yini okufanele uyenze ngempela?

Isimo 1: Onjiniyela ababili bazama ukungeza izinguquko ezintsha ngesikhathi esisodwa

Ungakugwema kanjani ukuzidubula onyaweni usebenzisa i-Liquibase
U-Vasya noPetya bafuna ukwakha inguqulo yesi-4 ye-changeset, ngaphandle kokwazi ngomunye nomunye. Benza izinguquko esakhiweni sedathabhesi futhi bakhipha isicelo sokudonsa ngamafayela e-changeset ahlukene. Kuhlongozwa indlela yokusebenza elandelayo:

Indlela yokunquma

  1. Ngandlela-thile, ozakwabo kufanele bavumelane ngohlelo okufanele luhambe ngalo izinguquko zabo, isibonelo, i-Petin kufanele isetshenziswe kuqala.
  2. Othile kufanele engeze eyesibili kuye futhi amake isethi yokushintsha kaVasya ngenguqulo 5. Lokhu kungenziwa nge-Cherry Pick noma ukuhlanganisa okuhle.
  3. Ngemva kwezinguquko, kufanele nakanjani uhlole ukufaneleka kwezenzo ezithathiwe.
    Eqinisweni, izindlela ze-Liquibase zizokuvumela ukuthi ube nezinguqulo ezimbili zenguqulo 4 endaweni yokugcina, ukuze ushiye yonke into njengoba injalo. Okusho ukuthi, uzomane ube nezinguquko ezimbili enguqulweni yesi-4 enamagama ahlukene. Ngale ndlela, kamuva kuba nzima kakhulu ukuzulazula ezinguqulweni zesizindalwazi.

Ngaphezu kwalokho, i-Liquibase, njengekhaya lezinto zokuzilibazisa, igcina izimfihlo eziningi. Enye yazo ukhiye weCheckSum ovumelekile, ovele kunguqulo 1.7 futhi ikuvumela ukuthi ucacise inani le-hashi elivumelekile lesethingi ethile yoshintsho, kungakhathaliseki ukuthi yini egcinwe kusizindalwazi. Amadokhumenti https://www.liquibase.org/documentation/changeset.html uthi okulandelayo:

Engeza i-checksum ethathwa njengevumelekile kulolu shintshoSetha, kungakhathaliseki ukuthi yini egcinwe kusizindalwazi. Isetshenziswa kakhulukazi uma udinga ukushintsha i-changeSet futhi ungafuni amaphutha aphonswe kusizindalwazi esesivele sisebenza kuzo (hhayi inqubo enconyiwe)

Yebo, yebo, le nqubo ayinconywa. Kodwa ngezinye izikhathi umlingo onamandla okhanyayo ubuye abe ngompetha bamasu amnyama

Isimo 2: Ukufuduka okuncike kudatha

Ungakugwema kanjani ukuzidubula onyaweni usebenzisa i-Liquibase

Ake sicabange ukuthi awunalo ikhono lokusebenzisa izipele ezigciniwe ezivela kumaseva abukhoma. U-Petya udale i-changeset, wayihlola endaweni futhi, ngokuqiniseka okugcwele ukuthi wayeqinisile, wenza isicelo sokudonsa kunjiniyela. Uma kwenzeka, umholi wephrojekthi wacacisa ukuthi ngabe uPetya uyihlolile, wabe eseyingeza. Kodwa ukuthunyelwa kuseva yokuthuthukisa kwehlile.

Eqinisweni, lokhu kungenzeka, futhi akekho ovikelekile kulokhu. Lokhu kwenzeka uma ukuguqulwa kwesakhiwo sethebula kuhlanganiswe ngandlela thize nedatha ethile evela kusizindalwazi. Ngokusobala, uma i-database kaPetya igcwaliswe kuphela ngedatha yokuhlola, khona-ke ingase ingahlanganisi zonke izinkinga zezinkinga. Isibonelo, lapho ususa ithebula, kuvele ukuthi kukhona amarekhodi kwamanye amathebula ngokhiye Wangaphandle ahlobene namarekhodi kulelo elisuswayo. Noma lapho ushintsha uhlobo lwekholomu, kuvele ukuthi akuwona u-100% wedatha ongaguqulelwa ohlotsheni olusha.

Indlela yokunquma

  • Bhala izikripthi ezikhethekile ezizosetshenziswa kanye kanye nokuthutha futhi ulethe idatha ngendlela efanele. Lena indlela evamile yokuxazulula inkinga yokudlulisela idatha ezakhiweni ezintsha ngemva kokufaka ukufuduka, kodwa into efanayo ingasetshenziswa ngaphambili, ezimweni ezikhethekile. Le ndlela, yiqiniso, ayitholakali ngaso sonke isikhathi, ngoba ukuhlela idatha kumaseva abukhoma kungaba yingozi futhi kubhubhise.
  • Enye indlela enzima ukuhlela i-changeset ekhona. Ubunzima ukuthi zonke izingosi zolwazi lapho isivele isetshenziswe khona ngendlela ekhona kuyodingeka ibuyiselwe. Kungenzeka ukuthi lonke ithimba elingemuva lizophoqeleka ukuthi likhiphe isizindalwazi kusukela ekuqaleni.
  • Futhi indlela yendawo yonke iwukudlulisa inkinga ngedatha endaweni yonjiniyela, ukubuyisela isimo esifanayo futhi wengeze isishintshi esisha, esiphukile, esizoyigwema inkinga.
    Ungakugwema kanjani ukuzidubula onyaweni usebenzisa i-Liquibase

Ngokuvamile, uma isizindalwazi sifana kakhulu ngokwakheka kusizindalwazi seseva yokukhiqiza, mancane amathuba okuthi izinkinga zokufuduka zihambe kude. Futhi, yiqiniso, ngaphambi kokuthumela isethi yokushintsha endaweni yokugcina, kufanele ucabange izikhathi eziningana ukuthi izophula noma yini.

Isimo 3. I-Liquibase iqala ukusetshenziswa ngemuva kokuthi isiqalile ukukhiqizwa

Ake sithi umholi weqembu ucele uPetya ukuthi afake i-Liquibase kuphrojekthi, kodwa iphrojekthi isivele ikhiqizwa futhi kukhona isakhiwo sedatha ekhona.

Ngokufanelekile, inkinga iwukuthi kunoma imaphi amaseva amasha noma imishini yonjiniyela, lawa mathebula kufanele enziwe kabusha kusukela ekuqaleni, futhi indawo ekhona kufanele ihlale isesimweni esingaguquki, ilungele ukwamukela izinguquko ezintsha.

Indlela yokunquma

Kunezindlela eziningana futhi:

  • Okokuqala nokusobala kakhulu ukuba neskripthi esihlukile okufanele sisetshenziswe mathupha lapho kuqalwa indawo entsha.
  • Eyesibili ayibonakali kangako, ibe nokufuduka kwe-Liquibase okukomunye I-Liquibase Context, futhi ukusebenzise. Ungafunda kabanzi mayelana ne-Liquibase Context lapha: https://www.liquibase.org/documentation/contexts.html. Ngokuvamile, lokhu kuyindlela ethakazelisayo engasetshenziswa ngempumelelo, isibonelo, ukuhlola.
  • Indlela yesithathu inezinyathelo ezimbalwa. Okokuqala, ukufuduka kufanele kudalwe amathebula akhona. Ngemuva kwalokho kufanele isetshenziswe endaweni ethile futhi ngaleyo ndlela izotholakala isamba sayo se-hashi. Isinyathelo esilandelayo ukuqalisa amathebula e-Liquibase angenalutho kuseva yethu engenalutho, futhi kuthebula elinomlando wokusetshenziswa kwezinguquko, ungabeka mathupha irekhodi mayelana noshintsho "njengokungathi lusetshenzisiwe" olunezinguquko esezivele zikhona kusizindalwazi. . Ngakho, kuseva ekhona, ukubala phansi komlando kuzoqala kusukela kunguqulo 2, futhi zonke izindawo ezintsha zizoziphatha ngendlela efanayo.
    Ungakugwema kanjani ukuzidubula onyaweni usebenzisa i-Liquibase

Isimo 4. Ukufuduka kuba kukhulu futhi akubi naso isikhathi sokuqeda

Ekuqaleni kokuthuthukiswa kwenkonzo, njengomthetho, i-Liquibase isetshenziswa njengokuncika kwangaphandle, futhi konke ukufuduka kucutshungulwa lapho isicelo siqala. Kodwa-ke, ngokuhamba kwesikhathi, ungakhubeka ezimweni ezilandelayo:

  • Ukufuduka kuba kukhulu futhi kuthatha isikhathi eside ukuqeda.
  • Kunesidingo sokufuduka ezindaweni ezisabalalisiwe, isibonelo, ezimweni ezimbalwa zeseva yesizindalwazi ngasikhathi sinye.
    Kulesi simo, ukusebenzisa ukufuduka isikhathi eside kuzoholela ekuphelelweni kwesikhathi lapho isicelo siqala. Ukwengeza, ukusebenzisa ukuthuthela kwenye isenzakalo sohlelo lokusebenza ngalunye ngokuhlukile kungase kubangele ukuthi amaseva ahlukene aphelelwe ukuvumelanisa.

Indlela yokunquma

Ezimweni ezinjalo, iphrojekthi yakho isivele inkulu, mhlawumbe ngisho nomuntu omdala, futhi i-Liquibase iqala ukusebenza njengethuluzi elihlukile langaphandle. Iqiniso liwukuthi i-Liquibase njengomtapo wolwazi ihlanganiswa ibe ifayela lembiza, futhi ingasebenza njengokuncika ngaphakathi kwephrojekthi noma ngokuzimela.

Kumodi ezimele, ungashiya ukusetshenziswa kokuthuthela endaweni yakho ye-CI/CD noma emahlombe aqinile abalawuli besistimu yakho nochwepheshe bokuthunyelwa. Ukuze wenze lokhu uzodinga umugqa womyalo we-Liquibase https://www.liquibase.org/documentation/command_line.html. Kule modi, kuyenzeka ukuthi uqalise uhlelo lokusebenza ngemva kokuba sekwenziwe konke ukufuduka okudingekayo.

isiphetho

Eqinisweni, kungase kube nezinye izingibe eziningi lapho usebenza ngokufuduka kwesizindalwazi, futhi eziningi zazo zidinga indlela yokudala. Kubalulekile ukuqonda ukuthi uma usebenzisa ithuluzi ngendlela efanele, iningi lalezi zingozi zingagwenywa. Ngokucacile, kwadingeka ngibhekane nazo zonke izinkinga ezisohlwini ngezindlela ezihlukene, futhi ezinye zazo zaziwumphumela wamaphutha ami. Ikakhulukazi lokhu kwenzeka, yiqiniso, ngenxa yokunganaki, kodwa ngezinye izikhathi ngenxa yokungakwazi ubugebengu ukusebenzisa ithuluzi.

Source: www.habr.com

Engeza amazwana