Yuav ua li cas tsis tua koj tus kheej hauv ko taw siv Liquibase

Nws yeej tsis tshwm sim, thiab ntawm no yog dua!

Ntawm qhov project tom ntej, peb txiav txim siab siv Liquibase los ntawm qhov pib kom tsis txhob muaj teeb meem yav tom ntej. Raws li nws tau muab tawm, tsis yog txhua tus tub ntxhais hluas pab pawg paub siv nws kom raug. Kuv tau khiav ib qho kev cob qhia sab hauv, uas kuv mam li txiav txim siab tig mus rau hauv ib tsab xov xwm.

Kab lus no suav nrog cov lus qhia pab tau thiab cov lus piav qhia ntawm peb qhov kev pom tseeb tshaj plaws uas koj tuaj yeem poob rau hauv thaum ua haujlwm nrog cov cuab yeej sib cuam tshuam cov ntaub ntawv tsiv teb tsaws chaw, Liquibase tshwj xeeb. Tsim los rau Java developers ntawm Junior thiab nruab nrab theem, rau cov neeg paub txog ntau yam developers tej zaum yuav nthuav rau structuring thiab rov hais dua dab tsi yog feem ntau twb paub lawm.

Yuav ua li cas tsis tua koj tus kheej hauv ko taw siv Liquibase

Liquibase thiab Flyway yog lub ntsiab kev sib tw thev naus laus zis los daws cov teeb meem ntawm kev tswj hwm kev sib raug zoo hauv Java ntiaj teb. Tus thawj yog dawb kiag li, nyob rau hauv kev xyaum nws yog feem ntau xaiv rau siv, uas yog vim li cas Liquibase raug xaiv los ua tus hero ntawm kev tshaj tawm. Txawm li cas los xij, qee qhov kev coj ua tau piav qhia yuav yog qhov dav, nyob ntawm seb koj qhov kev thov.

Relational migrations yog ib txoj hauv kev los cuam tshuam nrog qhov tsis muaj zog ntawm kev sib txheeb cov ntaub ntawv khaws cia. Nyob rau hauv lub era ntawm zam rau OOP, cov style ntawm kev ua hauj lwm nrog cov database txhais tau hais tias peb yuav piav qhia txog lub schema ib zaug thiab tsis kov nws dua. Tab sis qhov tseeb yog ib txwm muaj qhov hloov pauv, thiab kev hloov pauv rau cov qauv ntawm cov ntxhuav yuav tsum tau ntau zaus. Lawm, tus txheej txheem nws tus kheej yog mob thiab tsis kaj siab.

Kuv yuav tsis delve rau hauv cov lus piav qhia ntawm thev naus laus zis thiab cov lus qhia ntxiv rau lub tsev qiv ntawv rau koj qhov project, cov ntawv txaus tau sau rau ntawm lub ncauj lus no:

Tsis tas li ntawd, twb muaj ib tsab xov xwm zoo ntawm lub ntsiab lus ntawm cov lus qhia muaj txiaj ntsig:

Lub tswv yim

Kuv xav qhia kuv cov lus qhia thiab cov lus pom, uas tau yug los ntawm hws, ntshav thiab mob ntawm kev daws teeb meem nrog kev tsiv teb tsaws chaw.

1. Ua ntej pib, koj yuav tsum nyeem cov lus qhia zoo tshaj plaws ntawm qhov chaw Liquibase

Nyob ntawd Tej yam yooj yim tab sis tseem ceeb heev tau piav qhia, yam tsis muaj kev siv lub tsev qiv ntawv tuaj yeem cuam tshuam koj lub neej. Piv txwv li, ib txoj hauv kev uas tsis yog cov qauv rau kev hloov pauv kev tswj hwm yuav sai lossis tom qab ntawd ua rau muaj kev tsis meej pem thiab tawg tawg. Yog tias koj tsis dov tawm kev sib koom ua ke ntawm kev hloov pauv hauv cov qauv ntawm cov ntaub ntawv thiab cov logic ntawm cov kev pabcuam tib lub sijhawm, ces muaj qhov tshwm sim siab uas qhov no yuav ua rau muaj kev sim liab lossis ib puag ncig tawg. Tsis tas li ntawd, cov lus pom zoo rau kev siv Liquibase ntawm lub vev xaib raug cai muaj cov kab lus hais txog kev txhim kho thiab kev txheeb xyuas cov ntawv sau rov qab nrog rau cov ntawv hloov pauv tseem ceeb. Zoo, nyob rau hauv tsab xov xwm https://habr.com/ru/post/178665/ muaj cov piv txwv ntawm cov cai ntsig txog kev tsiv teb tsaws chaw thiab cov txheej txheem rov qab.

2. Yog tias koj pib siv cov cuab yeej tsiv teb tsaws chaw, tsis txhob tso cai rau kev hloov kho hauv cov qauv database

Raws li cov lus hais mus: "Ib zaug Persil, ib txwm Persil." Yog tias lub hauv paus ntawm koj daim ntawv thov tau pib tswj hwm los ntawm Liquibase cov cuab yeej, ib qho kev hloov pauv hloov tam sim ntawd ua rau lub xeev tsis sib haum, thiab qib kev ntseeg siab hauv cov kev hloov pauv yuav raug xoom. Muaj peev xwm txaus ntshai - ob peb teev siv los kho cov ntaub ntawv rov qab, hauv qhov xwm txheej phem tshaj plaws - tus neeg rau zaub mov tuag. Yog tias koj pab neeg muaj "lub tsev kawm ntawv qub" DBA Architect, ua siab ntev thiab xav piav qhia rau nws yuav ua li cas tsis zoo yog tias nws tsuas yog hloov kho cov ntaub ntawv hauv nws tus kheej los ntawm tus txheej txheem SQL Developer.

3. Yog tias qhov hloov pauv tau raug thawb mus rau qhov chaw khaws cia, tsis txhob hloov kho

Yog tias lwm tus tsim tawm rub tawm thiab siv qhov hloov pauv uas yuav raug kho tom qab, nws yuav nco ntsoov koj nrog lo lus zoo thaum nws tau txais qhov yuam kev thaum daim ntawv thov pib. Yog tias kho cov kev hloov pauv qee qhov xau mus rau hauv txoj kev loj hlob, koj yuav tau mus rau qhov nqes nqes ntawm qhov kev kho tshiab. Lub ntsiab lus ntawm qhov teeb meem nyob ntawm qhov kev lees paub ntawm kev hloov pauv los ntawm hash sum - lub ntsiab mechanism ntawm Liquibase. Thaum kho qhov hloov pauv code, tus lej hash hloov pauv. Kev hloov pauv hloov tau tsuas yog thaum nws tuaj yeem xa tag nrho cov ntaub ntawv los ntawm kos yam tsis tau poob cov ntaub ntawv. Hauv qhov no, refactoring SQL lossis XML code tuaj yeem, ntawm qhov tsis sib xws, ua kom lub neej yooj yim dua, ua rau kev tsiv teb tsaws chaw nyeem tau ntau dua. Ib qho piv txwv yuav yog qhov xwm txheej thaum, thaum pib ntawm daim ntawv thov, lub schema ntawm qhov chaw database tau koom tes hauv pab pawg.

4. Muaj pov thawj cov ntaub ntawv thaub qab yog tias ua tau

Ntawm no, kuv xav tias, txhua yam yog qhov tseeb. Yog tias tam sim ntawd qhov kev tsiv teb tsaws chaw ua tsis tiav, txhua yam tuaj yeem rov qab los. Liquibase muaj cov cuab yeej rov qab, tab sis cov ntawv sau rov qab kuj tau sau los ntawm tus tsim tawm nws tus kheej, thiab lawv tuaj yeem muaj teeb meem nrog qhov tshwm sim zoo ib yam li hauv cov ntawv hloov pauv tseem ceeb. Qhov no txhais tau hais tias ua si nws muaj kev nyab xeeb nrog thaub qab yog qhov tseem ceeb hauv txhua qhov xwm txheej.

5. Siv cov ntaub ntawv pov thawj pov thawj hauv kev txhim kho yog tias ua tau

Yog tias qhov no tsis cuam tshuam cov ntawv cog lus thiab kev ceev ntiag tug, tsis muaj cov ntaub ntawv tus kheej hauv cov ntaub ntawv, thiab nws tsis hnyav li ob lub hnub - ua ntej siv nws ntawm cov neeg tsiv teb tsaws chaw nyob, koj tuaj yeem tshawb xyuas seb nws ua haujlwm li cas ntawm tus tsim tawm lub tshuab thiab suav yuav luag 100%. ntawm tej teeb meem thaum tsiv teb tsaws chaw.

6. Tham nrog lwm tus tsim tawm hauv pab pawg

Hauv cov txheej txheem kev txhim kho zoo, txhua tus hauv pab pawg paub tias leej twg ua dab tsi. Hauv kev muaj tiag, qhov no feem ntau tsis yog li ntawd, yog li ntawd, yog tias koj tab tom npaj cov kev hloov pauv hauv cov qauv database uas yog ib feem ntawm koj txoj haujlwm, nws raug nquahu kom ceeb toom rau tag nrho pab neeg txog qhov no. Yog hais tias ib tug neeg tab tom hloov nyob rau hauv parallel, koj yuav tsum npaj kom zoo. Nws tsim nyog sib txuas lus nrog cov npoj yaig txawm tias thaum kawg ntawm kev ua haujlwm, tsis yog thaum pib xwb. Muaj ntau yam teeb meem nrog kev hloov pauv tuaj yeem daws tau ntawm theem kev tshuaj xyuas cov cai.

7. Xav seb koj ua dab tsi!

Zoo li nws tus kheej pom cov lus qhia siv tau rau txhua qhov xwm txheej. Txawm li cas los xij, ntau yam teeb meem tuaj yeem zam tau yog tias tus tsim tawm tau rov txheeb xyuas qhov nws tau ua thiab nws yuav cuam tshuam dab tsi. Ua haujlwm nrog kev tsiv teb tsaws ib txwm xav tau kev saib xyuas ntxiv thiab raug.

Cuab

Tam sim no cia peb saib cov cuab yeej cuab tam uas koj tuaj yeem poob rau hauv yog tias koj tsis ua raws li cov lus qhia saum toj no, thiab qhov tseeb, yuav tsum ua li cas?

Qhov xwm txheej 1. Ob tus neeg tsim tawm sim ntxiv cov kev hloov pauv tshiab rau tib lub sijhawm

Yuav ua li cas tsis tua koj tus kheej hauv ko taw siv Liquibase
Vasya thiab Petya xav tsim ib qho kev hloov pauv 4 yam tsis paub txog ib leeg. Lawv tau hloov pauv rau cov qauv database, thiab dov tawm qhov kev thov rub, nrog cov ntaub ntawv hloov pauv sib txawv. Cov txheej txheem hauv qab no tau hais hauv qab no:

Yuav daws li cas

  1. Ua li cas, cov npoj yaig yuav tsum pom zoo rau qhov kev txiav txim uas lawv cov kev hloov pauv yuav tsum mus, cia peb hais tias Petin yuav tsum tau thov ua ntej.
  2. Ib tug neeg yuav tsum ncuav rau lwm tus nyob rau hauv thiab cim Vasya lub changeset nrog version 5. Qhov no yuav ua tau ntawm Cherry Pick los yog ib tug zoo sib xws.
  3. Tom qab cov kev hloov pauv, nco ntsoov xyuas qhov siv tau ntawm cov kev nqis tes ua.
    Qhov tseeb, Liquibase mechanisms yuav tso cai rau koj kom muaj ob lub version 4 hloov pauv hauv qhov chaw cia khoom, yog li koj tuaj yeem tawm txhua yam raws li nws yog. Ntawd yog, koj yuav tsuas muaj ob qhov kev hloov kho ntawm version 4 nrog cov npe sib txawv. Nrog rau txoj hauv kev no, databases versions nyuaj heev rau kev taug qab tom qab.

Tsis tas li ntawd, Liquibase, zoo li lub tsev ntawm hobbits, khaws ntau qhov zais cia. Ib qho ntawm lawv yog tus yuam sij validCheckSum, uas tau tshwm sim txij li version 1.7 thiab tso cai rau koj los qhia meej tus nqi hash siv tau rau ib qho kev hloov pauv tshwj xeeb, tsis hais qhov twg yog khaws cia hauv cov ntaub ntawv. Cov ntaub ntawv https://www.liquibase.org/documentation/changeset.html hais li no:

Ntxiv ib daim tshev uas suav tias siv tau rau qhov kev hloov pauv no, tsis hais qhov twg yog khaws cia hauv cov ntaub ntawv. Siv feem ntau thaum koj xav tau hloov pauv HloovSet thiab tsis xav kom yuam kev cuam tshuam rau cov ntaub ntawv uas nws tau khiav lawm (tsis yog cov txheej txheem pom zoo)

Yog, qhov no tsis pom zoo. Tab sis qee zaum ib tug muaj zog lub teeb magician kuj masters cov tswv yim tsaus.

Case 2: Data-driven migration

Yuav ua li cas tsis tua koj tus kheej hauv ko taw siv Liquibase

Cia peb hais tias koj tsis tuaj yeem siv cov ntaub ntawv thaub qab los ntawm cov servers nyob. Petya tau tsim ib qho kev hloov pauv, sim nws hauv zos, thiab nrog kev ntseeg siab tag nrho tias nws yog, tau thov rub mus rau tus tsim tawm. Tsuas yog nyob rau hauv rooj plaub, tus thawj coj ntawm qhov project tau qhia meej seb Petya puas tau kuaj xyuas nws, thiab tom qab ntawd muab tso rau hauv. Tab sis kev xa tawm ntawm kev txhim kho server tau poob.

Qhov tseeb, qhov no yog ua tau, thiab tsis muaj leej twg tiv thaiv qhov no. Qhov no tshwm sim yog tias kev hloov kho rau lub rooj qauv yog qee yam khi rau cov ntaub ntawv tshwj xeeb los ntawm cov ntaub ntawv. Pom tseeb, yog tias Petya cov ntaub ntawv khaws cia tsuas yog cov ntaub ntawv xeem, ces nws yuav tsis npog tag nrho cov teeb meem. Piv txwv li, thaum rho tawm ib lub rooj, nws hloov tawm tias muaj cov ntaub ntawv nyob rau hauv lwm lub rooj los ntawm Txawv Teb Chaws Key txuam nrog cov ntaub ntawv nyob rau hauv ib tug raug deleted. Los yog thaum hloov hom kab, nws hloov tawm tias tsis yog 100% ntawm cov ntaub ntawv tuaj yeem hloov mus rau hom tshiab.

Yuav daws li cas

  • Sau cov ntawv tshwj xeeb uas yuav raug siv ib zaug nrog rau kev tsiv teb tsaws thiab nqa cov ntaub ntawv mus rau hauv daim ntawv kom raug. Qhov no yog ib txoj hauv kev los daws qhov teeb meem ntawm kev hloov cov ntaub ntawv mus rau cov qauv tshiab tom qab thov kev tsiv teb tsaws, tab sis qee yam zoo sib xws tuaj yeem siv ua ntej, tshwj xeeb. Txoj kev no, ntawm chav kawm, tsis yog ib txwm muaj, vim tias kev kho cov ntaub ntawv ntawm cov servers nyob tuaj yeem ua rau muaj kev phom sij thiab txawm tias tuag taus.
  • Lwm txoj kev tsis yooj yim yog los kho qhov hloov pauv uas twb muaj lawm. Qhov nyuaj yog tias tag nrho cov databases uas nws twb tau thov nyob rau hauv nws daim ntawv uas twb muaj lawm yuav tsum tau rov qab. Nws yog qhov ua tau tias tag nrho pab pawg backend yuav raug yuam kom nyob hauv zos dov cov ntaub ntawv los ntawm kos.
  • Thiab txoj kev thoob ntiaj teb tshaj plaws yog hloov cov ntaub ntawv teeb meem mus rau tus tsim tawm ib puag ncig, rov tsim qhov xwm txheej qub thiab ntxiv qhov hloov tshiab, rau qhov tawg, uas yuav hla qhov teeb meem.
    Yuav ua li cas tsis tua koj tus kheej hauv ko taw siv Liquibase

Feem ntau, qhov ntau cov ntaub ntawv zoo ib yam li cov khoom siv rau cov neeg siv khoom siv database, qhov tsis tshua muaj teeb meem nrog kev tsiv teb tsaws yuav mus deb. Thiab, tau kawg, ua ntej koj xa qhov hloov pauv mus rau qhov chaw cia khoom, koj yuav tsum xav ntau zaus yog tias nws yuav tawg qee yam.

Qhov xwm txheej 3. Liquibase pib siv tom qab nws mus rau hauv ntau lawm

Piv txwv tias tus thawj coj pab pawg tau hais kom Petya suav nrog Liquibase hauv qhov project, tab sis qhov project twb tau tsim lawm thiab muaj cov qauv database uas twb muaj lawm.

Raws li, qhov teeb meem yog tias ntawm cov servers tshiab lossis cov tshuab tsim tawm, cov ntaub ntawv cov lus yuav tsum tau rov tsim dua los ntawm kos, thiab ib puag ncig uas twb muaj lawm yuav tsum nyob twj ywm hauv lub xeev zoo ib yam, npaj siab txais cov kev hloov pauv tshiab.

Yuav daws li cas

Kuj tseem muaj ntau txoj hauv kev:

  • Thawj thiab pom tseeb tshaj plaws yog kom muaj ib tsab ntawv cais uas yuav tsum tau siv manually thaum pib qhov chaw tshiab.
  • Qhov thib ob, tsis tshua pom tseeb, yog kom muaj Liquibase tsiv teb tsaws uas nyob rau hauv cov ntsiab lus sib txawv Liquibase thiab siv nws. Koj tuaj yeem nyeem ntxiv txog Liquibase Cov Ntsiab Lus ntawm no: https://www.liquibase.org/documentation/contexts.html. Feem ntau, qhov no yog ib qho kev nthuav dav uas tuaj yeem siv tau zoo, piv txwv li, rau kev sim.
  • Txoj kev thib peb muaj ob peb kauj ruam. Ua ntej, kev tsiv teb tsaws yuav tsum tau tsim rau cov rooj uas twb muaj lawm. Tom qab ntawd nws yuav tsum tau siv rau qee qhov chaw thiab yog li nws cov lej hash yuav tau txais. Cov kauj ruam tom ntej yog pib qhov khoob Liquibase cov ntxhuav ntawm peb cov neeg rau zaub mov uas tsis yog qhov khoob, thiab koj tuaj yeem muab cov ntaub ntawv ntawm "raws li siv" hloov pauv nrog cov kev hloov pauv uas twb muaj lawm hauv cov ntaub ntawv rau hauv lub rooj nrog keeb kwm ntawm kev thov hloov pauv. Yog li, ntawm tus neeg rau zaub mov uas twb muaj lawm, keeb kwm yuav pib los ntawm version 2, thiab txhua qhov chaw tshiab yuav coj zoo ib yam.
    Yuav ua li cas tsis tua koj tus kheej hauv ko taw siv Liquibase

Scenario 4: Kev tsiv teb tsaws chaw tau loj heev thiab ua tsis tau

Thaum pib ntawm kev txhim kho kev pabcuam, raws li txoj cai, Liquibase yog siv los ua qhov kev vam khom sab nraud, thiab txhua qhov kev tsiv teb tsaws raug ua tiav thaum daim ntawv thov pib. Txawm li cas los xij, dhau sijhawm, koj tuaj yeem ua rau muaj teeb meem hauv qab no:

  • Kev tsiv teb tsaws chaw ua loj heev thiab siv sijhawm ntev los ua kom tiav.
  • Yuav tsum tau tsiv teb tsaws chaw nyob rau hauv ib puag ncig kev faib tawm, piv txwv li, ntawm ntau zaus ntawm database servers tib lub sijhawm.
    Hauv qhov no, kev thov kev tsiv teb tsaws mus ntev dhau lawm yuav ua rau lub sijhawm ua haujlwm thaum daim ntawv thov pib. Tsis tas li ntawd, kev thov kev tsiv teb tsaws chaw ntawm ib daim ntawv thov piv txwv tuaj yeem ua rau cov servers sib txawv nyob hauv lub xeev tsis sib xws.

Yuav daws li cas

Hauv cov xwm txheej zoo li no, koj qhov project twb loj lawm, tej zaum txawm tias yog ib tus neeg laus, thiab Liquibase pib ua raws li cov cuab yeej sab nraud. Qhov tseeb yog tias Liquibase, raws li lub tsev qiv ntawv, tau sib sau ua ke rau hauv cov ntaub ntawv lub thawv, thiab tuaj yeem ua haujlwm raws li kev vam khom hauv qhov project, nrog rau ib leeg.

Offline, koj tuaj yeem tawm hauv daim ntawv thov kev tsiv teb tsaws chaw rau koj qhov chaw CI / CD lossis rau lub xub pwg nyom ntawm koj sysadmins / deployers. Txhawm rau ua qhov no, koj xav tau Liquibase kab hais kom ua https://www.liquibase.org/documentation/command_line.html. Hauv hom no, nws tuaj yeem tso tawm daim ntawv thov tom qab tag nrho cov kev tsiv teb tsaws tsim nyog tau ua tiav.

xaus

Qhov tseeb, muaj ntau ntau qhov teeb meem thaum ua hauj lwm nrog database migrations, thiab ntau ntawm lawv xav tau ib tug muaj tswv yim mus kom ze. Nws yog ib qho tseem ceeb kom nkag siab tias yog tias koj siv lub cuab yeej kom raug, feem ntau ntawm cov cuab yeej no tuaj yeem zam tau. Tshwj xeeb, kuv yuav tsum tau ntsib txhua yam teeb meem uas tau teev tseg hauv ntau hom, thiab qee qhov ntawm lawv yog qhov tshwm sim ntawm kuv cov jambs. Yeej, qhov no tshwm sim, ntawm chav kawm, vim tsis mloog, tab sis qee zaum - vim kev ua txhaum cai tsis siv lub cuab yeej.

Tau qhov twg los: www.hab.com

Ntxiv ib saib