ืืืจืช ืืืืจ ืื ืืื ืืืฉืชืืฉ ืืืืืื ืฉื ืกืคืจืื
ืืืืืข ืืืืืจ ืื ืืืื ืฉืืืืฉื, ืงืืื ืื ืืืคืชืืื ืฉืจืืฆืื ืืืคืืง ืืช ืืืจื ืืืืืืืช PostgreSQL, ืื ืืชืืืืืื ืขื ืืขืืืช ืืฉืืืจื ืขื ืืืืืืื ืืขืกืงื ืืืืฆื ืืืกื ืื ืชืื ืื.
ืืืืจ ืื ืื ืืชืืจ ืืช ืืืชืจืื ืืช ืื ืืืกืจืื ืืช ืฉื ืืืกืื ืืืืืื ืขืกืงื ืืืกื ื ืชืื ืื. ืืื ืื ืืื ืฉืืืืืจื ืืืจ ื ืขืฉืชื ืขื ืืื ืืงืืจื.
ืืฉืืืืช ืืืืืช ืืืฉืงืื:
- ืืืืื ืฆืืจื ืืฉ ืืืืกื dump ืืื ื ืฉื ืืกื ื ืชืื ืื ืืืขืจืืช ืืงืจืช ืืจืกืืืช (ืืืื VCS)
- ืืืฆื ืืขืงืื ืืืจ ืฉืื ืืืื ืืืื ื ืืกื ืื ืชืื ืื ืืืืจ ืฉืืืจืช dump
- ืืืฆื ืืืขืืืจ ืฉืื ืืืื ืืืื ื ืืกื ืื ืชืื ืื ืืกืืืืืช ืืืจืืช ืืื ืืชื ืืฉืืืืช ืืงืืฆื ืืืืจื ืขื ืงืืื
- ืืืฆื ืืืจืื ืชืืืื ืฉื ืขืืืื ืืงืืืื ืขื ืคืจืืืงื ืขื ืืื ืืกืคืจ ืืคืชืืื
- ืืืฆื ืืคืจืืก ืืืืื ืฉืื ืืืื ื ืืกืคืื ืืืื ื ืืกื ืื ืชืื ืื ืืกืืืืช ืืืฆืืจ
SchemaKeeper ืืืืขื ืืขืืืื ืขื ื ืืืื ืืืืืกื ืื ืฉื ืืชืื ืืฉืคื
PL/pgSQL . ืืืืงืืช ืขื ืฉืคืืช ืืืจืืช ืื ืืืฆืขื, ืื ืืืชืื ืฉืืฉืืืืฉ ืื ืืืื ืืขืื ืื ืื ืืืื ืืคืฉืจื.
ืืืฆื ืืืืกื dump ืฉื ืืื ื ืืกื ื ืชืื ืื ื-VCS
ืืกืคืจืืื saveDump
, ืฉืฉืืืจ ืืช ืืืื ื ืฉื ืื ืืืืืืืงืืื ืืืกื ืื ืชืื ืื ืืงืืืฆื ืืงืกื ื ืคืจืืื. ืืคืื ืืื ืกืคืจืืื ืืืืืื ืืช ืืื ื ืืกื ืื ืชืื ืื, ืืืืืืงืช ืืงืืฆืื ืืงืืืฆืื ืฉื ืืชื ืืืืกืืฃ ืืงืืืช ื-VCS.
ืืืื ื ืกืชืื ืขื ืืืจืช ืืืืืืงืืื ืืืกื ื ืชืื ืื ืืงืืฆืื ืืืืฆืขืืช ืืกืคืจ ืืืืืืืช:
ืกืื ืืืืืืงื
ืขืจืืชื
ืฉื
ื ืชืื ืืืกื ืืงืืืฅ
ืฉืืืื
ืฆืืืืจื
ืืฉืืื ืืช
./public/tables/accounts.txt
ืืืื ืืืืืกื
ืฆืืืืจื
aut (hash bigint)
./public/functions/auth(int8).sql
ืืืื
ืืืื ื
ืชืขืจืืคื
./booking/views/tariffs.txt
ืชืืื ืืงืืฆืื ืืื ืืืฆืื ืืงืกืืืืื ืฉื ืืืื ื ืฉื ืืืืืืงื ืืกื ื ืชืื ืื ืกืคืฆืืคื. ืืืืืื, ืขืืืจ ืคืจืืฆืืืจืืช ืืืืืกื ืืช, ืชืืื ืืงืืืฅ ืืืื ืืืืืจื ืืืืื ืฉื ืืคืจืืฆืืืจื ืืืืืืกื ืช, ืืื ืืืืกืืื CREATE OR REPLACE FUNCTION
.
ืืคื ืฉื ืืชื ืืจืืืช ืืืืืื ืืืขืื, ืื ืชืื ืืงืืืฅ ืืืืกื ืืืืข ืขื ืกืื, ืกืืืื ืืฉื ืืืืืืืงื. ืืืฉื ืื ืืงืื ืขื ืื ืืืื ื-dump ืืืกืงืืจืช ืืงืื ืฉื ืฉืื ืืืื ืืืกื ืื ืชืื ืื.
ืืืจืื
.sql
ืขืืืจ ืงืืฆืื ืขื ืงืื ืืงืืจ ืคืจืืฆืืืจื ืืืืืกื, ืื ื ืืืจ ืื ืฉื-IDE ืืกืคืง ืืืืืืืืช ืืืื ืืืื ืืจืืงืฆืื ืขื ืืกื ืื ืชืื ืื ืืืฉืจ ืืงืืืฅ ื ืคืชื.
ืืืฆื ืืขืงืื ืืืจ ืฉืื ืืืื ืืืื ื ืืกื ืื ืชืื ืื ืืืืจ ืฉืืืจืช dump
ืขื ืืื ืฉืืืจืช dump ืฉื ืืื ื ืืกื ืื ืชืื ืื ืื ืืืื ื-VCS, ืื ื ืืงืืืื ืืช ืืืืืื ืืช ืืืืืง ืืื ืืืฆืขื ืฉืื ืืืื ืืืื ื ืืกื ืื ืชืื ืื ืืืืจ ืืฆืืจืช ื-dump. ืืกืคืจืืื verifyDump
, ืืืืืืจ ืืืืข ืขื ืืืืืืื ืืื ืชืืคืขืืช ืืืืื.
ืืจื ืืืืคืืช ืืืืืง ืืื ืืงืจืื ืืคืื ืงืฆืื ืฉืื saveDump
, ืฆืืื ืืืชื ืกืคืจืืื, ืืืืืง ื-VCS ืื ืืฉ ืฉืื ืืืื. ืืืืืื ืฉืื ืืืืืืืงืืื ืืืกื ืื ืชืื ืื ื ืฉืืจืื ืืงืืฆืื ื ืคืจืืื, VCS ืืฆืื ืจืง ืืืืืืงืืื ืฉืืฉืชื ื.
ืืืืกืจืื ืืขืืงืจื ืืฉืืื ืื ืืื ืืฆืืจื ืืืืืืฃ ืงืืฆืื ืขื ืื ืช ืืจืืืช ืืช ืืฉืื ืืืื.
ืืืฆื ืืืขืืืจ ืฉืื ืืืื ืืืื ื ืืกื ืื ืชืื ืื ืืกืืืืืช ืืืจืืช ืืื ืืชื ืืฉืืืืช ืืงืืฆื ืืืืจื ืขื ืงืืื
ืืืืืช ืืคืื ืงืฆืื deployDump
ื ืืชื ืืขืจืื ืืช ืงืื ืืืงืืจ ืฉื ื ืืืื ืืืืืกื ืื ืืืืืง ืืืืชื ืืืคื ืืื ืงืื ืืืงืืจ ืฉื ืืืืฉืื ืืจืืื. ื ืืชื ืืืืกืืฃ/ืืืืืง ืฉืืจืืช ืืืฉืืช ืืงืื ืคืจืืฆืืืจื ืืืืืกื ืืืืืืฃ ืืื ืฉืื ืืืื ืืืงืจืช ืืจืกืืืช, ืื ืืืฆืืจ/ืืืืืง ืคืจืืฆืืืจืืช ืืืืืกื ืืช ืขื ืืื ืืฆืืจื/ืืืืงื ืฉื ืืงืืฆืื ืืืชืืืืื ืืกืคืจืืืช ื-dump.
ืืืืืื, ืืื ืืืฆืืจ ืคืจืืฆืืืจื ืืืืืกื ืช ืืืฉื ืืกืืืื public
ืคืฉืื ืฆืืจ ืงืืืฅ ืืืฉ ืขื ืืกืืืืช .sql
ืืกืคืจืืื public/functions
, ืืฆื ืื ืืช ืงืื ืืืงืืจ ืฉื ืืคืจืืฆืืืจื ืืืืืืกื ืช, ืืืื ืืืืืง CREATE OR REPLACE FUNCTION
, ืืื ืงืจื ืืคืื ืงืฆืื deployDump
. ืฉืื ืื ืืืืืงื ืฉื ืืืื ืืืืืกื ืืชืจืืฉืื ืืืืชื ืืืคื. ืืคืืื, ืืงืื ื ืื ืก ืื ื-VCS ืืื ืืืกื ืื ืชืื ืื ืื-ืืื ืืช.
ืื ืืืคืืขื ืฉืืืื ืืงืื ืืืงืืจ ืฉื ืคืจืืฆืืืจื ืืืืืกื ืช ืืืฉืื, ืื ืื ืืชืืื ืืื ืฉืืืช ืืงืืืฅ ืืืคืจืืฆืืืจื ืืืืืืกื ืช, ืื deployDump
ืืืืฉื, ืืฆืื ืืงืกื ืฉืืืื. ืื ืืชืืื ืฉื ื ืืืื ืืืืืกื ืื ืืื ื-dump ืืืกื ืื ืชืื ืื ืื ืืืื ืืืชื ืืคืฉืจื ืืขืช ืืฉืืืืฉ deployDump
.
ืืขืช ืืฆืืจืช ืืืื ืืืืืกื ืืืฉ, ืืื ืฆืืจื ืืืืื ืืื ืืช ืืช ืฉื ืืงืืืฅ ืื ืืื. ืืกืคืืง ืฉืืงืืืฅ ืชืืื ืืกืืืืช
.sql
. ืืืจื ืืฉืืืdeployDump
ืืงืกื ืืฉืืืื ืืืื ืืช ืืฉื ืื ืืื, ืฉืื ื ืืชื ืืืฉืชืืฉ ืืื ืืฉื ืืช ืืช ืฉื ืืงืืืฅ.
deployDump
ืืืคืฉืจ ืื ืืฉื ืืช ืืช ืืคืจืืืจืื ืฉื ืคืื ืงืฆืื ืื ืกืื ืืืืจื ืืื ืคืขืืืืช ื ืืกืคืืช, ืืขืื ืฉืืืืฉื ืืงืืืกืืช ืชืฆืืจื
ืืืฆืข ืชืืืื DROP FUNCTION
, ืืจืง ืื CREATE OR REPLACE FUNCTION
.
ืืืจืื ืืฆืขืจ, ืืฉื ื ืืื ืืฆืืื ืฉืืื deployDump
ืื ื ืืชื ืืืืื ืฉืื ืืืื ืืืืคื ืืืืืืื. ืืืืืื, ืื ืชืืกืจ ืคืื ืงืฆืืืช ืืจืืืจ ืืืฉืืฉืช ืืคืืืช ืืจืืืจ ืืื. ืืฆืืื ืืืื ื ืคืชืจืื ืืืืคื ืืื ื ืืืืฆืขืืช ืงืืืฆื ืืืืจื.
ืื ืืชื ืืืจืื ืืืขืืจื ืฉื ืฉืื ืืืื ืื ืืืื ืืืืืกื ืื
ืืฉ ืืืืื ืืขืืจืืช ืืคื ื ืืืฉืงื deployDump
. ืื ืืืคืฉืจ ืื ืืืฆืข ืืช ืื ืืฉืื ืืืื ืืืื ื ืืืคืชืืจ ืืฆืืื ืืขืืืชืืื ืื ืฉืฉืื ืืืื ืื ืืืื ืืืืืืกื ืื ืืืขืืจื ืืืืจ ืืื ืืื ืืขืืืช.
ืืขืืืื ืขื ืืขืืจืืช ืชืชืืืจ ืืคืืจืื ืจื ืืืชืจ ืืกืขืืคืื ืืืืื.
ืืืฆื ืืืจืื ืชืืืื ืฉื ืขืืืื ืืงืืืื ืขื ืคืจืืืงื ืขื ืืื ืืกืคืจ ืืคืชืืื
ืืฉ ืฆืืจื ืืืฆืืจ ืกืงืจืืคื ืืืชืืื ืืืื ืฉื ืืกื ืื ืชืื ืื, ืฉืืืฉืง ืขื ืืื ืืืคืชื ืืืืื ืช ืืขืืืื ืฉืื, ืืืืื ืืช ืืื ื ืืกื ืื ืชืื ืื ืืืงืืื ืืืชืื ื-dump ืฉื ืฉืืจ ื-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
ืื ืืฆืื ืืืืืื ืืื ืืกื ืื ืชืื ืื ืืืงืืื ื-dump ืฉื ืฉืืจ
ืืชืืืื ืืืชืืืจ ืืขืื ืชืืื ืืขืงืจืื ืืช gitflow. ืื ืกื ืืฃ ื-VCS ืืืื ืืจืกื ืืฉืื ืฉื ืืืืืื, ืืืืืืื ืกื ืืคืื, ืืืืืืืช ืืืืืื. ืืจืื ืืืงืจืื ืืื ืฆืืจื ืืืฆืข ืคืขืืื ื ืืกืคืช ืืืืจ ืืืืื, ืื ืื ืืืฆืขื ืฉืื ืืืื ืืกื ืืคืื ืฉืื ืื, ืืืฉื, ืืืืชื ืืืื, ืขืืื ืืืืืืฆืจ ืขืืืืช.
ืืืื ื ืืื ืืฆื ืงืื ืคืืืงื ืืืืฆืขืืช ืืืืื: ืืฉ ืกื ืืฃ ืืคืชื, ืฉืืื ื ืืกืชืขืคืื ืฉื ื ืกื ืืคืื: ืชืืื ื 1 ะธ ืชืืื ื 2, ืฉืืื ืืื ืกืชืืจืืช ืืืชื ืืคืชื, ืืื ืืฉ ืงืื ืคืืืงืืื ืืื ืขื ืืฉื ื. ืืืฉืืื ืืื ืืืื ืืช ืฉื ื ืืกื ืืคืื ืืชืื ืืคืชื. ืืืงืจื ืื, ืืืืืฅ ืงืืื ืืืื ืืช ืืื ืืกื ืืคืื ืืชืื ืืคืชืืืืืืจ ืืื ืืืื ืืคืชื ืืขื ืฃ ืื ืืชืจ, ืคืชืจืื ืงืื ืคืืืงืืื ืืขื ืฃ ืื ืืชืจ, ืืื ืืืืื ืืขื ืฃ ืืืืจืื ืืชืื ืืคืชื. ืืืืื ืฉืื ืคืชืจืื ืืกืืกืืืื, ืืืชืื ืฉืืืื ืขืืื ืืชืงื ืืช ืงืืืฅ ืืืขืืจื ืืกื ืืฃ ืืืืจืื ืื ืฉืืชืืื ื-dump ืืกืืคื, ืืืืื ืืช ืชืืฆืืืช ืืืืืืืื.
ืืืฆื ืืคืจืืก ืืืืื ืฉืื ืืืื ื ืืกืคืื ืืืื ื ืืกื ืื ืชืื ืื ืืกืืืืช ืืืฆืืจ
ืืืืืช ืื ืืืืืช ืฉื dump ืฉื ืืื ื ืืกื ืื ืชืื ืื ืื ืืืื ื-VCS, ื ืืชื ืืืืืง ืืช ืืกื ืื ืชืื ืื ืืืืฆืืจ ืขื ืืชืืื ืืืืืงืช ืืืื ื ืื ืืจืฉ. ืื ืืืืื ืฉืื ืืฉืื ืืืื ืฉืืืืื ืืชืืืื ื ืืืคืชืืื ืืืขืืจื ืืืฆืืื ืืืกืืก ืืืืฆืืจ.
ืืื ROLLBACK
:
- ืืชืื ืขืกืงื
- ืืฆืข ืืช ืื ืืืืืจืืช ืืขืกืงื
- ืืืืชื ืขืกืงื, ืืฆืข
deployDump
- ืืืื ืืืฉืืื ืืช ืืขืกืงื, ืืฆืข
verifyDump
. ืื ืืื ืฉืืืืืช, ืืคืขืCOMMIT
. ืื ืืฉ ืฉืืืืืช, ืืคืขืROLLBACK
ื ืืชื ืืฉืื ืฉืืืื ืืื ืืงืืืช ืืืืฉืืช ืงืืืืืช ืืคืจืืกืช ืืืฉืืืื, ืืืื ืืคืก ืืื ืืฉืืชื.
ืืกืงื ื
ืืืืืช ืืฉืืืืช ืฉืชืืืจื ืืขืื, ื ืืชื ืืกืืื ืืืฆืืขืื ืืงืกืืืืืื ืืคืจืืืงืื "PHP + PostgreSQL", ืชืื ืืืชืืจ ืขื ื ืืืืช ืคืืชืื ืืืขืื ืืืกืืช ืืืืืขืช ืื ืืืืืืื ืืขืกืงื ืืงืื ืืืคืืืงืฆืื ืืจืืฉื. ืืชืจ ืขื ืื, ืขืืืื ื ืชืื ืื ื
ืืงืืจ: www.habr.com