เบงเบดเบ—เบตเบเบฒเบ™เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบเบดเบ‡เบ•เบปเบงเป€เบญเบ‡เปƒเบ™เบ•เบตเบ™เป‚เบ”เบเปƒเบŠเป‰ Liquibase

เบšเปเปˆโ€‹เป€เบ„เบตเบโ€‹เป€เบเบตเบ”โ€‹เบ‚เบถเป‰เบ™โ€‹เบกเบฒโ€‹เบเปˆเบญเบ™โ€‹, เปเบฅเบฐโ€‹เบ™เบตเป‰โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ›โ€‹เบญเบตเบโ€‹เป€เบ—เบทเปˆเบญโ€‹เบซเบ™เบถเปˆเบ‡โ€‹!

เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ•เปเปˆเป„เบ›เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเปƒเบŠเป‰ Liquibase เบ•เบฑเป‰เบ‡เปเบ•เปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบšเบฑเบ™เบซเบฒเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”. เบเป‰เบญเบ™เบงเปˆเบฒเบกเบฑเบ™เบซเบฑเบ™เบญเบญเบ, เบšเปเปˆเปเบกเปˆเบ™เบชเบฐเบกเบฒเบŠเบดเบเบ—เบตเบกเบ‡เบฒเบ™เบซเบ™เบธเปˆเบกเบ—เบธเบเบ„เบปเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบˆเบฑเบ”เบเบญเบ‡เบ›เบฐเบŠเบธเบกเบžเบฒเบเปƒเบ™, เป€เบŠเบดเปˆเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบšเบปเบ”เบ„เบงเบฒเบก.

เบšเบปเบ”เบ„เบงเบฒเบกเบ›เบฐเบเบญเบšเบกเบตเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปเบฅเบฐเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบชเบฒเบก pitfalls เบ—เบตเปˆเบˆเบฐเปเบˆเป‰เบ‡เบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบปเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ Liquibase. เบญเบญเบเปเบšเบšเบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ Java เปƒเบ™เบฅเบฐเบ”เบฑเบš Junior เปเบฅเบฐ Middle; เบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™เบซเบผเบฒเบเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เปเบฅเบฐเบเบฒเบ™เป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เปเบฅเป‰เบงเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”.

เบงเบดเบ—เบตเบเบฒเบ™เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบเบดเบ‡เบ•เบปเบงเป€เบญเบ‡เปƒเบ™เบ•เบตเบ™เป‚เบ”เบเปƒเบŠเป‰ Liquibase

Liquibase เปเบฅเบฐ Flyway เป€เบ›เบฑเบ™เป€เบ—เบเป‚เบ™เป‚เบฅเบเบตเบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™เบ•เบปเป‰เบ™เบ•เปเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™เปƒเบ™เป‚เบฅเบ Java. เบญเบฑเบ™เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบšเปเปˆเป€เบชเบเบ„เปˆเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”, เปƒเบ™เบ—เบฒเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฑเบ™เบกเบฑเบเบˆเบฐเบ–เบทเบเป€เบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰, เป€เบŠเบดเปˆเบ‡เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆ Liquibase เป„เบ”เป‰เบ–เบทเบเป€เบฅเบทเบญเบเป€เบ›เบฑเบ™ hero เบ‚เบญเบ‡เบชเบดเปˆเบ‡เบžเบดเบก. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เปเบšเบšเบ—เบปเปˆเบงเป†เป„เบ›, เบ‚เบถเป‰เบ™เบเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เบเบฒเบ™เบเป‰เบฒเบเบ–เบดเปˆเบ™เบ–เบฒเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™เป€เบ›เบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เบšเบฑเบ‡เบ„เบฑเบšเป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบ—เบตเปˆเบญเปˆเบญเบ™เปเบญเบ‚เบญเบ‡เบฎเป‰เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™. เปƒเบ™เบเบธเบเบ‚เบญเบ‡เบ„เบปเบ™เบญเบฑเบšเป€เบ”เบ”: OOP, เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบญเบฐเบ—เบดเบšเบฒเบ schema เบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เปเบฅเบฐเบšเปเปˆเปเบ•เบฐเบกเบฑเบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡. เปเบ•เปˆเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เปเบกเปˆเบ™เบชเบฐเป€เบซเบกเบตเบงเปˆเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฅเบทเป‰เบญเบเป†. เบ•เบฒเบกเบ—เปเบฒเบกเบฐเบŠเบฒเบ”, เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบชเบฒเบกเบฒเบ”เป€เบˆเบฑเบšเบ›เบงเบ”เปเบฅเบฐเบšเปเปˆเบชเบฐเบšเบฒเบ.

เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบˆเบฐโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบฅเบปเบ‡โ€‹เป€เบฅเบดเบโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เบ‚เบญเบ‡โ€‹เป€เบ•เบฑเบโ€‹เป‚เบ™โ€‹เป‚เบฅโ€‹เบŠเบตโ€‹เปเบฅเบฐโ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบžเบตเปˆเบกโ€‹เบซเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบธเบ”โ€‹เบเบฑเบšโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹, เบกเบตโ€‹เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบ‚เบฝเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบซเบปเบงโ€‹เบ‚เปเป‰โ€‹เบ™เบตเป‰โ€‹:

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบตเบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบ”เบตเป€เบฅเบตเบ”เบเปˆเบฝเบงเบเบฑเบšเบซเบปเบงเบ‚เปเป‰เบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”:

เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ

เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเปเบฅเบฐเบ„เปเบฒเบ„เบดเบ”เป€เบซเบฑเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เป€เบŠเบดเปˆเบ‡เป€เบเบตเบ”เบกเบฒเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป€เบซเบทเปˆเบญเบญเบญเบ, เป€เบฅเบทเบญเบ”เปเบฅเบฐเบ„เบงเบฒเบกเป€เบˆเบฑเบšเบ›เบงเบ”เบ‚เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบ.

1. เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เบ—เปˆเบฒเบ™เบ„เบงเบ™เบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡เบเบฑเบšเบžเบฒเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบเปˆเบฝเบงเบเบฑเบš site Liquibase

เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™ เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเปเบ•เปˆเบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบซเบผเบฒเบเปเบกเปˆเบ™เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบ, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบชเบฒเบกเบฒเบ”เบชเบฑเบšเบชเบปเบ™เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เป„เบงเป†เบ™เบตเป‰เบˆเบฐเบ™เปเบฒเป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เปเบฅเบฐเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ—เบตเปˆเปเบ•เบเบซเบฑเบ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเป€เบ›เบตเบ”เป€เบœเบตเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเป€เบŠเบดเปˆเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™เบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเป€เบซเบ”เบœเบปเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบกเบตเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเบนเบ‡เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเบตเปเบ”เบ‡เบซเบผเบทเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเปเบ•เบเบซเบฑเบ. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Liquibase เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบฒเบ‡เบเบฒเบ™เบกเบตเบ‚เปเป‰เบชเบฐเป€เบซเบ™เบตเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš rollback scripts เบžเป‰เบญเบกเบเบฑเบšเบชเบฐเบ„เบดเบšเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ•เบปเป‰เบ™เบ•เป. เบ”เบต, เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบก https://habr.com/ru/post/178665/ เบกเบตเบ•เบปเบงเบขเปˆเบฒเบ‡เบฅเบฐเบซเบฑเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเปเบฅเบฐเบเบปเบ™เป„เบเบเบฒเบ™เบเบฑเบšเบ„เบทเบ™.

2. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบฅเบตเปˆเบกเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบ, เบขเปˆเบฒเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เปเบเป‰เป„เบ‚เบ„เบนเปˆเบกเบทเปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™

เบ”เบฑเปˆเบ‡เบ„เบณเป€เบงเบปเป‰เบฒเบ—เบตเปˆเบงเปˆเบฒ: "เบ„เบฑเป‰เบ‡เปœเบถเปˆเบ‡ Persil, Persil เบชเบฐเป€เปเบต." เบ–เป‰เบฒเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบฅเบตเปˆเบกเบ–เบทเบเบˆเบฑเบ”เบเบฒเบ™เป‚เบ”เบ Liquibase, เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ„เบนเปˆเบกเบทเปƒเบ”เป†เบเปเปˆเบ™เปเบฒเป„เบ›เบชเบนเปˆเบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡, เปเบฅเบฐเบฅเบฐเบ”เบฑเบšเบ„เบงเบฒเบกเป„เบงเป‰เบงเบฒเบ‡เปƒเบˆเปƒเบ™เบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบชเบนเบ™. เบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ—เบตเปˆเบญเบฒเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบฅเบงเบกเบกเบตเป€เบงเบฅเบฒเบซเบผเบฒเบเบŠเบปเปˆเบงเป‚เบกเบ‡เปƒเบ™เบเบฒเบ™เบŸเบทเป‰เบ™เบŸเบนเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™; เปƒเบ™เบเปเบฅเบฐเบ™เบตเบฎเป‰เบฒเบเปเบฎเบ‡เบ—เบตเปˆเบชเบธเบ”, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบ•เบฒเบเปเบฅเป‰เบง. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบต "เป‚เบฎเบ‡เบฎเบฝเบ™เป€เบเบปเปˆเบฒ" DBA เบชเบฐเบ–เบฒเบ›เบฐเบ™เบดเบเบขเบนเปˆเปƒเบ™เบ—เบตเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบ”เป‰เบงเบเบ„เบงเบฒเบกเบญเบปเบ”เบ—เบปเบ™เปเบฅเบฐเบ„เบดเบ”เบขเปˆเบฒเบ‡เบฅเบฐเบญเบฝเบ”เบญเบฐเบ—เบดเบšเบฒเบเปƒเบซเป‰เบฅเบฒเบงเบฎเบนเป‰เบงเปˆเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบ”เบตเบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบฅเบฒเบงเบžเบฝเบ‡เปเบ•เปˆเปเบเป‰เป„เบ‚เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบˆเบฒเบเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ SQL เบ—เบตเปˆเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚.

3. เบ–เป‰เบฒเบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เบ–เบทเบ pushed เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ repository เปเบฅเป‰เบง, เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ”เบฑเบ”เปเบเป‰

เบ–เป‰เบฒเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบญเบทเปˆเบ™เป„เบ”เป‰เบ”เบถเบ‡เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เป€เบŠเบดเปˆเบ‡เบ•เปเปˆเบกเบฒเบˆเบฐเบ–เบทเบเบ”เบฑเบ”เปเบเป‰, เบฅเบฒเบงเบˆเบฐเบˆเบทเปˆเบ—เปˆเบฒเบ™เบ”เป‰เบงเบเบ„เปเบฒเบ—เบตเปˆเปƒเบˆเบ”เบตเป€เบกเบทเปˆเบญเบฅเบฒเบงเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เป€เบงเบฅเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เบ–เป‰เบฒเบเบฒเบ™เปเบเป‰เป„เบ‚เบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบฎเบปเปˆเบงเป„เบซเบฅเป„เบ›เบชเบนเปˆเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ„เบงเบฒเบกเบŠเบฑเบ™เบ‚เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบ”เปˆเบงเบ™. เป‚เบ”เบเป€เบ™เบทเป‰เบญเปเบ—เป‰เปเบฅเป‰เบงเบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ”เบเบœเบปเบ™เบฅเบงเบก hash - เบเบปเบ™เป„เบเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡ Liquibase. เป€เบกเบทเปˆเบญเปเบเป‰เป„เบ‚เบฅเบฐเบซเบฑเบ”เบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบˆเปเบฒเบ™เบงเบ™ hash เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฒเบ scratch เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ‚เปเป‰เบกเบนเบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบเบฒเบ™เปเบเป‰เป„เบ‚เบฅเบฐเบซเบฑเบ” SQL เบซเบผเบท XML เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบกเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบŠเบตเบงเบดเบ”เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป„เบ”เป‰เบซเบผเบฒเบเบ‚เบถเป‰เบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡เบˆเบฐเป€เบ›เบฑเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆ, เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, schema เบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบซเบผเปˆเบ‡เป„เบ”เป‰เบ–เบทเบเบ•เบปเบเบฅเบปเบ‡เบเบฑเบ™เบžเบฒเบเปƒเบ™เบ—เบตเบกเบ‡เบฒเบ™.

4. เบกเบตเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ–เป‰เบฒเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰

เบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒ, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบˆเบฐเปเบˆเป‰เบ‡. เบ–เป‰เบฒเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบขเปˆเบฒเบ‡เบเบฐเบ—เบฑเบ™เบซเบฑเบ™เบšเปเปˆเบชเปเบฒเป€เบฅเบฑเบ”, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบชเบฒเบกเบฒเบ”เบเบฑเบšเบ„เบทเบ™เบกเบฒเป„เบ”เป‰. Liquibase เบกเบตเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบกเป‰เบงเบ™เบ„เบทเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เปเบ•เปˆเบชเบฐเบ„เบดเบš rollback เบเบฑเบ‡เบ–เบทเบเบ‚เบฝเบ™เป‚เบ”เบเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบญเบ‡, เปเบฅเบฐเบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบกเบตเบšเบฑเบ™เบซเบฒเบเบฑเบšเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบชเบฐเบ„เบดเบšเบ‚เบญเบ‡เบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ•เบปเป‰เบ™เบ•เป. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบˆเบฐเบซเบผเบดเป‰เบ™เบกเบฑเบ™เบ›เบญเบ”เป„เบžเบเบฑเบšเบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเปƒเบ”เบเปเปˆเบ•เบฒเบก.

5. เปƒเบŠเป‰เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบžเบดเบชเบนเบ”เปเบฅเป‰เบงเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบ–เป‰เบฒเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰

เบ–เป‰เบฒเบชเบดเปˆเบ‡เบ™เบตเป‰เบšเปเปˆเบ‚เบฑเบ”เบเบฑเบšเบชเบฑเบ™เบเบฒเปเบฅเบฐเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบ•เบปเบง, เบšเปเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เปเบฅเบฐเบกเบฑเบ™เบšเปเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบเป€เบ—เบปเปˆเบฒเบเบฑเบšเบชเบญเบ‡เบ”เบงเบ‡เบญเบฒเบ—เบดเบ” - เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบชเบปเบ”, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบ„เบดเบ”เป„เบฅเปˆเปเบ™เบงเปƒเบ”. เป€เบเบทเบญเบš 100% เบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบญเบฒเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบ.

6. เบ•เบดเบ”เบ•เปเปˆเบชเบทเปˆเบชเบฒเบ™เบเบฑเบšเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบญเบทเปˆเบ™เป†เปƒเบ™เบ—เบตเบกเบ‡เบฒเบ™

เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ—เบตเปˆเบ”เบต, เบ—เบธเบเบ„เบปเบ™เปƒเบ™เบ—เบตเบกเบฎเบนเป‰เบงเปˆเบฒเปƒเบœเบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบซเบเบฑเบ‡. เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบเปเบฅเบฐเบ™เบต, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบเบฐเบเบฝเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบ„เบงเบ™เปเบˆเป‰เบ‡เปƒเบซเป‰เบ—เบตเบกเบ‡เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰. เบ–เป‰เบฒเปƒเบœเบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบเปเบฒเบฅเบฑเบ‡เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบฐเบซเบ™เบฒเบ™, เบ—เปˆเบฒเบ™เบ„เบงเบ™เบˆเบฑเบ”เบฅเบฐเบšเบฝเบšเบขเปˆเบฒเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡. เบกเบฑเบ™เบ„เบธเป‰เบกเบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเบ•เบดเบ”เบ•เปเปˆเบเบฑเบšเป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบซเบผเบฒเบเบเบฑเบšเบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบฅเบฐเบซเบฑเบ”.

7. เบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”!

เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบ—เบตเปˆเปƒเบŠเป‰เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบก. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบšเบฑเบ™เบซเบฒเบซเบผเบฒเบเบขเปˆเบฒเบ‡เบชเบฒเบกเบฒเบ”เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เป„เบ”เป‰เบ–เป‰เบฒเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป‰เบงเบดเป€เบ„เบฒเบฐเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบงเปˆเบฒเบฅเบฒเบงเบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบซเบเบฑเบ‡เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆ. เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบชเบฐเป€เบซเบกเบตเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบฅเบฐเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡.

เปƒเบชเปˆเบเบฑเบšเบ”เบฑเบ

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป€เบฎเบปเบฒเบกเบฒเป€เบšเบดเปˆเบ‡เบเบฒเบ™เปƒเบชเปˆเบเบฑเบšเบ”เบฑเบเปเบšเบšเบ—เบณเบกเบฐเบ”เบฒเบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบ•เบปเบเบขเบนเปˆเป„เบ”เป‰ เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเบšเปเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ„เบณเปเบ™เบฐเบ™เบณเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰ เปเบฅเบฐเป€เบˆเบปเป‰เบฒเบ„เบงเบ™เป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”?

เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™ 1: เบชเบญเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบเปเบฒเบฅเบฑเบ‡เบžเบฐเบเบฒเบเบฒเบกเป€เบžเบตเปˆเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบซเบกเปˆเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™

เบงเบดเบ—เบตเบเบฒเบ™เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบเบดเบ‡เบ•เบปเบงเป€เบญเบ‡เปƒเบ™เบ•เบตเบ™เป‚เบ”เบเปƒเบŠเป‰ Liquibase
Vasya เปเบฅเบฐ Petya เบ•เป‰เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡ changeset เบฎเบธเปˆเบ™ 4, เป‚เบ”เบเบšเปเปˆเบฎเบนเป‰เบ•เบปเบง. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบญเบญเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เบเบฑเบšเป„เบŸเบฅเปŒ changeset เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบเบปเบ™เป„เบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เปเปˆเป„เบ›เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบชเบฐเป€เบซเบ™เบต:

เบงเบดเบ—เบตเบเบฒเบ™เปเบเป‰เป„เบ‚

  1. เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™เบ•เป‰เบญเบ‡เบ•เบปเบเบฅเบปเบ‡เป€เบซเบฑเบ™เบ”เบตเบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ„เบงเบ™เบˆเบฐเป„เบ›, เบ•เบปเบงเบขเปˆเบฒเบ‡, Petin เบ„เบงเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเปˆเบญเบ™.
  2. เบšเบฒเบ‡เบ„เบปเบ™เบ„เบงเบ™เป€เบžเบตเปˆเบกเบญเบฑเบ™เบ—เบตเบชเบญเบ‡เปƒเบซเป‰เบเบฑเบšเบ•เบปเบงเป€เบญเบ‡เปเบฅเบฐเบซเบกเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡ Vasya เบเบฑเบšเบฎเบธเปˆเบ™ 5. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบœเปˆเบฒเบ™ Cherry Pick เบซเบผเบทเบเบฒเบ™เบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เบขเปˆเบฒเบ‡เปเบซเบ™เป‰เบ™เบซเบ™เบฒ.
  3. เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบ—เปˆเบฒเบ™เบ„เบงเบ™เบเบงเบ”เป€เบšเบดเปˆเบ‡เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบเบฐเบ—เปเบฒเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เปเบ™เปˆเบ™เบญเบ™.
    เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบเบปเบ™เป„เบ Liquibase เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบกเบต 4 เบฎเบธเปˆเบ™ 4 เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบญเบเปƒเบซเป‰เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™. เบ™เบฑเป‰เบ™โ€‹เปเบกเปˆเบ™โ€‹, เบ—เปˆเบฒเบ™โ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบˆเบฐโ€‹เบกเบตโ€‹เบชเบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบชเบฐโ€‹เบšเบฑเบš XNUMX เบ—เบตเปˆโ€‹เบกเบตโ€‹เบŠเบทเปˆโ€‹เบ—เบตเปˆโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบเบฑเบ™โ€‹. เบ”เป‰เบงเบเบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰, เบกเบฑเบ™เบ•เปเปˆเบกเบฒเบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบ™เปเบฒเบ—เบฒเบ‡เบชเบฐเบšเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, Liquibase, เบ„เบทเบเบฑเบšเป€เบฎเบทเบญเบ™เบ‚เบญเบ‡ hobbits, เบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเบฅเบฑเบšเบซเบผเบฒเบเบขเปˆเบฒเบ‡. เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบฅเบฐเบซเบฑเบ” validCheckSum, เป€เบŠเบดเปˆเบ‡เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบชเบฐเบšเบฑเบš 1.7 เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบฅเบฐเบšเบธเบ„เปˆเบฒ hash เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบชเปเบฒเบฅเบฑเบšเบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฐเป€เบžเบฒเบฐ, เป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เป€เบญเบเบฐเบชเบฒเบ™ https://www.liquibase.org/documentation/changeset.html เป€เบงเบปเป‰เบฒเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

เป€เบžเบตเปˆเบก checksum เบ—เบตเปˆเบ–เบทเบงเปˆเบฒเบ–เบทเบเบ•เป‰เบญเบ‡เบชเปเบฒเบฅเบฑเบšเบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ™เบตเป‰, เป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เปƒเบŠเป‰เป€เบ›เบฑเบ™เบ•เบปเป‰เบ™เบ•เปเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบฅเบฐเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบ–เบดเป‰เบกเปƒเบชเปˆเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบฑเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปเบฅเป‰เบง (เบšเปเปˆเปเบกเปˆเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเปเบ™เบฐเบ™เปเบฒ)

เปเบกเปˆเบ™เปเบฅเป‰เบง, เปเบกเปˆเบ™เปเบฅเป‰เบง, เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเปเบ™เบฐเบ™เปเบฒ. เปเบ•เปˆเบšเบฒเบ‡เบ„เบฑเป‰เบ‡ magician เปเบชเบ‡เบชเบฐเบซเบงเปˆเบฒเบ‡เบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เบเบฑเบ‡ masters เป€เบ•เบฑเบเบ™เบดเบเบเบฒเบ™เบŠเป‰เปเบฒ

เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™ 2: เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™

เบงเบดเบ—เบตเบเบฒเบ™เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบเบดเบ‡เบ•เบปเบงเป€เบญเบ‡เปƒเบ™เบ•เบตเบ™เป‚เบ”เบเปƒเบŠเป‰ Liquibase

เปƒเบซเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เปƒเบŠเป‰เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบกเบตเบŠเบตเบงเบดเบ”. Petya เป„เบ”เป‰เบชเป‰เบฒเบ‡เบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบ—เบปเบ”เบชเบญเบšเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เปเบฅเบฐ, เบ”เป‰เบงเบเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เปƒเบˆเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบงเปˆเบฒเบฅเบฒเบงเบ–เบทเบเบ•เป‰เบญเบ‡, เป€เบฎเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เบเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบœเบนเป‰เบ™เปเบฒเบžเบฒเป‚เบ„เบ‡เบเบฒเบ™เป„เบ”เป‰เบŠเบตเป‰เปเบˆเบ‡เบงเปˆเบฒ Petya เป„เบ”เป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบกเบฑเบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบžเบตเปˆเบกเบกเบฑเบ™. เปเบ•เปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเบผเบธเบ”เบฅเบปเบ‡.

เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เปเบฅเบฐเบšเปเปˆเบกเบตเปƒเบœเบกเบตเบžเบนเบกเบ•เป‰เบฒเบ™เบ—เบฒเบ™เบˆเบฒเบเบ™เบตเป‰. เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบทเป‰เบ™เบ–เป‰เบฒเบเบฒเบ™เบ”เบฑเบ”เปเบเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ–เบทเบเบœเบนเบเบกเบฑเบ”เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบชเบฐเป€เบžเบฒเบฐเบˆเบฒเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เปเบ™เปˆเบ™เบญเบ™, เบ–เป‰เบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡ Petya เป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบเบงเบกเป€เบญเบปเบฒเบ—เบธเบเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบกเบตเบšเบฑเบ™เบซเบฒ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเบฅเบถเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡, เบกเบฑเบ™เบ›เบฐเบเบปเบ”เบงเปˆเบฒเบกเบตเบšเบฑเบ™เบ—เบถเบเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบญเบทเปˆเบ™เป‚เบ”เบ Foreign Key เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบšเบฑเบ™เบ—เบถเบเปƒเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบ–เบทเบเบฅเบถเบš. เบซเบผเบทเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ›เปˆเบฝเบ™เบ›เบฐเป€เบžเบ”เบ–เบฑเบ™, เบกเบฑเบ™ turns เบญเบญเบเบงเปˆเบฒเบšเปเปˆเปเบกเปˆเบ™ 100% เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เปƒเบซเบกเปˆ.

เบงเบดเบ—เบตเบเบฒเบ™เปเบเป‰เป„เบ‚

  • เบ‚เบฝเบ™เบชเบฐเบ„เบดเบšเบžเบดเป€เบชเบ”เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบ„เบฑเป‰เบ‡เบ”เบฝเบงเบžเป‰เบญเบกเบเบฑเบšเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเปเบฅเบฐเบ™เปเบฒเป€เบญเบปเบฒเบ‚เปเป‰เบกเบนเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก. เบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบปเปˆเบงเป„เบ›เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบเบฒเบ™เป‚เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เปƒเบซเบกเปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบ, เปเบ•เปˆเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเปˆเบญเบ™, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบžเบดเป€เบชเบ”. เปเบ™เปˆเบ™เบญเบ™, เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ™เบตเป‰เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบชเบฐ เป€เปเบต เป„เบ›, เป€เบžเบฒเบฐเบงเปˆเบฒเบเบฒเบ™เปเบเป‰เป„เบ‚เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป€เบŠเบตเบŸเป€เบงเบตเบชเบปเบ”เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบเปเบฅเบฐเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เบเบฒเบ™เบ—เปเบฒเบฅเบฒเบ.
  • เบญเบตเบเบงเบดเบ—เบตเปœเบถเปˆเบ‡เบ—เบตเปˆเบซเบเบธเป‰เบ‡เบเบฒเบเบ„เบทเบเบฒเบ™เปเบเป‰เป„เบ‚เบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง. เบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเปเบกเปˆเบ™เบงเปˆเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปเบฅเป‰เบงเปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบ–เบทเบเบŸเบทเป‰เบ™เบŸเบนเบ„เบทเบ™เปƒเบซเบกเปˆ. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบงเปˆเบฒเบ—เบตเบกเบ‡เบฒเบ™ backend เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบ–เบทเบเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰ rolling เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ scratch.
  • เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบเบฒเบ™เป‚เบญเบ™เบšเบฑเบ™เบซเบฒเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เป„เบ›เบชเบนเปˆเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบชเป‰เบฒเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™เปเบฅเบฐเป€เบžเบตเปˆเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบซเบกเปˆ, เป„เบ›เบซเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเปเบ•เบเบซเบฑเบ, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบซเบฅเบตเบเบฅเป‰เบฝเบ‡เบšเบฑเบ™เบซเบฒ.
    เบงเบดเบ—เบตเบเบฒเบ™เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบเบดเบ‡เบ•เบปเบงเป€เบญเบ‡เปƒเบ™เบ•เบตเบ™เป‚เบ”เบเปƒเบŠเป‰ Liquibase

เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบซเบผเบฒเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เปƒเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบŠเบตเบŸเป€เบงเบตเบเบฒเบ™เบœเบฐเบฅเบดเบ”, เป‚เบญเบเบฒเบ”เบซเบ™เป‰เบญเบเบ—เบตเปˆเบกเบตเบšเบฑเบ™เบซเบฒเบเบฑเบšเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบˆเบฐเป„เบ›เป„เบ. เปเบฅเบฐ, เปเบ™เปˆเบ™เบญเบ™, เบเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเบชเบปเปˆเบ‡เบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ›เบซเบฒเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™, เบ—เปˆเบฒเบ™เบ„เบงเบ™เบ„เบดเบ”เบซเบผเบฒเบเป†เบ„เบฑเป‰เบ‡เบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเบ—เปเบฒเบฅเบฒเบเบซเบเบฑเบ‡.

เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™ 3. Liquibase เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”

เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบœเบนเป‰เบ™เปเบฒเบ—เบตเบกเป„เบ”เป‰เบ‚เปเปƒเบซเป‰ Petya เบฅเบงเบกเป€เบญเบปเบฒ Liquibase เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™, เปเบ•เปˆเป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เปเบฅเป‰เบงเปเบฅเบฐเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปƒเบซเบกเปˆเบซเบผเบทเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เปƒเบซเบกเปˆเบˆเบฒเบเบˆเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบฅเบฐเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบ•เป‰เบญเบ‡เบขเบนเปˆเปƒเบ™เบชเบฐเบžเบฒเบšเบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡, เบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบเบญเบกเบฎเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบซเบกเปˆ.

เบงเบดเบ—เบตเบเบฒเบ™เปเบเป‰เป„เบ‚

เบเบฑเบ‡เบกเบตเบซเบผเบฒเบเบงเบดเบ—เบต:

  • เบ—เปเบฒเบญเบดเบ”เปเบฅเบฐเบŠเบฑเบ”เป€เบˆเบ™เบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบเบฒเบ™เบกเบตเบชเบฐเบ„เบดเบšเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ—เบตเปˆเบ•เป‰เบญเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปƒเบซเบกเปˆ.
  • เบญเบฑเบ™เบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™เบซเบ™เป‰เบญเบ, เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบ Liquibase เบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™ Liquibase เบญเบทเปˆเบ™, เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบš Liquibase Context เป„เบ”เป‰เบ—เบตเปˆเบ™เบตเป‰: https://www.liquibase.org/documentation/contexts.html. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบ™เบตเป‰เปเบกเปˆเบ™เบเบปเบ™เป„เบเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบชเปเบฒเป€เบฅเบฑเบ”เบœเบปเบ™, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš.
  • เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเบชเบฒเบกเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบซเบผเบฒเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™. เบ—เปเบฒเบญเบดเบ”, เบเบฒเบ™เป‚เบญเบ™เบเป‰เบฒเบเบ•เป‰เบญเบ‡เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบšเบฒเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบœเบปเบ™เบฅเบงเบก hash เบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบš. เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ Liquibase เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบšเปเปˆเบซเบงเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เปเบฅเบฐเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบกเบตเบ›เบฐเบซเบงเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบšเบฑเบ™เบ—เบถเบเบเปˆเบฝเบงเบเบฑเบš "เบ„เบทเบเบฑเบšเบงเปˆเบฒเบ™เปเบฒเปƒเบŠเป‰" เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. . เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง, เบเบฒเบ™เบ™เบฑเบšเบ–เบญเบเบซเบฅเบฑเบ‡เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”เบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบเบฎเบธเปˆเบ™ 2, เปเบฅเบฐเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปƒเบซเบกเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบ”เบฝเบงเบเบฑเบ™.
    เบงเบดเบ—เบตเบเบฒเบ™เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบเบดเบ‡เบ•เบปเบงเป€เบญเบ‡เปƒเบ™เบ•เบตเบ™เป‚เบ”เบเปƒเบŠเป‰ Liquibase

เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™ 4. เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบเบฒเบเป€เบ›เบฑเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปเบฅเบฐเบšเปเปˆเบกเบตเป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบชเปเบฒเป€เบฅเบฑเบ”

เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบš, Liquibase เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบžเบฒเบเบ™เบญเบ, เปเบฅเบฐเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบ–เบทเบเบ”เปเบฒเป€เบ™เบตเบ™เป€เบกเบทเปˆเบญเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เป€เบกเบทเปˆเบญเป€เบงเบฅเบฒเบœเปˆเบฒเบ™เป„เบ›, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐ stumble เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบเบฒเบเป€เบ›เบฑเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปเบฅเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบชเปเบฒเป€เบฅเบฑเบ”.
  • เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเปเบˆเบเบขเบฒเบ, เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบเป†เบ„เบฑเป‰เบ‡เบžเป‰เบญเบกเป†เบเบฑเบ™.
    เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบเบฒเบ™เปƒเบŠเป‰เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ”เบปเบ™เป€เบเบตเบ™เป„เบ›เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เปเบปเบ”เป€เบงเบฅเบฒเป€เบกเบทเปˆเบญเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เปƒเบŠเป‰เบเบฒเบ™เป‚เบญเบ™เบเป‰เบฒเบเป„เบ›เบซเบฒเปเบ•เปˆเบฅเบฐเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเปเบเบเบเบฑเบ™ เบญเบฒเบ”เบˆเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เป€เบŠเบตเบšเป€เบงเบตเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบšเปเปˆเบ–เบทเบเบŠเบดเป‰เบ‡.

เบงเบดเบ—เบตเบเบฒเบ™เปเบเป‰เป„เบ‚

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปเบฅเป‰เบง, เบšเบฒเบ‡เบ—เบตเบญเบฒเบ”เป€เบ›เบฑเบ™เบœเบนเป‰เปƒเบซเบเปˆ, เปเบฅเบฐ Liquibase เป€เบฅเบตเปˆเบกเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบžเบฒเบเบ™เบญเบเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบฅเป‰เบงเปเบกเปˆเบ™เบงเปˆเบฒ Liquibase เป€เบ›เบฑเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เป„เบ”เป‰เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบเบฐเบ›เป‹เบญเบ‡, เปเบฅเบฐเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเป€เบ›เบฑเบ™เบ•เบปเบงเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบžเบฒเบเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบซเบผเบทเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”.

เปƒเบ™เป‚เบซเบกเบ”เปเบšเบšเบชเบฐเปเบ•เบ™เบ„เบปเบ™เบ”เบฝเบง, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเบญเบเบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป„เบ›เบชเบนเปˆเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก CI / CD เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบซเบผเบทเปƒเบชเปˆเบšเปˆเบฒเบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เบ‚เบญเบ‡เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบฅเบฐเบšเบปเบšเปเบฅเบฐเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ Liquibase https://www.liquibase.org/documentation/command_line.html. เปƒเบ™เป‚เบซเบกเบ”เบ™เบตเป‰, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบงเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”.

เบชเบฐเบซเบฅเบธเบš

เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบกเบตเบญเบธเบ›เบฐเบชเบฑเบเบซเบผเบฒเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบชเบฑเบ™. เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡, เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡ pitfalls เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เป„เบ”เป‰. เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบšเบฑเบ™เบซเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เปเบฅเบฐเบšเบฒเบ‡เบญเบฑเบ™เป€เบ›เบฑเบ™เบœเบปเบ™เบกเบฒเบˆเบฒเบเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบ. เบชเปˆเบงเบ™เบซเบผเบฒเบเบกเบฑเบ, เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบทเป‰เบ™, เปเบ™เปˆเบ™เบญเบ™, เบเป‰เบญเบ™เบ„เบงเบฒเบกเบšเปเปˆเบ•เบฑเป‰เบ‡เปƒเบˆ, เปเบ•เปˆเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบเปเปˆเบเป‰เบญเบ™เบ„เบงเบฒเบกเบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบฒเบ‡เบญเบฒเบเบฒ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™