Nzira yekudzivirira sei kuzvipfura mutsoka uchishandisa Liquibase

Hazvina kumboitika, uye hezvino taenda zvakare!

Pachirongwa chedu chinotevera, takasarudza kushandisa Liquibase kubva pakutanga kudzivirira matambudziko mune ramangwana. Sezvazvinoitika, havasi vese vechidiki vechikwata vanoziva mashandisiro aungaita. Ndakaita musangano wemukati, wandakazofunga kuchinja kuita chinyorwa.

Chinyorwa chacho chinosanganisira matipi anobatsira uye tsananguro yematanho matatu ari pachena aunogona kuwira mauri paunenge uchishanda nematurusi ekufambisa edhatabhesi, kunyanya Liquibase. Yakagadzirirwa vagadziri veJava paJunior uye Middle nhanho; kune vagadziri vane ruzivo zvakanyanya zvingave zvekufarira kurongedza uye kudzokorora izvo zvinonyanya kuzivikanwa.

Nzira yekudzivirira sei kuzvipfura mutsoka uchishandisa Liquibase

Liquibase neFlyway ndiwo makuru anokwikwidza matekinoroji ekugadzirisa vhezheni kutonga matambudziko ehukama zvimiro munyika yeJava. Yokutanga yakasununguka zvachose, mukuita inowanzosarudzwa kushandiswa, ndicho chikonzero Liquibase yakasarudzwa segamba rekubudiswa. Nekudaro, mamwe maitiro anotsanangurwa anogona kunge ari epasirese, zvichienderana neako mavakirwo ekushandisa.

Kutama kwezvimiro zvehukama inzira yekumanikidzwa yekutarisana nekusasimba kuchinjika kwehukama data zvitoro. Munguva yeOOP fashoni, maitiro ekushanda nemadhatabhesi aireva kuti taizotsanangura schema kamwe chete uye kwete kuibata zvakare. Asi chokwadi chiripo ndechekuti zvinhu zvinoshanduka, uye shanduko kuchimiro chetafura inodiwa kazhinji. Nomuzvarirwo, nzira yacho pachayo inogona kuva inorwadza uye isingafadzi.

Ini handisi kuzopinda zvakadzika mutsananguro yetekinoroji uye mirairo yekuwedzera raibhurari kupurojekiti yako; akati wandei zvinyorwa zvakanyorwa pane iyi nyaya:

Mukuwedzera, pakanga patove nechinyorwa chakanakisa pamusoro pemusoro wematipi anobatsira:

Mazano

Ndinoda kugovera mazano angu nekutaura, izvo zvakazvarwa kuburikidza nedikita, ropa uye kurwadziwa kwekugadzirisa matambudziko nekutama.

1. Usati watanga basa, unofanirwa kujairana nechikamu chemaitiro akanakisa site Liquibase

Ikoko zvinhu zviri nyore asi zvinokosha zvikuru zvinorondedzerwa, pasina izvo kushandisa raibhurari kunogona kuomesa upenyu hwako. Semuenzaniso, nzira isina kurongeka yekugadzirisa shanduko inozotungamira mukuvhiringidzika uye kutama kwakaputsika. Kana iwe ukasaburitsa shanduko dzinoenderana kune iyo dhatabhesi chimiro uye sevhisi logic panguva imwe chete, pane mukana wakakura wekuti izvi zvinotungamira kune dzvuku bvunzo kana yakaputsika nharaunda. Pamusoro pezvo, kurudziro dzekushandisa Liquibase pawebhusaiti yepamutemo ine chirevo pamusoro pekuvandudzwa uye kuyedzwa kwezvinyorwa zverollback pamwe chete nemagwaro makuru ekufambisa. Zvakanaka, munyaya yacho https://habr.com/ru/post/178665/ Kune mienzaniso yekodhi maererano nekutama uye nzira yekudzosera kumashure.

2. Kana ukatanga kushandisa maturusi ekufambisa, usabvumira kugadziriswa kwemaoko muhutano hwe database

Sezvo chirevo chichienda: "Kamwe Persil, nguva dzose Persil." Kana hwaro hwechikumbiro chako hukatanga kutungamirwa neLiquibase, chero shanduko yemanyorero inokurumidza kutungamira kune isingaenderane, uye nhanho yekuvimba mune shanduko inova zero. Njodzi dzinogona kuitika dzinosanganisira maawa akati wandei akashandiswa kudzoreredza dhatabhesi; mune yakaipisisa mamiriro, sevha yakafa. Kana iwe uine "chikoro chekare" DBA Architect pachikwata chako, nemoyo murefu uye nekufunga mutsanangurire kuti zvinhu zvakaipa sei kana akangogadzirisa dhatabhesi maererano nekunzwisisa kwake kubva kune ane zvirevo SQL Developer.

3. Kana shanduko yatosundirwa mudura, dzivisa kugadzirisa

Kana mumwe mugadziri akadhonza uye akaisa shanduko, iyo inozogadziriswa gare gare, iye anozonyatsokurangarira nezwi remutsa paanogashira chikanganiso paanotanga application. Kana kugadzirisa shanduko neimwe nzira inopinda mubudiriro, uchafanirwa kutevera inotsvedza inotsvedza yehotfixes. Icho chakakosha chedambudziko chiri pakusimbiswa kwekuchinja nehashi sum - iyo huru nzira yeLiquibase. Paunenge uchigadzirisa shanduko yekodhi, huwandu hwehashi hunochinja. Kugadzirisa shanduko kunogoneka chete kana zvichikwanisika kuendesa dhatabhesi rese kubva mukutanga pasina kurasikirwa nedata. Muchiitiko ichi, kugadzirisa zvakare SQL kana XML kodhi kunogona, pane zvinopesana, kuita kuti hupenyu huve nyore uye kuita kuti kutama kuverengeke. Muenzaniso ungave mamiriro ezvinhu apo, pakutanga kwechikumbiro, schema yenzvimbo yedatabase yakabvumiranwa mukati mechikwata.

4. Iva nechokwadi chekuchengetedzwa kwedatabase kana zvichiita

Pano, ndinofunga, zvinhu zvose zvakajeka. Kana kamwe kamwe kutama kusina kubudirira, zvose zvinogona kudzorerwa shure. Liquibase ine chishandiso chekudzosera kumashure shanduko, asi iyo rollback script inonyorwawo nemugadziri iye pachake, uye vanogona kuve nezvinetso nemukana wakafanana sezvinyorwa zveiyo main changeet. Izvi zvinoreva kuti zvinobatsira kuitamba zvakachengeteka nema backups chero zvakadaro.

5. Shandisa zvakasimbiswa dhepfenyuro yedatabase mukusimudzira, kana zvichibvira

Kana izvi zvisingapokane nezvibvumirano uye zvakavanzika, hapana data rako pachako mudhatabhesi, uye harireme semazuva maviri - usati waishandisa pamaseva ekufambisa mhenyu, unogona kutarisa kuti ichashanda sei pamushini wemugadziri uye kuverenga. inenge 100% yematambudziko anogona kuitika panguva yekutama.

6. Kurukura nevamwe vanogadzira pachikwata

Mukuita kwakarongeka kwekusimudzira, munhu wese ari muchikwata anoziva kuti ndiani ari kuita chii. Muchokwadi, izvi kazhinji hazvisizvo, saka, kana uri kugadzirira shanduko kune dhatabhesi chimiro sechikamu chebasa rako, zvinokurudzirwa kuzivisa timu yese nezve izvi. Kana mumwe munhu ari kuita shanduko mukuenderana, iwe unofanirwa kuronga nemazvo. Zvakakodzera kutaurirana nevaunoshanda navo mushure mekupedza basa, kwete pakutanga. Mazhinji matambudziko anogona kuitika ane shanduko anogona kugadziriswa padanho rekuongorora kodhi.

7. Funga pamusoro pezvauri kuita!

Ringaita sezano rinobuda pachena rinoshanda kune chero mamiriro ezvinhu. Nekudaro, matambudziko mazhinji angadai akadziviswa dai mugadziri akaongorora zvakare zvaari kuita uye zvazvingaite. Kushanda nevanotama nguva dzose kunoda kutariswa kwakawedzerwa uye kururama.

Misungo

Ngatitarisei kune yakajairwa misungo yaunogona kuwira mairi kana ukasatevedzera zano riri pamusoro, uye chii, chaizvo, chaunofanira kuita?

Situation 1: Vagadziri vaviri vari kuyedza kuwedzera shanduko itsva panguva imwe chete

Nzira yekudzivirira sei kuzvipfura mutsoka uchishandisa Liquibase
Vasya naPetya vanoda kugadzira shanduko yeshanduro 4, vasingazive nezve mumwe nemumwe. Ivo vakaita shanduko kune dhatabhesi chimiro uye vakapa chikumbiro chekudhonza neakasiyana shanduko mafaera. Iyo inotevera nzira yekuita inokurudzirwa:

Ungasarudza sei

  1. Neimwe nzira, vamwe vashandi vanofanirwa kubvumirana pane hurongwa hwekuchinja kwavo kunofanirwa kuenda, semuenzaniso, Petin inofanira kushandiswa kutanga.
  2. Mumwe munhu anofanirwa kuwedzera wechipiri kwaari uye kumaka shanduko yaVasya neshanduro 5. Izvi zvinogona kuitwa kuburikidza neCherry Pick kana kusanganisa kwakachena.
  3. Mushure mekuchinja, iwe unofanirwa kutarisa chokwadi chezviito zvakatorwa.
    Muchokwadi, iyo Liquibase michina ichakubvumidza iwe kuve neaviri vhezheni 4 shanduko mune repository, saka iwe unogona kusiya zvese sezvazviri. Kureva, iwe unongove neshanduko mbiri kushanduro 4 ine mazita akasiyana. Neiyi nzira, gare gare inova yakaoma kwazvo kufamba muzvinyorwa zve database.

Uye zvakare, Liquibase, senge imba yemahobiti, inochengeta zvakavanzika zvakawanda. Imwe yacho ndeyechokwadiCheckSum kiyi, iyo yakaonekwa muvhezheni 1.7 uye inokutendera kuti utaure yakakosha hashi kukosha kune chaiyo shanduko, zvisinei kuti chii chakachengetwa mudhatabhesi. Zvinyorwa https://www.liquibase.org/documentation/changeset.html anoti zvinotevera:

Wedzera cheki inonzi inoshanda kune iyi shandukoSet, zvisinei kuti chii chakachengetwa mudhatabhesi. Inoshandiswa zvakanyanya kana iwe uchida kushandura shandukoSet uye usingade zvikanganiso kukandwa pane dhatabhesi payakatomhanya (kwete maitiro anokurudzirwa)

Hongu, hongu, iyi nzira haina kukurudzirwa. Asi dzimwe nguva n'anga yakasimba yechiedza inobatawo maitiro erima

Situation 2: Kutama kunoenderana nedata

Nzira yekudzivirira sei kuzvipfura mutsoka uchishandisa Liquibase

Ngatifungei kuti haugone kushandisa database backups kubva kumaseva mhenyu. Petya akagadzira shanduko, akaiedza munharaunda uye, aine chivimbo chakazara kuti aive akarurama, akaita chikumbiro chekudhonza kumugadziri. Zvingodaro, mutungamiri weprojekiti akajekesa kana Petya akaitarisa, ndokuiwedzera. Asi kutumirwa pane server yekuvandudza kwakadonha.

Muchokwadi, izvi zvinogoneka, uye hapana anodzivirirwa kubva kune izvi. Izvi zvinoitika kana kugadziridzwa kune tafura chimiro kwakasungirirwa kune chaiyo data kubva kudhatabhesi. Zviripachena, kana dhatabhesi raPetya rakazadzwa chete nedata rekuyedza, saka rinogona kunge risingavhare matambudziko ese. Semuenzaniso, pakudzima tafura, zvinoitika kuti kune marekodhi mune mamwe matafura neKune dzimwe nyika Key ane hukama nemarekodhi mune iri kubviswa. Kana pakuchinja rudzi rwekoramu, zvinoitika kuti kwete 100% yedata inogona kuchinjirwa kurudzi rutsva.

Ungasarudza sei

  • Nyora zvinyorwa zvakakosha izvo zvichashandiswa kamwe chete pamwe nekutama uye kuunza iyo data muchimiro chakakodzera. Iyi inzira yakajairika yekugadzirisa dambudziko rekuendesa data kune zvivakwa zvitsva mushure mekushandisa migration, asi chimwe chinhu chakafanana chinogona kushandiswa pamberi, mune dzakakosha zviitiko. Iyi nzira, hongu, haiwanzo kuwanikwa, nekuti kugadzirisa data pamaseva mhenyu kunogona kuve nengozi uye nekuparadza.
  • Imwe nzira yakaoma ndeyekugadzirisa iripo shanduko. Chinonetsa ndechekuti dhatabhesi dzese kwayakatoshandiswa muchimiro chayo iripo ichafanirwa kudzoserwa. Zvinogoneka kuti timu yese yekumashure inomanikidzwa kuburitsa dhatabhesi kubva pakutanga.
  • Uye iyo nzira yepasirese ndeyekuendesa dambudziko nedata kune nharaunda yevagadziri, kudzoreredza mamiriro akafanana uye nekuwedzera shanduko nyowani, kune yakatyoka, iyo inotenderedza dambudziko.
    Nzira yekudzivirira sei kuzvipfura mutsoka uchishandisa Liquibase

Kazhinji, iyo yakawanda dhatabhesi yakafanana mukuumbwa kune yekugadzira server dhatabhesi, mushoma mukana wekuti matambudziko nekutama anoenda kure. Uye, hongu, usati watumira shanduko kune repository, iwe unofanirwa kufunga kakawanda kuti ichapwanya chero chinhu.

Mamiriro ezvinhu 3. Liquibase inotanga kushandiswa mushure mokunge yapinda mukugadzirwa

Ngatitii mutungamiri weboka akakumbira Petya kuti aise Liquibase mupurojekiti, asi purojekiti yatove mukugadzirwa uye kune dhizaini iripo.

Saizvozvo, dambudziko nderekuti pane chero maseva matsva kana michina yekuvandudza, matafura aya anofanirwa kugadziridzwa kubva mukutanga, uye nharaunda iripo inofanirwa kuramba iri mune inowirirana, yakagadzirira kugamuchira shanduko nyowani.

Ungasarudza sei

Panewo nzira dzakawanda:

  • Yekutanga uye yakanyatsojeka ndeye kuve neyakasiyana script iyo inofanirwa kushandiswa pamaoko pakutanga nharaunda itsva.
  • Yechipiri haina kujeka, iva neLiquibase migration iri mune imwe Liquibase Context, uye ishandise. Unogona kuverenga zvakawanda nezve Liquibase Context pano: https://www.liquibase.org/documentation/contexts.html. Kazhinji, iyi inzira inonakidza inogona kushandiswa zvinobudirira, semuenzaniso, pakuedza.
  • Nzira yechitatu ine matanho akawanda. Kutanga, kutama kunofanirwa kugadzirwa kune matafura aripo. Ipapo inofanira kushandiswa kune imwe nharaunda uye nekudaro mari yayo yehashi ichawanikwa. Nhanho inotevera ndeyekutanga matafura eLiquibase asina chinhu pane yedu isina-isina sevha, uye mutafura ine nhoroondo yekushandiswa kwekuchinja, unogona kuisa rekodhi nezve "sekunge yaiswa" shanduko ine shanduko yagara iripo mudhatabhesi. . Saka, pane sevha iripo, nhoroondo yekuverenga ichatanga kubva kuvhezheni 2, uye nharaunda dzese nyowani dzichaita zvakafanana.
    Nzira yekudzivirira sei kuzvipfura mutsoka uchishandisa Liquibase

Mamiriro ezvinhu 4. Kutama kunove kwakakura uye havana nguva yekupedzisa

Pakutanga kwekuvandudzwa kwesevhisi, sekutonga, Liquibase inoshandiswa sekutsamira kwekunze, uye kutama kwese kunogadziriswa kana application yatanga. Nekudaro, nekufamba kwenguva, unogona kugumburwa pane zvinotevera zviitiko:

  • Kutama kunove kwakakura uye kunotora nguva yakareba kuti kupedze.
  • Pane kudiwa kwekutama munzvimbo dzakagoverwa, semuenzaniso, pane akati wandei database server zviitiko panguva imwe chete.
    Muchiitiko ichi, kushandisa kutama kwenguva yakareba kunozoguma nekufamba kwenguva kana application yatanga. Pamusoro pezvo, kushandisa kutama kune yega yega application chiitiko zvakasiyana kunogona kukonzera kuti maseva akasiyana asave mukuwirirana.

Ungasarudza sei

Mumamiriro ezvinhu akadaro, purojekiti yako yatove yakakura, zvichida kunyange munhu mukuru, uye Liquibase inotanga kuita sechinhu chakasiyana chekunze. Icho chokwadi ndechekuti Liquibase seraibhurari inounganidzwa kuita chirongo faira, uye inogona kushanda seyakavimbika mukati meprojekiti kana yakazvimirira.

Mune yakamira modhi, unogona kusiya kuita kwekutama kune yako CI / CD nharaunda kana kune akasimba mafudzi evako system maneja uye nyanzvi dzekutumira. Kuti uite izvi iwe uchada iyo Liquibase yekuraira mutsara https://www.liquibase.org/documentation/command_line.html. Mune iyi modhi, zvinogoneka kuvhura application mushure mekufamba kwese kwakakosha kwaitwa.

mhedziso

Muchokwadi, panogona kuve neakawanda mimwe misungo kana uchishanda nedatabase migration, uye mazhinji acho anoda nzira yekugadzira. Izvo zvakakosha kuti unzwisise kuti kana iwe ukashandisa chishandiso nemazvo, mazhinji eaya misungo anogona kudzivirirwa. Kunyanya, ndaifanira kutarisana nezvinetso zvose zvakanyorwa nenzira dzakasiyana, uye mamwe acho aiva mugumisiro wekukanganisa kwangu. Kunyanya izvi zvinoitika, hongu, nekuda kwekusava nehanya, asi dzimwe nguva nekuda kwekutadza kwematsotsi kushandisa chishandiso.

Source: www.habr.com

Voeg