เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดฒเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เด เดจเตเดฏเตเดเตเดฏเดค เดชเตเดฐเดถเตเดจเดเตเดเตพ เดเดเตเดเดจเต เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเดฎเตเดจเตเดจเต เด เดฒเตเดเดจเด เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจเต. เดชเตเดฐเดพเดฅเดฎเดฟเด เดคเดฏเตเดฏเดพเดฑเตเดเตเดชเตเดชเดฟเดฒเตเดฒเดพเดคเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเตพ เดถเตเดฐเดฎเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเตเดกเดเตเดทเตป เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพเดเตเดเต เดเดจเตเดคเต เดธเดเดญเดตเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดเดเตเดเตพ เดจเดฟเดเตเดเดณเตเดเต เดชเดฑเดฏเตเด. เดชเตเดเตเดฏเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดเดพเตป เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดฒเตเดซเต เดธเตเดเตเดเดฟเตพ เดเดเตเดเดเตเดเดณเดฟเดฒเตเดเต เดเดเตเดเตพ เดเดเดจเตเดจเตเดชเตเดเตเด (เดเดเดฆเตเดถเด. เดชเดพเดค: เดเตเดเตเดคเตฝ - เดชเตเดเตเดฏเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดฏ เดธเดฎเดฏเด). เดเดเตเดเดณเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเดเต เดซเดฒเด, เดฌเดพเดเตเดเตเดตเตเตผเดกเต-เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฎเดพเดฑเตเดฑเด เดเดฐเต เดชเดฟเดจเตเดจเดฟเดฒเตเดเตเดเต-เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดฐเตเดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดพเดฏเดฟเดฐเดฟเดเตเดเตเด.
เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเตเดกเต เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เดจเดฟเดเตเดเตพเดเตเดเต เดฎเดจเดธเดฟเดฒเดพเดเตเดเดฃเดฎเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เด
เดต เดเดตเดฟเดเต เดเดฃเตเดเตเดคเตเดคเดพเด
เดเดฎเตเดเด
เดชเตเดเตเดฏเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดฏ เดตเดฟเดจเตเดฏเดพเดธเด
เดเดจเตเดคเตเดฐเต เดจเดฟเดเตเดขเดค เดชเตเดเตเดฏเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดฏ เดตเดฟเดจเตเดฏเดพเดธเด? เดเดชเตเดฒเดฟเดเตเดเตเดทเตปเตเดฑเต เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดจเดฟเดเตเดเตพเดเตเดเต เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏเดฟ เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดคเดฐเดคเตเดคเดฟเตฝ เดจเดฟเดเตเดเดณเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดฎเตเดชเตเตพ เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเต เดชเดฑเดฏเดพเด, เด เดคเตเดธเดฎเดฏเด เดเดชเดฏเตเดเตเดคเดพเดตเต เด เดคเดฟเตปเตเดฑเต เดฒเดญเตเดฏเดค เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เดเดฐเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเตปเตเดฑเตเดฏเตเด เดเดฎเตเดชเดจเดฟเดฏเตเดเตเดฏเตเด เดตเตเดเตเดทเดฃเดเตเดฃเดฟเตฝ, เดเดคเต เดธเดพเดงเตเดฏเดฎเดพเดฏ เดเดฑเตเดฑเดตเตเด เดฎเดฟเดเดเตเด เดตเดฟเดจเตเดฏเดพเดธ เดธเดพเดนเดเดฐเตเดฏเดฎเดพเดฃเต, เดเดพเดฐเดฃเด เดเดคเต เดชเตเดคเดฟเดฏ เดธเดตเดฟเดถเตเดทเดคเดเตพ เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเด เดฌเดเตเดเตพ เดคเดเดธเตเดธเดฎเดฟเดฒเตเดฒเดพเดคเต เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเดจเตเด เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต.
เดเดคเต เดเดเตเดเดจเต เดจเตเดเดพเด? เดจเดฟเดฐเดตเดงเดฟ เดฎเดพเตผเดเดเตเดเดณเตเดฃเตเดเต, เด เดตเดฏเดฟเดฒเตเดจเตเดจเต เดเดคเดพ:
- เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเดคเตเดคเดฟเตปเตเดฑเต เดชเดคเดฟเดชเตเดชเต เดจเดฎเตเดชเตผ 1 เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเด
- เดเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฎเตเดเตเดฐเตเดทเตป เดจเดเดคเตเดคเตเด
- เดชเดคเดฟเดชเตเดชเต #2 เดจเต เดธเดฎเดพเดจเตเดคเดฐเดฎเดพเดฏเดฟ เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเดคเตเดคเดฟเตปเตเดฑเต #1 เดชเดคเดฟเดชเตเดชเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเด
- เดชเดคเดฟเดชเตเดชเต เดจเดฎเตเดชเตผ 2 เด เดคเต เดชเตเดฒเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเดพเดฏเดฟ เดจเดฟเดเตเดเตพ เดเดพเดฃเตเดฎเตเดชเตเตพ, เดชเดคเดฟเดชเตเดชเต เดจเดฎเตเดชเตผ 1 เดจเตเดเตเดเด เดเตเดฏเตเดฏเตเด
- เดเตเดฏเตโเดคเต!
เดเดณเตเดชเตเดชเด, เด เดฒเตเดฒเต? เดจเดฟเตผเดญเดพเดเตเดฏเดตเดถเดพเตฝ, เดเดคเต เด เดคเตเดฐ เดฒเดณเดฟเดคเดฎเดฒเตเดฒ, เดเดเตเดเตพ เด เดคเต เดชเดฟเดจเตเดจเตเดเต เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดจเตเดเตเดเดพเด. เดเดชเตเดชเตเตพ เดจเดฎเตเดเตเดเต เดฎเดฑเตเดฑเตเดฐเต เดธเดพเดงเดพเดฐเดฃ เดตเดฟเดจเตเดฏเดพเดธ เดชเตเดฐเดเตเดฐเดฟเดฏ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด - เดจเตเดฒ เดชเดเตเด เดตเดฟเดจเตเดฏเดพเดธเด.
เดจเดฟเดเตเดเตพ เดเดชเตเดชเตเดดเตเดเตเดเดฟเดฒเตเด เดเตเดเตเดเดฟเดเตเดเตเดฃเตเดเต
- เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเตเดกเดเตเดทเตป เดเตเดกเดฟเตปเตเดฑเต เดฐเดฃเตเดเต เดชเดเตผเดชเตเดชเตเดเตพ ("เดจเตเดฒ", "เดชเดเตเด") เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดฃเตเดเตเดจเตเดจเต เดเดฑเดชเตเดชเดพเดเตเดเตเด;
- เดเดฒเตเดฒเดพ เดเตเดฐเดพเดซเดฟเดเตเดเตเด เดจเตเดฒ เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟเดฏเดฟเดฒเตเดเตเดเต เดจเดฏเดฟเดเตเดเตเด, เด เดคเดพเดฏเดคเต. เด เดเตเดเดจเต เดชเตเดฐเตเดกเดเตเดทเตป URL-เดเตพ เด เดตเดฟเดเต เดชเตเดฏเดฟเตปเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเต;
- เดเดฒเตเดฒเดพ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดฎเดพเดฑเตเดฑเดเตเดเดณเตเด เดนเดฐเดฟเดค เด เดจเตเดคเดฐเตเดเตเดทเดคเตเดคเดฟเตฝ เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดเดฏเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด;
- url เดจเตเดฒเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดเตเด เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเตเด
เดชเตเดฐเตเดกเดเตเดทเตป เดฌเตเดฐเตเดเตเดเดฟเดเดเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดเตเดฒเดชเตเดชเตเดเดพเดคเต เดชเตเดคเดฟเดฏ เดธเดตเดฟเดถเตเดทเดคเดเตพ เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดธเดฎเตเดชเดจเดฎเดพเดฃเต เดฌเตเดฒเต เดเตเดฐเตเตป เดตเดฟเดจเตเดฏเดพเดธเด. เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดธเดเดญเดตเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝเดชเตเดชเตเดฒเตเด, "เดเดฐเต เดธเตเดตเดฟเดเตเดเต เดซเตเดฒเดฟเดเตเดเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเตเดเต" เดจเดฟเดเตเดเตพเดเตเดเต เดฎเตเดฎเตเดชเดคเตเดคเต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเดฒเตเดเตเดเต เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดฎเดเดเตเดเดพเตป เดเดดเดฟเดฏเตเด เดเดจเตเดจเดคเดพเดฃเต เดเดคเดฟเดจเต เดเดพเดฐเดฃเด.
เดฎเตเตฝเดชเตเดชเดฑเดเตเดเดตเดฏเตเดฒเตเดฒเดพเด เดตเดพเดฏเดฟเดเตเดเดคเดฟเดจเตเดถเตเดทเด, เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดฆเตเดฏเด เดเตเดฆเดฟเดเตเดเดพเด: เดชเตเดเตเดฏเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดฏ เดธเดฎเดฏเดตเตเด เดจเตเดฒ เดชเดเตเด เดตเดฟเดจเตเดฏเดพเดธเดตเตเดฎเดพเดฏเดฟ เดเดจเตเดคเต เดฌเดจเตเดงเดฎเตเดฃเตเดเต?
เดถเดฐเดฟ, เด
เดตเดฏเตโเดเตเดเต เดตเดณเดฐเตเดฏเดงเดฟเดเด เดธเดพเดฎเตเดฏเดฎเตเดฃเตเดเต, เดเดพเดฐเดฃเด เดเดฐเต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเตเดเต เดฐเดฃเตเดเต เดชเดเตผเดชเตเดชเตเดเตพ เดชเดฐเดฟเดชเดพเดฒเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เด
เดต เดชเดฐเดฟเดชเดพเดฒเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดฐเดเตเดเดฟ เดชเดฐเดฟเดถเตเดฐเดฎเด เดเดตเดถเตเดฏเดฎเดพเดฃเต. เดเดคเดพเดฃเต เดเดฟเดฒ เดเตเดฎเตเดเตพ เด
เดตเดเดพเดถเดชเตเดชเตเดเตเดจเตเดจเดคเต
เดตเตเดฌเดฟเดจเตเด เดกเตเดฎเตเดฏเตเตป เดฒเตเดฏเดฑเดฟเดจเตเดฎเดพเดฏเดฟ เดจเตเดฒ-เดชเดเตเด เดธเตเดตเดฟเดเตเดเตเดเตพ เดธเตเดทเตโเดเดฟเดเตเดเต เด เดคเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดพเดฃเต เดฎเดฑเตเดฑเตเดฐเต เดเดชเตเดทเตป. เด เดธเดฎเตเดชเดจเดคเตเดคเดฟเตฝ, เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดชเดฒเดชเตเดชเตเดดเตเด เดเดฐเต เดชเตเดฐเดถเตเดจเดฎเดพเดเดพเด, เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเตเด เดธเตเดซเตเดฑเตเดฑเตเดตเตเดฏเดฑเดฟเตปเตเดฑเต เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเดฟเดจเต เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดจเดฟเดเตเดเตพ เด เดคเดฟเตปเตเดฑเต เดธเตเดเตเดฎ เดฎเดพเดฑเตเดฑเตเดฃเตเดเดฟเดตเดฐเตเดฎเตเดชเตเตพ.
เดเดตเดฟเดเต เดเดเตเดเตพ เด เดฒเตเดเดจเดคเตเดคเดฟเดฒเต เดชเตเดฐเดงเดพเดจ เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดฒเตเดเตเดเต เดตเดฐเตเดจเตเดจเต. เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต. เด เดตเดพเดเดเด เดเดจเตเดจเตเดเตเดเดฟ เดจเตเดเตเดเดพเด.
เดเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฎเตเดเตเดฐเตเดทเตป เดจเดเดคเตเดคเตเด.
เดเดชเตเดชเตเตพ เดจเดฟเดเตเดเตพ เดธเตเดตเดฏเด เดเดฐเต เดเตเดฆเตเดฏเด เดเตเดฆเดฟเดเตเดเดฃเด - เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฎเดพเดฑเตเดฑเด เดชเดฟเดจเตเดจเตเดเตเดเต เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดจเตเดจเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดจเตเดคเตเดเตเดฏเตเดฏเตเด? เดเดชเตเดชเดฟเตปเตเดฑเต เดเตปเตเดฑเต เดเดฆเตเดฏ เดชเดคเดฟเดชเตเดชเต เดคเดเดฐเดฟเดฒเตเดฒเต? เดธเดคเตเดฏเดคเตเดคเดฟเตฝ เดเดคเตเดคเดจเตเดจเตเดฏเดพเดฃเต เดธเดเดญเดตเดฟเดเตเดเตเด...
เด เดคเดฟเดจเดพเตฝ, เดชเตเดเตเดฏเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดฏ / เดจเตเดฒ เดชเดเตเด เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเตปเตเดฑเต เดตเดฒเดฟเดฏ เดจเตเดเตเดเดเตเดเตพ เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดเตเดเตเด, เดเดฎเตเดชเดจเดฟเดเตพ เด เดตเดฐเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดธเตเดฐเดเตเดทเดฟเดคเดฎเดพเดฏ เดชเตเดฐเดเตเดฐเดฟเดฏ เดชเดฟเดจเตเดคเตเดเดฐเตเดจเตเดจเต:
- เดเดชเตเดฒเดฟเดเตเดเตเดทเตปเตเดฑเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดชเดพเดเตเดเตเดเต เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเตเด
- เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดทเดเตเดเต เดกเตเตบ เดเตเดฏเตเดฏเตเด
- เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฎเตเดเตเดฐเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด
- เดเดชเตเดฒเดฟเดเตเดเตเดทเตปเตเดฑเต เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดเดฏเตเด เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด
เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ, เดธเตเดฑเต เดกเตเตบเดเตเด เดตเดฟเดจเตเดฏเดพเดธเด เดชเตเดฐเดฏเตเดเดจเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดเตเดเดณเตเดเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเตเด เดเตเดกเตเด เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดเตเดเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเดฎเตเดจเตเดจเต เดเดเตเดเตพ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดชเดฑเดฏเตเด.
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดชเตเดฐเดถเตเดจเดเตเดเตพ
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดกเดพเดฑเตเดฑเดฏเตเดจเตเดจเตเด เดธเดเดญเดฐเดฟเดเตเดเดพเดคเตเดค เดเดฐเต เดธเตโเดฑเตเดฑเตเดฑเตเดฑเตโเดฒเตเดธเต เดเดชเตเดชเต เดจเดฟเดเตเดเดณเตเดเต เดชเดเตเดเดฒเตเดฃเตเดเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดเดเดจเดเดฟ เดธเตเดฑเต เดกเตเตบเดเตเด เดตเดฟเดจเตเดฏเดพเดธเด เดฒเดญเดฟเดเตเดเตเด. เดจเดฟเตผเดญเดพเดเตเดฏเดตเดถเดพเตฝ, เดฎเดฟเดเตเด เดธเตเดซเตโเดฑเตเดฑเตโเดตเตเดฏเดฑเตเดเตพเดเตเดเตเด เดเดตเดฟเดเตเดฏเตเดเตเดเดฟเดฒเตเด เดกเดพเดฑเตเดฑ เดธเดเดญเดฐเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เด เดคเตเดเตเดฃเตเดเดพเดฃเต เดธเตผเดเตเดฏเตเดเตเดเดฟเตฝ เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดจเดฟเดเตเดเตพ เดฐเดฃเตเดเตเดคเดตเดฃ เดเดฟเดจเตเดคเดฟเดเตเดเตเดฃเตเดเดคเต. เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดฏ เดตเดฟเดจเตเดฏเดพเดธเด เดธเดพเดงเตเดฏเดฎเดพเดเตเดจเตเดจ เดคเดฐเดคเตเดคเดฟเตฝ เดธเตเดเตเดฎ เดเดเตเดเดจเต เดฎเดพเดฑเตเดฑเดพเด เดเดจเตเดจเดคเดฟเตปเตเดฑเต เดตเดฟเดถเดฆเดพเดเดถเดเตเดเดณเดฟเดฒเตเดเตเดเต เดเดเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เดจเดฎเตเดเตเดเต เดเดฆเตเดฏเด เดชเดคเดฟเดชเตเดชเดฟเดเดเต เดธเตเดเตเดฎเดฏเดฟเตฝ เดถเตเดฐเดฆเตเดง เดเตเดจเตเดฆเตเดฐเตเดเดฐเดฟเดเตเดเดพเด.
เดชเดคเดฟเดชเตเดชเต เดธเตเดเตเด
เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเด classpath:db/migration
). เด
เดคเตเดคเดฐเด เดฎเตเดเตเดฐเตเดทเตป เดซเดฏเดฒเตเดเดณเตเดเต เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด เดเดตเดฟเดเต เดเดพเดฃเดพเด
โโโ db
โโโ migration
โโโ V1__init.sql
โโโ V2__Add_surname.sql
โโโ V3__Final_migration.sql
โโโ V4__Remove_lastname.sql
เด เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฎเตเดฎเตพ 4 เดฎเตเดเตเดฐเตเดทเตป เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดเดพเดฃเตเดจเตเดจเต, เด
เดคเต เดฎเตเดฎเตเดชเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดคเดฟเดเตเดเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดฐเดเดญเดฟเดเตเดเตเดฎเตเดชเตเตพ เดเดจเตเดจเดฟเดจเตเดชเตเดฑเดเต เดเดจเตเดจเดพเดฏเดฟ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเด. เดซเดฏเดฒเตเดเดณเดฟเดฒเตเดจเตเดจเต เดจเตเดเตเดเดพเด (V1__init.sql
) เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด เดเดจเตเดจ เดจเดฟเดฒเดเตเดเต.
CREATE TABLE PERSON (
id BIGINT GENERATED BY DEFAULT AS IDENTITY,
first_name varchar(255) not null,
last_name varchar(255) not null
);
insert into PERSON (first_name, last_name) values ('Dave', 'Syer');
เดเดฒเตเดฒเดพเด เดคเดฟเดเดเตเดเตเด เดธเตเดตเดฏเด เดตเดฟเดถเดฆเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดพเดฃเต: เดจเดฟเดเตเดเดณเตเดเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดเดเตเดเดจเต เดชเดฐเดฟเดทเตเดเดฐเดฟเดเตเดเดฃเดฎเตเดจเตเดจเต เดจเดฟเตผเดตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดเตเดเตพเดเตเดเต SQL เดเดชเดฏเตเดเดฟเดเตเดเดพเด. เดธเตเดชเตเดฐเดฟเดเดเต เดฌเตเดเตเดเดฟเดจเตเดฏเตเด เดซเตเดฒเตเดตเตเดฏเตเดฏเตเด เดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเตเดเตเดคเตฝ เดตเดฟเดตเดฐเดเตเดเตพเดเตเดเต, เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด
เดธเตเดชเตเดฐเดฟเดเดเต เดฌเตเดเตเดเดฟเดจเตเดชเตเดชเด เดเดฐเต เดธเตเดดเตเดธเต เดเตบเดเตเดฐเตเตพ เดเตเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดฒเตเดเต, เดจเดฟเดเตเดเตพเดเตเดเต 2 เดตเดฒเดฟเดฏ เดจเตเดเตเดเดเตเดเตพ เดฒเดญเดฟเดเตเดเตเด:
- เดจเดฟเดเตเดเตพ เดเตเดกเต เดฎเดพเดฑเตเดฑเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฎเดพเดฑเตเดฑเดเตเดเดณเต เดตเตเตผเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต
- เดจเดฟเดเตเดเดณเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตปเตเดฑเต เดฑเตเตพเดเดเตเดเดฟเดจเตเดชเตเดชเด เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฎเตเดเตเดฐเตเดทเตป เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเต, เด เดคเดพเดฏเดคเต. เดจเดฟเดเตเดเดณเตเดเต เดตเดฟเดจเตเดฏเดพเดธ เดชเตเดฐเดเตเดฐเดฟเดฏ เดฒเดณเดฟเดคเดฎเดพเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดชเตเดฐเดถเตเดจเดเตเดเตพ เดชเดฐเดฟเดนเดฐเดฟเดเตเดเตเดจเตเดจเต
เดฒเตเดเดจเดคเตเดคเดฟเตปเตเดฑเต เด เดเตเดคเตเดค เดตเดฟเดญเดพเดเดคเตเดคเดฟเตฝ, เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฎเดพเดฑเตเดฑเดเตเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ เดฐเดฃเตเดเต เดธเดฎเตเดชเดจเดเตเดเดณเดฟเตฝ เดเดเตเดเตพ เดถเตเดฐเดฆเตเดง เดเตเดจเตเดฆเตเดฐเตเดเดฐเดฟเดเตเดเตเด.
- เดชเดฟเดจเตเดจเตเดเตเด เดชเตเดฐเตเดคเตเดคเดเตเดเตเดเต
- เดชเดฟเดจเตเดจเตเดเตเด เด เดจเตเดฏเตเดเตเดฏเดค
เดเดฆเตเดฏเดคเตเดคเตเดคเต, เดชเตเดฐเดพเดฅเดฎเดฟเด เดคเดฏเตเดฏเดพเดฑเตเดเตเดชเตเดชเดฟเดฒเตเดฒเดพเดคเต เดธเตเดฑเต เดกเตเตบเดเตเด เดกเดฟเดชเตเดฒเตเดฏเตโเดฎเตเตปเตเดฑเต เดจเดเดคเตเดคเดฐเตเดคเตเดจเตเดจ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเดพเดฏเดฟ เดเดฃเดเตเดเดพเดเตเดเตเด... เดฐเดฃเตเดเดพเดฎเดคเตเดคเตเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดฏ เดเดฐเต เดตเดฟเดจเตเดฏเดพเดธเด เดเดเตเดเดจเต เดจเดเดคเตเดคเดพเดฎเตเดจเตเดจเตเด เด เดคเต เดธเดฎเดฏเด เดฌเดพเดเตเดเตโเดตเตเตผเดกเต เดเตเดเดชเดพเดฑเตเดฑเดฟเดฌเดฟเดฒเดฟเดฑเตเดฑเดฟ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเดพเดฎเตเดจเตเดจเตเด เดเดณเตเดณ เดเดฐเต เดชเดฐเดฟเดนเดพเดฐเด เดตเดพเดเตเดฆเดพเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดเดเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดชเตเดเตเดจเตเดจ เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดธเตเดชเตเดฐเดฟเดเดเต เดฌเตเดเตเดเต เดซเตเดฒเตเดตเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเดพเดฏเดฟเดฐเดฟเดเตเดเตเด Person
ั first_name
ะธ last_name
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ (เดเดเดฆเตเดถเด. เดตเดฟเดตเตผเดคเตเดคเดจเด: Person
เดเดฐเต เดฎเตเดถเดฏเตเด first_name
ะธ last_name
- เดเดคเดฟเดฒเต เดตเดฏเดฒเตเดเดณเดพเดฃเต). เดชเตเดฐเตเดฎเดพเดฑเตเดฑเดพเตป เดเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต last_name
ะฒ surname
.
เด เดจเตเดฎเดพเดจเดเตเดเตพ
เดตเดฟเดถเดฆเดพเดเดถเดเตเดเดณเดฟเดฒเตเดเตเดเต เดเดเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เดเดเตเดเดณเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดเตเดเตพ เดเตเดฑเดเตเดเต เด เดจเตเดฎเดพเดจเดเตเดเตพ เดจเดเดคเตเดคเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดเตเดเตพ เดจเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจ เดชเตเดฐเดงเดพเดจ เดซเดฒเด เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดเดฐเต เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเดพเดฏเดฟเดฐเดฟเดเตเดเตเด.
Zametka. เดฌเดฟเดธเดฟเดจเดธเต เดชเตเดฐเต-เดเดฟเดชเตเดชเต. เดชเตเดฐเดเตเดฐเดฟเดฏเดเตพ เดฒเดณเดฟเดคเดฎเดพเดเตเดเตเดจเตเดจเดคเดฟเดฒเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดชเดฟเดจเตเดคเตเดฃเดฏเดฟเตฝ เดงเดพเดฐเดพเดณเด เดชเดฃเด เดฒเดพเดญเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด (เดจเดฟเดเตเดเดณเตเดเต เดเดฎเตเดชเดจเดฟเดฏเดฟเตฝ เดเตเดเตเดคเตฝ เดเดณเตเดเตพ เดเตเดฒเดฟ เดเตเดฏเตเดฏเตเดจเตเดจเต, เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดเตเดคเตฝ เดชเดฃเด เดฒเดพเดญเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด)!
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฑเตเตพเดฌเดพเดเตเดเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเดฟเดฒเตเดฒ
เดเดคเต เดตเดฟเดจเตเดฏเดพเดธ เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเต เดฒเดณเดฟเดคเดฎเดพเดเตเดเตเดจเตเดจเต (เดเดฟเดฒ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฑเตเตพเดฌเดพเดเตเดเตเดเตพ, เดเดฒเตเดฒเดพเดคเดพเดเตเดเตฝ เดฑเตเตพเดฌเดพเดเตเดเต เดชเตเดฒเต, เดฎเดฟเดเตเดเดตเดพเดฑเตเด เด เดธเดพเดงเตเดฏเดฎเดพเดฃเต). เด เดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดฎเดพเดคเตเดฐเด เดชเดฟเตปเดตเดฒเดฟเดเตเดเดพเตป เดเดเตเดเตพ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดชเตเดชเตเดเตเดจเตเดจเต. เด เดฐเตเดคเดฟเดฏเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดตเตเดฏเดคเตเดฏเดธเตเดค เดกเดพเดฑเตเดฑเดพเดฌเตเดธเตเดเดณเตเดฃเตเดเตเดเตเดเดฟเตฝเดชเตเดชเตเดฒเตเด (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, SQL, NoSQL), เดจเดฟเดเตเดเดณเตเดเต เดตเดฟเดจเตเดฏเดพเดธ เดชเตเดชเตเดชเตเดฒเตเตป เดธเดฎเดพเดจเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด.
เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดฐเต เดชเดคเดฟเดชเตเดชเต เดคเดฟเดฐเดฟเดเต เดเตเดฃเตเดเตเดตเดฐเตเดจเตเดจเดคเต เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดธเดพเดงเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด (เดเดจเดฟเดฏเดฟเดฒเตเดฒ)
เดฑเตเตพเดฌเดพเดเตเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณเดชเตเดชเตเตพ เดฎเดพเดคเตเดฐเด เดเตเดฏเตเดฏเดฃเด. เดจเดฟเดฒเดตเดฟเดฒเต เดชเดคเดฟเดชเตเดชเดฟเตฝ เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเดจเดพเดเดพเดคเตเดค เดเดฐเต เดฌเดเต เดเดฃเตเดเตเดเตเดเดฟเตฝ, เดเดฑเตเดฑเดตเตเด เดชเตเดคเดฟเดฏ เดตเตผเดเตเดเดฟเดเดเต เดชเดคเดฟเดชเตเดชเดฟเดฒเตเดเตเดเต เดฎเดเดเตเดเดพเตป เดเดเตเดเตพเดเตเดเต เดเดดเดฟเดฏเตเด. เด เดเดฑเตเดฑเดตเตเด เดชเตเดคเดฟเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดชเดคเดฟเดชเตเดชเต เดฎเตเดฎเตเดชเดคเตเดคเตเดคเดพเดฃเตเดจเตเดจเต เดเดเตเดเตพ เด เดจเตเดฎเดพเดจเดฟเดเตเดเตเดจเตเดจเต. เดเดจเตเดจเดฟเดฒเดงเดฟเดเด เดฑเตเตพเดเดเตเดเตเดเตพเดเตเดเดพเดฏเดฟ เดเตเดกเตเด เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เด เดจเตเดฏเตเดเตเดฏเดคเดฏเตเด เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเตเดจเตเดจเดคเต เดตเดณเดฐเต เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดณเตเดณเดคเตเด เดเตเดฒเดตเตเดฑเดฟเดฏเดคเตเดฎเดพเดฃเต.
เดเตเดฑเดฟเดชเตเดชเต. เดเตเดเตเดคเตฝ เดตเดพเดฏเดจเดพเดเตเดทเดฎเดคเดฏเตเดเตเดเดพเดฏเดฟ, เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดเดชเตเดฒเดฟเดเตเดเตเดทเตปเตเดฑเต เดชเตเดฐเดงเดพเดจ เดชเดคเดฟเดชเตเดชเต เดฎเดพเดฑเตเดฑเตเด.
เดเดเตเดเด 1: เดชเตเดฐเดพเดฐเดเดญ เด เดตเดธเตเดฅ
เด
เดชเตเดฒเดฟเดเตเดเตเดทเตป เดชเดคเดฟเดชเตเดชเต: 1.0.0
DB เดชเดคเดฟเดชเตเดชเต: v1
เด เดญเดฟเดชเตเดฐเดพเดฏเด
เดเดคเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตปเตเดฑเต เดชเตเดฐเดพเดฐเดเดญ เด เดตเดธเตเดฅเดฏเดพเดฏเดฟเดฐเดฟเดเตเดเตเด.
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฎเดพเดฑเตเดฑเดเตเดเตพ
DB เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต last_name.
CREATE TABLE PERSON (
id BIGINT GENERATED BY DEFAULT AS IDENTITY,
first_name varchar(255) not null,
last_name varchar(255) not null
);
insert into PERSON (first_name, last_name) values ('Dave', 'Syer');
เดเตเดกเต เดฎเดพเดฑเตเดฑเดเตเดเตพ
เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดตเตเดฏเดเตเดคเดฟเดเดค เดกเดพเดฑเตเดฑ เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเต last_name
:
/*
* Copyright 2012-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package sample.flyway;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
public String getFirstName() {
return this.firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return this.lastName;
}
public void setLastName(String lastname) {
this.lastName = lastname;
}
@Override
public String toString() {
return "Person [firstName=" + this.firstName + ", lastName=" + this.lastName
+ "]";
}
}
เดชเดฟเดจเตเดจเดฟเดฒเตเดเตเดเต เด เดจเตเดฏเตเดเตเดฏเดฎเดฒเตเดฒเดพเดคเตเดค เดเตเดณเด เดชเตเดจเตผเดจเดพเดฎเดเดฐเดฃเด
เดเดฐเต เดเตเดณเดคเตเดคเดฟเตปเตเดฑเต เดชเตเดฐเต เดเดเตเดเดจเต เดฎเดพเดฑเตเดฑเดพเด เดเดจเตเดจเดคเดฟเตปเตเดฑเต เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด เดจเตเดเตเดเดพเด:
เดถเตเดฐเดฆเตเดง. เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดฆเดพเดนเดฐเดฃเด เดฎเดจเดเดชเตเตผเดตเด เดเดพเดฐเตเดฏเดเตเดเตพ เดคเดเตผเดเตเดเตเด. เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เด เดจเตเดฏเตเดเตเดฏเดคเดฏเตเดเต เดชเตเดฐเดถเตเดจเด เดคเตเดณเดฟเดฏเดฟเดเตเดเดพเตป เดเดเตเดเตพ เดเดคเต เดเดพเดฃเดฟเดเตเดเตเดจเตเดจเต.
เด
เดชเตเดฒเดฟเดเตเดเตเดทเตป เดชเดคเดฟเดชเตเดชเต: 2.0.0.BAD
DB เดชเดคเดฟเดชเตเดชเต: v2bad
เด เดญเดฟเดชเตเดฐเดพเดฏเด
เดจเดฟเดฒเดตเดฟเดฒเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดเดฐเต เดธเดฎเดฏเด เดฐเดฃเตเดเต เดธเดจเตเดฆเตผเดญเดเตเดเตพ (เดชเดดเดฏเดคเตเด เดชเตเดคเดฟเดฏเดคเตเด) เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เด เดคเดฟเดจเดพเตฝ, เดชเตเดเตเดฏเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดฏ เดตเดฟเดจเตเดฏเดพเดธเด เดจเตเดเดพเตป เดชเตเดฐเดฏเดพเดธเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด (เด เดจเตเดฎเดพเดจเดเตเดเตพ เดเดฃเดเตเดเดฟเดฒเตเดเตเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เด เดคเต เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด เดธเดพเดงเตเดฏเดฎเดพเดฃเต).
เด/เดฌเดฟ เดเตเดธเตเดฑเตเดฑเดฟเดเดเต
เดเดเตเดเตพเดเตเดเต เดเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดชเดคเดฟเดชเตเดชเต เดเดฃเตเดเต เดเดจเตเดจเดคเดพเดฃเต เดจเดฟเดฒเดตเดฟเดฒเต เดธเดพเดนเดเดฐเตเดฏเด 1.0.0,
เดชเตเดฐเตเดกเดเตเดทเตป, เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเต v1
. เดเดเตเดเตพ เดเดชเตเดฒเดฟเดเตเดเตเดทเตปเตเดฑเต เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดเดฆเดพเดนเดฐเดฃเดฎเดพเดฏ เดชเดคเดฟเดชเตเดชเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต 2.0.0.BAD
, เดเตเดเดพเดคเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เด
เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเด v2bad
.
เดเดเตเดเดเตเดเตพ:
- เดชเดคเดฟเดชเตเดชเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตปเตเดฑเต เดเดฐเต เดชเตเดคเดฟเดฏ เดเดฆเดพเดนเดฐเดฃเด เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต
2.0.0.BAD
เดเดคเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เด เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเตv2bad
- เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ
v2bad
เดเตเดพเดณเดlast_name
เดเดชเตเดชเตเตพ เดจเดฟเดฒเดตเดฟเดฒเดฟเดฒเตเดฒ - เด เดคเต เดฎเดพเดฑเตเดฑเดฟsurname
- เดกเดพเดฑเตเดฑเดพเดฌเตเดธเตเด เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เด
เดชเตโเดกเตเดฑเตเดฑเตเด เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดเดฟเดฒ เดธเดจเตเดฆเตผเดญเดเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต
1.0.0
, เดฎเดฑเตเดฑเตเดณเตเดณเดตเตผ - เดเตป2.0.0.BAD
. เดเดฒเตเดฒเดพเด เดกเดพเดฑเตเดฑเดพเดฌเตเดธเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเตv2bad
- เดชเดคเดฟเดชเตเดชเดฟเตปเตเดฑเต เดเดฒเตเดฒเดพ เดธเดจเตเดฆเตผเดญเดเตเดเดณเตเด
1.0.0
เด เดตเตผ เดเตเดณเดคเตเดคเดฟเดฒเตเดเตเดเต เดกเดพเดฑเตเดฑ เดคเดฟเดฐเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดฎเตเดจเตเดจเดคเดฟเดจเดพเตฝ เดชเดฟเดถเดเตเดเตพ เดเดฑเดฟเดฏเดพเตป เดคเตเดเดเตเดเตเดlast_name
เดเตผ เดเดชเตเดชเตเตพ เดจเดฟเดฒเดตเดฟเดฒเดฟเดฒเตเดฒ - เดชเดคเดฟเดชเตเดชเดฟเตปเตเดฑเต เดเดฒเตเดฒเดพ เดธเดจเตเดฆเตผเดญเดเตเดเดณเตเด
2.0.0.BAD
เดชเตเดฐเดถเตเดจเดเตเดเดณเดฟเดฒเตเดฒเดพเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเด
เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเดฃเดพเดจเดพเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เดเดเตเดเตพ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเตเด เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเดฟเดฒเตเด เดชเดฟเดจเตเดจเดฟเดฒเตเดเตเดเต เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเดพเดคเตเดค เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, A/B เดชเดฐเดฟเดถเตเดงเดจ เด เดธเดพเดงเตเดฏเดฎเดพเดฃเต.
เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดฑเตเตพเดฌเดพเดเตเดเต
A/B เดตเดฟเดจเตเดฏเดพเดธเด เดเตเดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด เดเดจเตเดจเต เดจเดฎเตเดเตเดเต เด
เดจเตเดฎเดพเดจเดฟเดเตเดเดพเด (เดเดเดฆเตเดถเด. per.: เดฐเดเดฏเดฟเดคเดพเดตเต เดเดฆเตเดฆเตเดถเดฟเดเตเดเดคเต เดเดตเดฟเดเต A/B เดชเดฐเดฟเดถเตเดงเดจเดฏเดพเดฃเต) เดชเดคเดฟเดชเตเดชเดฟเดฒเตเดเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดคเดฟเดฐเดฟเดเต เดเตเดฃเตเดเตเดตเดฐเดฃเดฎเตเดจเตเดจเต เดเดเตเดเตพ เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต 1.0.0.
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฑเตเตพเดฌเดพเดเตเดเต เดเตเดฏเตเดฏเดพเตป เดเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒเตเดจเตเดจเต เดชเดฑเดฏเดพเด.
เดเดเตเดเดเตเดเตพ:
- เดชเดคเดฟเดชเตเดชเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดฆเดพเดนเดฐเดฃเด เดเดเตเดเตพ เดจเดฟเตผเดคเตเดคเตเดจเตเดจเต
2.0.0.BAD
- เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดเดชเตเดชเตเดดเตเด เดเดฃเตเดเต
v2bad
- เดชเดคเดฟเดชเตเดชเต เดฎเตเดคเตฝ
1.0.0
เด เดคเต เดเดจเตเดคเดพเดฃเตเดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดจเตเดจเดฟเดฒเตเดฒsurname
, เดเดเตเดเตพ เดชเดฟเดถเดเตเดเตพ เดเดพเดฃเตเด - เดจเดฐเดเด เดคเดเตผเดจเตเดจเต, เดจเดฎเตเดเตเดเต เดเดจเดฟ เดคเดฟเดฐเดฟเดเตเดเตเดชเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ
เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเดฃเดพเดจเดพเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เดเดเตเดเตพ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเตเด เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเดฟเดฒเตเด เดชเดฟเดจเตเดจเดฟเดฒเตเดเตเดเต เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเดพเดคเตเดค เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดเดเตเดเตพเดเตเดเต เดฎเตเดฎเตเดชเดคเตเดคเต เดชเดคเดฟเดชเตเดชเดฟเดฒเตเดเตเดเต เดฎเดเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ.
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดเตเดธเดฟเดเตเดฏเตเดทเตป เดฒเตเดเตเดเตพ
Backward incompatible scenario:
01) Run 1.0.0
02) Wait for the app (1.0.0) to boot
03) Generate a person by calling POST localhost:9991/person to version 1.0.0
04) Run 2.0.0.BAD
05) Wait for the app (2.0.0.BAD) to boot
06) Generate a person by calling POST localhost:9991/person to version 1.0.0 <-- this should fail
07) Generate a person by calling POST localhost:9992/person to version 2.0.0.BAD <-- this should pass
Starting app in version 1.0.0
Generate a person in version 1.0.0
Sending a post to 127.0.0.1:9991/person. This is the response:
{"firstName":"b73f639f-e176-4463-bf26-1135aace2f57","lastName":"b73f639f-e176-4463-bf26-1135aace2f57"}
Starting app in version 2.0.0.BAD
Generate a person in version 1.0.0
Sending a post to 127.0.0.1:9991/person. This is the response:
curl: (22) The requested URL returned error: 500 Internal Server Error
Generate a person in version 2.0.0.BAD
Sending a post to 127.0.0.1:9995/person. This is the response:
{"firstName":"e156be2e-06b6-4730-9c43-6e14cfcda125","surname":"e156be2e-06b6-4730-9c43-6e14cfcda125"}
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฎเดพเดฑเตเดฑเดเตเดเตพ
เดชเตเดฐเตเดฎเดพเดฑเตเดฑเตเดจเตเดจ เดฎเตเดเตเดฐเตเดทเตป เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต last_name
ะฒ surname
เดธเตเดฐเตเดคเดธเตเดธเต เดซเตเดฒเตเดตเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต:
CREATE TABLE PERSON (
id BIGINT GENERATED BY DEFAULT AS IDENTITY,
first_name varchar(255) not null,
last_name varchar(255) not null
);
insert into PERSON (first_name, last_name) values ('Dave', 'Syer');
เดชเตเดฐเตเดฎเดพเดฑเตเดฑเตเดจเตเดจ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต last_name
.
-- This change is backward incompatible - you can't do A/B testing
ALTER TABLE PERSON CHANGE last_name surname VARCHAR;
เดเตเดกเต เดฎเดพเดฑเตเดฑเดเตเดเตพ
เดเดเตเดเตพ เดซเตเตฝเดกเต เดจเดพเดฎเด เดฎเดพเดฑเตเดฑเดฟ lastName
เดเตบ surname
.
เดชเดฟเดจเตเดจเดฟเดฒเตเดเตเดเต-เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดฐเตเดคเดฟเดฏเดฟเตฝ เดเตเดณเดคเตเดคเดฟเตปเตเดฑเต เดชเตเดฐเต เดฎเดพเดฑเตเดฑเตเดจเตเดจเต
เดจเดฎเตเดฎเตพ เด เดญเดฟเดฎเตเดเตเดเดฐเดฟเดเตเดเตเดเตเดเดพเดตเตเดจเตเดจ เดเดฑเตเดฑเดตเตเด เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฏ เด เดตเดธเตเดฅเดฏเดพเดฃเดฟเดคเต. เดจเดฎเตเดเตเดเต เดชเดฟเดจเตเดจเดฟเดฒเตเดเตเดเต เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเดพเดคเตเดค เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเตเดฃเตเดเดคเตเดฃเตเดเต. เดธเตเดฑเต-เดกเตเตบเดเตเด เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเดพเดฏเดฟ, เด เดงเดฟเด เดเดเตเดเดเตเดเดณเดฟเดฒเตเดฒเดพเดคเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฎเตเดเตเดฐเตเดทเตป เดชเตเดฐเดฏเตเดเดฟเดเตเดเดฐเตเดคเตเดจเตเดจเต เดเดเตเดเตพ เดเดคเดฟเดจเดเด เดคเตเดณเดฟเดฏเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเต. เดฒเตเดเดจเดคเตเดคเดฟเตปเตเดฑเต เด เดตเดฟเดญเดพเดเดคเตเดคเดฟเตฝ, เดชเดฟเดจเตเดจเตเดเตเด เด เดจเตเดฏเตเดเตเดฏเดค เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเดฟเดเตเดเตเดฃเตเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เดซเดฒเด เดจเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดเตเดเตพ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฎเตเดเตเดฐเตเดทเดจเตเดเตพเดเตเดเตเดชเตเดชเด เดเดชเตเดฒเดฟเดเตเดเตเดทเตปเตเดฑเต 3 เดตเดฟเดจเตเดฏเดพเดธเดเตเดเตพ เดจเดเดคเตเดคเตเด.
Zametka. เดเดเตเดเตพเดเตเดเต เดเดฐเต เดชเดคเดฟเดชเตเดชเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดเดฃเตเดเตเดจเตเดจเต เดเตผเดเตเดเตเด
v1
. เด เดคเดฟเตฝ เดจเดฟเดฐเดเตพ เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเตfirst_name
ะธlast_name
. เดจเดฎเตเดฎเตพ เดฎเดพเดฑเดฃเดlast_name
เดเตบsurname
. เดเดเตเดเตพเดเตเดเต เดเดชเตเดชเต เดชเดคเดฟเดชเตเดชเตเด เดเดฃเตเดเต1.0.0,
เดเดคเตเดตเดฐเต เดเดชเดฏเตเดเดฟเดเตเดเดพเดคเตเดคเดคเตsurname
.
เดเดเตเดเด 2: เดเตเดเตเดเดฌเดชเตเดชเตเดฐเต เดเตเตผเดเตเดเตเด
เด
เดชเตเดฒเดฟเดเตเดเตเดทเตป เดชเดคเดฟเดชเตเดชเต: 2.0.0
DB เดชเดคเดฟเดชเตเดชเต: v2
เด เดญเดฟเดชเตเดฐเดพเดฏเด
เดเดฐเต เดชเตเดคเดฟเดฏ เดเตเดณเด เดเตเตผเดเตเดเตเดเดฏเตเด เด เดคเดฟเดฒเต เดเดณเตเดณเดเดเตเดเดเตเดเตพ เดชเดเตผเดคเตเดคเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเตเดเต, เดเดเตเดเตพ เดชเดฟเดจเตเดจเดฟเดฒเตเดเตเดเต เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต. เด เดคเต เดธเดฎเดฏเด, เดจเดฎเตเดฎเตพ JAR เดฑเตเตพเดฌเดพเดเตเดเต เดเตเดฏเตเดฏเตเดเดฏเต เดชเดดเดฏ JAR เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดเดฏเต เดเตเดฏเตเดคเดพเตฝ, เด เดคเต เดเดเตเดธเดฟเดเตเดฏเตเดทเตป เดธเดฎเดฏเดคเตเดคเต เดคเดเดฐเดฟเดฒเตเดฒ.
เดเดเตเดเตพ เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดชเตเดฑเดคเตเดคเดฟเดฑเดเตเดเตเดเดฏเดพเดฃเต
เดเดเตเดเดเตเดเตพ:
- เดเดฐเต เดชเตเดคเดฟเดฏ เดเตเดณเด เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฎเตเดเตเดฐเตเดทเตป เดจเดเดคเตเดคเตเด
surname
. เดเดชเตเดชเตเตพ เดจเดฟเดเตเดเดณเตเดเต DB เดชเดคเดฟเดชเตเดชเตv2
- เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดชเดเตผเดคเตเดคเตเด
last_name
ะฒsurname
. เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดเดจเดฟเดเตเดเตพเดเตเดเต เด เดกเดพเดฑเตเดฑ เดงเดพเดฐเดพเดณเด เดเดฃเตเดเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพ เดฌเดพเดเตเดเต เดฎเตเดเตเดฐเตเดทเตป เดชเดฐเดฟเดเดฃเดฟเดเตเดเดฃเด! - เด
เดต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดเตเดกเต เดเดดเตเดคเตเด เดฐเดฃเตเดเตเด ะธ ะฝะพะฒัะนเดเดชเตเดชเด เดชเดดเดฏเดคเต เดเตเดพเดณเด. เดเดชเตเดชเตเตพ เดจเดฟเดเตเดเดณเตเดเต เดเดชเตเดชเต เดชเดคเดฟเดชเตเดชเต
2.0.0
- เดเตเดณเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเตเดฒเตเดฏเด เดตเดพเดฏเดฟเดเตเดเตเด
surname
, เดเดฒเตเดฒเตเดเตเดเดฟเตฝnull
, เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเตฝ เดจเดฟเดจเตเดจเตast_name
เดเดเตเดเดฟเตฝsurname
เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒ. เดจเดฟเดเตเดเตพเดเตเดเต เดเดฒเตเดฒเดพเดคเดพเดเตเดเดพเดgetLastName()
เดเตเดกเดฟเตฝ เดจเดฟเดจเตเดจเต, เด เดคเต เดเดเตเดเตเดชเตเดเตเดเต เดเตเดฏเตเดฏเตเดnull
เดเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเดเตเดเดณเตเดเต เด เดชเตเดเตเดท เดชเดฟเตปเดตเดฒเดฟเดเตเดเตเดฎเตเดชเตเตพ3.0.0
เดเดคเดฟเดจเดพเดฏเดฟ2.0.0
.
เดจเดฟเดเตเดเตพ เดธเตเดชเตเดฐเดฟเดเดเต เดฌเตเดเตเดเต เดซเตเดฒเตเดตเตเดฏเดพเดฃเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเตเดเตเดเดฟเตฝ, เดชเดคเดฟเดชเตเดชเต เดเดฐเดเดญเดฟเดเตเดเตเดฎเตเดชเตเตพ เด เดฐเดฃเตเดเต เดเดเตเดเดเตเดเตพ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเด 2.0.0
เด
เดชเตเดเตเดทเดเตพ. เดจเดฟเดเตเดเตพ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดชเดคเดฟเดชเตเดชเดฟเดเดเต เดเดชเดเดฐเดฃเด เดธเตเดตเดฎเตเดงเดฏเดพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดเตเดเตพ เดฐเดฃเตเดเต เดตเตเดฏเดคเตเดฏเดธเตเดค เดเดพเดฐเตเดฏเดเตเดเตพ เดเตเดฏเตเดฏเตเดฃเตเดเดฟเดตเดฐเตเด (เดเดฆเตเดฏเด db เดชเดคเดฟเดชเตเดชเต เดธเตเดตเดฎเตเดงเดฏเดพ เด
เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเด, เดคเตเดเตผเดจเตเดจเต เดชเตเดคเดฟเดฏ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเด).
เด เดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต. เดชเตเดคเตเดคเดพเดฏเดฟ เดธเตเดทเตเดเดฟเดเตเด เดเตเดณเด เดเตผเดเตเดเตเด เดชเดพเดเดฟเดฒเตเดฒ เดเดจเตเดจเต NULL เด เดฒเตเดฒ. เดจเดฟเดเตเดเตพ เดเดฐเต เดฑเตเตพเดฌเดพเดเตเดเต เดเตเดฏเตเดฏเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดชเดดเดฏ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเต เดชเตเดคเดฟเดฏ เดเตเดณเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเต เด เดฑเดฟเดฏเดฟเดฒเตเดฒ, เด เดคเต เดธเดฎเดฏเดคเตเดคเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดเดฏเตเดฎเดฟเดฒเตเดฒ
Insert.
เดเดจเตเดจเดพเตฝ เดจเดฟเดเตเดเตพ เด เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดตเตเด เดเตเตผเดคเตเดคเดพเตฝ เดจเดฟเดเตเดเดณเตเดเต db เดเดฏเดฟเดฐเดฟเดเตเดเตเดv2
, เดเดคเดฟเดจเต เดชเตเดคเดฟเดฏ เดจเดฟเดฐเดฏเตเดเต เดฎเตเดฒเตเดฏเด เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดคเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดเตเดเดณเตเดเต เดฒเดเดเดจเดคเตเดคเดฟเดฒเตเดเตเดเต เดจเดฏเดฟเดเตเดเตเด.เด เดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต. เดจเดฟเดเตเดเตพ เดฐเตเดคเดฟ เดจเตเดเตเดเด เดเตเดฏเตเดฏเดฃเด
getLastName()
, เดเดพเดฐเดฃเด เดชเดคเดฟเดชเตเดชเดฟเตฝ3.0.0
เดเตเดกเดฟเตฝ เดเตเดณเด เดเดจเตเดจ เดเดถเดฏเดฎเดฟเดฒเตเดฒlast_name
. เด เดคเดฟเดจเตผเดคเตเดฅเด เด เดตเดฟเดเต null เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเด เดเดจเตเดจเดพเดฃเต. เดจเดฟเดเตเดเตพเดเตเดเต เดฐเตเดคเดฟ เดเดชเตเดเตเดทเดฟเดเตเดเต เดเตเดเตเดเตเดเตพ เดเตเตผเดเตเดเดพเดnull
, เดเดจเตเดจเดพเตฝ เดเตเดเตเดคเตฝ เดฎเตเดเตเดเดชเตเดชเตเดเตเด เดชเดฐเดฟเดนเดพเดฐเด เดฏเตเดเตเดคเดฟเดฏเดฟเตฝ เด เดคเต เดเดฑเดชเตเดชเดพเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเตgetSurname()
เดจเดฟเดเตเดเตพ เดถเดฐเดฟเดฏเดพเดฏ เดชเตเดเตเดฏเดฎเดฒเตเดฒเดพเดคเตเดค เดฎเตเดฒเตเดฏเด เดคเดฟเดฐเดเตเดเตเดเตเดคเตเดคเต.
เด/เดฌเดฟ เดเตเดธเตเดฑเตเดฑเดฟเดเดเต
เดเดเตเดเตพเดเตเดเต เดเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดชเดคเดฟเดชเตเดชเต เดเดฃเตเดเต เดเดจเตเดจเดคเดพเดฃเต เดจเดฟเดฒเดตเดฟเดฒเต เดธเดพเดนเดเดฐเตเดฏเด 1.0.0
, เดชเตเดฐเตเดกเดเตเดทเตป, เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเต v1
. เดชเดคเดฟเดชเตเดชเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตปเตเดฑเต เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดเดฆเดพเดนเดฐเดฃเด เดเดเตเดเตพเดเตเดเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต 2.0.0
เดเดคเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เด
เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเด v2
.
เดเดเตเดเดเตเดเตพ:
- เดชเดคเดฟเดชเตเดชเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตปเตเดฑเต เดเดฐเต เดชเตเดคเดฟเดฏ เดเดฆเดพเดนเดฐเดฃเด เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต
2.0.0
เดเดคเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เด เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเตv2
- เดเดคเดฟเดจเดฟเดเดฏเดฟเตฝ เดเดฟเดฒ เด
เดญเตเดฏเตผเดคเตเดฅเดจเดเตพ เดชเดคเดฟเดชเตเดชเต เดธเดจเตเดฆเตผเดญเดเตเดเตพ เดตเดดเดฟ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดคเต
1.0.0
- เด
เดชเตโเดกเตเดฑเตเดฑเต เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดเตเดเดพเดคเต เดจเดฟเดเตเดเตพเดเตเดเต เดชเดคเดฟเดชเตเดชเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตปเตเดฑเต เดเดจเตเดจเดฟเดฒเดงเดฟเดเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดธเดจเตเดฆเตผเดญเดเตเดเดณเตเดฃเตเดเต
1.0.0
เดฎเดฑเตเดฑเต เดชเดคเดฟเดชเตเดชเตเดเดณเตเด2.0.0.
เดเดฒเตเดฒเดพเดตเดฐเตเด เดกเดพเดฑเตเดฑเดพเดฌเตเดธเตเดฎเดพเดฏเดฟ เดเดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด เดจเดเดคเตเดคเตเดจเตเดจเตv2
- เดชเดคเดฟเดชเตเดชเต
1.0.0
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเต เดเตเดเตเดเดฌเดชเตเดชเตเดฐเต เดเตเดณเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ, เดชเดเตเดทเต เดชเดคเดฟเดชเตเดชเต2.0.0
เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. เด เดตเตผ เดชเดฐเดธเตเดชเดฐเด เดเดเดชเตเดเตเดจเตเดจเดฟเดฒเตเดฒ, เดชเดฟเดถเดเตเดเตพ เดเดฃเตเดเดพเดเดฐเตเดคเต. - เดชเดคเดฟเดชเตเดชเต
2.0.0
เดชเดดเดฏเดคเตเด เดชเตเดคเดฟเดฏเดคเตเดฎเดพเดฏ เดเตเดณเดเตเดเดณเดฟเตฝ เดกเดพเดฑเตเดฑ เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเต, เดชเดฟเดจเตเดจเดพเดเตเด เด เดจเตเดฏเตเดเตเดฏเดค เดเดฑเดชเตเดชเดพเดเตเดเตเดจเตเดจเต
เด เดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต. เดชเดดเดฏ/เดชเตเดคเดฟเดฏ เดจเดฟเดฐเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเตเดฒเตเดฏเดเตเดเดณเต เด เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟ เดเดจเดเตเดเตพ เดเดฃเดเตเดเดพเดเตเดเตเดจเตเดจ เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เด เดจเตเดตเตเดทเดฃเดเตเดเตพ เดจเดฟเดเตเดเตพเดเตเดเตเดฃเตเดเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดเดชเตเดชเตเตพ เดคเดจเดฟเดชเตเดชเดเตผเดชเตเดชเต เดฎเตเดฒเตเดฏเดเตเดเตพ เดเดฃเตเดเตเดจเตเดจเต เดจเดฟเดเตเดเตพ เดเตผเดเตเดเดฃเด (เดฎเดฟเดเตเดเดตเดพเดฑเตเด เด เดต เดเดชเตเดชเตเดดเตเด เดฎเตเดเตเดฐเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดพเดฃเต). เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด เดเตเดทเดฐเดคเตเดคเดฟเตฝ เดเดฐเดเดญเดฟเดเตเด เด เดตเดธเดพเดจ เดจเดพเดฎเด (เดเตเดณเด เดเดจเตเดคเตเดคเดจเตเดจเตเดฏเดพเดฏเดพเดฒเตเด) เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเตเดเต เดเดฃเตเดฃเด เดเดฃเดเตเดเดพเดเตเดเดพเตป เดจเดฟเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเตเดตเตเดเตเดเดฟเตฝ
A
, เดกเดพเดฑเตเดฑ เดฎเตเดเตเดฐเตเดทเตป เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดจเตเดจเดคเตเดตเดฐเต (old
โnew
เดเตเดณเด) เดจเดฟเดเตเดเตพ เดเดฐเต เดชเตเดคเดฟเดฏ เดเตเดณเด เด เดจเตเดตเตเดทเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดธเตเดฅเดฟเดฐเดคเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดกเดพเดฑเตเดฑ เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเดพเด.
เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดฑเตเตพเดฌเดพเดเตเดเต
เดเดชเตเดชเตเตพ เดเดเตเดเตพเดเตเดเต เดเดชเตเดชเต เดชเดคเดฟเดชเตเดชเตเดฃเตเดเต 2.0.0
เดเตเดเดพเดคเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดเตป v2
.
เดเดเตเดเดเตเดเตพ:
- เดจเดฟเดเตเดเดณเตเดเต เด
เดชเตเดเตเดท เดชเดคเดฟเดชเตเดชเดฟเดฒเตเดเตเดเต เดคเดฟเดฐเดฟเดเต เดเตเดฃเตเดเตเดตเดฐเดฟเด
1.0.0
. - เดชเดคเดฟเดชเตเดชเต
1.0.0
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดเดฐเต เดเตเดณเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒsurname
, เด เดคเดฟเดจเดพเตฝ เดฑเตเตพเดฌเดพเดเตเดเต เดตเดฟเดเดฏเดฟเดเตเดเดฃเด
DB เดฎเดพเดฑเตเดจเตเดจเต
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดชเตเดฐเตเดณเตเดณ เดเดฐเต เดเตเดณเด เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต last_name
.
เดซเตเดฒเตเดตเต เดเดฑเดตเดฟเด เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต:
CREATE TABLE PERSON (
id BIGINT GENERATED BY DEFAULT AS IDENTITY,
first_name varchar(255) not null,
last_name varchar(255) not null
);
insert into PERSON (first_name, last_name) values ('Dave', 'Syer');
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเตผเดเตเดเตเด surname
.
เดถเตเดฐเดฆเตเดง. เดจเดฟเดเตเดเตพ เดเตเตผเดเตเดเตเดจเตเดจ เดจเดฟเดฐเดฏเดฟเดฒเตเดเตเดเต NOT NULL เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดเตเดเดณเตเดจเตเดจเตเด เดเตเตผเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒเตเดจเตเดจเต เดเตผเดเตเดเตเด. เดจเดฟเดเตเดเตพ JAR เดฑเตเตพเดฌเดพเดเตเดเต เดเตเดฏเตเดฏเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดชเดดเดฏ เดชเดคเดฟเดชเตเดชเดฟเดจเต เดเตเตผเดคเตเดค เดเตเดณเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเต เดฏเดพเดคเตเดฐเต เดงเดพเดฐเดฃเดฏเตเดฎเตเดฃเตเดเดพเดเดฟเดฒเตเดฒ, เด เดคเต เดธเตเดตเดฏเดฎเตเดต NULL เดเดฏเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเด. เด เดคเตเดคเดฐเดฎเตเดฐเต เดชเดฐเดฟเดฎเดฟเดคเดฟ เดเดฃเตเดเตเดเตเดเดฟเตฝ, เดชเดดเดฏ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเตเดตเดฒเด เดคเดเดฐเตเด.
-- NOTE: This field can't have the NOT NULL constraint cause if you rollback, the old version won't know about this field
-- and will always set it to NULL
ALTER TABLE PERSON ADD surname varchar(255);
-- WE'RE ASSUMING THAT IT'S A FAST MIGRATION - OTHERWISE WE WOULD HAVE TO MIGRATE IN BATCHES
UPDATE PERSON SET PERSON.surname = PERSON.last_name
เดเตเดกเต เดฎเดพเดฑเตเดฑเดเตเดเตพ
เดเดเตเดเตพ เดกเดพเดฑเตเดฑ เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเต last_name
, เดเตเดเดพเดคเต surname
. เด
เดคเต เดธเดฎเดฏเด เดเดเตเดเตพ เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจเต last_name
, เด เดเตเดณเด เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดธเดเตเดคเดฎเดพเดฏเดคเดฟเดจเดพเตฝ. เดตเดฟเดจเตเดฏเดพเดธ เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเดฟเตฝ, เดเดฟเดฒ เด
เดญเตเดฏเตผเดคเตเดฅเดจเดเตพ เดเดคเตเดตเดฐเต เด
เดชเตโเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเดคเตเดค เดเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเตปเดธเตโเดฑเตเดฑเตปเดธเต เดตเดดเดฟ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตโเดคเดฟเดฐเดฟเดเตเดเดพเด.
/*
* Copyright 2012-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package sample.flyway;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
private String surname;
public String getFirstName() {
return this.firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
/**
* Reading from the new column if it's set. If not the from the old one.
*
* When migrating from version 1.0.0 -> 2.0.0 this can lead to a possibility that some data in
* the surname column is not up to date (during the migration process lastName could have been updated).
* In this case one can run yet another migration script after all applications have been deployed in the
* new version to ensure that the surname field is updated.
*
* However it makes sense since when looking at the migration from 2.0.0 -> 3.0.0. In 3.0.0 we no longer
* have a notion of lastName at all - so we don't update that column. If we rollback from 3.0.0 -> 2.0.0 if we
* would be reading from lastName, then we would have very old data (since not a single datum was inserted
* to lastName in version 3.0.0).
*/
public String getSurname() {
return this.surname != null ? this.surname : this.lastName;
}
/**
* Storing both FIRST_NAME and SURNAME entries
*/
public void setSurname(String surname) {
this.lastName = surname;
this.surname = surname;
}
@Override
public String toString() {
return "Person [firstName=" + this.firstName + ", lastName=" + this.lastName + ", surname=" + this.surname
+ "]";
}
}
เดเดเตเดเด 3: เดเตเดกเดฟเตฝ เดจเดฟเดจเตเดจเต เด เดตเดธเดพเดจ_เดชเตเดฐเต เดจเตเดเตเดเดเดเตเดฏเตเดฏเตเดจเตเดจเต
เด
เดชเตเดฒเดฟเดเตเดเตเดทเตป เดชเดคเดฟเดชเตเดชเต: 3.0.0
DB เดชเดคเดฟเดชเตเดชเต:v3
เด เดญเดฟเดชเตเดฐเดพเดฏเด
เดเตเดฑเดฟเดชเตเดชเต per.: เดชเตเดฐเดคเตเดฏเดเตเดทเดฎเดพเดฏเตเด, เดฏเดฅเดพเตผเดคเตเดฅ เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดฐเดเดฏเดฟเดคเดพเดตเต เด เดฌเตเดฒเตเดเตเดเดฟเตปเตเดฑเต เดตเดพเดเดเด เดเดเตเดเด 2-เตฝ เดจเดฟเดจเตเดจเต เดคเตเดฑเตเดฑเดพเดฏเดฟ เดชเดเตผเดคเตเดคเดฟ. เด เดเดเตเดเดคเตเดคเดฟเตฝ, เดเตเดณเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดค เดจเตเดเตเดเด เดเตเดฏเตเดฏเดพเตป เดฒเดเตเดทเตเดฏเดฎเดฟเดเตเดเตเดณเตเดณ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเตเดกเดฟเตฝ เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเดฃเด. last_name
.
เดเดฐเต เดชเตเดคเดฟเดฏ เดเตเดณเด เดเตเตผเดเตเดเตเดเดฏเตเด เด เดคเดฟเดฒเต เดเดณเตเดณเดเดเตเดเดเตเดเตพ เดชเดเตผเดคเตเดคเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเตเดเต, เดเดเตเดเตพ เดชเดฟเดจเตเดจเดฟเดฒเตเดเตเดเต เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเต. เดเตเดเดพเดคเต, เดจเดฎเตเดฎเตพ JAR เดฑเตเตพเดฌเดพเดเตเดเต เดเตเดฏเตเดฏเตเดเดฏเต เดชเดดเดฏ JAR เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดเดฏเต เดเตเดฏเตเดคเดพเตฝ, เด เดคเต เดเดเตเดธเดฟเดเตเดฏเตเดทเตป เดธเดฎเดฏเดคเตเดคเต เดคเดเดฐเดฟเดฒเตเดฒ.
เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดฑเตเตพเดฌเดพเดเตเดเต
เดจเดฟเดฒเดตเดฟเตฝ เดเดเตเดเตพเดเตเดเต เดเดชเตเดชเต เดชเดคเดฟเดชเตเดชเตเดฃเตเดเต 3.0.0
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเตเด v3
. เดชเดคเดฟเดชเตเดชเต 3.0.0
เดเดจเตเดจเดคเดฟเดฒเตเดเตเดเต เดกเดพเดฑเตเดฑ เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ last_name
. เดเดคเดฟเดจเตผเดคเตเดฅเด เดเตป surname
เดเดฑเตเดฑเดตเตเด เดเดพเดฒเดฟเดเดฎเดพเดฏ เดตเดฟเดตเดฐเดเตเดเตพ เดธเดเดญเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดเดเตเดเดเตเดเตพ:
- เดจเดฟเดเตเดเดณเตเดเต เด
เดชเตเดเตเดท เดชเดคเดฟเดชเตเดชเดฟเดฒเตเดเตเดเต เดคเดฟเดฐเดฟเดเต เดเตเดฃเตเดเตเดตเดฐเดฟเด
2.0.0
. - เดชเดคเดฟเดชเตเดชเต
2.0.0
เดเดชเดฏเตเดเดเตเดเดณเตเดlast_name
ะธsurname
. - เดชเดคเดฟเดชเตเดชเต
2.0.0
เดเดเตเดเตเดเตเดsurname
, เดเดคเต เดชเตเดเตเดฏเดฎเดฒเตเดฒเตเดเตเดเดฟเตฝ, เด เดฒเตเดฒเตเดเตเดเดฟเตฝ -last_name
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฎเดพเดฑเตเดฑเดเตเดเตพ
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดเดเดจเดพเดชเดฐเดฎเดพเดฏ เดฎเดพเดฑเตเดฑเดเตเดเดณเตเดจเตเดจเตเดฎเดฟเดฒเตเดฒ. เดชเดดเดฏ เดกเดพเดฑเตเดฑเดฏเตเดเต เด เดจเตเดคเดฟเดฎ เดฎเตเดเตเดฐเตเดทเตป เดจเดเดคเตเดคเดพเตป เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเต:
-- WE'RE ASSUMING THAT IT'S A FAST MIGRATION - OTHERWISE WE WOULD HAVE TO MIGRATE IN BATCHES
-- ALSO WE'RE NOT CHECKING IF WE'RE NOT OVERRIDING EXISTING ENTRIES. WE WOULD HAVE TO COMPARE
-- ENTRY VERSIONS TO ENSURE THAT IF THERE IS ALREADY AN ENTRY WITH A HIGHER VERSION NUMBER
-- WE WILL NOT OVERRIDE IT.
UPDATE PERSON SET PERSON.surname = PERSON.last_name;
-- DROPPING THE NOT NULL CONSTRAINT; OTHERWISE YOU WILL TRY TO INSERT NULL VALUE OF THE LAST_NAME
-- WITH A NOT_NULL CONSTRAINT.
ALTER TABLE PERSON MODIFY COLUMN last_name varchar(255) NULL DEFAULT NULL;
เดเตเดกเต เดฎเดพเดฑเตเดฑเดเตเดเตพ
เดเตเดฑเดฟเดชเตเดชเต per.: เด เดฌเตเดฒเตเดเตเดเดฟเตปเตเดฑเต เดตเดฟเดตเดฐเดฃเดตเตเด เดฐเดเดฏเดฟเดคเดพเดตเต เดเดเตเดเด 2-เตฝ เดจเดฟเดจเตเดจเต เดคเตเดฑเตเดฑเดพเดฏเดฟ เดชเดเตผเดคเตเดคเดฟ. เดฒเตเดเดจเดคเตเดคเดฟเตปเตเดฑเต เดฏเตเดเตเดคเดฟเดเตเดเต เด
เดจเตเดธเตเดคเดฎเดพเดฏเดฟ, เด เดเดเตเดเดคเตเดคเดฟเดฒเต เดเตเดกเดฟเดฒเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดเตเดณเดตเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดเดเดเดเตเดเตพ เด
เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเตเดเตเดเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฃเต เดฒเดเตเดทเตเดฏเดฎเดฟเดเตเดจเตเดจเดคเต. last_name
.
เดเดเตเดเตพ เดกเดพเดฑเตเดฑ เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเต last_name
, เดเตเดเดพเดคเต surname.
เดเตเดเดพเดคเต, เดเดเตเดเตพ เดเตเดณเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจเต last_name
, เด
เดคเต เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดธเดเตเดคเดฎเดพเดฏเดคเดฟเดจเดพเตฝ. เดตเดฟเดจเตเดฏเดพเดธ เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเดฟเตฝ, เดเดฟเดฒ เด
เดญเตเดฏเตผเดคเตเดฅเดจเดเตพ เดเดคเตเดตเดฐเต เด
เดชเตโเดเตเดฐเตเดกเต เดเตเดฏเตเดฏเดพเดคเตเดค เดเดฐเต เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเดฒเตเดเต เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดคเตเดเตเดเดพเด.
/*
* Copyright 2012-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package sample.flyway;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
private String firstName;
private String surname;
public String getFirstName() {
return this.firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getSurname() {
return this.surname;
}
public void setSurname(String lastname) {
this.surname = lastname;
}
@Override
public String toString() {
return "Person [firstName=" + this.firstName + ", surname=" + this.surname
+ "]";
}
}
เดเดเตเดเด 4: เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเดพเดธเตเดฑเตเดฑเต_เดจเตเดฏเดฟเด เดจเตเดเตเดเดเดเตเดฏเตเดฏเตเดจเตเดจเต
เด
เดชเตเดฒเดฟเดเตเดเตเดทเตป เดชเดคเดฟเดชเตเดชเต: 4.0.0
DB เดชเดคเดฟเดชเตเดชเต: v4
เด เดญเดฟเดชเตเดฐเดพเดฏเด
เดชเดคเดฟเดชเตเดชเต เดเตเดกเต เดตเดธเตเดคเตเดค เดเดพเดฐเดฃเด 3.0.0
เดเตเดณเด เดเดชเดฏเตเดเดฟเดเตเดเดฟเดฒเตเดฒ last_name
, เดจเดฎเตเดฎเตพ เดคเดฟเดฐเดฟเดเตเดเต เดชเตเดฏเดพเตฝ เดเดเตเดธเดฟเดเตเดฏเตเดทเตป เดธเดฎเดฏเดคเตเดคเต เดฎเตเดถเดฎเดพเดฏ เดเดจเตเดจเตเด เดธเดเดญเดตเดฟเดเตเดเดฟเดฒเตเดฒ 3.0.0
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเต เดเตเดณเด เดจเตเดเตเดเด เดเตเดฏเตเดคเดคเดฟเดจเต เดถเตเดทเด.
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดเตเดธเดฟเดเตเดฏเตเดทเตป เดฒเตเดเตเดเตพ
We will do it in the following way:
01) Run 1.0.0
02) Wait for the app (1.0.0) to boot
03) Generate a person by calling POST localhost:9991/person to version 1.0.0
04) Run 2.0.0
05) Wait for the app (2.0.0) to boot
06) Generate a person by calling POST localhost:9991/person to version 1.0.0
07) Generate a person by calling POST localhost:9992/person to version 2.0.0
08) Kill app (1.0.0)
09) Run 3.0.0
10) Wait for the app (3.0.0) to boot
11) Generate a person by calling POST localhost:9992/person to version 2.0.0
12) Generate a person by calling POST localhost:9993/person to version 3.0.0
13) Kill app (3.0.0)
14) Run 4.0.0
15) Wait for the app (4.0.0) to boot
16) Generate a person by calling POST localhost:9993/person to version 3.0.0
17) Generate a person by calling POST localhost:9994/person to version 4.0.0
Starting app in version 1.0.0
Generate a person in version 1.0.0
Sending a post to 127.0.0.1:9991/person. This is the response:
{"firstName":"52b6e125-4a5c-429b-a47a-ef18bbc639d2","lastName":"52b6e125-4a5c-429b-a47a-ef18bbc639d2"}
Starting app in version 2.0.0
Generate a person in version 1.0.0
Sending a post to 127.0.0.1:9991/person. This is the response:
{"firstName":"e41ee756-4fa7-4737-b832-e28827a00deb","lastName":"e41ee756-4fa7-4737-b832-e28827a00deb"}
Generate a person in version 2.0.0
Sending a post to 127.0.0.1:9992/person. This is the response:
{"firstName":"0c1240f5-649a-4bc5-8aa9-cff855f3927f","lastName":"0c1240f5-649a-4bc5-8aa9-cff855f3927f","surname":"0c1240f5-649a-4bc5-8aa9-cff855f3927f"}
Killing app 1.0.0
Starting app in version 3.0.0
Generate a person in version 2.0.0
Sending a post to 127.0.0.1:9992/person. This is the response:
{"firstName":"74d84a9e-5f44-43b8-907c-148c6d26a71b","lastName":"74d84a9e-5f44-43b8-907c-148c6d26a71b","surname":"74d84a9e-5f44-43b8-907c-148c6d26a71b"}
Generate a person in version 3.0.0
Sending a post to 127.0.0.1:9993/person. This is the response:
{"firstName":"c6564dbe-9ab5-40ae-9077-8ae6668d5862","surname":"c6564dbe-9ab5-40ae-9077-8ae6668d5862"}
Killing app 2.0.0
Starting app in version 4.0.0
Generate a person in version 3.0.0
Sending a post to 127.0.0.1:9993/person. This is the response:
{"firstName":"cbe942fc-832e-45e9-a838-0fae25c10a51","surname":"cbe942fc-832e-45e9-a838-0fae25c10a51"}
Generate a person in version 4.0.0
Sending a post to 127.0.0.1:9994/person. This is the response:
{"firstName":"ff6857ce-9c41-413a-863e-358e2719bf88","surname":"ff6857ce-9c41-413a-863e-358e2719bf88"}
DB เดฎเดพเดฑเตเดจเตเดจเต
เดคเดพเดฐเดคเดฎเตเดฏเตเดจ v3
เดเดเตเดเตพ เดเตเดณเด เดจเตเดเตเดเด เดเตเดฏเตเดฏเตเดจเตเดจเต last_name
เดเตเดเดพเดคเต เดตเดฟเดเตเดเตเดชเตเดฏ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดเตเดเตพ เดเตเตผเดเตเดเตเด.
-- REMOVE THE COLUMN
ALTER TABLE PERSON DROP last_name;
-- ADD CONSTRAINTS
UPDATE PERSON SET surname='' WHERE surname IS NULL;
ALTER TABLE PERSON ALTER COLUMN surname VARCHAR NOT NULL;
เดเตเดกเต เดฎเดพเดฑเตเดฑเดเตเดเตพ
เดเตเดกเดฟเตฝ เดฎเดพเดฑเตเดฑเดเตเดเดณเตเดจเตเดจเตเดฎเดฟเดฒเตเดฒ.
เดคเตเดฐเตเดฎเดพเดจเด
เดจเดฟเดฐเดตเดงเดฟ เดฌเดพเดเตเดเตโเดตเตเตผเดกเต-เด เดจเตเดฏเตเดเตเดฏ เดตเดฟเดจเตเดฏเดพเดธเดเตเดเตพ เดจเดเดคเตเดคเดฟ เดเดเตเดเตพ เดฌเดพเดเตเดเตโเดตเตเตผเดกเต-เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดเตเดณเดคเตเดคเดฟเตปเตเดฑเต เดชเตเดฐเต เดฎเดพเดฑเตเดฑเด เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏเดฟ เดชเตเดฐเดฏเตเดเดฟเดเตเดเต. เดจเดเดคเตเดคเดฟเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเดเต เดเดฐเต เดธเดเดเตเดฐเดนเด เดเตเดตเดเต:
- เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดชเดคเดฟเดชเตเดชเดฟเตปเตเดฑเต เดตเดฟเดจเตเดฏเดพเดธเด
1.0.0
ัv1
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดธเตเดเตเดฎ (เดจเดฟเดฐเดฏเตเดเต เดชเตเดฐเต =last_name
) - เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดชเดคเดฟเดชเตเดชเดฟเตปเตเดฑเต เดตเดฟเดจเตเดฏเดพเดธเด
2.0.0,
เดเดคเดฟเตฝ เดกเดพเดฑเตเดฑ เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเตlast_name
ะธsurname
. เด เดชเตเดเตเดทเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจเตlast_name
. เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดชเดคเดฟเดชเตเดชเดฟเดฒเดพเดฃเตv2
เดชเตเดฒเตเดณเตเดณ เดจเดฟเดฐเดเตพ เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเตlast_name
, เดเดชเตเดชเดsurname. surname
l เตปเตเดฑเต เดเดฐเต เดชเดเตผเดชเตเดชเดพเดฃเตast_name
. (เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด: เด เดจเดฟเดฐเดฏเตเดเตเดเต เด เดธเดพเดงเตเดตเดพเดฏ เดชเดฐเดฟเดฎเดฟเดคเดฟ เดเดฃเตเดเดพเดเดฐเตเดคเต) - เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดชเดคเดฟเดชเตเดชเดฟเตปเตเดฑเต เดตเดฟเดจเตเดฏเดพเดธเด
3.0.0
, เด เดคเดฟเตฝ เดฎเดพเดคเตเดฐเด เดกเดพเดฑเตเดฑ เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเตsurname
เดเตเดเดพเดคเต เดเตเดเตเดเดฌเดชเตเดชเตเดฐเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจเต. เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดจเต เดธเดเดฌเดจเตเดงเดฟเดเตเดเดฟเดเดคเตเดคเตเดณเด, เด เดตเดธเดพเดจ เดฎเตเดเตเดฐเตเดทเตป เดจเดเดเตเดเตเดจเตเดจเตlast_name
ะฒsurname
. เดเดฐเต เดชเดฐเดฟเดฎเดฟเดคเดฟเดฏเตเด NULL เด เดฒเตเดฒ เดจเดฟเดจเตเดจเต เดจเตเดเตเดเด เดเตเดฏเตเดคเตlast_name
. เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดเดชเตเดชเตเตพ เดชเดคเดฟเดชเตเดชเดฟเดฒเดพเดฃเตv3
- เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดชเดคเดฟเดชเตเดชเดฟเตปเตเดฑเต เดตเดฟเดจเตเดฏเดพเดธเด
4.0.0
- เดเตเดกเดฟเตฝ เดฎเดพเดฑเตเดฑเดเตเดเดณเตเดจเตเดจเตเด เดตเดฐเตเดคเตเดคเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒ. เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดตเดฟเดจเตเดฏเดพเดธเดv4
, เด เดคเต เดจเตเดเตเดเด เดเตเดฏเตเดฏเตเดจเตเดจเตlast_name
. เดเดตเดฟเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเตเดเตเดเต เดจเดทเตโเดเดฎเดพเดฏ เดเดคเตเดเตเดเดฟเดฒเตเด เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดเตเดเตพ เดเตเตผเดเตเดเดพเตป เดเดดเดฟเดฏเตเด.
เด เดธเดฎเตเดชเดจเด เดชเดฟเดจเตเดคเตเดเดฐเตเดจเตเดจเดคเดฟเดฒเตเดเต, เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต/เด เดชเตเดฒเดฟเดเตเดเตเดทเตป เดเตเดเดชเดพเดฑเตเดฑเดฟเดฌเดฟเดฒเดฟเดฑเตเดฑเดฟ เดคเดเตผเดเตเดเดพเดคเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดเดฐเต เดชเดคเดฟเดชเตเดชเต เดคเดฟเดฐเดฟเดเต เดเตเดฃเตเดเตเดตเดฐเดพเตป เดเดดเดฟเดฏเตเด.
เดเตเดพเดกเต
เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฒเตเดฒเดพ เดเตเดกเตเดเดณเตเด เดเดตเดฟเดเต เดฒเดญเตเดฏเดฎเดพเดฃเต
เดชเดฆเตเดงเดคเดฟเดเตพ
เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟ เดเตเดฒเตเตบ เดเตเดฏเตเดค เดถเตเดทเด, เดจเดฟเดเตเดเตพ เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดซเตเตพเดกเตผ เดเดเดจ เดเดพเดฃเตเด.
โโโ boot-flyway-v1 - 1.0.0 version of the app with v1 of the schema
โโโ boot-flyway-v2 - 2.0.0 version of the app with v2 of the schema (backward-compatible - app can be rolled back)
โโโ boot-flyway-v2-bad - 2.0.0.BAD version of the app with v2bad of the schema (backward-incompatible - app cannot be rolled back)
โโโ boot-flyway-v3 - 3.0.0 version of the app with v3 of the schema (app can be rolled back)
โโโ boot-flyway-v4 - 4.0.0 version of the app with v4 of the schema (app can be rolled back)
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ
เดเตเดตเดเตเดฏเตเดณเตเดณ เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเดณเดฟเตฝ เดตเดฟเดตเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดจเดฟเดเตเดเตพเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด, เด เดคเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดชเดฟเดจเตเดจเดพเดเตเด-เด เดจเตเดฏเตเดเตเดฏเดตเตเด เด เดจเตเดฏเตเดเตเดฏเดฎเดฒเตเดฒเดพเดคเตเดคเดคเตเดฎเดพเดฏ เดฎเดพเดฑเตเดฑเดเตเดเตพ เดเดพเดฃเดฟเดเตเดเตเด.
เดเดพเดฃเดพเตป เดชเดฟเดจเตเดจเดฟเดฒเตเดเตเดเต เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดฎเดพเดฑเตเดฑเดเตเดเดณเตเดณเตเดณ เดเตเดธเต, เดฑเตบ:
./scripts/scenario_backward_compatible.sh
เดเดพเดฃเดพเดจเตเด เดชเดฟเดจเตเดจเดฟเดฒเตเดเตเดเต เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเดพเดคเตเดค เดฎเดพเดฑเตเดฑเดเตเดเดณเตเดณเตเดณ เดเตเดธเต, เดฑเตบ:
./scripts/scenario_backward_incompatible.sh
เดธเตเดชเตเดฐเดฟเดเดเต เดฌเตเดเตเดเต เดธเดพเดฎเตเดชเดฟเตพ เดซเตเดฒเตเดตเต
เดเดฒเตเดฒเดพ เดเดฆเดพเดนเดฐเดฃเดเตเดเดณเตเด เดเดเตเดคเตเดคเดคเดพเดฃเต Spring Boot Sample Flyway.
เดจเดฟเดเตเดเตพเดเตเดเต เดเดจเตเดจเต เดจเตเดเตเดเดพเดตเตเดจเตเดจเดคเดพเดฃเต http://localhost:8080/flyway
, เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดเดฃเตเดเต.
เด เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ H2 เดเตบเดธเตเดณเตเด เดเตพเดชเตเดชเตเดเตเดจเตเดจเต (at http://localhost:8080/h2-console
) เด
เดคเดฟเดจเดพเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดจเดฟเดฒ เดเดพเดฃเดพเดจเดพเดเตเด (เดกเดฟเดซเตเตพเดเตเดเต jdbc URL เดเดฃเต jdbc:h2:mem:testdb
).
เด เดงเดฟเดเดฎเดพเดฏเดฟ
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดฑเตเดซเดพเดเตเดเดฑเดฟเดเดเต เดชเดพเดฑเตเดฑเตเดฃเตเดเตพ เดคเตเดเตผเดเตเดเดฏเดพเดฏ เดกเตเดฒเดฟเดตเดฑเดฟ
เดเดเตเดเดณเตเดเต เดฌเตเดฒเตเดเดฟเดฒเต เดฎเดฑเตเดฑเต เดฒเตเดเดจเดเตเดเดณเตเด เดตเดพเดฏเดฟเดเตเดเตเด:
เดเตเดฌเตเตผเดจเตเดฑเตเดฑเดธเต: เดธเดฟเดธเตเดฑเตเดฑเด เดฑเดฟเดธเตเดดเตโเดธเต เดฎเดพเดจเตเดเตโเดฎเตเดจเตเดฑเต เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเดฃเตเดเดคเต เดเดจเตเดคเตเดเตเดฃเตเดเต? เดเตเดเตเดเตบ เดชเตเดชเตเดชเตเดฒเตเตป - เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต-เดจเตเดฑเตเดฑเตเดตเต เดชเตเดชเตเดชเตเดฒเตเดจเตเดเตพ Nginx-เดจเดพเดฏเดฟ เดกเตเดจเดพเดฎเดฟเดเต เดฎเตเดกเตเดฏเตเดณเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเต เดนเดพเดทเดฟเดเตเตผเดชเตเดชเต เดเตเตบเดธเดฒเดฟเดจเตเดฑเต เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดเดคเดฑเตเดธเตเดทเดจเตเดฑเต เดเดฎเตเดเด ClickHouse-เตฝ เดจเดฟเดจเตเดจเต เด เดจเตเดฎเดคเดฟเดฏเดฟเดฒเตเดฒเดพเดคเต ClickHouse-เดฒเตเดเตเดเต เด เดจเตเดฎเดคเดฟเดฏเตเดเตเดฏเตเดณเตเดณ เดฎเตเดเตเดฐเตเดทเตป เดเดจเตเดคเดฟเดฒเตเดเตเดเต เดจเดฏเดฟเดเตเดเต? Nginx เดตเตเดฌเต เดธเตเตผเดตเดฑเดฟเดจเตเดชเตเดชเด เดธเตเดชเตเดฐเดฟเดเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเตเดเต เดฌเตเดฒเต-เดเตเดฐเตเตป เดตเดฟเดจเตเดฏเดพเดธเด
เด เดตเดฒเดเดฌเด: www.habr.com