ãã®èšäºã®ç®çã¯ãã©ã€ãã©ãªã®äŸã䜿çšããããšã§ãã
ãã®èšäºã®æ å ±ã¯ããŸããPostgreSQL ã®æ©èœãæ倧éã«æŽ»çšããããšèããŠãããã®ã®ãããŒã¿ããŒã¹ã«é 眮ãããããžãã¹ ããžãã¯ã®ç¶æã«åé¡ãæ±ããŠããéçºè ã«ãšã£ãŠåœ¹ç«ã¡ãŸãã
ãã®èšäºã§ã¯ãããžãã¹ ããžãã¯ãããŒã¿ããŒã¹ã«ä¿åããããšã®å©ç¹ãšæ¬ ç¹ã«ã€ããŠã¯èª¬æããŸããã éžæã¯èªè ã«ãã£ãŠãã§ã«è¡ãããŠãããã®ãšæ³å®ãããŸãã
次ã®è³ªåãæ€èšãããŸãã
- ããŒã¿ããŒã¹æ§é ãã³ãã¯ã©ã®ãããªåœ¢åŒã§ããŒãžã§ã³ç®¡çã·ã¹ãã (以äžãVCS ãšåŒã³ãŸã) ã«ä¿åãããã¹ãã§ãã?
- ãã³ããä¿åããåŸã«ããŒã¿ããŒã¹æ§é ã®å€æŽã远跡ããæ¹æ³
- 競åã巚倧ãªç§»è¡ãã¡ã€ã«ãçºçãããã«ãããŒã¿ããŒã¹æ§é ã®å€æŽãä»ã®ç°å¢ã«è»¢éããæ¹æ³
- è€æ°ã®éçºè ã«ãããããžã§ã¯ãã®äžŠè¡äœæ¥ã®ããã»ã¹ãæŽçããæ¹æ³
- ããŒã¿ããŒã¹æ§é ã®ãããªãå€æŽãå®çšŒåç°å¢ã«å®å
šã«ãããã€ããæ¹æ³
ã¹ããŒãããŒã㌠èšèªã§æžãããã¹ãã¢ã ããã·ãŒãžã£ãæäœããããã«èšèšãããŠããŸã
PL/pgSQL ã ä»ã®èšèªã§ã®ãã¹ãã¯è¡ãããŠããªããããå¹æãçºæ®ãããªãããŸãã¯äœ¿çšã§ããªãå¯èœæ§ããããŸãã
VCS ã«ããŒã¿ããŒã¹æ§é ãã³ããä¿åããæ¹æ³
å³æžé€š saveDump
ããã«ãããããŒã¿ããŒã¹ã®ãã¹ãŠã®ãªããžã§ã¯ãã®æ§é ãåå¥ã®ããã¹ã ãã¡ã€ã«ãšããŠä¿åãããŸãã åºåã¯ããŒã¿ããŒã¹æ§é ãå«ããã£ã¬ã¯ããªã§ãããVCS ã«ç°¡åã«è¿œå ã§ããã°ã«ãŒãåããããã¡ã€ã«ã«åå²ãããŸãã
ããã€ãã®äŸã䜿çšããŠããªããžã§ã¯ããããŒã¿ããŒã¹ãããã¡ã€ã«ã«å€æããæ¹æ³ãèŠãŠã¿ãŸãããã
ãªããžã§ã¯ãã¿ã€ã
ã¹ããŒã
åå
ãã¡ã€ã«ãžã®çžå¯Ÿãã¹
ããŒãã«
å
Œ
±
ã¢ã«ãŠã³ãã®èŠèŽè
ããŒã¿ãååŸãã
./public/tables/accounts.txt
ã¹ãã¢ãããã·ãŒãžã£
å
Œ
±
èªèšŒ(ããã·ã¥bigint)
./public/functions/auth(int8).sql
ã¯ããã«
äºçŽ
é¢çš
./booking/views/tariffs.txt
ãã¡ã€ã«ã®å
容ã¯ãç¹å®ã®ããŒã¿ããŒã¹ ãªããžã§ã¯ãã®æ§é ãããã¹ãã§è¡šçŸãããã®ã§ãã ããšãã°ãã¹ãã¢ã ããã·ãŒãžã£ã®å Žåããã¡ã€ã«ã®å
容ã¯ããããã¯ã§å§ãŸãã¹ãã¢ã ããã·ãŒãžã£ã®å®å
šãªå®çŸ©ã«ãªããŸãã CREATE OR REPLACE FUNCTION
.
äžã®è¡šãããããããã«ããã¡ã€ã«ãžã®ãã¹ã«ã¯ããªããžã§ã¯ãã®ã¿ã€ããã¹ããŒããååã«é¢ããæ å ±ãä¿åãããŸãã ãã®ã¢ãããŒãã«ãããããŒã¿ããŒã¹å ã®å€æŽã®ãã³ããšã³ãŒã ã¬ãã¥ãŒãç°¡åã«ããã²ãŒãã§ããããã«ãªããŸãã
æ¡åŒµ
.sql
ã¹ãã¢ã ããã·ãŒãžã£ ãœãŒã¹ ã³ãŒããå«ããã¡ã€ã«ã®å Žåããã¡ã€ã«ãéãããšãã« IDE ãããŒã¿ããŒã¹ãšå¯Ÿè©±ããããã®ããŒã«ãèªåçã«æäŸããããã«ããããéžæãããŠããŸãã
ãã³ããä¿åããåŸã«ããŒã¿ããŒã¹æ§é ã®å€æŽã远跡ããæ¹æ³
çŸåšã®ããŒã¿ããŒã¹æ§é ã®ãã³ãã VCS ã«ä¿åãããšããã³ãã®äœæåŸã«ããŒã¿ããŒã¹æ§é ã«å€æŽãå ãããããã©ããã確èªã§ããŸãã å³æžé€šå
verifyDump
ãå¯äœçšãªãã§éãã«é¢ããæ
å ±ãè¿ããŸãã
ãã§ãã¯ããå¥ã®æ¹æ³ã¯ãé¢æ°ãå床åŒã³åºãããšã§ã saveDump
ãåããã£ã¬ã¯ããªãæå®ããVCS ã§å€æŽããã§ãã¯ã€ã³ããŸãã ããŒã¿ããŒã¹ã®ãã¹ãŠã®ãªããžã§ã¯ãã¯å¥ã®ãã¡ã€ã«ã«ä¿åããããããVCS ã«ã¯å€æŽããããªããžã§ã¯ãã®ã¿ã衚瀺ãããŸãã
ãã®æ¹æ³ã®äž»ãªæ¬ ç¹ã¯ãå€æŽã確èªããããã«ãã¡ã€ã«ãäžæžãããå¿
èŠãããããšã§ãã
競åã巚倧ãªç§»è¡ãã¡ã€ã«ãçºçãããã«ãããŒã¿ããŒã¹æ§é ã®å€æŽãä»ã®ç°å¢ã«è»¢éããæ¹æ³
æ©èœã®ããã㧠deployDump
ã¹ãã¢ã ããã·ãŒãžã£ã®ãœãŒã¹ ã³ãŒãã¯ãéåžžã®ã¢ããªã±ãŒã·ã§ã³ã®ãœãŒã¹ ã³ãŒããšãŸã£ããåãæ¹æ³ã§ç·šéã§ããŸãã ã¹ãã¢ã ããã·ãŒãžã£ ã³ãŒãã«æ°ããè¡ãè¿œå /åé€ããŠãå€æŽãããã«ããŒãžã§ã³ç®¡çã«ããã·ã¥ãããããã³ã ãã£ã¬ã¯ããªå
ã®å¯Ÿå¿ãããã¡ã€ã«ãäœæ/åé€ããŠã¹ãã¢ã ããã·ãŒãžã£ãäœæ/åé€ãããã§ããŸãã
ããšãã°ãã¹ããŒãã«æ°ããã¹ãã¢ã ããã·ãŒãžã£ãäœæããã«ã¯ public
æ¡åŒµåãä»ããæ°ãããã¡ã€ã«ãäœæããã ãã§ã .sql
ãã£ã¬ã¯ããªå
㧠public/functions
ããããã¯ãå«ãã¹ãã¢ã ããã·ãŒãžã£ã®ãœãŒã¹ ã³ãŒãããã®äžã«é
眮ããŸãã CREATE OR REPLACE FUNCTION
ã次ã«é¢æ°ãåŒã³åºããŸã deployDump
ã ã¹ãã¢ã ããã·ãŒãžã£ã®å€æŽãšåé€ãåæ§ã«è¡ãããŸãã ãããã£ãŠãã³ãŒã㯠VCS ãšããŒã¿ããŒã¹ã®äž¡æ¹ã«åæã«å
¥åãããŸãã
ã¹ãã¢ã ããã·ãŒãžã£ã®ãœãŒã¹ ã³ãŒãã«ãšã©ãŒãçºçããå ŽåããŸãã¯ãã¡ã€ã«åãšã¹ãã¢ã ããã·ãŒãžã£ã®ååãäžèŽããªãå Žåã¯ã deployDump
ã¯å€±æãããšã©ãŒ ããã¹ãã衚瀺ãããŸãã ã䜿çšããå Žåããã³ããšçŸåšã®ããŒã¿ããŒã¹ã®éã§ã¹ãã¢ã ããã·ãŒãžã£ã®äžäžèŽã¯çºçããŸããã deployDump
.
æ°ããã¹ãã¢ã ããã·ãŒãžã£ãäœæããå Žåãæ£ãããã¡ã€ã«åãæåã§å ¥åããå¿ èŠã¯ãããŸããã ãã¡ã€ã«ã«ã¯æ¡åŒµåãããã°ååã§ã
.sql
ã é»è©±ã®åŸdeployDump
ãšã©ãŒ ããã¹ãã«ã¯æ£ããååãå«ãŸããŠããããã¡ã€ã«ã®ååãå€æŽããããã«äœ¿çšã§ããŸãã
deployDump
ããã䜿çšãããšãè¿œå ã®æäœãè¡ããã«é¢æ°ã®ãã©ã¡ãŒã¿ãŒãæ»ãå€ã®åãå€æŽã§ããŸãããåŸæ¥ã®ã¢ãããŒãã§ã¯æ¬¡ã®æäœãè¡ãå¿
èŠããããŸãã
æåã«å®è¡ãã DROP FUNCTION
ãããããã®æã ã CREATE OR REPLACE FUNCTION
.
æ®å¿µãªããã次ã®ãããªç¶æ³ãããã€ããããŸãã deployDump
å€æŽãèªåçã«é©çšã§ããŸããã ããšãã°ãå°ãªããšã XNUMX ã€ã®ããªã¬ãŒã§äœ¿çšãããŠããããªã¬ãŒé¢æ°ãåé€ãããå Žåã§ãã ãã®ãããªç¶æ³ã¯ã移è¡ãã¡ã€ã«ã䜿çšããŠæåã§è§£æ±ºããŸãã
ã¹ãã¢ã ããã·ãŒãžã£ãžã®å€æŽã®ç§»è¡ãæ
åœããŠããå Žå
移è¡ã¯èµ·ååã«é©çšããå¿
èŠããã deployDump
ã ããã«ãããæ§é ã«ãã¹ãŠã®å€æŽãå ããŠåé¡ã®ããç¶æ³ã解決ã§ãããããã¹ãã¢ã ããã·ãŒãžã£ã®å€æŽã¯ãã®åŸåé¡ãªã転éãããŸãã
移è¡ã®æäœã«ã€ããŠã¯ã次ã®ã»ã¯ã·ã§ã³ã§è©³ãã説æããŸãã
è€æ°ã®éçºè ã«ãããããžã§ã¯ãã®äžŠè¡äœæ¥ã®ããã»ã¹ãæŽçããæ¹æ³
ããŒã¿ããŒã¹ãå®å šã«åæåããããã®ã¹ã¯ãªãããäœæããå¿ èŠããããŸãããã®ã¹ã¯ãªããã¯éçºè ãäœæ¥ãã·ã³äžã§èµ·åããããŒã«ã« ããŒã¿ããŒã¹ã®æ§é ã VCS ã«ä¿åããããã³ãã«æºæ ãããŸãã æãç°¡åãªæ¹æ³ã¯ãããŒã«ã« ããŒã¿ããŒã¹ã®åæåã 3 ã€ã®ã¹ãããã«åå²ããããšã§ãã
- ãšããåºæ¬æ§é ãæã€ãã¡ã€ã«ãã€ã³ããŒãããŸãã
base.sql
- 移è¡ã®é©çš
- ææŠ
deployDump
base.sql
移è¡ãé©çšããå®è¡ãããéå§ç¹ã§ãdeployDump
ã€ãŸããbase.sql + ЌОгÑаÑОО + deployDump = акÑÑалÑÐœÐ°Ñ ÑÑÑÑкÑÑÑа ÐÐ
ã ãŠãŒãã£ãªãã£ã䜿çšããŠãã®ãããªãã¡ã€ã«ãäœæã§ããŸãpg_dump
ã 䜿çšæžã¿base.sql
ããŒã¿ããŒã¹ãæåããåæåããå Žåã®ã¿ã
ããŒã¿ããŒã¹ãå®å
šã«åæåããã¹ã¯ãªãããåŒã³åºããŠã¿ãŸããã refresh.sh
ã ã¯ãŒã¯ãããŒã¯æ¬¡ã®ããã«ãªããŸãã
- éçºè
ãèªåã®ç°å¢ã§èµ·åãã
refresh.sh
çŸåšã®ããŒã¿ããŒã¹æ§é ãååŸããŸã - éçºè
ã¯åœé¢ã®ã¿ã¹ã¯ã®äœæ¥ãéå§ããæ°ããæ©èœã®ããŒãºãæºããããã«ããŒã«ã« ããŒã¿ããŒã¹ãå€æŽããŸã (
ALTER TABLE ... ADD COLUMN
çïŒ - ã¿ã¹ã¯ãå®äºããããéçºè
ã¯é¢æ°ãåŒã³åºããŸãã
saveDump
VCS ã®ããŒã¿ããŒã¹ã«å ããããå€æŽãã³ãããããã«ã¯ - éçºè
ã®åèµ·å
refresh.sh
ããã®åŸverifyDump
移è¡ã«å«ããå€æŽã®ãªã¹ãã衚瀺ãããŸãã - éçºè
ã¯ãã¹ãŠã®æ§é å€æŽã移è¡ãã¡ã€ã«ã«è»¢éããå床å®è¡ããŸãã
refresh.sh
ОverifyDump
ãããŠã移è¡ãæ£ããã³ã³ãã€ã«ãããŠããã°ãverifyDump
ããŒã«ã«ããŒã¿ããŒã¹ãšä¿åããããã³ãã®éã«éãã¯è¡šç€ºãããŸãã
äžã§èª¬æããããã»ã¹ã¯ãgitflow ã®ååãšäºææ§ããããŸãã VCS å ã®åãã©ã³ãã«ã¯ç¬èªã®ããŒãžã§ã³ã®ãã³ããå«ãŸããŠããããã©ã³ããããŒãžãããšãã³ããããŒãžãããŸãã ã»ãšãã©ã®å ŽåãããŒãžåŸã«è¿œå ã®ã¢ã¯ã·ã§ã³ãå®è¡ããå¿ èŠã¯ãããŸããããç°ãªããã©ã³ã㧠(ããšãã°ãåãããŒãã«ã«å¯ŸããŠ) å€æŽãè¡ãããå Žåã競åãçºçããå¯èœæ§ããããŸãã
äŸã䜿çšããŠç«¶åç¶æ³ãèããŠã¿ãŸããããåå²ãããå Žå éçºããããããã XNUMX ã€ã®æãåå²ããŸãã feature1 О feature2ãšççŸã¯ãããŸãã éçºããããããããäºãã«è¡çªããŸãã ã¿ã¹ã¯ã¯ãäž¡æ¹ã®ãã©ã³ããããŒãžããããšã§ãã éçºããã ãã®å Žåãæåã«ãã©ã³ãã® XNUMX ã€ãããŒãžããããšããå§ãããŸãã éçºãããããŠããŒãžããŸã éçºãã æ®ãã®ãã©ã³ãã«æ¥ç¶ããæ®ãã®ãã©ã³ãã®ç«¶åã解決ããŠãããæåŸã®ãã©ã³ããããŒãžããŸãã éçºããã 競å解決ãã§ãŒãºã§ã¯ãããŒãžã®çµæãå«ãæçµãã³ããšäžèŽããããã«ãæåŸã®ãã©ã³ãã®ç§»è¡ãã¡ã€ã«ãä¿®æ£ããå¿ èŠãããå ŽåããããŸãã
ããŒã¿ããŒã¹æ§é ã®ãããªãå€æŽãå®çšŒåç°å¢ã«å®å šã«ãããã€ããæ¹æ³
VCS ã«ã¯çŸåšã®ããŒã¿ããŒã¹æ§é ã®ãã³ããååšãããããéçšããŒã¿ããŒã¹ãå¿ èŠãªæ§é ã«æ£ç¢ºã«æºæ ããŠãããã©ããããã§ãã¯ããããšãå¯èœã«ãªããŸãã ããã«ãããéçºè ãæå³ãããã¹ãŠã®å€æŽãå®çšŒåããŒã¹ã«æ£åžžã«è»¢éãããããšãä¿èšŒãããŸãã
ãšã㊠ROLLBACK
:
- ãã©ã³ã¶ã¯ã·ã§ã³ã®éå§
- ãã¹ãŠã®ç§»è¡ããã©ã³ã¶ã¯ã·ã§ã³ã§å®è¡ãã
- åããã©ã³ã¶ã¯ã·ã§ã³å
ã§å®è¡ããŸãã
deployDump
- ãã©ã³ã¶ã¯ã·ã§ã³ãå®äºããã«å®è¡ãã
verifyDump
ã ãšã©ãŒããªããã°å®è¡ããŸãCOMMIT
ã ãšã©ãŒãããå Žåã¯å®è¡ããŸãROLLBACK
ãããã®æé ã¯ããŒãããŠã³ã¿ã€ã ãå«ããã¢ããªã±ãŒã·ã§ã³å±éãžã®æ¢åã®ã¢ãããŒãã«ç°¡åã«çµ±åã§ããŸãã
ãŸãšã
äžèšã®æ¹æ³ã«ããããã¹ãŠã®ããžãã¹ ããžãã¯ãã¡ã€ã³ ã¢ããªã±ãŒã·ã§ã³ ã³ãŒãã«å®è£
ããå Žåãšæ¯èŒããŠãéçºã®å©äŸ¿æ§ãæ¯èŒçã»ãšãã©ç ç²ã«ããã«ããPHP + PostgreSQLããããžã§ã¯ãã®ããã©ãŒãã³ã¹ãæ倧éã«åŒãåºãããšãã§ããŸãã ãŸããããŒã¿åŠçã«ãããŠã¯ã
åºæïŒ habr.com