Te arorau pakihi i roto i te papaarangi ma te whakamahi i te SchemaKeeper

Ko te kaupapa o tenei tuhinga he whakamahi i te tauira o te whare pukapuka kaitiaki kaupapa whakaatu i nga taputapu ka taea te tino whakangawari i te tukanga o te whakawhanake i nga papaunga raraunga i roto i nga kaupapa PHP ma te whakamahi i te PostgreSQL DBMS.

Ko nga korero mai i tenei tuhinga, ko te tuatahi, ka whai hua ki nga kaihanga e hiahia ana ki te whai i nga kaha o PostgreSQL, engari kei te raru ki te pupuri i te arorau pakihi kua whakauruhia ki roto i te paataka.

Kaore tenei tuhinga e whakaahua i nga painga me nga ngoikoretanga o te penapena arorau pakihi i roto i te papaa raraunga. Ko te whakaaro kua oti kē te whiriwhiri e te kaipānui.

Ka whakaarohia nga patai e whai ake nei:

  1. He aha te ahua me penapena te putunga anga raraunga ki roto i te punaha whakahaere putanga (ka kiia i muri nei ko VCS)
  2. Me pehea te whai i nga huringa i roto i te hanganga patengi raraunga i muri i te penapena i te putunga
  3. Me pehea te whakawhiti i nga huringa i roto i te hanganga papaarangi ki etahi atu taiao kaore he pakanga me nga konae hekenga nui
  4. Me pehea te whakarite i te tukanga o te mahi whakarara i runga i tetahi kaupapa na etahi kaiwhakawhanake
  5. Me pehea te tuku haumaru atu i nga huringa i roto i te anga raraunga ki tetahi taiao whakaputa

    Kaitiaki Kaupapa i hangaia mo te mahi me nga tikanga rongoa kua tuhia ki te reo PL/pgSQL. Ko nga whakamatautau me etahi atu reo kaore ano kia mahia, na reira kare pea e tino whai hua te whakamahi, kaore pea e taea.

Me pehea te penapena i te putunga hanganga papaa raraunga ki VCS

whare pukapuka kaitiaki kaupapa whakarato i te mahi saveDump, e tiaki ana i te hanganga o nga mea katoa mai i te putunga raraunga hei konae tuhinga motuhake. Ko te putanga he whaiaronga kei roto te hanganga putunga korero, kua wehea ki nga konae kua whakarōpūhia ka ngawari te taapiri atu ki te VCS.

Kia titiro tatou ki te huri i nga mea mai i te putunga raraunga ki nga konae ma te whakamahi i nga tauira maha:

Ип объекта
Ko te kaupapa
Taitara
Ara whanaunga ki te kōnae

ripanga
tūmatanui
pūkete
./public/tables/accounts.txt

Te tikanga rongoa
tūmatanui
mana (hash bigint)
./public/functions/auth(int8).sql

Whakataki
tono
reiti
./booking/views/tariffs.txt

Ko nga mea kei roto i nga konae he whakaaturanga kupu mo te hanganga o tetahi ahanoa putunga raraunga. Hei tauira, mo nga tikanga rongoa, ko nga ihirangi o te konae te whakamaramatanga katoa o te tikanga rongoa, timata mai i te poraka CREATE OR REPLACE FUNCTION.

Ka kitea mai i te ripanga i runga ake nei, ko te ara ki te konae ka penapena korero mo te momo, te aronuinga me te ingoa o te ahanoa. Ma tenei huarahi ka ngawari ake te whakatere i roto i te putunga me te arotake waehere o nga huringa i roto i te putunga raraunga.

toronga .sql mo nga konae whai waehere puna tikanga rongoa, i tohua tenei kia tukuna aunoatia e te IDE nga taputapu mo te taunekeneke ki te paataka korero ina whakatuwherahia te konae.

Me pehea te whai i nga huringa i roto i te hanganga patengi raraunga i muri i te penapena i te putunga

Na roto i te penapena i te putunga o te hanganga putunga raraunga o naianei i roto i te VCS, ka whai waahi taatau ki te tirotiro mena i whakarereketia te hanganga papaa raraunga i muri i te waihangatanga o te putunga. Kei te whare pukapuka kaitiaki kaupapa ki te kite i nga huringa i roto i te hanganga raraunga, ka tukuna he mahi verifyDump, e whakahoki mai ana i nga korero mo nga rereketanga kaore he paanga o te taha.

Ko tetahi atu huarahi ki te tirotiro ko te waea ano i te mahi saveDump, whakapūtā te whaiaronga kotahi, ka taki i roto i te VCS mō ngā huringa. I te mea ka tiakina nga mea katoa mai i te papaaarangi ki nga konae motuhake, ka whakaatu noa a VCS i nga mea kua huri.
Ko te tino kino o tenei tikanga ko te hiahia ki te tuhirua i nga konae kia kitea ai nga huringa.

Me pehea te whakawhiti i nga huringa i roto i te hanganga papaarangi ki etahi atu taiao kaore he pakanga me nga konae hekenga nui

He mihi ki te mahi deployDump Ko te waehere puna o nga tikanga rongoa ka taea te whakatika i te ahua rite tonu ki te waehere puna tono auau. Ka taea e koe te taapiri/te whakakore i nga raina hou ki te waehere tikanga rongoa me te pana tonu i nga huringa ki te mana putanga, te waihanga ranei i nga tikanga rongoa ma te hanga/te whakakore i nga konae e rite ana ki te raarangi putunga.

Hei tauira, ki te hanga i tetahi tikanga rongoa hou i roto i te aronuinga public hanga noa he kōnae hou me te toronga .sql i roto i te whaiaronga public/functions, tuhia te waehere puna o te tukanga rongoa ki roto, tae atu ki te poraka CREATE OR REPLACE FUNCTION, ka karangahia te mahi deployDump. Ko te whakarereke me te whakakore i tetahi tikanga rongoa ka puta i te ara ano. No reira, ka uru te waehere ki roto i te VCS me te putunga raraunga i te wa kotahi.

Mena ka puta he hapa i roto i te waehere puna o tetahi tikanga rongoa, he rereke ranei i waenga i nga ingoa o te konae me te tikanga rongoa, katahi ka deployDump ka rahua, ka whakaatu i te kuputuhi hapa. Kare e taea te tauritenga o nga tikanga penapena i waenga i te putunga me te papaunga raraunga o naianei ina whakamahi deployDump.

A, no te hanga i tetahi tikanga rongoa hou, kaore he take ki te whakauru a-ringa i te ingoa kōnae tika. He nui mo te konae te toronga .sql. I muri i te karanga deployDump kei roto i te kuputuhi hapa te ingoa tika, ka taea te whakamahi hei whakaingoa ano i te konae.

deployDump ka taea e koe te whakarereke i nga tawhā o tetahi mahi, momo hoki mai ranei me te kore he mahi taapiri, me te huarahi puāwaitanga me mahi koe
mahia tuatahi DROP FUNCTION, katahi ano CREATE OR REPLACE FUNCTION.

Kia aroha mai, tera ano etahi ahuatanga deployDump kaore e taea te tono aunoa i nga huringa. Hei tauira, ki te tangohia tetahi mahi keu e whakamahia ana e te kotahi keu. Ko enei ahuatanga ka whakatauhia ma te whakamahi i nga konae heke.

Mena kei a koe te haepapa mo te heke i nga huringa ki nga tikanga rongoa kaitiaki kaupapa, katahi me whakamahi nga konae heke ki te whakawhiti i etahi atu huringa o te hanganga. Hei tauira, he whare pukapuka pai mo te mahi me nga heke whakaakoranga/hekenga.

Me tono nga heke i mua i te whakarewatanga deployDump. Ma tenei ka taea e koe te whakarereke katoa i te hanganga me te whakatau i nga ahuatanga raruraru kia taea ai te whakawhiti i nga huringa o nga tikanga rongoa kaore he raru.

Ko te mahi me nga hekenga ka whakamaarama ake i nga waahanga e whai ake nei.

Me pehea te whakarite i te tukanga o te mahi whakarara i runga i tetahi kaupapa na etahi kaiwhakawhanake

He mea tika ki te hanga i te tuhinga mo te arawhititanga katoa o te putunga, ka whakarewahia e te kaiwhakawhanake i runga i tana miihini mahi, me te kawe mai i te hanganga o te papaaarangi o te rohe kia rite ki te putunga kua tiakina ki te VCS. Ko te huarahi ngawari ko te wehewehe i te arawhitinga o te papaaarangi o te rohe kia 3 nga kaupae:

  1. Kawemai he kōnae me te hanganga taketake ka kiia hei tauira. base.sql
  2. Te tono Hekenga
  3. Te Challenge deployDump

base.sql Ko te timatanga o runga ka tukuna, ka mahia nga heke deployDump, ko base.sql + миграции + deployDump = актуальная структура БД. Ka taea e koe te hanga i taua konae ma te whakamahi i te whaipainga pg_dump. Kua whakamahia base.sql anake i te wa e arawhiti ana i te patengi raraunga mai i te wahanga.

Me waea atu ki te tuhinga kia oti te arawhitinga raraunga refresh.sh. Ko te ahua o te rerengamahi penei pea:

  1. Ka whakarewa te kaiwhakawhanake ki tana taiao refresh.sh a ka whiwhi i te hanganga raraunga o naianei
  2. Ka timata te kaiwhakawhanake ki te mahi i runga i nga mahi kei a koe, me te whakarereke i te paataka raraunga aa-rohe ki te whakatutuki i nga hiahia o te mahi hou (ALTER TABLE ... ADD COLUMN etc)
  3. I muri i te whakaoti i te mahi, ka karanga te kaiwhakawhanake i te mahi saveDumpki te mahi i nga huringa i mahia ki te patengi raraunga i VCS
  4. Whakarewa ano te kaiwhakawhanake refresh.sh, ka verifyDumpe whakaatu ana inaianei he rarangi o nga huringa hei whakauru ki te heke
  5. Ka tukuna e te kaiwhakawhanake nga huringa hanganga katoa ki te konae hekenga, ka rere ano refresh.sh и verifyDump, a, ki te tika te whakahiato o te heke, verifyDump karekau e whakaatu he rerekee i waenga i te putunga raraunga rohe me te putunga kua tiakina

Ko te tukanga i whakaahuatia i runga ake nei he hototahi ki nga maapono gitflow. Kei ia peka o te VCS tana ake putanga o te putunga, a ka hanumi nga peka, ka hanumi nga putunga. I te nuinga o te waa, karekau he mahi taapiri i muri i te hanumi, engari ki te whakarereketia nga peka rereke, hei tauira, ki te teepu kotahi, ka ara ake he taupatupatu.

Me whakaaro tatou ki tetahi ahuatanga tautohetohe ma te whakamahi i tetahi tauira: he manga whakawhanake, e rua nga peka e peka ana: feature1 и feature2, karekau he taupatupatu whakawhanake, engari he tautohetohe tetahi ki tetahi. Ko te mahi he whakakotahi i nga peka e rua ki roto whakawhanake. Mo tenei keehi, ka tūtohu kia hanumi tuatahi tetahi o nga manga ki roto whakawhanakekatahi ka hanumi whakawhanake ki te peka e toe ana, ka whakatau i nga raruraru i te toenga o te peka, ka whakakotahi i te peka whakamutunga ki roto whakawhanake. I te wahanga whakatau papā, me whakatika pea koe i te konae hekenga i te peka whakamutunga kia rite ki te putunga whakamutunga, kei roto nga hua o nga hanumi.

Me pehea te tuku haumaru atu i nga huringa i roto i te anga raraunga ki tetahi taiao whakaputa

He mihi ki te waahi o te putunga o te hanganga papaaarangi o naianei i roto i te VCS, ka taea te tirotiro i te paataka whakaputanga mo te tino rite ki te hanganga e hiahiatia ana. Ma tenei ka whakarite i nga huringa katoa i whakaarohia e nga kaihanga i pai te whakawhiti ki te turanga whakaputa.

Mai DDL kei roto i te PostgreSQL tauwhitiwhiti, e taunaki ana kia u ki te ota tuku e whai ake nei, na, mena he hapa ohorere, ka taea e koe te "mamae" te mahi. ROLLBACK:

  1. Tīmatahia te tauwhitinga
  2. Mahia nga hekenga katoa i roto i te tauwhitinga
  3. I roto i te tauwhitinga kotahi, mahia deployDump
  4. Ki te kore e oti te tauwhitinga, mahia verifyDump. Mena kaore he hapa, rere COMMIT. Mena he hapa, rere ROLLBACK

Ka taea e enei kaupae te whakauru ngawari ki nga huarahi o mua ki te tuku tono, tae atu ki te wa-kore.

mutunga

He mihi ki nga tikanga i whakaahuahia i runga ake nei, ka taea te kohi i nga mahi tino nui mai i nga kaupapa "PHP + PostgreSQL", i te mea he iti noa te waahana whanaketanga i whakaritea ki te whakatinana i nga arorau pakihi katoa i roto i te waehere tono matua. Ano, tukatuka raraunga i roto i PL/pgSQL i te nuinga o te wa ka marama ake te ahua me te iti ake o te waehere i te ahua o te mahi kua tuhia ki te PHP.

Source: will.com

Tāpiri i te kōrero