Mokhoa oa ho qoba ho ithunya leotong u sebelisa Liquibase

Ha ho mohla ho kileng ha etsahala, 'me ke mona re ea hape!

Mosebetsing oa rona o latelang, re ile ra etsa qeto ea ho sebelisa Liquibase ho tloha qalong ho qoba mathata nakong e tlang. Kamoo ho bonahalang kateng, hase litho tsohle tsa sehlopha sa bacha ba tsebang ho li sebelisa ka nepo. Ke ile ka tšoara seboka sa ka hare, seo ke ileng ka etsa qeto ea ho se fetola sehlooho.

Sengoliloeng se kenyelletsa malebela a bohlokoa le tlhaloso ea maraba a mararo a hlakileng ao u ka oelang ho ona ha u sebetsa ka lisebelisoa tsa ho falla ha database, haholo-holo Liquibase. E etselitsoe bahlahisi ba Java maemong a Junior le Middle; bakeng sa bahlahisi ba nang le boiphihlelo ho ka ba monate ho hlophisa le ho pheta se seng se ntse se tsejoa.

Mokhoa oa ho qoba ho ithunya leotong u sebelisa Liquibase

Liquibase le Flyway ke mahlale a mantlha a hlolisanoang bakeng sa ho rarolla mathata a taolo ea mofuta oa meaho ea likamano lefatšeng la Java. Ea pele e lokolohile ka ho feletseng, ka ts'ebetso e atisa ho khethoa bakeng sa tšebeliso, ke ka lebaka leo Liquibase e ileng ea khethoa e le mohale oa khatiso. Leha ho le joalo, tse ling tsa litloaelo tse hlalositsoeng e kanna ea ba tsa bokahohleng, ho latela moralo oa ts'ebeliso ea hau.

Ho falla ha meaho ea likamano ke mokhoa o qobelloang oa ho sebetsana le ho feto-fetoha ha maemo ho fokolang ho boloka boitsebiso ba kamano. Mehleng ea feshene ea OOP, mokhoa oa ho sebetsa le li-database o ne o bolela hore re tla hlalosa schema hang ebe re se ke ra e ama hape. Empa 'nete ke hore lintho lia fetoha,' me liphetoho tsa sebopeho sa tafole lia hlokahala hangata. Ka tlhaho, ts'ebetso ka boeona e ka ba bohloko le e sa thabiseng.

Nke ke ka kena botebong ba tlhaloso ea theknoloji le litaelo tsa ho eketsa laeborari morerong oa hau; ho ngotsoe lingoliloeng tse 'maloa mabapi le sehlooho sena:

Ho phaella moo, ho ne ho se ho ntse ho e-na le sengoloa se setle ka taba ea malebela a bohlokoa:

Litlhahiso

Ke batla ho arolelana keletso le litlhaloso tsa ka, tse tsoetsoeng ka mofufutso, mali le bohloko ba ho rarolla mathata ka ho falla.

1. Pele u qala mosebetsi, u lokela ho tloaelana le karolo ea mekhoa e metle ka ho fetisisa sebaka Liquibase

Moo lintho tse bonolo empa e le tsa bohlokoa haholo li hlalosoa, ntle le tseo ho sebelisa laebrari ho ka thatafatsa bophelo ba hau. Ka mohlala, mokhoa o sa hlophisoang oa ho laola liphetoho tse fetohang kapele kapa hamorao o tla baka pherekano le ho falla ho robehileng. Haeba u sa fetole liphetoho tse itšetlehileng ka bobeli ho sebopeho sa database le mohopolo oa litšebeletso ka nako e le 'ngoe, ho na le monyetla o moholo oa hore sena se tla lebisa litekong tse khubelu kapa tikoloho e robehileng. Ho feta moo, likhothaletso tsa ho sebelisa Liquibase webosaeteng ea semmuso li na le poleloana e mabapi le nts'etsopele le tlhahlobo ea mangolo a rollback hammoho le lingoliloeng tse kholo tsa ho falla. Hantle, sehloohong https://habr.com/ru/post/178665/ Ho na le mehlala ea khoutu mabapi le ho falla le mokhoa oa ho khutlisa.

2. Haeba u qala ho sebelisa lisebelisoa tsa ho falla, u se ke ua lumella ho lokisoa ka letsoho mohahong oa database

Joalokaha polelo e re: "Hang Persil, kamehla Persil." Haeba motheo oa kopo ea hau o qala ho laoloa ke Liquibase, liphetoho leha e le life tsa matsoho hang-hang li lebisa boemong bo sa tsitsang, 'me boemo ba tšepo ho liphetoho bo fetoha zero. Likotsi tse ka bang teng li kenyelletsa lihora tse 'maloa tse sebelisitsoeng ho khutlisetsa database; maemong a mabe ka ho fetesisa, seva e shoeleng. Haeba u na le "Sekolo sa khale" DBA Architect sehlopheng sa hau, ka mamello le ka mokhoa o nahanelang mo hlalosetse hore na lintho li tla ba mpe hakae ha a ka hlophisa database ho latela kutloisiso ea hae ho tsoa ho Moqapi oa SQL ea nang le maemo.

3. Haeba phetoho e se e sutumelitsoe sebakeng sa polokelo, qoba ho e lokisa

Haeba moqapi e mong a ile a hula 'me a sebelisa phetoho, e tla fetoloa hamorao, ka sebele o tla u hopola ka lentsoe le mosa ha a fumana phoso ha a qala kopo. Haeba ho hlophisa changeet ka tsela e itseng ho lutla ho nts'etsopele, u tla tlameha ho latela moepa o thellang oa li-hotfixes. Motso oa bothata o itšetlehile ka ho netefatsa liphetoho ka hash sum - mokhoa o ka sehloohong oa Liquibase. Ha u hlophisa khoutu ea changeset, chelete ea hash e fetoha. Ho hlophisa liphetoho hoa khoneha ha feela ho khonahala ho tsamaisa database eohle ho tloha qalong ntle le ho lahleheloa ke data. Tabeng ena, ho tsosolosa khoutu ea SQL kapa XML, ho fapana le hoo, ho ka nolofatsa bophelo le ho etsa hore ho falla ho balehe haholoanyane. Mohlala e ka ba boemo boo, qalong ea kopo, schema ea database ea mohloli e ileng ea lumellanoa ka har'a sehlopha.

4. E-ba le li-backups tsa database tse netefalitsoeng haeba ho khoneha

Mona, ke nahana, tsohle li hlakile. Haeba ka tšohanyetso ho falla ha hoa ka ha atleha, ntho e 'ngoe le e' ngoe e ka khutlisetsoa morao. Liquibase e na le sesebelisoa sa ho khutlisetsa morao liphetoho, empa mangolo a rollback a boetse a ngotsoe ke moqapi ka boeena, 'me a ka ba le mathata ka monyetla o tšoanang le oa mangolo a phetoho e kholo. Sena se bolela hore ho na le thuso ho e bapala e bolokehile ka li-backups maemong afe kapa afe.

5. Sebelisa li-backups tsa database tse netefalitsoeng ho nts'etsopele, haeba ho khonahala

Haeba sena se sa hanyetse likonteraka le boinotšing, ha ho na data ea motho ka har'a database, 'me ha e na boima ba letsatsi le letsatsi - pele u e sebelisa ho li-server tsa ho falla, u ka hlahloba hore na e tla sebetsa joang mochine oa moqapi le ho bala. hoo e ka bang 100% ea mathata a ka bang teng nakong ea ho falla.

6. Buisana le bahlahisi ba bang sehlopheng

Ts'ebetsong e hlophisitsoeng hantle ea ntlafatso, e mong le e mong sehlopheng o tseba hore na ke mang ea etsang eng. Ha e le hantle, hangata ha ho joalo, ka hona, haeba u ntse u lokisetsa liphetoho mohahong oa database e le karolo ea mosebetsi oa hau, ho bohlokoa hore u tsebise sehlopha sohle ka sena. Haeba motho e mong a etsa liphetoho tse tšoanang, u lokela ho hlophisa ka hloko. Ke habohlokoa ho buisana le basebetsi-'moho ka mor'a ho qeta mosebetsi, eseng feela qalong. Mathata a mangata a ka bang teng ka liphetoho li ka rarolloa sethaleng sa tlhahlobo ea khoutu.

7. Nahana ka seo u se etsang!

E ka bonahala e le keletso e iponahatsang e sebetsa boemong bofe kapa bofe. Leha ho le joalo, mathata a mangata a ka be a ile a qojoa haeba mohlahisi a ne a ka boela a hlahlobisisa seo a se etsang le hore na se ka ama eng. Ho sebetsa le bafalli kamehla ho hloka tlhokomelo e eketsehileng le ho nepahala.

Maraba

Joale a re shebeng maraba a tloaelehileng ao u ka oelang ho ona haeba u sa latele keletso e ka holimo, 'me, hantle-ntle, u lokela ho etsa'ng?

Boemo ba 1: Bahlahisi ba babeli ba leka ho eketsa liphetoho tse ncha ka nako e le 'ngoe

Mokhoa oa ho qoba ho ithunya leotong u sebelisa Liquibase
Vasya le Petya ba batla ho theha mofuta oa 4 oa changeset, ntle le ho tsebana. Ba entse liphetoho ho sebopeho sa database mme ba fana ka kopo ea ho hula ka lifaele tse fapaneng tsa liphetoho. Ho hlahisoa mokhoa o latelang oa ts'ebetso:

Mokhoa oa ho etsa qeto

  1. Ka tsela e itseng, basebetsi-'moho ba tlameha ho lumellana ka tatellano eo liphetoho tsa bona li lokelang ho tsamaea ka eona, mohlala, Petin e lokela ho sebelisoa pele.
  2. Motho e mong o lokela ho eketsa ea bobeli ho eena mme a tšoaee phetoho ea Vasya ka mofuta oa 5. Sena se ka etsoa ka Cherry Pick kapa ho kopanya hantle.
  3. Ka mor'a liphetoho, ka sebele u lokela ho hlahloba bonnete ba liketso tse nkiloeng.
    Ha e le hantle, mekhoa ea Liquibase e tla u lumella ho ba le liphetoho tse peli tsa 4 sebakeng sa polokelo, kahoo u ka tlohela ntho e 'ngoe le e' ngoe kamoo e leng kateng. Ke hore, o tla ba le liphetoho tse peli ho mofuta oa 4 ka mabitso a fapaneng. Ka mokhoa ona, hamorao ho ba thata haholo ho tsamaisa liphetolelo tsa database.

Ntle le moo, Liquibase, joalo ka lehae la li-hobbits, e boloka liphiri tse ngata. E 'ngoe ea tsona ke senotlolo sa CheckSum se nepahetseng, se hlahileng mofuteng oa 1.7 mme se u lumella ho hlakisa boleng bo nepahetseng ba hash bakeng sa phetoho e itseng, ho sa tsotelehe se bolokiloeng polokelong ea litaba. Litokomane https://www.liquibase.org/documentation/changeset.html e re:

Kenya cheke e nkoang e sebetsa bakeng sa phetohoSet ena, ho sa tsotelehe hore na ho bolokoa bobolokelong. E sebelisoa haholo-holo ha o hloka ho fetola SetSet mme o sa batle liphoso tse lahleloang ho database tseo e seng e ntse e sebetsa ho tsona (eseng mokhoa o khothaletsoang)

E, e, mokhoa ona ha o khothalletsoe. Empa ka linako tse ling senohe se matla sa leseli se boetse se tseba mekhoa e lefifi

Boemo ba 2: Ho falla ho itšetlehileng ka data

Mokhoa oa ho qoba ho ithunya leotong u sebelisa Liquibase

Ha re nke hore ha u na bokhoni ba ho sebelisa li-backups tsa database ho tsoa ho li-server tse phelang. Petya o ile a theha phetoho, a e leka sebakeng sa heno 'me, ka kholiseho e feletseng ea hore o nepile, o ile a etsa kopo ea ho hula ho moqapi. Haeba ho ne ho ka etsahala, moetapele oa projeke o ile a hlakisa hore na Petya o e hlahlobile, ebe oa e eketsa. Empa ho romelloa ho seva sa nts'etsopele ho ile ha oa.

Ha e le hantle, sena se ka khoneha, 'me ha ho motho ea sirelelitsoeng ho sena. Sena se etsahala haeba liphetoho ho sebopeho sa tafole li hokahane ka tsela e itseng ho data e itseng e tsoang ho database. Ho hlakile hore haeba database ea Petya e tletse feela ka lintlha tsa tlhahlobo, e ka 'na ea se ke ea koahela linyeoe tsohle tsa mathata. Ka mohlala, ha u tlosa tafole, ho bonahala eka ho na le lirekoto litafoleng tse ling ka Key Foreign Key tse amanang le litlaleho ho e hlakotsoeng. Kapa ha u fetola mofuta oa kholomo, ho bonahala eka ha se 100% ea data e ka fetoleloang mofuteng o mocha.

Mokhoa oa ho etsa qeto

  • Ngola mangolo a khethehileng a tla sebelisoa hanngoe hammoho le ho falla 'me u tlise data ka mokhoa o nepahetseng. Ena ke mokhoa o akaretsang oa ho rarolla bothata ba ho fetisetsa data ho mehaho e mecha ka mor'a ho sebelisa ho falla, empa ntho e tšoanang e ka sebelisoa pele, maemong a khethehileng. Tsela ena, ha e le hantle, ha e fumanehe kamehla, hobane ho hlophisa lintlha ho li-server tse phelang ho ka ba kotsi esita le ho senya.
  • Tsela e 'ngoe e thata ke ho fetola phetoho e teng. Bothata ke hore li-database tsohle moo e seng e sebelisitsoe ka sebopeho sa eona se teng li tla tlameha ho khutlisoa. Hoa khonahala hore sehlopha sohle sa backend se tla qobelloa ho tsoa sebakeng sa heno ho tloha qalong.
  • 'Me mokhoa oa bokahohleng ke ho fetisetsa bothata ka data ho tikoloho ea moqapi, ho tsosolosa boemo bo tšoanang le ho eketsa phetoho e ncha, ho e robehileng, e tla qoba bothata.
    Mokhoa oa ho qoba ho ithunya leotong u sebelisa Liquibase

Ka kakaretso, ha database e ntse e ts'oana ka ho hlophisoa ho database ea seva sa tlhahiso, monyetla o fokolang oa hore mathata a ho falla a tla ea hole. 'Me, ehlile, pele u romella sesebelisoa sebakeng sa polokelo, u lokela ho nahana ka makhetlo a mangata hore na se tla roba eng kapa eng.

Boemo ba 3. Liquibase e qala ho sebelisoa ka mor'a hore e kene tlhahiso

Ha re re moetapele oa sehlopha o ile a kopa Petya hore a kenye Liquibase mosebetsing, empa morero o se o ntse o etsoa mme ho na le mohaho o teng oa database.

Ka hona, bothata ke hore ho li-server life kapa life tse ncha kapa mochini oa nts'etsopele, litafole tsena li tlameha ho nchafatsoa ho tloha qalong, 'me tikoloho e teng e tlameha ho lula e le maemong a ts'oanang, e ikemiselitse ho amohela liphetoho tse ncha.

Mokhoa oa ho etsa qeto

Hape ho na le mekhoa e mengata:

  • Ntho ea pele le e hlakileng ka ho fetisisa ke ho ba le script e arohaneng e lokelang ho sebelisoa ka letsoho ha ho qala tikoloho e ncha.
  • Ea bobeli ha e bonahale haholo, e-ba le phalliso ea Liquibase e leng ho e 'ngoe ea Liquibase Context,' me u e sebelise. U ka bala haholoanyane ka Liquibase Context mona: https://www.liquibase.org/documentation/contexts.html. Ka kakaretso, ena ke mokhoa o thahasellisang o ka sebelisoang ka katleho, mohlala, bakeng sa tlhahlobo.
  • Tsela ea boraro e na le mehato e mengata. Pele, phalliso e tlameha ho etsoa bakeng sa litafole tse teng. Ebe e tlameha ho sebelisoa tikolohong e itseng mme ka hona chelete ea eona ea hash e tla fumanoa. Mohato o latelang ke ho qala litafole tsa Liquibase tse se nang letho ho seva sa rona se se nang letho, 'me tafoleng e nang le histori ea tšebeliso ea liphetoho, u ka beha tlaleho ka "joalokaha eka e sebelisitsoe" ka liphetoho tse seng li ntse li le teng ka har'a database. . Kahoo, ho seva se seng se ntse se le teng, palo ea nalane ea nalane e tla qala ho tsoa ho mofuta oa 2, 'me libaka tsohle tse ncha li tla sebetsa ka mokhoa o ts'oanang.
    Mokhoa oa ho qoba ho ithunya leotong u sebelisa Liquibase

Boemo ba 4. Ho falla ho ba ho hoholo 'me ha ba na nako ea ho qeta

Qalong ea tsoelo-pele ea litšebeletso, e le molao, Liquibase e sebelisoa e le ho itšetleha ka ntle, 'me ho falla hohle ho sebetsanoa ha kopo e qala. Leha ho le joalo, ha nako e ntse e ea, u ka 'na ua thulana le maemo a latelang:

  • Ho falla hoa kholo 'me ho nka nako e telele ho phethoa.
  • Ho na le tlhokahalo ea ho falla libakeng tse ajoang, mohlala, maemong a mangata a li-server tsa database ka nako e le 'ngoe.
    Tabeng ena, ho sebelisa liphalliso nako e telele haholo ho tla etsa hore ho be le nako ha kopo e qala. Ho feta moo, ho sebelisa liphatlalatso ketsahalong e 'ngoe le e 'ngoe ea ts'ebeliso ka thoko ho ka etsa hore li-server tse fapaneng li se ke tsa lumellana.

Mokhoa oa ho etsa qeto

Maemong a joalo, morero oa hau o se o le moholo, mohlomong esita le motho e moholo, 'me Liquibase e qala ho sebetsa e le sesebelisoa se ka thōko se ka ntle. 'Nete ke hore Liquibase e le laebrari e hlophisitsoe ka faele ea nkho,' me e ka sebetsa e le ho itšetleha ka hare ho morero kapa ho ikemela.

Ka mokhoa o ikemetseng, o ka tlohela ts'ebetsong ea ho falla sebakeng sa hau sa CI / CD kapa mahetleng a matla a batsamaisi ba sistimi ea hau le litsebi tsa ho tsamaisa. Ho etsa sena o tla hloka mohala oa taelo oa Liquibase https://www.liquibase.org/documentation/command_line.html. Ka mokhoa ona, hoa khoneha ho qala ts'ebeliso ka mor'a hore ho falle hohle ho hlokahalang ho etsoe.

fihlela qeto e

Ha e le hantle, ho ka ba le maraba a mangata ha ho sebetsa le ho falla ha database, 'me bongata ba bona bo hloka mokhoa oa ho bōpa. Ke habohlokoa ho utloisisa hore haeba u sebelisa sesebelisoa ka nepo, boholo ba maraba ana a ka qojoa. Ka ho khetheha, ke ile ka tlameha ho sebetsana le mathata ohle a thathamisitsoeng ka mefuta e fapaneng, 'me a mang a ona e ne e le litholoana tsa liphoso tsa ka. Hangata sena se etsahala, ehlile, ka lebaka la ho se tsotelle, empa ka linako tse ling ka lebaka la ho se khone ho sebelisa sesebelisoa sa botlokotsebe.

Source: www.habr.com

Eketsa ka tlhaloso