Inhloso yalesi sihloko ukusebenzisa isibonelo somtapo wolwazi
Ulwazi oluvela kulesi sihloko, okokuqala, luzoba usizo kubathuthukisi abafuna ukusebenzisa ngokugcwele amakhono e-PostgreSQL, kodwa ababhekene nezinkinga zokulondoloza umqondo webhizinisi obekwe kusizindalwazi.
Lesi sihloko ngeke sichaze okuhle noma okubi kokugcina umqondo webhizinisi kusizindalwazi. Kucatshangwa ukuthi ukukhetha sekuvele kwenziwa ngumfundi.
Imibuzo elandelayo izocatshangelwa:
- Ukulahlwa kwesakhiwo sesizindalwazi kufanele kugcinwe ngaluphi uhlobo kusistimu yokulawula inguqulo (ngemuva kwalokhu ebizwa ngokuthi i-VCS)
- Uzilandelela kanjani izinguquko kusakhiwo sesizindalwazi ngemva kokulondoloza ukulahlwa
- Uzidlulisela kanjani izinguquko kusakhiwo sesizindalwazi kwezinye izindawo ngaphandle kwezingxabano namafayela amakhulu okufuduka
- Indlela yokuhlela inqubo yomsebenzi ofanayo kuphrojekthi ngabathuthukisi abaningana
- Uzithumela kanjani ngokuphephile izinguquko ezengeziwe kusakhiwo sedathabheyisi endaweni yokukhiqiza
I-SchemaKeeper yakhelwe ukusebenza ngezinqubo ezigciniwe ezibhalwe ngolimi
PL/pgSQL . Ukuhlola ngezinye izilimi akuzange kwenziwe, ngakho-ke ukusetshenziswa kungase kungasebenzi kahle noma kungenzeki.
Ukugcina kanjani ukulahlwa kwesakhiwo sesizindalwazi ku-VCS
umtapo saveDump
, elondoloza ukwakheka kwazo zonke izinto kusizindalwazi njengamafayela ombhalo ahlukene. Okuphumayo kuyinkomba equkethe isakhiwo sedathabheyisi, ehlukaniswe ngamafayela aqoqwe angangezwa kalula ku-VCS.
Ake sibheke ukuguqula izinto zisuka kusizindalwazi zibe amafayela sisebenzisa izibonelo ezimbalwa:
Uhlobo lwento
Lolu hlelo
Isihloko
Indlela ehlobene yefayela
Ithebula
umphakathi
Ama-akhawunti
./public/tables/accounts.txt
Inqubo egciniwe
umphakathi
i-auth (hash bigint)
./public/functions/auth(int8).sql
Isingeniso
yokubhuka
izindleko
./booking/views/tariffs.txt
Okuqukethwe kwamafayela kuwumfanekiso ongokombhalo wesakhiwo sento ethile yesizindalwazi. Isibonelo, ngezinqubo ezigciniwe, okuqukethwe kwefayela kuzoba incazelo egcwele yenqubo egciniwe, kuqala nge-block. CREATE OR REPLACE FUNCTION
.
Njengoba kubonakala kuthebula elingenhla, indlela eya efayeleni igcina ulwazi mayelana nohlobo, i-schema negama lento. Le ndlela yenza kube lula ukuzulazula ekulahleni nasekubuyekezweni kwekhodi yezinguquko kusizindalwazi.
Isandiso
.sql
kumafayela anekhodi yomthombo wenqubo egciniwe, lokhu kukhethiwe ukuze i-IDE inikeze ngokuzenzakalelayo amathuluzi okusebenzelana nesizindalwazi lapho ifayela livulwa.
Uzilandelela kanjani izinguquko kusakhiwo sesizindalwazi ngemva kokulondoloza ukulahlwa
Ngokulondoloza ukulahlwa kwesakhiwo sesizindalwazi samanje ku-VCS, sithola ithuba lokuhlola ukuthi ingabe izinguquko zenziwe kusakhiwo sesizindalwazi ngemva kokudalwa kokulahlwa. Emtatsheni wezincwadi verifyDump
, ebuyisela ulwazi mayelana nokwehluka ngaphandle kwemiphumela emibi.
Enye indlela yokuhlola ukushayela umsebenzi futhi saveDump
, ecacisa uhla lwemibhalo olufanayo, bese uhlola i-VCS ukuze uthole izinguquko. Njengoba zonke izinto ezivela kusizindalwazi zigcinwa kumafayela ahlukene, i-VCS izobonisa kuphela izinto ezishintshile.
Ububi obukhulu bale ndlela yisidingo sokubhala phezu kwamafayela ukuze ubone izinguquko.
Uzidlulisela kanjani izinguquko kusakhiwo sesizindalwazi kwezinye izindawo ngaphandle kwezingxabano namafayela amakhulu okufuduka
Sibonga umsebenzi deployDump
Ikhodi yomthombo yezinqubo ezigciniwe ingahlelwa ngendlela efanayo ncamashi nekhodi yomthombo wohlelo lokusebenza evamile. Ungangeza/ususe imigqa emisha kukhodi yenqubo egciniwe bese ucindezela ngokushesha izinguquko kusilawuli senguqulo, noma udale/ususe izinqubo ezigciniwe ngokudala/ukususa amafayela ahambisanayo ohlwini lwemibhalo lokulahla.
Isibonelo, ukudala inqubo entsha egciniwe ku-schema public
vele udale ifayela elisha ngesandiso .sql
ohlwini lwemibhalo public/functions
, beka ikhodi yomthombo yenqubo egcinwe kuyo, kuhlanganise ne-block CREATE OR REPLACE FUNCTION
, bese ushayela uhlelo deployDump
. Ukushintsha nokususa inqubo egciniwe kwenzeka ngendlela efanayo. Ngakho-ke, ikhodi ingena kukho kokubili i-VCS kanye nesizindalwazi ngesikhathi esisodwa.
Uma iphutha livela kukhodi yomthombo yanoma iyiphi inqubo egciniwe, noma umehluko phakathi kwamagama efayela kanye nenqubo egciniwe, khona-ke deployDump
izohluleka, ibonisa umbhalo wephutha. Ukungafani kwezinqubo ezigciniwe phakathi kokulahla kanye nesizindalwazi samanje akunakwenzeka uma usebenzisa deployDump
.
Lapho udala inqubo entsha egciniwe, asikho isidingo sokufaka mathupha igama lefayela elilungile. Kwanele ukuthi ifayela libe nesandiso
.sql
. Ngemva kocingodeployDump
umbhalo wephutha uzoqukatha igama elilungile, elingasetshenziswa ukuqamba kabusha ifayela.
deployDump
ikuvumela ukuthi uguqule imingcele yomsebenzi noma uhlobo lokubuyisela ngaphandle kwezenzo ezengeziwe, kuyilapho ngendlela yakudala kuzodingeka
yenza kuqala DROP FUNCTION
, futhi ngemva kwalokho CREATE OR REPLACE FUNCTION
.
Ngeshwa, kukhona ezinye izimo lapho deployDump
ayikwazi ukufaka izinguquko ngokuzenzakalelayo. Isibonelo, uma umsebenzi wokucupha osetshenziswa okungenani isibangeli esisodwa ususiwe. Izimo ezinjalo zixazululwa ngesandla kusetshenziswa amafayela okuthutha.
Uma unesibopho sokuthutha izinguquko ezinqubweni ezigciniwe
Ukufuduka kufanele kusetshenziswe ngaphambi kokwethulwa deployDump
. Lokhu kukuvumela ukuthi wenze zonke izinguquko esakhiweni futhi uxazulule izimo eziyinkinga ukuze izinguquko ezinqubweni ezigciniwe zidluliselwe ngaphandle kwezinkinga.
Ukusebenza nabafuduki kuzochazwa kabanzi ezigabeni ezilandelayo.
Indlela yokuhlela inqubo yomsebenzi ofanayo kuphrojekthi ngabathuthukisi abaningana
Kudingekile ukwakha iskripthi sokuqalisa okuphelele kwe-database, ezokwethulwa umthuthukisi emshinini wakhe womsebenzi, eletha ukwakheka kwesizindalwazi sendawo ngokuhambisana nokulahlwa okulondolozwe ku-VCS. Indlela elula ukuhlukanisa ukuqaliswa kwesizindalwazi sendawo ngezinyathelo ezi-3:
- Ngenisa ifayela elinesakhiwo esiyisisekelo esizobizwa ngokuthi isib.
base.sql
- Ukusebenzisa Ukufuduka
- Shayela
deployDump
base.sql
indawo yokuqala phezu kwayo lapho ukuthutha kusetshenziswa futhi kwenziwadeployDump
, okungukuthibase.sql + ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ + deployDump = Π°ΠΊΡΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΠ
. Ungakha ifayela elinjalo usebenzisa insizapg_dump
. Okusetshenzisiwebase.sql
kuphela lapho uqalisa isizindalwazi kusukela ekuqaleni.
Ake sishayele umbhalo ukuze siqedele ukuqaliswa kwesizindalwazi refresh.sh
. Uhlelo lokusebenza lungabukeka kanjena:
- Unjiniyela wethula endaweni yakhe
refresh.sh
futhi ithola ukwakheka kwesizindalwazi samanje - Umthuthukisi uqala umsebenzi okhona, elungisa imininingwane yendawo ukuze ihlangabezane nezidingo zokusebenza okusha (
ALTER TABLE ... ADD COLUMN
njll) - Ngemva kokuqeda umsebenzi, umthuthukisi ubiza umsebenzi
saveDump
ukwenza izinguquko ezenziwe kusizindalwazi ku-VCS - Ukuqalisa kabusha unjiniyela
refresh.sh
keverifyDump
manje okubonisa uhlu lwezinguquko ezizofakwa ekuthuthweni - Umthuthukisi udlulisela zonke izinguquko zesakhiwo kufayela lokuthuthela, iqalisa futhi
refresh.sh
ΠΈverifyDump
, futhi, uma ukufuduka kuhlanganiswe kahle,verifyDump
ngeke ibonise mehluko phakathi kwesizindalwazi sendawo nokulahlwa okulondoloziwe
Inqubo echazwe ngenhla iyahambisana nezimiso ze-gitflow. Igatsha ngalinye ku-VCS lizoqukatha inguqulo yalo yokulahla, futhi lapho uhlanganisa amagatsha, okulahlwayo kuzohlanganiswa. Ezimweni eziningi, asikho isenzo esengeziwe okudingeka sithathwe ngemva kokuhlanganisa, kodwa uma izinguquko zenziwe emagatsheni ahlukene, isibonelo, etafuleni elifanayo, kungase kuphakame ukungqubuzana.
Ake sicabangele isimo sokungqubuzana sisebenzisa isibonelo: kukhona igatsha Ukuthuthukisa, okungamagatsha amabili avela kuwo; isici1 ΠΈ isici2, ezingangqubuzani nazo Ukuthuthukisa, kodwa nixabene. Umsebenzi uwukuhlanganisa womabili amagatsha abe Ukuthuthukisa. Kulokhu, kunconywa ukuthi uqale uhlanganise elinye lamagatsha libe Ukuthuthukisabese uhlanganisa Ukuthuthukisa egatsheni elisele, ixazulula izingxabano egatsheni elisele, bese ihlanganisa igatsha lokugcina libe Ukuthuthukisa. Phakathi nesigaba sokuxazulula izingxabano, kungase kudingeke ukuthi ulungise ifayela lokuthuthela egatsheni lokugcina ukuze lifane nokulahlwa kokugcina, okuhlanganisa imiphumela yokuhlanganisa.
Uzithumela kanjani ngokuphephile izinguquko ezengeziwe kusakhiwo sedathabheyisi endaweni yokukhiqiza
Ngenxa yokuba khona kokulahlwa kwesakhiwo sedathabhesi yamanje ku-VCS, kuyenzeka ukuthi kubhekwe isizindalwazi sokukhiqiza ukuze sihambisane ncamashi nesakhiwo esidingekayo. Lokhu kuqinisekisa ukuthi zonke izinguquko ezihloswe onjiniyela zidluliselwe ngempumelelo kusisekelo sokukhiqiza.
Kusukela ROLLBACK
:
- Qala umsebenzi
- Yenza konke ukuthutha emsebenzini
- Ngokwenza okufanayo, sebenzisa
deployDump
- Ngaphandle kokuqedela okwenziwayo, sebenzisa
verifyDump
. Uma kungekho amaphutha, qalisaCOMMIT
. Uma kukhona amaphutha, gijimaROLLBACK
Lezi zinyathelo zingahlanganiswa kalula ezindleleni ezikhona zokusatshalaliswa kwezicelo, okuhlanganisa ne-zero-downtime.
isiphetho
Ngenxa yezindlela ezichazwe ngenhla, kungenzeka ukucindezela ukusebenza okuphezulu kumaphrojekthi we-βPHP + PostgreSQLβ, kuyilapho udela ukuthuthukiswa okuncane uma kuqhathaniswa nokusebenzisa yonke ingqondo yebhizinisi kukhodi enkulu yohlelo lokusebenza. Ngaphezu kwalokho, ukucubungula idatha ku
Source: www.habr.com