Ny tanjon'ity lahatsoratra ity dia ny hampiasa ny ohatra momba ny tranomboky schema- keeper Asehoy ireo fitaovana afaka manatsotra tanteraka ny fizotran'ny fampivoarana angona ao anatin'ny tetikasa PHP mampiasa ny PostgreSQL DBMS.
Ny fampahalalam-baovao avy amin'ity lahatsoratra ity dia, voalohany indrindra, dia mahasoa ho an'ireo mpamorona izay te-hanararaotra ny fahaiza-manaon'ny PostgreSQL, saingy miatrika olana amin'ny fitazonana ny lojikan'ny orinasa napetraka ao amin'ny tahiry.
Ity lahatsoratra ity dia tsy hamaritra ny tombony na ny fatiantoka amin'ny fitehirizana ny lojikan'ny fandraharahana ao anaty tahiry. Heverina fa ny safidy dia efa nataon'ny mpamaky.
Hodinihina ireto fanontaniana manaraka ireto:
Amin'ny endrika inona no tokony hotehirizina ao anaty rafitra fanaraha-maso ny dikan-teny (antsoina hoe VCS)
Ahoana no hanaraha-maso ny fiovana ao amin'ny rafitry ny angon-drakitra taorian'ny nitahiry fanariam-pako
Ahoana ny famindrana ny fanovana ao amin'ny rafitry ny angon-drakitra mankany amin'ny tontolo hafa tsy misy fifandirana sy rakitra fifindra-monina goavana
Ahoana ny fandrindrana ny fizotran'ny asa mifanitsy amin'ny tetikasa iray ataon'ny mpamorona maromaro
Ahoana ny fametrahana soa aman-tsara fiovana bebe kokoa amin'ny firafitry ny angon-drakitra amin'ny tontolo famokarana
SchemaKeeper natao hiasa amin'ny fomba fiasa voatahiry voasoratra amin'ny fiteny PL/pgSQL. Ny fitsapana amin'ny fiteny hafa dia tsy natao, ka ny fampiasana dia mety tsy mahomby na mety tsy ho azo atao.
Ahoana ny fomba fitehirizana fanariam-pamokarana database ao amin'ny VCS
fitehirizam-boky schema- keeper manome asa saveDump, izay mitahiry ny firafitry ny zavatra rehetra avy amin'ny angon-drakitra ho rakitra lahatsoratra misaraka. Ny vokatra dia lahatahiry misy ny firafitry ny angon-drakitra, mizara ho rakitra mivondrona izay azo ampidirina mora amin'ny VCS.
Andeha hojerentsika ny famadihana zavatra avy amin'ny angon-drakitra ho rakitra mampiasa ohatra maromaro:
Karazana zavatra
Ny tetika
anarana
Lalana mifandraika amin'ny rakitra
Ny votoatin'ny rakitra dia fanehoana an-tsoratra ny firafitry ny zavatra angon-drakitra manokana. Ohatra, ho an'ny fomba fiasa voatahiry, ny votoatin'ny rakitra dia ny famaritana feno ny fomba fiasa voatahiry, manomboka amin'ny sakana CREATE OR REPLACE FUNCTION.
Araka ny hita amin'ny tabilao etsy ambony, ny lalana mankany amin'ny rakitra dia mitahiry fampahalalana momba ny karazana, skema ary anaran'ilay zavatra. Ity fomba fiasa ity dia manamora ny fandehanana amin'ny famerenan'ny dump sy ny kaody fanovana ao amin'ny angon-drakitra.
Ahoana no hanaraha-maso ny fiovana ao amin'ny rafitry ny angon-drakitra taorian'ny nitahiry fanariam-pako
Amin'ny alΓ lan'ny fitehirizana fanariam-pamokarana amin'izao fotoana izao ao amin'ny VCS, dia mahazo fahafahana hanamarina raha nisy fiovana natao tamin'ny rafitry ny angona taorian'ny namoronana ny fanariam-pako. Ao amin'ny tranomboky schema- keeper mba hamantarana ny fiovana ao amin'ny rafitry ny angon-drakitra dia misy asa omena verifyDump, izay mamerina vaovao momba ny fahasamihafana tsy misy fiantraikany.
Ny fomba hafa hanamarinana dia ny fiantsoana indray ny asa saveDump, mamaritra ny lahatahiry iray ihany, ary jereo ao amin'ny VCS raha misy fiovana. Satria ny zavatra rehetra avy amin'ny angon-drakitra dia voatahiry ao anaty rakitra misaraka, ny VCS dia tsy hampiseho afa-tsy zavatra niova.
Ny tena fatiantoka amin'ity fomba ity dia ny filΓ na overwrite ny rakitra mba hahitana ny fiovana.
Ahoana ny famindrana ny fanovana ao amin'ny rafitry ny angon-drakitra mankany amin'ny tontolo hafa tsy misy fifandirana sy rakitra fifindra-monina goavana
Ohatra, hamorona fomba fiasa voatahiry vaovao amin'ny schema public mamorona rakitra vaovao miaraka amin'ny fanitarana fotsiny .sql ao amin'ny lahatahiry public/functions, apetraho ao anatiny ny kaody loharanon'ny fomba fiasa voatahiry, ao anatin'izany ny sakana CREATE OR REPLACE FUNCTION, dia antsoy ny asa deployDump. Toy izany koa ny fanovana sy famafana fomba fiasa voatahiry. Noho izany, ny kaody dia miditra ao amin'ny VCS sy ny angon-drakitra amin'ny fotoana iray ihany.
Raha misy hadisoana miseho ao amin'ny kaody loharanon'ny fomba fiasa voatahiry, na ny tsy fitovian'ny anaran'ny rakitra sy ny fomba fiasa voatahiry, dia deployDump tsy hahomby, mampiseho lahatsoratra diso. Ny tsy fitovian'ny fomba fiasa voatahiry eo anelanelan'ny fanariam-pako sy ny angona ankehitriny dia tsy azo atao rehefa mampiasa deployDump.
Rehefa mamorona fomba fiasa voatahiry vaovao dia tsy ilaina ny mampiditra ny anaran-drakitra marina. Ampy ho an'ny rakitra ny fanitarana .sql. Taorian'ny antso deployDump ny lahatsoratra diso dia ahitana ny anarana marina, izay azo ampiasaina hanovana anarana ny rakitra.
deployDump mamela anao hanova ny mason'ny fiasa na karazana fiverenana tsy misy hetsika fanampiny, raha miaraka amin'ny fomba fanao mahazatra dia tsy maintsy
tanteraho aloha DROP FUNCTION, ary avy eo ihany CREATE OR REPLACE FUNCTION.
Indrisy anefa fa misy toe-javatra sasany izay deployDump tsy afaka mampihatra ho azy ny fanovana. Ohatra, raha esorina ny fiasan'ny trigger izay ampiasain'ny trigger iray farafahakeliny. Ny toe-javatra toy izany dia voavaha amin'ny tanana amin'ny fampiasana rakitra fifindra-monina.
Raha tompon'andraikitra amin'ny fifindran'ny fanovana amin'ny fomba voatahiry ianao schema- keeper, dia tsy maintsy ampiasaina ny rakitra fifindra-monina mba hamindrana fiovana hafa amin'ny rafitra. Ohatra, tranomboky tsara hiasa amin'ny fifindra-monina dia fotopampianarana/fifindra-monina.
Ny fifindra-monina dia tsy maintsy ampiharina alohan'ny fandefasana deployDump. Izany dia ahafahanao manao fanovana rehetra amin'ny rafitra ary mamaha ny toe-javatra misy olana mba hafindra tsy misy olana ny fanovana amin'ny fomba voatahiry.
Ny fiasana amin'ny fifindra-monina dia holazaina amin'ny antsipiriany kokoa ao amin'ny fizarana manaraka.
Ahoana ny fandrindrana ny fizotran'ny asa mifanitsy amin'ny tetikasa iray ataon'ny mpamorona maromaro
Ilaina ny mamorona script ho an'ny fanombohana tanteraka ny angon-drakitra, izay havoakan'ny mpamorona amin'ny milina fiasana, mitondra ny firafitry ny angona eo an-toerana mifanaraka amin'ny fanariam-pako voatahiry ao amin'ny VCS. Ny fomba tsotra indrindra dia ny fizarana ny fanombohana ny angona eo an-toerana ho dingana 3:
base.sql dia ny fiaingana eo an-tampon'ny fifindra-monina ampiharina sy tanterahina deployDump, izany dia base.sql + ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ + deployDump = Π°ΠΊΡΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΠ. Azonao atao ny mamorona rakitra toy izany amin'ny fampiasana ny utility pg_dump. NAMPIASAINA base.sql rehefa manomboka ny angon-drakitra hatrany am-boalohany.
Andao hiantso ny script ho an'ny fanombohana angona feno refresh.sh. Mety ho toy izao ny fizotran'ny asa:
Ny mpamorona dia manomboka amin'ny tontolo manodidina azy refresh.sh ary mahazo ny rafitra angon-drakitra ankehitriny
Ny mpamorona dia manomboka miasa amin'ny asa eo am-pelatanana, manova ny angon-drakitra eo an-toerana mba hanomezana ny filan'ny fiasa vaovao (ALTER TABLE ... ADD COLUMN sns)
Rehefa vita ny asa dia miantso ny asa ny developer saveDumphanao fanovana natao tamin'ny angon-drakitra ao amin'ny VCS
Famerenana ny developer refresh.sh, then verifyDumpizay mampiseho lisitr'ireo fanovana hampidirina ao amin'ny fifindra-monina
Ny mpandrindra dia mamindra ny fanovana rafitra rehetra amin'ny rakitra fifindra-monina, mandeha indray refresh.sh ΠΈ verifyDump, ary, raha natambatra tsara ny fifindra-monina, verifyDump dia tsy hampiseho fahasamihafana eo amin'ny angon-drakitra eo an-toerana sy ny fanariam-pako voatahiry
Ny dingana voalaza etsy ambony dia mifanaraka amin'ny fitsipiky ny gitflow. Ny sampana tsirairay ao amin'ny VCS dia ahitana ny dikan-ny fanariam-pako, ary rehefa manambatra ny sampana dia hatambatra ireo fanariam-pako. Amin'ny ankabeazan'ny toe-javatra, tsy misy hetsika fanampiny tokony hatao aorian'ny fampifangaroana, fa raha misy fanovana natao tamin'ny sampana samihafa, ohatra, amin'ny latabatra iray, dia mety hisy fifandirana.
Andeha isika handinika toe-javatra misy fifandirana amin'ny fampiasana ohatra iray: misy sampana hampivelarana, izay misy sampany roa: endri-javatra1 ΠΈ endri-javatra2, izay tsy misy fifanoherana amin'ny hampivelarana, fa misy fifandirana. Ny asa dia ny manambatra ny sampana roa hampivelarana. Amin'ity tranga ity, soso-kevitra ny hanambatra ny iray amin'ireo sampana voalohany hampivelaranaary avy eo mitambatra hampivelarana mankany amin'ny sampana sisa, mamaha ny fifandirana ao amin'ny sampana sisa, ary avy eo manambatra ny sampana farany hampivelarana. Mandritra ny dingana famahana ny fifandirana dia mety tsy maintsy amboarinao ny rakitra fifindra-monina ao amin'ny sampana farany mba hifanaraka amin'ny fanariam-pako farany, izay ahitana ny vokatry ny fitambarana.
Ahoana ny fametrahana soa aman-tsara fiovana bebe kokoa amin'ny firafitry ny angon-drakitra amin'ny tontolo famokarana
Noho ny fisian'ny fanariam-pako ny rafitra angon-drakitra amin'izao fotoana izao ao amin'ny VCS, dia azo atao ny manamarina ny angon-drakitra famokarana ho an'ny fanarahana marina ny rafitra ilaina. Izany dia miantoka fa ny fanovana rehetra nokasain'ny mpamorona dia nafindra soa aman-tsara tany amin'ny toby famokarana.
satria DDL ao amin'ny PostgreSQL dia transactional, soso-kevitra ny hanaraka ity baiko fandefasana manaraka ity, mba hahafahanao manatanteraka "tsy misy fanaintainana" raha sendra misy hadisoana tsy ampoizina. ROLLBACK:
Atombohy ny fifampiraharahana
Ataovy ny fifindra-monina rehetra amin'ny fifampiraharahana
Raha tsy vita ny fifampiraharahana dia tanteraho verifyDump. Raha tsy misy hadisoana dia mihazakazaka COMMIT. Raha misy hadisoana dia mihazakazaka ROLLBACK
Ireo dingana ireo dia azo ampidirina mora amin'ny fomba efa misy amin'ny fametrahana fampiharana, ao anatin'izany ny zero-downtime.
famaranana
Noho ireo fomba voalaza etsy ambony dia azo atao ny manindry ny fampisehoana ambony indrindra amin'ny tetikasa "PHP + PostgreSQL", raha manao sorona kely ny fampivoarana raha oharina amin'ny fampiharana ny lojikan'ny orinasa rehetra ao amin'ny fehezan-dalΓ na fampiharana. Ankoatra izany, ny fanodinana data amin'ny PL/pgSQL matetika dia toa mangarahara kokoa ary mitaky kaody kely kokoa noho ny fiasa mitovy voasoratra amin'ny PHP.