Kev lag luam logic hauv cov ntaub ntawv siv SchemaKeeper
Lub hom phiaj ntawm tsab xov xwm no yog siv cov piv txwv ntawm lub tsev qiv ntawv schema-keeper qhia cov cuab yeej uas tuaj yeem ua kom yooj yim rau cov txheej txheem ntawm kev tsim cov databases hauv PHP tej yaam num siv PostgreSQL DBMS.
Cov ntaub ntawv los ntawm tsab xov xwm no yuav, ua ntej ntawm tag nrho cov, yuav muaj txiaj ntsig zoo rau cov neeg tsim khoom uas xav ua kom muaj peev xwm tshaj plaws ntawm PostgreSQL, tab sis ntsib teeb meem tswj kev lag luam logic tso rau hauv cov ntaub ntawv.
Kab lus no yuav tsis piav txog qhov zoo lossis qhov tsis zoo ntawm kev khaws cia kev lag luam logic hauv cov ntaub ntawv. Nws yog xav tias qhov kev xaiv twb tau ua los ntawm tus nyeem ntawv.
Cov lus nug hauv qab no yuav raug txiav txim siab:
Nyob rau hauv dab tsi daim ntawv yuav tsum tau ib tug database cov ntaub ntawv pov tseg nyob rau hauv ib tug version tswj system (tom qab no hu ua VCS)
Yuav ua li cas taug qab cov kev hloov pauv hauv cov qauv database tom qab txuag lub pob tseg
Yuav ua li cas npaj cov txheej txheem ntawm kev ua haujlwm sib luag ntawm ib qhov project los ntawm ntau tus neeg tsim khoom
Yuav ua li cas kom muaj kev nyab xeeb siv ntau qhov kev hloov pauv hauv cov qauv database rau ib puag ncig ntau lawm
SchemaKeeper tsim los ua haujlwm nrog cov txheej txheem khaws cia uas sau ua lus PL/pgSQL. Kev sim nrog lwm yam lus tsis tau ua tiav, yog li kev siv yuav tsis ua haujlwm zoo lossis tsis tuaj yeem ua tau.
Yuav ua li cas khaws cov qauv database pov tseg hauv VCS
Thaum tsim cov txheej txheem khaws cia tshiab, tsis tas yuav manually sau cov ntaub ntawv npe raug. Nws txaus rau cov ntaub ntawv kom muaj qhov txuas ntxiv .sql. Tom qab hu deployDump cov ntawv yuam kev yuav muaj lub npe raug, uas tuaj yeem siv los hloov npe cov ntaub ntawv.
deployDump tso cai rau koj los hloov qhov tsis ua haujlwm lossis rov qab hom yam tsis muaj kev nqis tes ua ntxiv, thaum nrog txoj hauv kev classical koj yuav tsum tau ua.
ua ntej DROP FUNCTION, thiab tsuas yog tom qab ntawd CREATE OR REPLACE FUNCTION.
Yog tias koj muaj lub luag haujlwm rau kev hloov pauv mus rau cov txheej txheem khaws cia schema-keeper, ces cov ntaub ntawv tsiv teb tsaws yuav tsum tau siv los hloov lwm cov kev hloov hauv cov qauv. Piv txwv li, lub tsev qiv ntawv zoo rau kev ua haujlwm nrog kev tsiv teb tsaws chaw yog lus qhuab qhia/kev tsiv teb tsaws chaw.
Kev tsiv teb tsaws chaw yuav tsum tau siv ua ntej tso tawm deployDump. Qhov no tso cai rau koj ua txhua yam kev hloov pauv rau cov qauv thiab daws cov teeb meem teeb meem kom cov kev hloov pauv hauv cov txheej txheem khaws cia tom qab hloov pauv yam tsis muaj teeb meem.
Wb hu rau tsab ntawv kom tiav database initialization refresh.sh. Txoj haujlwm ua haujlwm yuav zoo li no:
Tus tsim tawm tso rau hauv nws ib puag ncig refresh.sh thiab tau txais cov qauv database tam sim no
Tus tsim tawm pib ua haujlwm ntawm tes, hloov kho cov ntaub ntawv hauv zos kom tau raws li qhov xav tau ntawm kev ua haujlwm tshiab (ALTER TABLE ... ADD COLUMN thiab lwm yam)
Tom qab ua tiav txoj haujlwm, tus tsim tawm hu ua haujlwm saveDumplos ua kev hloov pauv rau cov ntaub ntawv hauv VCS
Developer relaunch refresh.shces verifyDumpuas tam sim no qhia cov npe ntawm kev hloov pauv kom suav nrog hauv kev tsiv teb tsaws
Tus tsim tawm hloov tag nrho cov qauv hloov mus rau cov ntaub ntawv tsiv teb tsaws, rov ua dua refresh.sh ΠΈ verifyDump, thiab, yog tias kev tsiv teb tsaws raug muab tso ua ke kom raug, verifyDump yuav tsis muaj qhov sib txawv ntawm cov ntaub ntawv hauv zos thiab cov chaw khaws tseg
Cov txheej txheem tau piav qhia saum toj no yog sib xws nrog gitflow cov hauv paus ntsiab lus. Txhua ceg nyob rau hauv VCS yuav muaj nws tus kheej version ntawm lub pob tseg, thiab thaum sib koom ua ke ceg, cov pob tseg yuav muab merged. Feem ntau, tsis muaj qhov yuav tsum tau ua ntxiv tom qab kev sib koom ua ke, tab sis yog tias muaj kev hloov pauv hauv cov ceg sib txawv, piv txwv li, rau tib lub rooj, kev tsis sib haum xeeb yuav tshwm sim.
Cia peb xav txog qhov xwm txheej tsis sib haum xeeb siv ib qho piv txwv: muaj ceg tsim, los ntawm uas ob ceg ceg: nta1 ΠΈ nta2, uas tsis muaj teeb meem nrog tsim, tab sis muaj kev tsis sib haum xeeb. Lub luag haujlwm yog los ua ke ob ceg rau hauv tsim. Rau cov ntaub ntawv no, nws raug pom zoo kom ua ntej ua ke ib qho ntawm cov ceg ntoo rau hauv tsimthiab ces ua ke tsim mus rau lwm ceg, daws kev tsis sib haum xeeb nyob rau hauv seem seem, thiab ces merging lub xeem ceg mus rau hauv tsim. Thaum lub sij hawm kev daws teeb meem tsis sib haum xeeb, tej zaum koj yuav tau kho cov ntaub ntawv tsiv teb tsaws chaw nyob rau hauv ceg kawg kom nws phim cov pob tseg zaum kawg, uas suav nrog cov txiaj ntsig ntawm kev sib koom ua ke.
Yuav ua li cas kom muaj kev nyab xeeb siv ntau qhov kev hloov pauv hauv cov qauv database rau ib puag ncig ntau lawm
Ua tsaug rau qhov muaj qhov pov tseg ntawm cov ntaub ntawv tam sim no hauv VCS, nws tuaj yeem tshawb xyuas cov ntaub ntawv tsim khoom kom ua raws li cov qauv tsim nyog. Qhov no ua kom ntseeg tau tias tag nrho cov kev hloov pauv uas cov neeg tsim khoom npaj tau ua tiav tau xa mus rau lub hauv paus tsim.
txij li thaum DDL hauv PostgreSQL yog kev lag luam, nws raug pom zoo kom ua raws li cov lus txib hauv qab no, yog li ntawd, nyob rau hauv cov ntaub ntawv ntawm ib qho kev npaj txhij txog yuam kev, koj muaj peev xwm "painlessly" ua. ROLLBACK:
Cov kauj ruam no tuaj yeem yooj yim ua ke rau hauv cov txheej txheem uas twb muaj lawm rau kev xa mus rau daim ntawv thov, suav nrog xoom-downtime.
xaus
Ua tsaug rau cov txheej txheem tau piav qhia saum toj no, nws muaj peev xwm nyem qhov ua tau zoo tshaj plaws ntawm "PHP + PostgreSQL" cov haujlwm, thaum ua rau kev loj hlob me ntsis yooj yim piv rau kev siv tag nrho cov kev lag luam logic hauv daim ntawv thov tseem ceeb. Ntxiv mus, cov ntaub ntawv ua nyob rau hauv PL/pgSQL feem ntau zoo li pob tshab thiab xav tau cov lej tsawg dua li qhov ua haujlwm zoo ib yam sau hauv PHP.