Pehea ʻaʻole e pana iā ʻoe iho i ka wāwae me ka Liquibase

ʻAʻole i hiki, a eia hou!

Ma ka papahana aʻe, ua hoʻoholo mākou e hoʻohana iā Liquibase mai ka hoʻomaka ʻana e pale i nā pilikia i ka wā e hiki mai ana. E like me ka mea i ʻike ʻia, ʻaʻole ʻike nā lālā ʻōpio āpau i ka hoʻohana pono ʻana. Ua hana au i kahi papa hana kūloko, a laila ua hoʻoholo wau e hoʻololi i kahi ʻatikala.

Aia kēia ʻatikala i nā ʻōlelo aʻoaʻo kōkua a me nā wehewehe ʻana o ʻekolu o nā pitfalls maopopo loa hiki iā ʻoe ke hāʻule i ka wā e hana ai me nā mea hana hoʻoneʻe database relational, ʻo Liquibase. Hoʻolālā ʻia no nā mea hoʻomohala Java o Junior a me Middle level, no nā mea hoʻomohala ʻike hou aʻe paha he mea hoihoi ia no ka hoʻonohonoho ʻana a me ka hana hou ʻana i ka mea i ʻike mua ʻia.

Pehea ʻaʻole e pana iā ʻoe iho i ka wāwae me ka Liquibase

ʻO Liquibase a me Flyway nā ʻenehana hoʻokūkū koʻikoʻi no ka hoʻoponopono ʻana i nā pilikia o ka mana mana o nā hale pili i ka honua Java. ʻO ka mea mua he manuahi loa, ma ka hoʻomaʻamaʻa ua koho pinepine ʻia no ka hoʻohana ʻana, ʻo ia ke kumu i koho ʻia ai ʻo Liquibase ma ke ʻano he hero o ka paʻi. Eia nō naʻe, he maʻamau paha kekahi o nā hana i wehewehe ʻia, ma muli o ke ʻano o kāu noi.

ʻO ka neʻe ʻana o ka pilina he ala koi ʻia e hoʻoponopono ai i ka palupalu palupalu o nā hale kūʻai ʻikepili pili. I ke au o ka OOP, ʻo ke ʻano o ka hana ʻana me ka ʻikepili i manaʻo ʻia e wehewehe mākou i ka schema i hoʻokahi manawa a ʻaʻole e hoʻopā hou iā ia. Akā ʻo ka ʻoiaʻiʻo ke loli mau nā mea, a koi pinepine ʻia nā loli i ke ʻano o nā papa. ʻO keʻano maʻamau,ʻo ka hana pono'ī he meaʻeha aʻoluʻoluʻole.

ʻAʻole wau e komo i ka wehewehe ʻana i ka ʻenehana a me nā ʻōlelo aʻoaʻo no ka hoʻohui ʻana i ka waihona i kāu papahana, ua lawa nā ʻatikala i kākau ʻia ma kēia kumuhana:

Eia kekahi, ua loaʻa kahi ʻatikala maikaʻi e pili ana i ke kumuhana o nā ʻōlelo aʻoaʻo maikaʻi:

Nā mea kōkua

Makemake au e kaʻana like i kaʻu mau ʻōlelo aʻo a me nā ʻōlelo, i hānau ʻia ma o ka hou, ke koko a me ka ʻeha o ka hoʻoponopono ʻana i nā pilikia me ka neʻe ʻana.

1. Ma mua o ka hoʻomaka ʻana, pono ʻoe e heluhelu i ka ʻāpana hana maikaʻi loa ma kahua pūnaewele Liquibase

ua wehewehe ʻia nā mea maʻalahi akā koʻikoʻi, me ka ʻole o ka hoʻohana ʻana i ka hale waihona puke hiki ke paʻakikī i kou ola. No ka laʻana, ʻaʻole i kūkulu ʻia i ka hoʻokele changeset e alakaʻi koke i ka huikau a me ka neʻe ʻana. Inā ʻaʻole ʻoe e ʻōwili i nā hoʻololi like ʻole i ke ʻano o ka waihona a me ka loiloi o nā lawelawe i ka manawa like, a laila aia kahi kiʻekiʻe e alakaʻi ai kēia i nā hoʻokolohua ʻulaʻula a i ʻole kahi pōʻai. Eia kekahi, ʻo nā ʻōlelo aʻoaʻo no ka hoʻohana ʻana iā Liquibase ma ka pūnaewele mana i loaʻa i kahi paukū e pili ana i ka hoʻomohala ʻana a me ka hōʻoia ʻana i nā palapala rollback me nā palapala neʻe nui. ʻAe, ma ka ʻatikala https://habr.com/ru/post/178665/ aia nā hiʻohiʻona o ke code e pili ana i ka neʻe ʻana a me ka ʻōnaehana rollback.

2. Inā hoʻomaka ʻoe e hoʻohana i nā mea hana neʻe, mai ʻae i ka hoʻoponopono lima ʻana i ka ʻōnaehana waihona

E like me ka ʻōlelo: "Once Persil, always Persil." Inā ua hoʻomaka ʻia ke kumu o kāu noi e hoʻokele ʻia e nā mea hana Liquibase, e alakaʻi koke ana nā hoʻololi manual i kahi kūlana kūlike ʻole, a lilo ka pae o ka hilinaʻi i nā hoʻololi. Loaʻa nā pilikia - he mau hola i hoʻopau ʻia no ka hoʻihoʻi ʻana i ka waihona, i ka hihia ʻino loa - kahi kikowaena make. Inā loaʻa i kāu hui kahi "kula kahiko" DBA Architect, e wehewehe me ka hoʻomanawanui a me ka noʻonoʻo iā ia i ke ʻano o nā mea ʻino inā hoʻoponopono ʻo ia i ka waihona ma kona ʻano ponoʻī mai ka SQL Developer conditional.

3. Inā ua paʻi ʻia ka changeset i ka waihona, e pale i ka hoʻoponopono

Inā huki a hoʻohana kekahi mea hoʻomohala i kahi changeset e hoʻoponopono ʻia ma hope, e hoʻomanaʻo maoli ʻo ia iā ʻoe me kahi ʻōlelo lokomaikaʻi ke loaʻa iā ia kahi hewa i ka wā e hoʻomaka ai ka noi. Inā lele ka hoʻoponopono ʻana i ka changeset i ka hoʻomohala ʻana, pono ʻoe e iho i lalo i ka pali paheʻe o nā hotfix. ʻO ke kumu o ka pilikia e kau ana ma ka hōʻoia ʻana o nā loli e ka hash sum - ke kumu nui o Liquibase. Ke hoʻoponopono nei i ke code changeset, hoʻololi ka huina hash. Hiki ke hoʻololi i nā hoʻololi i ka wā e hiki ai ke kau i ka ʻikepili holoʻokoʻa mai ka ʻohi ʻana me ka nalowale ʻole o ka ʻikepili. I kēia hihia, hiki i ka refactoring SQL a i ʻole XML code, ma ke ʻano ʻē, e maʻalahi ke ola, e maʻalahi ka heluhelu ʻana i nā neʻe. ʻO kahi laʻana he kūlana inā, i ka hoʻomaka ʻana o ka noi, ua hoʻonohonoho ʻia ka schema o ka waihona kumu i loko o ka hui.

4. E hōʻoia i nā waihona waihona waihona inā hiki

Maʻaneʻi, manaʻo wau, ua maopopo nā mea a pau. Inā ʻaʻole i kūleʻa ka neʻe ʻana, hiki ke hoʻihoʻi ʻia nā mea a pau. Loaʻa iā Liquibase kahi hāmeʻa rollback, akā ua kākau ʻia nā palapala rollback e ka mea hoʻomohala ponoʻī, a hiki iā lākou ke loaʻa nā pilikia me ka like like me nā palapala changeset nui. ʻO ia ke ʻano o ka pāʻani ʻana me ka palekana me nā backup he mea pono i kēlā me kēia hihia.

5. E hoʻohana i nā waihona waihona i hōʻoia ʻia i ka hoʻomohala ʻana inā hiki

Inā ʻaʻole kūʻē kēia i nā ʻaelike a me ka pilikino, ʻaʻohe ʻikepili pilikino i loko o ka waihona, a ʻaʻole like ke kaumaha e like me nā lā ʻelua - ma mua o ka hoʻohana ʻana ma nā kikowaena neʻe ola, hiki iā ʻoe ke nānā i ke ʻano o ka hana ʻana ma ka mīkini o ka mea hoʻomohala a helu kokoke i 100% nā pilikia e hiki mai ana i ka wā o ka neʻe ʻana.

6. E kamaʻilio me nā mea hoʻomohala ʻē aʻe ma ka hui

Ma kahi kaʻina hoʻomohala hoʻonohonoho maikaʻi, ʻike nā mea a pau o ka hui i ka mea e hana nei. I ka ʻoiaʻiʻo, ʻaʻole pinepine kēia, no laila, inā ʻoe e hoʻomākaukau nei i nā loli i ka ʻōnaehana waihona ma ke ʻano he ʻāpana o kāu hana, ʻoi aku ka maikaʻi e hoʻolaha hou i ka hui holoʻokoʻa e pili ana i kēia. Inā hoʻololi like kekahi, pono ʻoe e hoʻonohonoho pono. He mea pono ke kamaʻilio me nā hoa hana a hiki i ka hopena o ka hana, ʻaʻole wale ma ka hoʻomaka. Hiki ke hoʻoholo ʻia nā pilikia he nui me nā hoʻololi hoʻololi i ka pae loiloi code.

7. E noʻonoʻo i kāu hana!

ʻO nā ʻōlelo aʻoaʻo e pili ana i kēlā me kēia kūlana. Eia nō naʻe, hiki ke pale ʻia nā pilikia he nui inā ua loiloi hou ka mea hoʻomohala i kāna hana a me ka hopena. ʻO ka hana me ka neʻe ʻana e koi mau i ka nānā a me ka pololei.

ʻOi

E nānā kākou i nā pahele maʻamau i hiki iā ʻoe ke hāʻule inā ʻaʻole ʻoe e hahai i ka ʻōlelo aʻoaʻo ma luna, a he aha ka mea pono e hana ʻia?

Kūlana 1. Ke ho'āʻo nei nā mea hoʻomohala ʻelua e hoʻohui i nā hoʻololi hou i ka manawa like

Pehea ʻaʻole e pana iā ʻoe iho i ka wāwae me ka Liquibase
Makemake ʻo Vasya lāua ʻo Petya e hana i kahi mana 4 changeset me ka ʻike ʻole o kekahi i kekahi. Ua hoʻololi lākou i ka ʻōnaehana waihona, a ʻōwili i kahi noi huki, me nā faila changeset like ʻole. Hoʻopuka ʻia ka mīkini ma lalo nei:

Pehea e hoʻoponopono ai

  1. I kekahi mea, pono e ʻae nā hoa hana i ke ʻano o kā lākou hoʻololi ʻana, e ʻōlelo mākou e hoʻohana mua ʻia ʻo Petin.
  2. Pono kekahi kanaka e ninini i kekahi i loko a e kaha i ka changeset o Vasya me ka mana 5. Hiki ke hana i kēia ma o Cherry Pick a i ʻole kahi hui maikaʻi.
  3. Ma hope o nā hoʻololi, e nānā pono i ka pono o nā hana i hana ʻia.
    ʻO kaʻoiaʻiʻo, e ʻae nā mīkini Liquibase iā ʻoe e loaʻa i ʻelua mau hoʻololi 4 i loko o ka waihona, no laila hiki iā ʻoe ke waiho i nā mea āpau e like me ia. ʻO ia, e loaʻa iā ʻoe ʻelua hoʻoponopono hou o ka mana 4 me nā inoa like ʻole. Me kēia ala, paʻakikī loa ka hoʻokele ʻana ma hope.

Eia kekahi, ʻo Liquibase, e like me nā hale o nā hobbits, mālama i nā mea huna. ʻO kekahi o lākou ka kī validCheckSum, i ʻike ʻia mai ka mana 1.7 a hiki iā ʻoe ke kuhikuhi i kahi waiwai hash kūpono no kahi hoʻololi kikoʻī, me ka nānā ʻole i ka mea i mālama ʻia i ka waihona. Palapala https://www.liquibase.org/documentation/changeset.html 'ōlelo mai kēia:

Hoʻohui i kahi helu helu i manaʻo ʻia he kūpono no kēia hoʻololiSet, me ka nānā ʻole i ka mea i mālama ʻia ma ka waihona. Hoʻohana mua ʻia inā pono ʻoe e hoʻololi i kahi changeSet a ʻaʻole makemake i nā hewa i hoʻolei ʻia ma nā ʻikepili kahi i holo mua ai (ʻaʻole kahi kaʻina hana i manaʻo ʻia)

ʻAe, ʻaʻole ʻōlelo ʻia kēia. Akā i kekahi manawa, ʻike ʻia kahi kilokilo māmā ikaika i nā ʻenehana ʻeleʻele.

Hana 2: Ka neʻe ʻana i ka ʻikepili

Pehea ʻaʻole e pana iā ʻoe iho i ka wāwae me ka Liquibase

E ʻōlelo mākou ʻaʻole hiki iā ʻoe ke hoʻohana i nā waihona waihona mai nā kikowaena ola. Ua hana ʻo Petya i kahi changeset, hoʻāʻo iā ia ma ka ʻāina, a me ka hilinaʻi piha ua pololei ʻo ia, hana i kahi noi huki i ka mea hoʻomohala. I ka hihia wale nō, ua wehewehe ke alakaʻi o ka papahana inā nānā ʻo Petya iā ia, a laila ninini ʻia i loko. Akā ua hāʻule ka hoʻolaha ʻana ma ka kikowaena hoʻomohala.

ʻO kaʻoiaʻiʻo, hiki kēia, aʻaʻohe mea pale mai kēia. Hana ʻia kēia inā pili nā hoʻololi ʻana o ka papa ʻaina i nā ʻikepili kikoʻī mai ka waihona. ʻIke loa, inā hoʻopiha ʻia ka waihona ʻo Petya me nā ʻikepili hoʻāʻo wale nō, a laila ʻaʻole hiki ke uhi i nā hihia pilikia āpau. No ka laʻana, i ka holoi ʻana i kahi pākaukau, ʻike ʻia aia nā moʻolelo ma nā papa ʻē aʻe e Foreign Key e pili ana me nā moʻolelo i ka mea e holoi ʻia. A i ʻole i ka hoʻololi ʻana i ke ʻano kolamu, ʻike ʻia ʻaʻole hiki ke hoʻololi ʻia ka 100% o ka ʻikepili i ke ʻano hou.

Pehea e hoʻoponopono ai

  • E kākau i nā palapala kūikawā e hoʻohana ʻia i hoʻokahi manawa me ka neʻe ʻana a lawe i ka ʻikepili i ke ʻano kūpono. He ala maʻamau kēia e hoʻoponopono ai i ka pilikia o ka hoʻoili ʻana i nā ʻikepili i nā hale hou ma hope o ka noi ʻana i nā neʻe, akā hiki ke hoʻohana ʻia kekahi mea like ma mua, i nā hihia kūikawā. ʻO kēia ala, ʻoiaʻiʻo, ʻaʻole i loaʻa i nā manawa a pau, no ka mea, ʻo ka hoʻoponopono ʻana i nā ʻikepili ma nā kikowaena ola hiki ke pilikia a make.
  • ʻO kekahi ala paʻakikī ʻo ka hoʻoponopono ʻana i kahi hoʻololi i loaʻa. ʻO ka paʻakikī, pono e hoʻihoʻi ʻia nā ʻikepili āpau i hoʻopili ʻia ma kona ʻano i loaʻa. Hiki paha ke koi ʻia ka hui backend holoʻokoʻa e ʻōwili i ka ʻikepili mai ka wā kahiko.
  • A ʻo ke ala ākea loa, ʻo ia ka hoʻololi ʻana i ka pilikia ʻikepili i ke kaiapuni o ka mea hoʻomohala, hana hou i ke kūlana like a hoʻohui i kahi changeset hou, i kahi mea i haki, e kāpae i ka pilikia.
    Pehea ʻaʻole e pana iā ʻoe iho i ka wāwae me ka Liquibase

Ma keʻano laulā, ʻoi aku ka like o ka waihona i ka hoʻohui ʻana i ka waihona kikowaena hana, ʻoi aku ka liʻiliʻi o nā pilikia me ka neʻe ʻana i kahi mamao. A, ʻoiaʻiʻo, ma mua o kou hoʻouna ʻana i ka changeset i ka waihona, pono ʻoe e noʻonoʻo i nā manawa he nui inā e wāwahi ia i kekahi mea.

Kūlana 3. Hoʻomaka e hoʻohana ʻia ka Liquibase ma hope o kona komo ʻana i ka hana

Inā paha ua noi ke alakaʻi o ka hui iā Petya e hoʻokomo iā Liquibase i loko o ka papahana, akā ua hana ʻia ka papahana a aia kahi hoʻolālā waihona.

No laila, ʻo ka pilikia ma luna o nā kikowaena hou a i ʻole nā ​​mīkini hoʻomohala, pono e hana hou ʻia ka ʻikepili papa mai ka ʻohi ʻana, a pono e noho mau ke kaiapuni i kēia manawa, me ka mākaukau e ʻae i nā hoʻololi hou.

Pehea e hoʻoponopono ai

Aia kekahi mau ala:

  • ʻO ka mea mua a maopopo loa, ʻo ia ka loaʻa ʻana o kahi palapala ʻokoʻa pono e hoʻohana lima ʻia i ka wā e hoʻomaka ai i kahi kaiapuni hou.
  • ʻO ka lua, ʻaʻole maopopo loa, ʻo ia ka loaʻa ʻana o ka neʻe ʻana o Liquibase ma kahi ʻano Liquibase Context ʻē aʻe a hoʻohana iā ia. Hiki iā ʻoe ke heluhelu hou aku e pili ana i ka Liquibase Context maanei: https://www.liquibase.org/documentation/contexts.html. Ma keʻano laulā, he hana hoihoi kēia i hiki ke hoʻohana pono ʻia, no ka laʻana, no ka hoʻāʻo.
  • ʻO ke ala ʻekolu he mau ʻanuʻu. ʻO ka mea mua, pono e hana ʻia kahi neʻe no nā papa i loaʻa. A laila pono e hoʻopili ʻia ma kekahi wahi a pēlā e loaʻa ai kāna huina hash. ʻO ka hana aʻe, ʻo ia ka hoʻomaka ʻana i nā papa Liquibase ʻole ma kā mākou kikowaena ʻole, a hiki iā ʻoe ke kau lima i kahi moʻolelo o kahi hoʻololi "me he mea lā i hoʻohana ʻia" me nā loli i loko o ka waihona i loko o ka papa me ka mōʻaukala o ka noi ʻana i nā hoʻololi. No laila, ma kahi kikowaena mua, e hoʻomaka ka mōʻaukala mai ka mana 2, a e ʻano like nā kaiapuni hou a pau.
    Pehea ʻaʻole e pana iā ʻoe iho i ka wāwae me ka Liquibase

Manaʻo 4: Nui nā neʻe a ʻaʻole hiki ke hoʻomau

I ka hoʻomaka ʻana o ka hoʻomohala ʻana i ka lawelawe, ma ke ʻano he kānāwai, hoʻohana ʻia ʻo Liquibase ma ke ʻano he hilinaʻi o waho, a ua hana ʻia nā neʻe a pau i ka wā e hoʻomaka ai ka noi. Eia naʻe, i ka wā lōʻihi, hiki iā ʻoe ke hāʻule i kēia mau hihia:

  • Nui ka neʻe ʻana a lōʻihi ka manawa e hoʻopau ai.
  • Pono e neʻe i nā kaiapuni i puʻunaue ʻia, no ka laʻana, ma kekahi mau manawa o nā kikowaena waihona i ka manawa like.
    I kēia hihia, ʻo ka hoʻohana ʻana i nā neʻe no ka lōʻihi loa e hopena i kahi manawa i ka wā e hoʻomaka ai ka noi. Eia kekahi, ʻo ka hoʻohana ʻana i ka neʻe ʻana ma ke kumu hoʻohālike no kēlā me kēia noi hiki ke hopena i nā kikowaena ʻokoʻa i kahi kūlana ʻole o ka sync.

Pehea e hoʻoponopono ai

Ma ia mau hihia, ua nui kāu papahana, he kanaka makua paha, a hoʻomaka ʻo Liquibase e hana ma ke ʻano he mea hana waho. ʻO ka ʻoiaʻiʻo, ʻo Liquibase, ma ke ʻano he waihona, ua ʻākoakoa ʻia i loko o kahi faila jar, a hiki ke hana ma ke ʻano he hilinaʻi i loko o ka papahana, a me ke kūʻokoʻa.

Pahemo, hiki iā ʻoe ke waiho i ka noi o ka neʻe ʻana i kāu wahi CI/CD a i ʻole i nā poʻohiwi ikaika o kāu sysadmins/deployers. No ka hana ʻana i kēia, pono ʻoe i ka laina kauoha Liquibase https://www.liquibase.org/documentation/command_line.html. Ma kēia ʻano, hiki ke hoʻomaka i ka noi ma hope o ka pau ʻana o nā neʻe e pono ai.

hopena

ʻO kaʻoiaʻiʻo, he nui nā pitfalls i ka wā e hana ai me ka neʻe ʻana o ka waihona, a ʻo ka hapa nui o lākou e koi i kahi ala hana. He mea nui e hoʻomaopopo inā hoʻohana pono ʻoe i ka mea hana, a laila hiki ke pale ʻia ka hapa nui o kēia mau pahele. ʻO ke kikoʻī, pono wau e alo i nā pilikia āpau i helu ʻia ma nā ʻano like ʻole, a ʻo kekahi o lākou ka hopena o kaʻu mau pahu. Basically, hiki mai kēia, ʻoiaʻiʻo, ma muli o ka nānā ʻole, akā i kekahi manawa - ma muli o ka hiki ʻole o ka lawehala ke hoʻohana i ka mea hana.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka