Ungazidubuli njani ezinyaweni usebenzisa iLiquibase

Ayizange yenzeke ngaphambili, kwaye naku sihamba kwakhona!

Kwiprojekthi yethu elandelayo, sagqiba ekubeni sisebenzise i-Liquibase kwasekuqaleni ukuphepha iingxaki kwixesha elizayo. Njengoko kuvela, ayingawo onke amalungu eqela aselula ayaziyo indlela yokuyisebenzisa ngokuchanekileyo. Ndabamba iworkshop yangaphakathi, endiye ndagqiba ekubeni ndiyiguqule ibe linqaku.

Eli nqaku libandakanya iingcebiso eziluncedo kunye nenkcazo yeengozi ezintathu ezicacileyo onokuwela kuzo xa usebenza kunye nezixhobo zokufuduka kwedatha ehambelanayo, ngokukodwa i-Liquibase. Yenzelwe abaphuhlisi beJava kumanqanaba amaNcinci kunye naPhakathi; kubaphuhlisi abanamava ngakumbi kunokuba nomdla wokwakha kunye nokuphinda oko kusenokwenzeka ukuba sele kwaziwa.

Ungazidubuli njani ezinyaweni usebenzisa iLiquibase

I-Liquibase kunye neFlyway zezona teknoloji zikhuphisanayo zokusombulula iingxaki zolawulo lwenguqulelo yezakhiwo zobudlelwane kwilizwe leJava. Eyokuqala ikhululekile ngokupheleleyo, ekusebenzeni ngokuqhelekileyo ikhethwa ukuba isetyenziswe, yingakho i-Liquibase yakhethwa njengeqhawe lokupapashwa. Nangona kunjalo, ezinye zeendlela ezichaziweyo zinokuba zendalo yonke, kuxhomekeke kuyilo lwesicelo sakho.

Ukufuduka kwezakhiwo ezihambelanayo yindlela enyanzelekileyo yokujongana nokuguquguquka okubuthathaka kokugcina idatha yobudlelwane. Ngexesha lefashoni ye-OOP, isitayile sokusebenza ngoovimba beenkcukacha bekuthetha ukuba siza kuchaza i-schema kube kanye kwaye singayichukumisi kwakhona. Kodwa inyani ihlala itshintshile, kwaye utshintsho kwisakhiwo setafile lufuneka rhoqo. Ngokwemvelo, inkqubo ngokwayo ingaba buhlungu kwaye ingathandeki.

Andizukungena nzulu kwinkcazo yetekhnoloji kunye nemiyalelo yokongeza ithala leencwadi kwiprojekthi yakho, amanqaku ambalwa abhaliwe kwesi sihloko:

Ukongeza, kwakukho inqaku elihle kakhulu kwisihloko seengcebiso eziluncedo:

Iingcebiso

Ndifuna ukwabelana ngeengcebiso zam kunye nezimvo, ezazalwa ngokubila, igazi kunye nentlungu yokusombulula iingxaki ngokufuduka.

1. Phambi kokuba uqalise umsebenzi, kufuneka uziqhelanise nelona candelo lezona ndlela zingcono zokuziqhelanisa indawo Liquibase

Apho izinto ezilula kodwa ezibaluleke kakhulu zichazwe, ngaphandle kwazo ukusebenzisa ithala leencwadi kunokubenza nzima ubomi bakho. Umzekelo, indlela engacwangciswanga yokulawula utshintsho iya kuthi kungekudala ibangele ukubhideka kunye nokufuduka okwaphukileyo. Ukuba awuyi kukhupha utshintsho oluxhomekeke ngokufanayo kwisakhiwo sesiseko sedatha kunye neengcinga zenkonzo ngexesha elifanayo, kukho amathuba aphezulu okuba oku kuya kukhokelela kwiimvavanyo ezibomvu okanye indawo ephukileyo. Ukongezelela, iingcebiso zokusebenzisa i-Liquibase kwiwebhusayithi esemthethweni iqulethe igatya malunga nokuphuhliswa kunye nokuvavanywa kwemibhalo ye-rollback kunye neencwadi eziphambili zokufuduka. Ewe, kwinqaku https://habr.com/ru/post/178665/ Kukho imizekelo yekhowudi malunga nokufuduka kunye nendlela yokubuyela umva.

2. Ukuba uqala ukusebenzisa izixhobo zokufuduka, ungavumeli izilungiso zezandla kwisakhiwo sedatha

Njengoko intetho isithi: "Kwakanye uPersil, uhlala ePersil." Ukuba isiseko sesicelo sakho siqala ukulawulwa yi-Liquibase, naluphi na utshintsho olwenziwa ngesandla lukhokelela ngokukhawuleza kwimeko engahambelaniyo, kwaye inqanaba lokuthembela kwiinguqu liba ngu-zero. Imingcipheko enokubakho ibandakanya iiyure ezininzi ezichithwe ukubuyisela isiseko sedatha kwimeko embi kakhulu, iseva efileyo. Ukuba une-DBA Architect "yesikolo esidala" kwiqela lakho, ngomonde nangengcinga umchazele ukuba izinto ziya kuba zimbi kangakanani na ukuba uhlela nje isiseko sedatha ngokokuqonda kwakhe kuMphuhlisi weSQL onemiqathango.

3. Ukuba utshintsho sele lutyhalelwe kwindawo yokugcina, kuphephe ukuhlela

Ukuba omnye umphuhlisi wenze utsalo kwaye wasebenzisa utshintsho, oluya kuthi luhlelwe kamva, ngokuqinisekileyo uya kukukhumbula ngelizwi elinobubele xa efumana impazamo xa eqala isicelo. Ukuba uhlela utshintsho ngandlela ithile luvuza kuphuhliso, kuya kufuneka ulandele ukuthambeka okumtyibilizi kweehotfixes. Ingundoqo yengxaki ixhomekeke ekuqinisekiseni utshintsho nge-hash sum - eyona ndlela iphambili ye-Liquibase. Xa uhlela ikhowudi yokutshintsha, isixa se-hash siyatshintsha. Ukuhlela iiseti zokutshintsha kuyenzeka kuphela xa kunokwenzeka ukusasaza yonke idatabase ukusuka ekuqaleni ngaphandle kokulahlekelwa idatha. Kule meko, ukubuyisela kwakhona ikhowudi ye-SQL okanye i-XML, ngokuchaseneyo, yenza ubomi bube lula kwaye wenze ukufuduka kufundeke ngakumbi. Umzekelo uya kuba yimeko apho, ekuqaleni kwesicelo, i-schema yesiseko sedatha ekuvunyelwene ngayo ngaphakathi kweqela.

4. Yiba nogcino lwedatha eqinisekisiweyo ukuba kunokwenzeka

Apha, ndicinga ukuba, yonke into icacile. Ukuba ngokukhawuleza ukufuduka akuzange kuphumelele, yonke into inokubuyiselwa emva. I-Liquibase inesixhobo sokuguqula umva utshintsho, kodwa izikripthi ze-rollback nazo zibhalwa ngumphuhlisi ngokwakhe, kwaye banokuba neengxaki ezinokubakho okufanayo njengeencwadi zeenguqu eziphambili. Oku kuthetha ukuba kuluncedo ukuyidlala ngokukhuselekileyo nge-backups kuyo nayiphi na imeko.

5. Sebenzisa i-backups yedatha eqinisekisiweyo ekuphuhlisweni, ukuba kunokwenzeka

Ukuba oku akuchasananga nezivumelwano kunye nobumfihlo, akukho datha yomntu kwi-database, kwaye ayinabunzima njengamalanga amabini - ngaphambi kokuyisebenzisa kwiiseva zokufuduka eziphilayo, unokujonga ukuba iya kusebenza njani kumatshini womphuhlisi kwaye ubale. phantse i-100% yeengxaki ezinokubakho ngexesha lokufuduka.

6. Nxibelelana nabanye abaphuhlisi kwiqela

Kwinkqubo yophuhliso ecwangcisiweyo, wonke umntu kwiqela uyazi ukuba ngubani owenza ntoni. Enyanisweni, oku akusoloko kunjalo, ngoko ke, ukuba ulungiselela utshintsho kwisiseko sedatha njengenxalenye yomsebenzi wakho, kuyacetyiswa ukuba ungeze ukwazisa iqela lonke malunga noku. Ukuba umntu wenza utshintsho ngokuhambelanayo, kufuneka ulungiselele ngononophelo. Kufanelekile ukunxibelelana nabalingane emva kokugqiba umsebenzi, kungekhona nje ekuqaleni. Iingxaki ezininzi ezinokubakho ngotshintsho zingasonjululwa kwinqanaba lokuphononongwa kwekhowudi.

7. Cinga ngale nto uyenzayo!

Kuya kubonakala ngathi isiluleko esicacileyo esisebenza kuyo nayiphi na imeko. Nangona kunjalo, iingxaki ezininzi bezinokuthintelwa ukuba umphuhlisi ebenokuphinda ahlalutye oko akwenzayo kunye noko kunokuchaphazela. Ukusebenza ngokufuduka kuhlala kufuna ingqalelo eyongezelelweyo kunye nokuchaneka.

Imigibe

Ngoku makhe sijonge imigibe eqhelekileyo onokuwela kuyo ukuba awulilandeli eli cebiso lingasentla, kwaye yintoni kanye kanye ofanele uyenze?

Imeko 1: Abaphuhlisi ababini bazama ukongeza utshintsho olutsha ngaxeshanye

Ungazidubuli njani ezinyaweni usebenzisa iLiquibase
UVasya noPetya bafuna ukwenza utshintsho lwe-4 version, ngaphandle kokwazi omnye nomnye. Benza utshintsho kwisiseko sedatha kwaye bakhuphe isicelo sokutsala kunye neefayile ezahlukeneyo zokutshintsha. Kucetywa indlela yokusebenza elandelayo:

Indlela yokwenza isigqibo

  1. Ngandlela-thile, oogxa kufuneka bavumelane ngolandelelwano apho utshintsho lwabo kufuneka luhambe khona, umzekelo, uPetin kufuneka asetyenziswe kuqala.
  2. Omnye kufuneka adibanise okwesibini kuye kwaye aphawule i-Vasya's changeset ngenguqulo 5. Oku kunokwenziwa ngeCherry Pick okanye ukudibanisa kakuhle.
  3. Emva kotshintsho, ngokuqinisekileyo kufuneka ujonge ubunyani bamanyathelo athathiweyo.
    Ngapha koko, iindlela ze-Liquibase ziya kukuvumela ukuba ube neenguqulelo ezimbini ze-4 kwindawo yokugcina, ukuze ushiye yonke into njengoko injalo. Oko kukuthi, uya kuba neenguqu ezimbini kuguqulelo lwesi-4 ngamagama ahlukeneyo. Ngale ndlela, kamva kuba nzima kakhulu ukuzulazula kwiinguqulelo zedatabase.

Ukongeza, iLiquibase, njengekhaya lezinto ezithandwayo, igcina iimfihlo ezininzi. Enye yazo isitshixo seCheckSum esisebenzayo, esivele kwinguqulo ye-1.7 kwaye ikuvumela ukuba uchaze ixabiso elisebenzayo le-hash kwisethingi ethile yotshintsho, kungakhathaliseki ukuba yintoni egcinwe kwisiseko sedatha. Amaxwebhu https://www.liquibase.org/documentation/changeset.html ithi oku kulandelayo:

Yongeza i-checksum ethathwa njengesebenzayo kolu tshintsho lweSeti, nokuba yintoni egcinwe kuvimba weenkcukacha. Isetyenziswa ikakhulu xa ufuna ukutshintsha iSeti yotshintsho kwaye ungafuni iimpazamo aphoswe kuvimba weenkcukacha osele uqhuba kuzo (hayi inkqubo ecetyiswayo)

Ewe, ewe, le nkqubo ayikhuthazwa. Kodwa ngamanye amaxesha igqwirha elikhanyayo elinamandla nalo likwazi ubugcisa obumnyama

Imeko 2: Ukufuduka okuxhomekeke kwidatha

Ungazidubuli njani ezinyaweni usebenzisa iLiquibase

Makhe sicinge ukuba awunakho ukukwazi ukusebenzisa i-database egciniweyo evela kwiiseva eziphilayo. U-Petya wenza i-changeset, wayivavanya kwindawo kwaye, ngokuzithemba okupheleleyo ukuba wayechanekile, wenza isicelo sokutsalwa kumphuhlisi. Kanye kwimeko apho, ukhokelo lweprojekthi lwacacisa ukuba ngaba uPetya wayeyijongile, waza wongeza. Kodwa ukusasazwa kwiseva yophuhliso kwawa.

Enyanisweni, oku kunokwenzeka, kwaye akukho mntu ukhuselekile koku. Oku kwenzeka ukuba uhlengahlengiso kwisakhiwo setafile ngandlela thile ibotshelelwe kwidatha ethile evela kwisiseko sedatha. Ngokucacileyo, ukuba i-database yePetya igcwele kuphela idatha yokuvavanya, ngoko ayinakugubungela zonke iimeko zengxaki. Ngokomzekelo, xa ucima itafile, kuvela ukuba kukho iirekhodi kwezinye iitheyibhile ngeSitshixo sangaphandle esinxulumene neerekhodi kulowo ucinyiweyo. Okanye xa utshintsha uhlobo lwekholomu, kuvela ukuba akukho 100% yedatha enokuthi iguqulelwe kuhlobo olutsha.

Indlela yokwenza isigqibo

  • Bhala izikripthi ezikhethekileyo eziza kusetyenziswa kanye kunye nokufuduka kwaye uzise idatha kwifom efanelekileyo. Le yindlela eqhelekileyo yokusombulula ingxaki yokudlulisa idatha kwizakhiwo ezitsha emva kokufaka isicelo sokufuduka, kodwa into efanayo ingasetyenziswa ngaphambili, kwiimeko ezikhethekileyo. Le ndlela, ngokuqinisekileyo, ayisoloko ikhona, kuba ukuhlela idatha kwiiseva eziphilayo kunokuba yingozi kwaye bonakalise.
  • Enye indlela enzima kukulungisa utshintsho olukhoyo. Ubunzima kukuba zonke ii-database apho sele zisetyenzisiwe kwifom ekhoyo kuya kufuneka zibuyiselwe. Kunokwenzeka ukuba lonke iqela le-backend liya kunyanzeliswa ukuba likhuphe i-database ukusuka ekuqaleni.
  • Kwaye eyona ndlela yendalo yonke kukudlulisa ingxaki ngedatha kwindawo yomphuhlisi, ukubuyisela imeko efanayo kunye nokongeza utshintsho olutsha, kulowo ophukileyo, oya kuthintela ingxaki.
    Ungazidubuli njani ezinyaweni usebenzisa iLiquibase

Ngokubanzi, ngakumbi i-database ifana nokwakheka kwisiseko sedatha yeseva yemveliso, amathuba amancinci okuba iingxaki zokufuduka ziya kude. Kwaye, ewe, phambi kokuba uthumele utshintsho kwindawo yokugcina, kufuneka ucinge amaxesha amaninzi ukuba iya kwaphula nantoni na.

Imeko 3. I-Liquibase iqala ukusetyenziswa emva kokuba ingene kwimveliso

Masithi iqela elikhokelayo licele uPetya ukuba afake i-Liquibase kwiprojekthi, kodwa iprojekthi sele ivele kwimveliso kwaye kukho isakhiwo sedatha ekhoyo.

Ngokunjalo, ingxaki kukuba nakweziphi na iiseva ezintsha okanye oomatshini bomphuhlisi, ezi tafile kufuneka ziphinde zenziwe kwakhona ukusuka ekuqaleni, kwaye indawo ekhoyo kufuneka ihlale ikwimo engaguqukiyo, ilungele ukwamkela utshintsho olutsha.

Indlela yokwenza isigqibo

Kukho iindlela ezininzi:

  • Eyokuqala neyona icacileyo kukuba neskripthi esahlukileyo ekufuneka sisetyenziswe ngesandla xa kuqalwa indawo entsha.
  • Eyesibini ayibonakali kangako, ibe ne-Liquibase migration ekwenye i-Liquibase Context, kwaye uyisebenzise. Unokufunda ngakumbi malunga noMxholo weLiquibase apha: https://www.liquibase.org/documentation/contexts.html. Ngokubanzi, le yindlela enomdla enokusetyenziswa ngempumelelo, umzekelo, ukuvavanya.
  • Umendo wesithathu unamanyathelo amaninzi. Okokuqala, ukufuduka kufuneka kudalwe iitafile ezikhoyo. Emva koko kufuneka isetyenziswe kwindawo ethile kwaye ke isixa sayo se-hash siya kufunyanwa. Isinyathelo esilandelayo kukuqalisa iitafile ze-Liquibase ezingenanto kwi-server yethu engenanto, kwaye kwitheyibhile kunye nembali yokusebenzisa utshintsho, unokubeka ngesandla irekhodi malunga "njengokungathi kusetyenziswe" utshintsho kunye neenguqu esele zikhona kwisiseko sedatha. Ke, kwiseva esele ikhona, ukubala kwembali kuya kuqala kwinguqulelo 2, kwaye zonke iimeko-bume ezintsha ziyakuziphatha ngokufanayo.
    Ungazidubuli njani ezinyaweni usebenzisa iLiquibase

Imeko 4. Ukufudukela kwelinye ilizwe kuba kukhulu kwaye akubi naxesha lokugqiba

Ekuqaleni kophuhliso lwenkonzo, njengomthetho, i-Liquibase isetyenziselwa ukuxhomekeka kwangaphandle, kwaye zonke iimfuduko zicutshungulwa xa isicelo siqala. Nangona kunjalo, ekuhambeni kwexesha, unokukhubeka kwezi meko zilandelayo:

  • Ukufuduka kuba kukhulu kwaye kuthatha ixesha elide ukugqiba.
  • Kukho imfuneko yokufuduka kwiindawo ezisasazwayo, umzekelo, kwiimeko ezininzi zeseva yedatha ngaxeshanye.
    Kule meko, ukufaka ufuduko ixesha elide kakhulu kuya kubangela ixesha lokuvala xa isicelo siqala. Ukongeza, ukufaka ufuduko kumzekelo wesicelo ngasinye ngokwahlukeneyo kunokubangela ukuba iiseva ezahlukeneyo zingasebenzi.

Indlela yokwenza isigqibo

Kwiimeko ezinjalo, iprojekthi yakho sele inkulu, mhlawumbi nokuba ngumntu omdala, kwaye i-Liquibase iqala ukusebenza njengesixhobo sangaphandle esahlukileyo. Inyani kukuba i-Liquibase njengethala leencwadi ihlanganiswe kwifayile yejagi, kwaye inokusebenza njengokuxhomekeka ngaphakathi kweprojekthi okanye ngokuzimeleyo.

Kwimodi ezimeleyo, unokushiya ukuphunyezwa kokufudukela kwindawo yakho yeCI / CD okanye kumagxa aqinileyo abalawuli benkqubo yakho kunye neengcali zokusasaza. Ukwenza oku uya kufuna umgca womyalelo weLiquibase https://www.liquibase.org/documentation/command_line.html. Kule mowudi, kunokwenzeka ukuba uqalise isicelo emva kokuba zonke iimfuduko eziyimfuneko zenziwe.

isiphelo

Ngapha koko, kunokubakho imigibe emininzi xa usebenza ngokufuduka kwedatha, kwaye uninzi lwayo lufuna indlela yokuyila. Kubalulekile ukuqonda ukuba xa usebenzisa isixhobo ngokuchanekileyo, uninzi lwale migibe inokuphetshwa. Ngokukodwa, kwafuneka ndijamelane nazo zonke iingxaki ezidwelisiweyo kwiifom ezahlukeneyo, kwaye ezinye zazo zaba sisiphumo seempazamo zam. Ubukhulu becala oku kwenzeka, ngokuqinisekileyo, ngenxa yokungakhathaleli, kodwa ngamanye amaxesha ngenxa yokungakwazi ukusebenzisa isixhobo solwaphulo-mthetho.

umthombo: www.habr.com

Yongeza izimvo