Macquul ganacsi oo ku jira kaydka xogta iyadoo la isticmaalayo SchemaKeeper

Ujeedada maqaalkani waa in la isticmaalo tusaalaha maktabadda schema-haye tus qalab si weyn u fududayn kara habka horumarinta xogta xogta gudaha mashaariicda PHP iyadoo la isticmaalayo PostgreSQL DBMS.

Macluumaadka maqaalkani wuxuu, ugu horreyntii, faa'iido u yeelan doonaa horumarinta kuwaas oo doonaya inay ka faa'iidaystaan ​​​​ awoodaha PostgreSQL, laakiin waxay la kulmaan dhibaatooyin ilaalinta macquulka ganacsiga ee lagu dhejiyo xogta.

Maqaalkani ma qeexi doono faa'iidooyinka ama khasaarooyinka kaydinta macquulka ganacsiga ee kaydka xogta. Waxaa loo maleynayaa in doorashada uu horay u sameeyay akhristuhu.

Su'aalaha soo socda ayaa la tixgelin doonaa:

  1. Qaab noocee ah ayaa qashinka qaab dhismeedka xogta lagu kaydiyaa nidaamka xakamaynta nooca (halkan ka dib waxaa loo yaqaan VCS)
  2. Sida loola socdo isbedelada qaab dhismeedka kaydka xogta kadib kaydinta qashinka
  3. Sida loogu wareejiyo isbeddelada qaab dhismeedka kaydka xogta deegaan kale iyada oo aanay jirin isku dhacyo iyo faylal guuritaan oo wayn
  4. Sida loo habeeyo habka shaqada barbar socda ee mashruuca dhowr horumariye
  5. Sida si badbaado leh loogu geynayo isbeddelo badan oo ku saabsan qaab dhismeedka kaydka xogta deegaanka wax soo saarka

    Qorshe ilaaliye loogu talagalay in lagu shaqeeyo hababka kaydsan ee ku qoran luqadda PL/pgSQL. Tijaabinta luqadaha kale lama fulin, markaa isticmaalku ma noqon karo mid waxtar leh ama suurtogal ma aha.

Sida loo kaydiyo qashinka qaab dhismeedka xogta ee VCS

Maktabadda schema-haye waxay bixisaa shaqo saveDump, kaas oo ka badbaadiya qaab-dhismeedka shay kasta kaydka xogta sida faylal qoraal ah oo kala duwan. Soosaarku waa hage ka kooban qaab-dhismeedka xogta, oo loo qaybiyay faylal kooxaysan oo si fudud loogu dari karo VCS.

Aynu eegno ka beddelashada shayada kaydka xogta una beddelo faylal inagoo adeegsanayna dhawr tusaale:

Nooca shayga
Qorshaha
Title
Dariiqa qaraabada ah ee faylka

miiska
dadweynaha
xisaab
./public/tables/accounts.txt

Habka kaydsan
dadweynaha
auth (hash bigint)
./public/functions/auth(int8).sql

Horudhac
jaale
canshuuraha
./booking/views/tariffs.txt

Waxa ku jira faylalku waa matalaad qoraal ah oo ka mid ah qaabdhismeedka shay gaar ah. Tusaale ahaan, hababka kaydsan, waxa ku jira faylka ayaa noqon doona qeexitaan buuxda ee habka la kaydiyay, laga bilaabo block CREATE OR REPLACE FUNCTION.

Sida laga arki karo shaxda kore, dariiqa loo maro faylka ayaa kaydiya macluumaadka ku saabsan nooca, qaabka iyo magaca shayga. Habkani wuxuu sahlayaa in la dhex maro qashinka iyo koodhka dib u eegista isbeddelada ku jira kaydka xogta.

kordhinta .sql faylalka leh koodhka isha habraaca kaydsan, tan waxaa loo doortay si IDE-gu si toos ah u bixiyo agabka la falgalka xogta marka faylka la furo.

Sida loola socdo isbedelada qaab dhismeedka kaydka xogta kadib kaydinta qashinka

Marka la keydiyo qashinka qaab dhismeedka xogta ee hadda ee VCS, waxaan helnaa fursad aan ku hubinno in isbedel lagu sameeyay qaab dhismeedka xogta ka dib markii qashinka la sameeyay. Maktabadda dhexdeeda schema-haye si loo ogaado isbeddelada qaabdhismeedka xogta, hawl ayaa la bixiyaa verifyDump, kaas oo soo celinaya macluumaadka ku saabsan kala duwanaanshaha iyada oo aan wax saameyn ah lahayn.

Si kale oo lagu hubiyo waa in aad wacdo shaqada mar kale saveDump, qeexida tusaha isku midka ah, oo ka hubi VCS wixii isbeddel ah. Mar haddii dhammaan walxaha kaydka ku jira lagu kaydiyo faylal gaar ah, VCS waxay tusi doontaa oo keliya walxaha la beddelay.
Khasaaraha ugu weyn ee habkan waa baahida loo qabo in lagu beddelo faylasha si loo arko isbeddellada.

Sida loogu wareejiyo isbeddelada qaab dhismeedka kaydka xogta deegaan kale iyada oo aanay jirin isku dhacyo iyo faylal guuritaan oo wayn

Waad ku mahadsan tahay shaqada deployDump Koodhka isha ee habraacyada kaydsan waxa loo tafatiran karaa si la mid ah koodhka isha codsiga caadiga ah. Waxaad ku dari kartaa/masixi kartaa khadadka cusub ee ku jira koodka habraaca la kaydiyay oo isla markiiba waxaad ku riixi kartaa isbeddelada kantaroolka nooca, ama waxaad abuurtaa/tirri kartaa habraacyada kaydsan adigoo abuuraya/tirtiraya faylasha u dhigma ee ku jira tusaha qashinka.

Tusaale ahaan, si aad u abuurto hab cusub oo kaydsan schema public kaliya samee fayl cusub oo leh kordhinta .sql tusaha ku jira public/functions, dhig koodhka isha ee nidaamka kaydsan, oo ay ku jiraan block CREATE OR REPLACE FUNCTION, ka dibna wac shaqada deployDump. Wax ka beddelka iyo tirtiridda nidaamka kaydsan waxay u dhacdaa si la mid ah. Haddaba, koodku wuxuu gelayaa labadaba VCS iyo kaydka xogta isku mar.

Haddii uu khalad ka soo muuqdo koodhka isha ee hab kasta oo la kaydiyay, ama farqi u dhexeeya magacyada faylka iyo nidaamka la kaydiyay, markaa deployDump wuu guuldareysan doonaa, isagoo soo bandhigaya qoraalka qaladka. Isku-dheelitir la'aanta hababka kaydsan ee u dhexeeya qashinka iyo xogta hadda jirta waa wax aan macquul ahayn marka la isticmaalayo deployDump.

Marka la abuurayo hab cusub oo kaydsan, looma baahna in gacanta lagu galo magaca faylka saxda ah. Way ku filan tahay faylka si loo kordhiyo .sql. Taleefoonka ka dib deployDump qoraalka khaladku wuxuu ka koobnaan doonaa magaca saxda ah, kaas oo loo isticmaali karo in dib loo magacaabo faylka.

deployDump Waxay kuu oggolaaneysaa inaad bedesho cabbirrada shaqada ama nooca soo noqoshada iyada oo aan la helin ficillo dheeri ah, halka habka qadiimiga ah aad u baahan tahay
fulin marka hore DROP FUNCTION, ka dibna kaliya CREATE OR REPLACE FUNCTION.

Nasiib darro, waxaa jira xaalado qaarkood deployDump awoodin inaad si toos ah u codsato isbeddelada. Tusaale ahaan, haddii shaqada kiciya ee loo isticmaalo ugu yaraan hal kiciye meesha laga saaro. Xaaladahan oo kale waxaa lagu xalliyaa gacanta iyadoo la isticmaalayo faylasha socdaalka.

Haddii aad mas'uul ka tahay u guurista isbeddelada habraacyada kaydsan schema-haye, ka dibna faylasha socdaalka waa in loo adeegsadaa si loogu wareejiyo isbedelada kale ee qaabka. Tusaale ahaan, maktabad wanaagsan oo loogu talagalay la shaqaynta socdaalka waa caqiidada/guuritaanka.

Socdaalka waa in la codsadaa ka hor intaan la bilaabin deployDump. Tani waxay kuu ogolaaneysaa inaad wax ka beddesho dhammaan isbeddellada qaabdhismeedka oo aad xalliso xaaladaha dhibka leh si isbeddelka hababka kaydsan loo wareejiyo iyada oo aan dhibaato lahayn.

La shaqaynta socdaalka waxa si faahfaahsan loogu sifayn doonaa qaybaha soo socda.

Sida loo habeeyo habka shaqada barbar socda ee mashruuca dhowr horumariye

Waa lagama maarmaan in la abuuro qoraal loogu talagalay bilawga dhammaystiran ee kaydinta xogta, kaas oo uu bilaabi doono horumariyaha mashiinka shaqada, isaga oo keenaya qaab dhismeedka xogta deegaanka si waafaqsan qashinka lagu badbaadiyay VCS. Sida ugu fudud waa in loo qaybiyo bilawga kaydinta xogta deegaanka 3 tillaabo:

  1. Soo deji fayl leh qaab dhismeed aasaasi ah oo loogu yeeri doono tusaale. base.sql
  2. Codsiga Socdaalka
  3. Wac deployDump

base.sql waa meesha ugu sarreysa ee socdaalka lagu dabaqo laguna fuliyo deployDump, taasi waa base.sql + ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ + deployDump = Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ структура Π‘Π”. Waxaad abuuri kartaa fayl noocaas ah adigoo isticmaalaya utility pg_dump. la isticmaalo base.sql si gaar ah marka xogta xogta laga soo bilaabo eber.

Aan wacno qoraalka si aan u bilowno xog dhammaystiran refresh.sh. Socodka shaqadu wuxuu u ekaan karaa sidan:

  1. Horumariyuhu wuxuu ka bilaabay deegaankiisa refresh.sh oo uu helo qaab-dhismeedka xogta hadda jira
  2. Horumariyuhu waxa uu bilaabay shaqada uu hayo, isaga oo wax ka beddelaya xogta deegaanka si uu u daboolo baahiyaha shaqada cusub (ALTER TABLE ... ADD COLUMN iwm)
  3. Kadib dhamaystirka hawsha, horumariyuhu wuxuu wacaa shaqada saveDumpin lagu sameeyo isbedel lagu sameeyo xogta xogta ee VCS
  4. Dib-u-bilaabida horumariyaha refresh.shmarkaa verifyDumpKaas oo hadda muujinaya liis isbedel ah oo lagu daro socdaalka
  5. Horumariyuhu wuxuu ku wareejinayaa dhammaan isbeddellada qaabdhismeedka faylka socdaalka, mar kale ayuu ordaa refresh.sh ΠΈ verifyDump, iyo, haddii socdaalka si sax ah loo ururiyey. verifyDump ma muujin doono wax farqi ah oo u dhexeeya kaydka xogta deegaanka iyo qashinka la kaydiyay

Habka kor lagu sharaxay wuxuu la jaan qaadayaa mabaadi'da gitflow. Laan kasta oo ku taal VCS waxay ka koobnaan doontaa nooca qashinka, iyo marka laamo la isku daro, qashinka waa la isku dari doonaa. Inta badan, wax tallaabo ah oo dheeraad ah looma baahna in la qaado isku darka ka dib, laakiin haddii isbeddel lagu sameeyay laamaha kala duwan, tusaale ahaan, hal miis, isku dhac ayaa iman kara.

Aan ka fiirsanno xaalad colaadeed annagoo tusaale u soo qaadanno: waxaa jirta laan horumarinta, oo ay ka soo jeedaan labada laamood: muuqaalka1 ΠΈ muuqaalka2, kuwaas oo aan lahayn wax khilaaf ah horumarinta, laakiin ay isku dhacaan midba midka kale. Hawshu waa in la isku daro labada laamood horumarinta. Xaaladdan, waxaa lagula talinayaa in marka hore la isku daro mid ka mid ah laamaha horumarintaka dibna isku dar horumarinta in laanta soo hadhay, la xaliyo khilaafaadkii laanta hadhay, ka dibna la isku daro laanta u dambaysa horumarinta. Inta lagu jiro marxaladda xallinta isku dhaca, waxa laga yaabaa inaad hagaajiso faylka socdaalka ee laanta u dambaysa si uu ugu dhigmo qashinka ugu dambeeya, oo ay ku jiraan natiijooyinka isku darka.

Sida si badbaado leh loogu geynayo isbeddelo badan oo ku saabsan qaab dhismeedka kaydka xogta deegaanka wax soo saarka

Waad ku mahadsan tahay joogitaanka qashin-qubka qaab-dhismeedka xogta hadda ee VCS, waxay noqonaysaa suurtogal in la hubiyo kaydinta xogta wax-soo-saarka si sax ah ugu hoggaansanaanta qaab-dhismeedka loo baahan yahay. Tani waxay hubinaysaa in dhammaan isbeddellada ay horumariyayaashu ku tala galeen si guul leh loogu wareejiyay saldhigga wax soo saarka.

Tan DDL gudaha PostgreSQL waa macaamil ganacsi, waxaa lagu talinayaa in aad u hoggaansamaan amarka soo dejinta, si, haddii ay dhacdo qalad lama filaan ah, waxaad kartaa "xanuun la'aan" fulinta ROLLBACK:

  1. Bilow wax kala iibsiga
  2. Samee dhammaan guuritaanka macaamil ganacsi
  3. Isla macaamilka, fuli deployDump
  4. Adigoon dhammayn wax kala iibsiga, fuli verifyDump. Haddii aysan jirin khaladaad, orod COMMIT. Haddii ay jiraan khaladaad, orod ROLLBACK

Talaabooyinkan waxaa si fudud loogu dhex milmi karaa habab jira oo loo dirayo arjiga, oo ay ku jiraan eber-dhimista.

gunaanad

Waad ku mahadsan tahay hababka kor lagu sharaxay, waxaa suurtagal ah in la tuujiyo waxqabadka ugu sarreeya ee mashaariicda "PHP + PostgreSQL", iyada oo la bixinayo ku habboonaanta horumarka yar marka la barbar dhigo hirgelinta dhammaan caqli-galnimada ganacsiga ee code-ka codsiga ugu weyn. Intaa waxaa dheer, ka baaraandegidda xogta gudaha PL/pgSQL inta badan waxay u egtahay mid hufan oo u baahan kood ka yar isla shaqeynta ku qoran PHP.

Source: www.habr.com

Add a comment