Bii o ṣe le yago fun ibon yiyan ararẹ ni ẹsẹ nipa lilo Liquibase

Ko ṣẹlẹ tẹlẹ, ati pe a tun lọ lẹẹkansi!

Lori iṣẹ akanṣe wa ti o tẹle, a pinnu lati lo Liquibase lati ibẹrẹ lati yago fun awọn iṣoro ni ọjọ iwaju. Bi o ti wa ni jade, kii ṣe gbogbo awọn ọmọ ẹgbẹ ọdọ mọ bi a ṣe le lo o ni deede. Mo ṣe idanileko inu inu kan, eyiti Mo pinnu lẹhinna lati yipada si nkan kan.

Nkan naa pẹlu awọn imọran to wulo ati apejuwe ti awọn ọfin mẹta ti o han gbangba julọ ti o le ṣubu sinu nigbati o ba n ṣiṣẹ pẹlu awọn irinṣẹ ijira data ibatan, ni pataki Liquibase. Ti a ṣe apẹrẹ fun awọn olupilẹṣẹ Java ni awọn ipele Junior ati Aarin;

Bii o ṣe le yago fun ibon yiyan ararẹ ni ẹsẹ nipa lilo Liquibase

Liquibase ati Flyway jẹ awọn imọ-ẹrọ idije akọkọ fun ipinnu awọn iṣoro iṣakoso ẹya ti awọn ẹya ibatan ni agbaye Java. Eyi akọkọ jẹ ọfẹ patapata, ni iṣe o jẹ igbagbogbo yan fun lilo, eyiti o jẹ idi ti a fi yan Liquibase gẹgẹbi akọni ti ikede naa. Sibẹsibẹ, diẹ ninu awọn iṣe ti a ṣalaye le jẹ gbogbo agbaye, da lori faaji ohun elo rẹ.

Awọn iṣipopada ti awọn ẹya ibatan jẹ ọna ti a fi agbara mu lati ṣe pẹlu irọrun ailagbara ti awọn ile itaja data ibatan. Ni akoko ti aṣa OOP, ara ti ṣiṣẹ pẹlu awọn apoti isura infomesonu tumọ si pe a yoo ṣe apejuwe ero naa ni ẹẹkan ati ki o maṣe fi ọwọ kan lẹẹkansi. Ṣugbọn awọn otito ni nigbagbogbo wipe ohun ayipada, ati awọn ayipada si awọn tabili be ti a beere oyimbo igba. Nipa ti, ilana funrararẹ le jẹ irora ati aibanujẹ.

Emi kii yoo jinlẹ sinu apejuwe ti imọ-ẹrọ ati awọn ilana fun fifi ile-ikawe si iṣẹ akanṣe rẹ lọpọlọpọ ti a ti kọ lori koko yii:

Ni afikun, nkan ti o tayọ ti wa tẹlẹ lori koko ti awọn imọran to wulo:

Awọn italologo

Mo fẹ lati pin imọran mi ati awọn asọye, eyiti a bi nipasẹ lagun, ẹjẹ ati irora ti yanju awọn iṣoro pẹlu ijira.

1. Ṣaaju ki o to bẹrẹ iṣẹ, o yẹ ki o mọ ara rẹ pẹlu awọn iṣẹ ti o dara julọ lori Aaye Liquibase

Nibẹ Awọn ohun ti o rọrun ṣugbọn pataki pupọ ni a ṣe apejuwe, laisi eyiti lilo ile-ikawe le ṣe idiju igbesi aye rẹ. Fun apẹẹrẹ, ọna ti a ko ṣeto si ṣiṣakoso awọn iyipada yoo pẹ tabi ya ja si rudurudu ati awọn ijira ti o fọ. Ti o ko ba yi awọn ayipada ti o gbẹkẹle ara ẹni jade si ipilẹ data data ati ọgbọn iṣẹ ni akoko kanna, iṣeeṣe giga wa pe eyi yoo ja si awọn idanwo pupa tabi agbegbe fifọ. Ni afikun, awọn iṣeduro fun lilo Liquibase lori oju opo wẹẹbu osise ni gbolohun kan nipa idagbasoke ati idanwo awọn iwe afọwọkọ rollback pẹlu awọn iwe afọwọkọ ijira akọkọ. O dara, ninu nkan naa https://habr.com/ru/post/178665/ Awọn apẹẹrẹ koodu wa nipa awọn ijira ati ẹrọ yipo pada.

2. Ti o ba bẹrẹ lilo awọn irinṣẹ ijira, maṣe gba awọn atunṣe afọwọṣe ni aaye data data

Gẹ́gẹ́ bí ọ̀rọ̀ náà ti ń lọ: “Lẹ́ẹ̀kọ̀ọ̀kan Persil, Persil nigbagbogbo.” Ti ipilẹ ohun elo rẹ ba bẹrẹ lati ni iṣakoso nipasẹ Liquibase, eyikeyi awọn ayipada afọwọṣe lẹsẹkẹsẹ yorisi ipo aisedede, ati ipele igbẹkẹle ninu awọn iyipada di odo. Awọn ewu ti o pọju pẹlu awọn wakati pupọ ti a lo ni mimu-pada sipo ibi ipamọ data ni oju iṣẹlẹ ti o buruju, olupin ti o ku. Ti o ba ni “ile-iwe atijọ” DBA Architect lori ẹgbẹ rẹ, fi suuru ati ironu ṣe alaye fun u bi awọn ohun buburu yoo ṣe jẹ ti o ba ṣatunkọ ibi ipamọ data nirọrun gẹgẹbi oye tirẹ lati ọdọ Olùgbéejáde SQL ti o ni majemu.

3. Ti o ba ti ti ti awọn changeet tẹlẹ sinu ibi ipamọ, yago fun ṣiṣatunkọ

Ti olupilẹṣẹ miiran ba fa ati lo awọn iyipada kan, eyiti yoo ṣe atunṣe nigbamii, yoo dajudaju ranti rẹ pẹlu ọrọ inurere nigbati o gba aṣiṣe kan nigbati o bẹrẹ ohun elo naa. Ti ṣiṣatunṣe awọn iyipada bakan n jo sinu idagbasoke, iwọ yoo ni lati tẹle oke isokuso ti hotfixes. Koko-ọrọ ti iṣoro naa da lori afọwọsi awọn ayipada nipasẹ apao hash - ẹrọ akọkọ ti Liquibase. Nigbati o ba n ṣatunṣe koodu iyipada, iye hash yipada. Ṣiṣatunṣe awọn iyipada ṣee ṣe nikan nigbati o ṣee ṣe lati ran gbogbo ibi ipamọ data lati ibere laisi sisọnu data. Ni idi eyi, atunṣe koodu SQL tabi XML le, ni ilodi si, ṣe igbesi aye rọrun ati ki o jẹ ki awọn iṣipopada diẹ sii ni kika. Apeere kan yoo jẹ ipo kan nibiti, ni ibẹrẹ ohun elo, ero ti orisun data orisun ti gba lori laarin ẹgbẹ naa.

4. Ti ṣe idaniloju awọn afẹyinti ipamọ data ti o ba ṣeeṣe

Nibi, Mo ro pe, ohun gbogbo jẹ kedere. Ti o ba jẹ lojiji ijira naa ko ni aṣeyọri, ohun gbogbo le jẹ pada. Liquibase ni o ni a ọpa fun yiyi pada awọn ayipada, ṣugbọn rollback awọn iwe afọwọkọ ti wa ni tun kọ nipa awọn Olùgbéejáde ara, ati awọn ti wọn le ni awọn išoro pẹlu iṣeeṣe kanna bi awọn iwe afọwọkọ ti akọkọ changeet. Eyi tumọ si pe o wulo lati mu ṣiṣẹ ni ailewu pẹlu awọn afẹyinti ni eyikeyi ọran.

5. Lo awọn afẹyinti data ti a fihan ni idagbasoke, ti o ba ṣeeṣe

Ti eyi ko ba tako awọn adehun ati aṣiri, ko si data ti ara ẹni ninu aaye data, ati pe ko ṣe iwọn bi oorun meji - ṣaaju lilo rẹ lori awọn olupin ijira ifiwe, o le ṣayẹwo bi yoo ṣe ṣiṣẹ lori ẹrọ olupilẹṣẹ ati iṣiro. fere 100% ti o pọju isoro nigba ijira.

6. Ibasọrọ pẹlu awọn miiran Difelopa lori egbe

Ninu ilana idagbasoke ti a ṣeto daradara, gbogbo eniyan ti o wa ninu ẹgbẹ mọ ẹni ti n ṣe kini. Ni otitọ, eyi kii ṣe ọran nigbagbogbo, nitorinaa, ti o ba ngbaradi awọn ayipada si ipilẹ data gẹgẹbi apakan ti iṣẹ-ṣiṣe rẹ, o ni imọran lati ṣe akiyesi gbogbo ẹgbẹ nipa eyi. Ti ẹnikan ba n ṣe awọn ayipada ni afiwe, o yẹ ki o ṣeto ni pẹkipẹki. O tọ lati ṣe ibaraẹnisọrọ pẹlu awọn ẹlẹgbẹ lẹhin ipari iṣẹ, kii ṣe ni ibẹrẹ nikan. Ọpọlọpọ awọn iṣoro ti o pọju pẹlu awọn iyipada le ṣe ipinnu ni ipele atunyẹwo koodu.

7. Ronu nipa ohun ti o nṣe!

Yoo dabi imọran ti ara ẹni ti o kan si eyikeyi ipo. Bí ó ti wù kí ó rí, ọ̀pọ̀lọpọ̀ ìṣòro ni ì bá ti yẹra fún bí olùgbéjáde náà bá ti ṣàyẹ̀wò ohun tí ó ń ṣe àti ohun tí ó lè nípa. Ṣiṣẹ pẹlu awọn ijira nigbagbogbo nilo akiyesi afikun ati deede.

Awọn ẹgẹ

Jẹ ki a wo awọn ẹgẹ aṣoju ti o le ṣubu sinu ti o ko ba tẹle imọran loke, ati kini, gangan, o yẹ ki o ṣe?

Ipo 1: Awọn olupilẹṣẹ meji n gbiyanju lati ṣafikun awọn iyipada tuntun ni akoko kanna

Bii o ṣe le yago fun ibon yiyan ararẹ ni ẹsẹ nipa lilo Liquibase
Vasya ati Petya fẹ lati ṣẹda a changeet version 4, lai mọ nipa kọọkan miiran. Wọn ṣe awọn ayipada si ipilẹ data ati gbejade ibeere fa pẹlu awọn faili iyipada oriṣiriṣi. Ilana iṣe atẹle yii ni a dabaa:

Bawo ni lati pinnu

  1. Ni ọna kan, awọn ẹlẹgbẹ gbọdọ gba lori aṣẹ ninu eyiti awọn iyipada wọn yẹ ki o lọ, fun apẹẹrẹ, Petin yẹ ki o lo ni akọkọ.
  2. Ẹnikan yẹ ki o ṣafikun ọkan keji si ara wọn ki o samisi awọn iyipada Vasya pẹlu ẹya 5. Eyi le ṣee ṣe nipasẹ Cherry Pick tabi akojọpọ afinju.
  3. Lẹhin awọn ayipada, o yẹ ki o ṣayẹwo ni idaniloju awọn iṣe ti o mu.
    Ni otitọ, awọn ọna ẹrọ Liquibase yoo gba ọ laaye lati ni ẹya meji awọn iyipada 4 ni ibi ipamọ, nitorinaa o le fi ohun gbogbo silẹ bi o ti jẹ. Iyẹn ni, iwọ yoo rọrun ni awọn ayipada meji si ẹya 4 pẹlu awọn orukọ oriṣiriṣi. Pẹlu ọna yii, nigbamii o nira pupọ lati lilö kiri ni awọn ẹya data data.

Ni afikun, Liquibase, bi ile ti awọn hobbits, ntọju ọpọlọpọ awọn aṣiri. Ọkan ninu wọn jẹ bọtini validCheckSum, eyiti o han ni ẹya 1.7 ati gba ọ laaye lati ṣalaye iye hash to wulo fun iyipada kan pato, laibikita ohun ti o fipamọ sinu aaye data. Iwe aṣẹ https://www.liquibase.org/documentation/changeset.html wí pé:

Ṣafikun checksum ti a ka pe o wulo fun Eto iyipada yii, laibikita ohun ti o fipamọ sinu aaye data. Ti a lo ni akọkọ nigbati o nilo lati yi Ṣeto iyipada pada ati pe ko fẹ ki awọn aṣiṣe da lori awọn apoti isura data lori eyiti o ti ṣiṣẹ tẹlẹ (kii ṣe ilana ti a ṣeduro)

Bẹẹni, bẹẹni, ilana yii ko ṣe iṣeduro. Ṣugbọn nigbakan alalupayida ina ti o lagbara tun ni oye awọn ilana dudu

Ipo 2: Iṣilọ ti o da lori data

Bii o ṣe le yago fun ibon yiyan ararẹ ni ẹsẹ nipa lilo Liquibase

Jẹ ki a ro pe o ko ni agbara lati lo awọn afẹyinti data lati awọn olupin laaye. Petya ṣẹda awọn ayipada kan, ṣe idanwo ni agbegbe ati, pẹlu igbẹkẹle kikun pe o tọ, ṣe ibeere fa si olupilẹṣẹ naa. O kan ni ọran, oludari ise agbese ṣalaye boya Petya ti ṣayẹwo rẹ, lẹhinna ṣafikun rẹ. Ṣugbọn imuṣiṣẹ lori olupin idagbasoke ṣubu.

Ni otitọ, eyi ṣee ṣe, ko si si ẹnikan ti o ni aabo lati eyi. Eyi ṣẹlẹ ti awọn iyipada si eto tabili ba ni asopọ si data kan pato lati ibi ipamọ data. O han ni, ti data data Petya ba kun nikan pẹlu data idanwo, lẹhinna o le ma bo gbogbo awọn ọran iṣoro. Fun apẹẹrẹ, nigba piparẹ tabili kan, o han pe awọn igbasilẹ wa ninu awọn tabili miiran nipasẹ Bọtini Ajeji ti o ni ibatan si awọn igbasilẹ ninu ọkan ti paarẹ. Tabi nigba iyipada iru iwe kan, o wa ni pe kii ṣe 100% ti data le ṣe iyipada si iru tuntun.

Bawo ni lati pinnu

  • Kọ awọn iwe afọwọkọ pataki ti yoo ṣee lo ni ẹẹkan pẹlu ijira ati mu data wa sinu fọọmu to dara. Eyi jẹ ọna gbogbogbo lati yanju iṣoro gbigbe data si awọn ẹya tuntun lẹhin lilo awọn iṣipopada, ṣugbọn nkan ti o jọra le ṣee lo ṣaaju, ni awọn ọran pataki. Ọna yii, nitorinaa, kii ṣe nigbagbogbo, nitori ṣiṣatunṣe data lori awọn olupin laaye le jẹ eewu ati paapaa iparun.
  • Ọna miiran ti o nira ni lati ṣatunkọ awọn iyipada ti o wa tẹlẹ. Iṣoro naa ni pe gbogbo awọn apoti isura data nibiti o ti lo tẹlẹ ni fọọmu ti o wa tẹlẹ yoo ni lati mu pada. O ṣee ṣe pupọ pe gbogbo ẹgbẹ ẹhin yoo fi agbara mu lati yipo data ni agbegbe lati ibere.
  • Ati ọna ti gbogbo agbaye julọ ni lati gbe iṣoro naa pẹlu data si ayika ti olupilẹṣẹ, tun ṣe ipo kanna ati fifi awọn iyipada titun kun, si eyi ti o fọ, eyi ti yoo ṣe idiwọ iṣoro naa.
    Bii o ṣe le yago fun ibon yiyan ararẹ ni ẹsẹ nipa lilo Liquibase

Ni gbogbogbo, diẹ sii data data jẹ iru ni akopọ si ibi ipamọ data olupin iṣelọpọ, aye ti o dinku ti awọn iṣoro pẹlu awọn iṣiwa yoo lọ jina. Ati pe, dajudaju, ṣaaju ki o to firanṣẹ awọn ayipada si ibi ipamọ, o yẹ ki o ronu ni ọpọlọpọ igba boya yoo fọ ohunkohun.

Ipo 3. Liquibase bẹrẹ lati ṣee lo lẹhin ti o lọ sinu iṣelọpọ

Ṣebi pe oludari ẹgbẹ naa beere Petya lati ni Liquibase ninu iṣẹ akanṣe, ṣugbọn iṣẹ akanṣe naa ti wa tẹlẹ ati pe eto data ti o wa tẹlẹ wa.

Nitorinaa, iṣoro naa ni pe lori awọn olupin tuntun tabi awọn ẹrọ idagbasoke, awọn tabili wọnyi gbọdọ tun ṣe lati ibere, ati agbegbe ti o wa tẹlẹ gbọdọ wa ni ipo deede, ṣetan lati gba awọn iyipada tuntun.

Bawo ni lati pinnu

Awọn ọna pupọ tun wa:

  • Ohun akọkọ ati ti o han gedegbe ni lati ni iwe afọwọkọ lọtọ ti o gbọdọ lo pẹlu ọwọ nigbati o ba bẹrẹ agbegbe titun kan.
  • Ekeji ko han gbangba, ni ijira Liquibase kan ti o wa ninu Ọrọ Liquibase miiran, ki o si lo. O le ka diẹ sii nipa Liquibase Context nibi: https://www.liquibase.org/documentation/contexts.html. Ni gbogbogbo, eyi jẹ ẹrọ ti o nifẹ ti o le ṣee lo ni aṣeyọri, fun apẹẹrẹ, fun idanwo.
  • Ọna kẹta ni awọn igbesẹ pupọ. Ni akọkọ, a gbọdọ ṣẹda ijira fun awọn tabili ti o wa tẹlẹ. Lẹhinna o gbọdọ lo si agbegbe kan ati nitorinaa apao hash rẹ yoo gba. Igbesẹ ti n tẹle ni lati ṣe ipilẹṣẹ awọn tabili Liquibase ofo lori olupin wa ti ko ṣofo, ati ninu tabili pẹlu itan-akọọlẹ ti lilo awọn iyipada, o le fi igbasilẹ pẹlu ọwọ nipa awọn iyipada “bi ẹnipe a lo” pẹlu awọn ayipada ti o wa tẹlẹ ninu ibi ipamọ data. Nitorinaa, lori olupin ti o wa tẹlẹ, kika kika itan yoo bẹrẹ lati ẹya 2, ati pe gbogbo awọn agbegbe tuntun yoo huwa bakanna.
    Bii o ṣe le yago fun ibon yiyan ararẹ ni ẹsẹ nipa lilo Liquibase

Ipo 4. Awọn aṣikiri di tobi ati pe ko ni akoko lati pari

Ni ibẹrẹ idagbasoke iṣẹ, gẹgẹbi ofin, a lo Liquibase gẹgẹbi igbẹkẹle ita, ati gbogbo awọn iṣipopada ti wa ni ilọsiwaju nigbati ohun elo ba bẹrẹ. Sibẹsibẹ, lẹhin akoko, o le kọsẹ lori awọn ọran wọnyi:

  • Awọn aṣikiri di nla ati gba akoko pipẹ lati pari.
  • iwulo fun ijira ni awọn agbegbe ti a pin, fun apẹẹrẹ, lori ọpọlọpọ awọn iṣẹlẹ olupin data ni nigbakannaa.
    Ni ọran yii, lilo awọn iṣiwa fun igba pipẹ yoo ja si akoko ti o ti pẹ nigbati ohun elo ba bẹrẹ. Ni afikun, lilo awọn iṣiwa si apẹẹrẹ ohun elo kọọkan lọtọ le ja si ni awọn olupin oriṣiriṣi ko ni amuṣiṣẹpọ.

Bawo ni lati pinnu

Ni iru awọn ọran, iṣẹ akanṣe rẹ ti tobi tẹlẹ, boya paapaa agbalagba, ati Liquibase bẹrẹ lati ṣe bi ohun elo ita ita lọtọ. Otitọ ni pe Liquibase bi ile-ikawe ti ṣajọpọ sinu faili idẹ, ati pe o le ṣiṣẹ bi igbẹkẹle laarin iṣẹ akanṣe kan tabi ni ominira.

Ni ipo adaduro, o le fi imuse awọn iṣiwa silẹ si agbegbe CI/CD rẹ tabi si awọn ejika ti o lagbara ti awọn alabojuto eto rẹ ati awọn alamọja imuṣiṣẹ. Lati ṣe eyi iwọ yoo nilo laini aṣẹ Liquibase https://www.liquibase.org/documentation/command_line.html. Ni ipo yii, o ṣee ṣe lati ṣe ifilọlẹ ohun elo lẹhin gbogbo awọn ijira pataki ti ṣe.

ipari

Ni otitọ, ọpọlọpọ awọn ipalara le wa nigbati o ba n ṣiṣẹ pẹlu awọn iṣipopada data, ati ọpọlọpọ ninu wọn nilo ọna ẹda. O ṣe pataki lati ni oye pe ti o ba lo ọpa naa ni deede, pupọ julọ awọn ipalara wọnyi le yago fun. Ni pato, Mo ni lati koju gbogbo awọn iṣoro ti a ṣe akojọ ni awọn ọna oriṣiriṣi, ati diẹ ninu wọn jẹ abajade awọn aṣiṣe mi. Pupọ julọ eyi n ṣẹlẹ, nitorinaa, nitori aibikita, ṣugbọn nigbakan nitori ailagbara ọdaràn lati lo ọpa naa.

orisun: www.habr.com

Fi ọrọìwòye kun