Momwe mungapewere kudziwombera pamapazi pogwiritsa ntchito Liquibase

Sizinachitikepo, ndipo apa tikupitanso!

Pa ntchito yathu yotsatira, tinaganiza zogwiritsa ntchito Liquibase kuyambira pachiyambi kuti tipewe mavuto m'tsogolomu. Monga momwe zikukhalira, si achinyamata onse a m'gulu omwe amadziwa kugwiritsa ntchito moyenera. Ndinakhala ndi msonkhano wamkati, womwe ndinaganiza zosintha kukhala nkhani.

Nkhaniyi ili ndi malangizo othandiza komanso kufotokozera zovuta zitatu zoonekeratu zomwe mungagwere mukamagwira ntchito ndi zida zosamukira ku database, makamaka Liquibase. Zopangidwira opanga ma Java pamagulu a Junior ndi Middle; kwa opanga odziwa zambiri zitha kukhala zosangalatsa kupanga ndikubwereza zomwe zimadziwika kale.

Momwe mungapewere kudziwombera pamapazi pogwiritsa ntchito Liquibase

Liquibase ndi Flyway ndiye matekinoloje akuluakulu omwe amapikisana nawo pakuthana ndi zovuta zowongolera zamitundu yamaubale m'dziko la Java. Yoyamba ndi yaulere kwathunthu, pochita imasankhidwa nthawi zambiri kuti igwiritsidwe ntchito, ndichifukwa chake Liquibase adasankhidwa kukhala ngwazi yofalitsa. Komabe, zina mwazomwe zafotokozedwa zitha kukhala zapadziko lonse lapansi, kutengera kapangidwe kanu kantchito.

Kusamuka kwa maubwenzi ndi njira yokakamizika yolimbana ndi kusinthasintha kofooka kwa malo osungira deta. M'nthawi ya mafashoni a OOP, kalembedwe kantchito ndi nkhokwe kumatanthauza kuti titha kufotokozera schema kamodzi osakhudzanso. Koma zoona zake n'zakuti nthawi zonse zinthu zimasintha, ndipo kusintha kwa tebulo kumafunika nthawi zambiri. Mwachibadwa, ndondomeko yokha ikhoza kukhala yopweteka komanso yosasangalatsa.

Sindipita mozama pakulongosola zaukadaulo ndi malangizo owonjezera laibulale ku polojekiti yanu; zolemba zingapo zalembedwa pamutuwu:

Kuphatikiza apo, panali kale nkhani yabwino kwambiri pamutu wa malangizo othandiza:

Malangizo

Ndikufuna kugawana nawo malangizo ndi ndemanga zanga, zomwe zinabadwa kudzera mu thukuta, magazi ndi ululu wothetsa mavuto ndi kusamuka.

1. Musanayambe ntchito, muyenera kudzidziwa bwino ndi gawo la machitidwe abwino malo Liquibase

Pamenepo zinthu zosavuta koma zofunika kwambiri zikufotokozedwa, popanda zomwe kugwiritsa ntchito laibulale kungasokoneze moyo wanu. Mwachitsanzo, njira yosakhazikika yoyendetsera zosintha posachedwa idzabweretsa chisokonezo komanso kusamuka kosweka. Ngati simukutulutsa zosintha zomwe zimadalirana pamakonzedwe a database ndi malingaliro a ntchito nthawi yomweyo, pali kuthekera kwakukulu kuti izi zitha kubweretsa mayeso ofiira kapena malo osweka. Kuonjezera apo, malingaliro ogwiritsira ntchito Liquibase pa webusaitiyi ali ndi chiganizo chokhudza chitukuko ndi kuyesa malemba obwerezabwereza pamodzi ndi zolemba zazikulu zosamukira. Chabwino, m'nkhani https://habr.com/ru/post/178665/ Pali zitsanzo za ma code okhudza kusamuka komanso njira yobweza.

2. Mukayamba kugwiritsa ntchito zida zosamukira, musalole kuwongolera pamanja mudongosolo la database

Monga mwambi umati: "Kamodzi Persil, Persil nthawi zonse." Ngati maziko a pulogalamu yanu ayamba kuyang'aniridwa ndi Liquibase, kusintha kulikonse pamanja kumabweretsa kusakhazikika, ndipo mulingo wa chidaliro pazosintha umakhala ziro. Zowopsa zomwe zingatheke zimaphatikizapo maola angapo omwe agwiritsidwa ntchito kubwezeretsa nkhokwe; muzochitika zoyipa kwambiri, seva yakufa. Ngati muli ndi "sukulu yakale" DBA Architect pagulu lanu, moleza mtima ndi moganizira mufotokozereni momwe zinthu zidzakhalire ngati angosintha nkhokwe molingana ndi kumvetsetsa kwake kuchokera kwa Wopanga SQL wokhazikika.

3. Ngati chosinthira chakankhidwira kale m'nkhokwe, pewani kusintha

Ngati woyambitsa wina adakoka ndikuyika chosinthira, chomwe chidzasinthidwa pambuyo pake, adzakukumbukirani ndi mawu okoma mtima akalandira cholakwika poyambitsa pulogalamuyo. Ngati kusintha kusinthako mwanjira ina kutayikira mu chitukuko, muyenera kutsatira otsetsereka a hotfixes. Chofunikira cha vutoli chimadalira kutsimikizika kwa kusintha kwa hash sum - njira yayikulu ya Liquibase. Mukasintha nambala yosinthira, kuchuluka kwa hashi kumasintha. Kusintha zosintha kumatheka pokhapokha ngati kuli kotheka kuyika nkhokwe yonse kuyambira poyambira popanda kutaya deta. Pankhaniyi, kukonzanso SQL kapena XML code kungathe, m'malo mwake, kupangitsa moyo kukhala wosavuta ndikupangitsa kusamuka kuwerengeka. Chitsanzo chingakhale momwe, kumayambiriro kwa ntchito, schema ya nkhokwe ya gwero idagwirizana mkati mwa gulu.

4. Khalani ndi zosunga zobwezeretsera zankhokwe ngati nkotheka

Apa, ndikuganiza, zonse ndi zomveka. Ngati mwadzidzidzi kusamukako sikunapambane, chirichonse chikhoza kubwezeretsedwanso. Liquibase ili ndi chida chosinthira kusintha, koma zolemba za rollback zimalembedwanso ndi wopangayo mwiniwake, ndipo amatha kukhala ndi mavuto omwe ali ndi mwayi wofanana ndi zolemba zakusintha kwakukulu. Izi zikutanthauza kuti ndizothandiza kusewera otetezeka ndi zosunga zobwezeretsera mulimonse.

5. Gwiritsani ntchito zosunga zobwezeretsera zotsimikizika pakupanga, ngati kuli kotheka

Ngati izi sizikutsutsana ndi mapangano ndi zinsinsi, palibe deta yaumwini m'dawunilodi, ndipo sichilemera ngati dzuwa ziwiri - musanagwiritse ntchito pa ma seva osamukira kumoyo, mukhoza kuyang'ana momwe zidzagwiritsire ntchito makina opanga mapulogalamu ndikuwerengera. pafupifupi 100% ya mavuto omwe angakhalepo panthawi yakusamuka.

6. Lumikizanani ndi otukula ena pagulu

Pachitukuko chokonzekera bwino, aliyense pagulu amadziwa yemwe akuchita. M'malo mwake, izi nthawi zambiri sizikhala choncho, chifukwa chake, ngati mukukonzekera zosintha pamasamba anu ngati gawo la ntchito yanu, ndikofunikira kudziwitsa gulu lonse za izi. Ngati wina akupanga kusintha kofanana, muyenera kukonzekera mosamala. Ndikoyenera kuyankhulana ndi anzanu mukamaliza ntchito, osati poyambira. Mavuto ambiri omwe angakhalepo ndi zosinthika amatha kuthetsedwa pagawo lowunikira ma code.

7. Ganizirani zomwe mukuchita!

Zingamveke ngati malangizo odziwonetsera okha omwe amagwira ntchito pazochitika zilizonse. Komabe, mavuto ambiri akanapewedwa ngati woyambitsayo akanapendanso zomwe akuchita ndi zomwe zingakhudze. Kugwira ntchito ndi anthu osamukira kumayiko ena kumafunikira chisamaliro chowonjezera komanso kulondola.

Misampha

Tiyeni tsopano tiwone misampha yomwe mungagwere ngati simutsatira malangizo omwe ali pamwambapa, ndipo muyenera kuchita chiyani?

Mkhalidwe 1: Madivelopa awiri akuyesera kuwonjezera zosintha zatsopano nthawi imodzi

Momwe mungapewere kudziwombera pamapazi pogwiritsa ntchito Liquibase
Vasya ndi Petya akufuna kupanga chosinthira 4, osadziwa za mnzake. Adasintha mawonekedwe a database ndikupereka pempho kukoka ndi mafayilo osiyanasiyana osintha. Njira yotsatirayi ikuperekedwa:

Momwe mungasankhire

  1. Mwanjira ina, ogwira nawo ntchito ayenera kuvomerezana ndi dongosolo lomwe kusintha kwawo kuyenera kupita, mwachitsanzo, Petin iyenera kugwiritsidwa ntchito poyamba.
  2. Wina aziwonjezera yachiwiri kwa iye ndikuyika zosintha za Vasya ndi mtundu 5. Izi zitha kuchitika kudzera mu Cherry Pick kapena kuphatikiza mwaukhondo.
  3. Pambuyo pakusintha, muyenera kuyang'ananso kutsimikizika kwa zomwe mwachita.
    M'malo mwake, njira za Liquibase zimakupatsani mwayi wokhala ndi zosintha ziwiri za 4 m'malo osungirako, kuti mutha kusiya zonse momwe zilili. Ndiye kuti, mudzakhala ndi zosintha ziwiri za mtundu 4 wokhala ndi mayina osiyanasiyana. Ndi njira iyi, pambuyo pake zimakhala zovuta kwambiri kuyendetsa matembenuzidwe a database.

Kuphatikiza apo, Liquibase, monga nyumba ya hobbits, imasunga zinsinsi zambiri. Chimodzi mwa izo ndi kiyi yovomerezeka yaCheckSum, yomwe idawonekera mu mtundu 1.7 ndikukulolani kuti mutchule mtengo wovomerezeka wa hashi pakusintha kwina, mosasamala kanthu za zomwe zasungidwa mu database. Zolemba https://www.liquibase.org/documentation/changeset.html akuti:

Onjezani cheke chomwe chimaonedwa kuti ndichabwino pakusinthakuSeti, mosasamala kanthu za zomwe zasungidwa munkhokwe. Amagwiritsidwa ntchito makamaka mukafuna kusintha kusinthaSet ndipo simukufuna kuti zolakwika ziziponyedwa pamasamba pomwe zidayendera kale (osati njira yovomerezeka)

Inde, inde, njirayi siyovomerezeka. Koma nthawi zina wamatsenga wamphamvu wowala amaphunziranso njira zakuda

Mkhalidwe 2: Kusamuka komwe kumadalira deta

Momwe mungapewere kudziwombera pamapazi pogwiritsa ntchito Liquibase

Tiyerekeze kuti mulibe kuthekera kogwiritsa ntchito zosunga zobwezeretsera kuchokera ku maseva amoyo. Petya adapanga zosintha, adaziyesa kwanuko ndipo, ndi chidaliro chonse kuti anali wolondola, adapempha kukoka kwa wopanga. Zikatero, wotsogolera polojekitiyo adalongosola ngati Petya adazifufuza, ndikuwonjezera. Koma kutumizidwa pa seva yachitukuko kunagwa.

Ndipotu izi ndizotheka, ndipo palibe amene angatetezedwe ku izi. Izi zimachitika ngati kusinthidwa kwa tebulo kumangiriridwa mwanjira inayake ndi data kuchokera ku database. Mwachiwonekere, ngati nkhokwe ya Petya imangodzazidwa ndi deta yoyesera, ndiye kuti sichingakhudze mavuto onse. Mwachitsanzo, pochotsa tebulo, zimakhala kuti pali zolembedwa m'matebulo ena a Foreign Key zomwe zimagwirizana ndi zolemba zomwe zikuchotsedwa. Kapena posintha mtundu wagawo, zimakhala kuti si 100% ya data yomwe ingasinthidwe kukhala mtundu watsopano.

Momwe mungasankhire

  • Lembani zolemba zapadera zomwe zidzagwiritsidwe ntchito kamodzi pamodzi ndi kusamuka ndikubweretsa deta mu mawonekedwe oyenera. Iyi ndi njira yowonjezera yothetsera vuto la kusamutsa deta kuzinthu zatsopano mutagwiritsa ntchito kusamuka, koma chinthu chofananacho chingagwiritsidwe ntchito kale, muzochitika zapadera. Njira iyi, ndithudi, siipezeka nthawi zonse, chifukwa kusintha deta pa ma seva amoyo kungakhale koopsa komanso kuwononga.
  • Njira ina yovuta ndikusintha masinthidwe omwe alipo. Chovuta ndichakuti ma database onse omwe adagwiritsidwapo kale mu mawonekedwe ake omwe alipo ayenera kubwezeretsedwanso. Ndizotheka kuti gulu lonse la backend lidzakakamizika kutulutsa database kuyambira pachiyambi.
  • Ndipo njira yapadziko lonse lapansi ndikusamutsira vutolo ndi deta ku chilengedwe cha wopanga, kukonzanso zomwezo ndikuwonjezera kusintha kwatsopano, kuzomwe zidasweka, zomwe zidzalepheretsa vutoli.
    Momwe mungapewere kudziwombera pamapazi pogwiritsa ntchito Liquibase

Nthawi zambiri, m'mene malo osungiramo zinthu zakale amafananirana ndi database ya seva yopanga, mwayi wochepa woti mavuto osamukira kumayiko ena apite kutali. Ndipo, zowona, musanatumize chosinthira kunkhokwe, muyenera kuganiza kangapo ngati chidzaphwanya chilichonse.

Mkhalidwe 3. Liquibase imayamba kugwiritsidwa ntchito itatha kupanga

Tiyerekeze kuti gulu lotsogolera linapempha Petya kuti aphatikizepo Liquibase mu polojekitiyi, koma pulojekitiyi ikupangidwa kale ndipo pali ndondomeko yomwe ilipo kale.

Chifukwa chake, vuto ndilakuti pa maseva atsopano kapena makina opanga mapulogalamu, matebulowa amayenera kupangidwanso kuyambira pachiyambi, ndipo malo omwe alipo ayenera kukhala osasinthasintha, okonzeka kuvomereza zosintha zatsopano.

Momwe mungasankhire

Palinso njira zingapo:

  • Choyamba komanso chodziwikiratu ndicho kukhala ndi zolemba zosiyana zomwe ziyenera kugwiritsidwa ntchito pamanja poyambitsa malo atsopano.
  • Chachiwiri sichidziwikiratu, khalani ndi kusamuka kwa Liquibase komwe kuli mu Liquibase Context ina, ndikuyiyika. Mutha kuwerenga zambiri za Liquibase Context apa: https://www.liquibase.org/documentation/contexts.html. Kawirikawiri, iyi ndi njira yosangalatsa yomwe ingagwiritsidwe ntchito bwino, mwachitsanzo, kuyesa.
  • Njira yachitatu imakhala ndi masitepe angapo. Choyamba, kusamuka kuyenera kupangidwa kwa matebulo omwe alipo. Kenako iyenera kugwiritsidwa ntchito kumalo ena ndipo motero ndalama zake za hashi zidzapezedwa. Chotsatira ndikuyambitsa matebulo opanda kanthu a Liquibase pa seva yathu yopanda kanthu, ndipo patebulo lomwe lili ndi mbiri yakugwiritsa ntchito zosintha, mutha kuyika pamanja mbiri ya "monga ngati ikugwiritsidwa ntchito" ndi zosintha zomwe zilipo kale mu database. . Chifukwa chake, pa seva yomwe ilipo, kuwerengera mbiri kudzayamba kuchokera ku mtundu 2, ndipo malo onse atsopano azichita chimodzimodzi.
    Momwe mungapewere kudziwombera pamapazi pogwiritsa ntchito Liquibase

Mkhalidwe 4. Kusamuka kumakhala kwakukulu ndipo alibe nthawi yomaliza

Kumayambiriro kwa chitukuko cha utumiki, monga lamulo, Liquibase imagwiritsidwa ntchito ngati kudalira kunja, ndipo kusamuka konse kumakonzedwa pamene ntchito ikuyamba. Komabe, pakapita nthawi, mutha kukhumudwa pazifukwa izi:

  • Kusamuka kumakhala kwakukulu ndipo kumatenga nthawi yayitali kuti kumalize.
  • Pakufunika kusamuka m'malo ogawidwa, mwachitsanzo, pama seva angapo a database nthawi imodzi.
    Pamenepa, kugwiritsa ntchito kusamuka kwa nthawi yayitali kumapangitsa kuti ntchitoyo iyambike. Kuonjezera apo, kugwiritsa ntchito kusamuka pazochitika zilizonse zogwiritsira ntchito padera kungapangitse ma seva osiyanasiyana kukhala osagwirizana.

Momwe mungasankhire

Zikatero, polojekiti yanu ndi yayikulu kale, mwina ngakhale wamkulu, ndipo Liquibase imayamba kuchita ngati chida chakunja. Chowonadi ndi chakuti Liquibase ngati laibulale imapangidwa kukhala fayilo ya mtsuko, ndipo imatha kugwira ntchito ngati kudalira mkati mwa polojekiti kapena paokha.

Munjira yoyimilira, mutha kusiya kukhazikitsidwa kwakusamuka kupita kumalo anu a CI / CD kapena pamapewa amphamvu a oyang'anira makina anu ndi akatswiri otumiza. Kuti muchite izi mudzafunika mzere wolamula wa Liquibase https://www.liquibase.org/documentation/command_line.html. Munjira iyi, zimakhala zotheka kukhazikitsa pulogalamuyo pambuyo poti kusamuka koyenera kukuchitika.

Pomaliza

M'malo mwake, pakhoza kukhala misampha yambiri mukamagwira ntchito ndi kusamuka kwa database, ndipo ambiri amafunikira njira yopangira. Ndikofunikira kumvetsetsa kuti ngati mugwiritsa ntchito chidacho moyenera, misampha yambiri imatha kupewedwa. Mwachindunji, ndinayenera kuthana ndi mavuto onse omwe adatchulidwa m'njira zosiyanasiyana, ndipo ena a iwo anali zotsatira za zolakwa zanga. Nthawi zambiri izi zimachitika chifukwa cha kusasamala, koma nthawi zina chifukwa cholephera kugwiritsa ntchito chida.

Source: www.habr.com

Kuwonjezera ndemanga