αααααααααα’ααααααααααΊααΎααααΈααααΎα§ααΆα ααααααααααΆααααα½αα
ααΆααααΌαααααααΆαααΈα’ααααααααααΉαααΆααααααααααααααΆααα’αααα’αα·αααααααααα αααααααΎααααααααΆα PostgreSQL α±ααααΆαα αααΎααααα»α ααα»ααααααααΌαααααααα»αααΉααααα αΆαααα»αααΆααααααααΆαααααα·ααααΆα’αΆααΈααααααααααΆαααααα»αααΌαααααΆααα·ααααααα
α’ααααααααααΉααα·ααα·αααααΆα’αααΈαα»ααααααααα· α¬αα»ααα·ααααα·ααααΆααααααΆαα»ααααααα·ααααΆα’αΆααΈααααααα αααα»αααΌαααααΆααα·ααααααααα ααΆααααΌαααΆαααααααααΆαααααΎαααααΌαααΆαααααΎα‘αΎααααα’αααα’αΆααα½α α αΎαα
αααα½αααΆααααααααΉαααααΌαααΆααα·α αΆαααΆα
- αααα»ααααααααααααΆαααααΆααααα αααα ααΆααααααααααΌαααααΆααα·αααααααα½αααααααΌαααΆααααααΆαα»ααα αααα»ααααααααααααα½ααα·αα·ααααααα (ααα αααα α ααΆ VCS)
- ααααααΆαααΆαααΆαααααΆααααααΌααα αααα»ααα ααΆααααααααααΌαααααΆααα·αααααααααααΆααααΈαααααΆαα»αααααααα αΆααααααΆα
- αααααααααααΆαααααΆααααααΌααα αααα»ααα ααΆααααααααααΌαααααΆααα·αααααααα ααα·ααααΆααααααααααααααααΆααααααα αα·αα―αααΆαααΆαααααΎα αααΆααααα»ααααα
- αααααααα αααααΎαααΆαααααΆαααΆααααΆαααΆα‘ααααΎαααααααααα’αααα’αα·ααααααααΆα αααΎαα
- ααααααΆαααααααΆαααΆαααααΆααααααΌαααααααααααα
αααα»ααα
ααΆααααααααααΌαααααΆααα·ααααααααααα»ααααα·ααΆααα
ααΉαααα·ααΆααΆαααα·ααααα
SchemaKeeper αα ααΆα‘αΎααααααΆααααααΎααΆαααΆαα½αααΈαα·αα·ααΈαααααΆααααααΆαα»αααααααααααΆααΆααΆ
PL/pgSQL . ααΆαααααΎαααααααΆαα½αααΆααΆαααααααααα·αααααΌαααΆαα’αα»αααααα ααΌα ααααααΆαααααΎααααΆαααααα ααααΆαα·αααΆαααααα·αααααΆα α¬αααα ααααΆαα·αα’αΆα αα αα½α αααααα
αααααααααΆαα»αααΆααααα αααα ααΆααααααααααΌαααααΆααα·αααααααα αααα»α VCS
αααααΆααα saveDump
ααααααααΆαα»ααα
ααΆααααααααααααααα»ααΆααα’ααααΈααΌαααααΆααα·ααααααααΆα―αααΆαα’αααααααΆα
ααααα‘ααα ααααααααΊααΆαααααααΆααα
ααΆααααααααααΌαααααΆααα·αααααα αααα
ααααΆαααα»α α―αααΆααααα’αΆα
ααααααααΆααααΆαααΆααααα½ααα
VCS α
αααααΎαααΆααααααααααααα»ααΈααΌαααααΆααα·αααααααα ααΆα―αααΆααααααααΎα§ααΆα αααααΆα αααΎαα
ααααααααααα»
ααααααααα
α
αααααΎα
ααααΌαααΆαααααα
α―αααΆα
ααΆααΆα
ααΆααΆααα
ααααΈ
./public/tables/accounts.txt
ααΈαα·αα·ααΈαααααΆαα»α
ααΆααΆααα
auth(hash 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
αα·αα’αΆα
α’αα»ααααααΆαααααΆααααααΌααααααααααααααααα·ααΆαααα α§ααΆα ααα ααααα·αααΎαα»αααΆαααααααααααΎααααααΆαα αα
ααΆααααααα½αααααΌαααΆαααα
ααα ααααΆαααΆαααααααααααΌαααΆααααααααΆαααααααααααααΎα―αααΆαααααΎα
αααΆααααα»αα
ααααα·αααΎα’αααααα½ααα»αααααΌαα
ααααααΆααααααααΆαααααΆααααααΌααα
ααΈαα·αα·ααΈαααααΆααααααΆαα»α
ααΆαααααΎα
αααΆααααα»αααααΌαααα’αα»αααααα»ααααα
αΆααααααΎα 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 ααΉαααΆααααααααααααα½αααααααααα αΆααααααΆα α αΎααα ααααααα αΌαααααΆααΆααΆ ααααααα αΆααααααΆαααΉαααααΌαααΆααααα αΌαα αΌαααααΆα αααα»αααααΈααΆαα αααΎα αα·αα αΆαααΆα αααααΎαααααααΆααααααααα αααααΆααααΈααΆααα½ααααα αΌαααααΆ ααα»ααααααααα·αααΎααΆαααααΆααααααΌαααααΌαααΆαααααΎα‘αΎααα αααα»αααΆααΆααααααααααΆ α§ααΆα αααα ααααααΆααΆααααα½α ααααααα’αΆα ααΉαααΎαα‘αΎαα
α αΌαααΎααα·α αΆαααΆα’αααΈααααΆαααΆααααααααααααααΎα§ααΆα αααα ααΆαααΆααΆαα½αα α’αα·αααααααααααΆααΆααΈαααΆααΆα feature1 α ΠΈ feature2 αααααα·αααΆαααααααααΆαα½α α’αα·ααααααααα»ααααβααΆαβααααααβααΉαβααααΆα ααΆααα·α αα ααΊααΎααααΈαααα αΌαααΆααΆααΆααααΈαα αΌααα αααα»α α’αα·αααααα. α ααααααααΈααα ααΆααααΌαααΆααααααα’αα»ααΆαααα±αααααα αΌαααΆααΆαα½αα αΌααα αααα»α α’αα·ααααααα αΎααααααΆαααααααα αΌαααααΆ α’αα·αααααα αα ααΆααΆααααα αααααα αααααααΆααααααααα αααα»αααΆααΆααααα ααα α αΎααααααΆαααααααα αΌαααΆααΆα α»αααααααα αααα»α α’αα·αααααα. αααα»αααα‘α»αααααΆααααΆααααααααΆααααααα α’ααααααα ααααΆααααΌααα½ααα»αα―αααΆαα αααΆααααα»ααα ααΆααΆα α»αααααα ααΎααααΈα±ααααΆααααΌαααααΆααΉαααΆααααα ααα α»αααααα ααααα½ααααα αΌαααααααααααΆααα½ααααα αΌαααααΆα
ααααααΆαααααααΆαααΆαααααΆααααααΌαααααααααααα αααα»ααα ααΆααααααααααΌαααααΆααα·ααααααααααα»ααααα·ααΆααα ααΉαααα·ααΆααΆαααα·ααααα
ααΌαα’ααα»αα ααααααααααΆαααααΆααααα αααααα ααΆααααααααααΌαααααΆααα·αααααααα αα α»αααααααα αααα»α VCS ααΆα’αΆα αα·αα·αααααΎαααΌαααααΆααα·ααααααααα·ααααααααααΆααααΆαα’αα»αααααΆαα αααΆααααΆααααΆααααΆαα½αααΉααα ααΆαααααααααααααααΌαααΆαα αααααΆααΆααΆααΆααααΆαααααΆααααααΌααααα’αααα’αα·ααααααααΆαααααααααΌαααΆαααααααα ααΌαααααΆαααα·ααααααααααααααα
α
αΆααααΆααααΈ ROLLBACK
:
- α αΆααααααΎαααααα·ααααα·ααΆα
- α’αα»ααααααΆαααααΎα αααΆααααα»αααΆααα’αααα αααα»αααααα·ααααα·ααΆααα½αα
- αα
αααα»αααααα·ααααα·ααΆαααΌα
ααααΆ, ααααα·ααααα·
deployDump
- ααααα·ααααα
ααααααα·ααααα·ααΆα ααααα·ααααα·
verifyDump
. ααααα·αααΎαα·αααΆαααα α»αααααΌαααααΎαααΆαCOMMIT
. ααααα·αααΎααΆαααα α»αααΌαααααΎαααΆαROLLBACK
ααα αΆαααΆαααααα’αΆα ααααΌαααΆααα½ααααα αΌααααΆαααΆααααα½ααα αααα»ααα·ααΈααΆααααααααααΆαααααΆαααααα»αααΆαααΆααα±ααααααΎααααΆαααααααα·ααΈ αα½αααΆααααΆαααααααααΆαααΌαααα
ααα ααααΈααααα·ααααΆα
ααΌαα’ααα»αα
αααααα·ααΈααΆααααααααααΆααα·αααααΆααΆαααΎ ααΆααΊα’αΆα
ααααΎαα
ααΆαααΎααααΈα
ααααΆα
αααΆαα’αα»ααααα’αα·ααααΆα
ααααΈαααααα "PHP + PostgreSQL" αααααααααααΆααααααααΆαααΆααααα½ααααα»αααΆαα’αα·αααααααα·α
αα½α
ααΎαααααααααα
ααΉαααΆαα’αα»αααααααααα·ααααΆα’αΆααΈαααααααΆααα’αααα
αααα»αααΌααααααα·ααΈααααΆααα ααΎαααΈααααα
αααααααΎαααΆααα·αααααααα
αααα»α
ααααα: www.habr.com