เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต: เดฎเต‡เด•เตเด•เต เดซเดฏเดฒเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต

เดเดคเดพเดจเตเด‚ เดตเตผเดทเด™เตเด™เตพ เด•เต‚เดŸเตเดฎเตเดชเต‹เตพ, เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เดตเดฟเด•เดธเดจ เดตเตเดฏเดตเดธเดพเดฏเด‚ เด’เดฐเต เดฎเดพเดคเตƒเด•เดพเดชเดฐเดฎเดพเดฏ เดฎเดพเดฑเตเดฑเดคเตเดคเดฟเดจเต เดตเดฟเดงเต‡เดฏเดฎเดพเด•เตเดจเตเดจเต. เดˆ เดชเตเดฐเดคเดฟเดญเดพเดธเด™เตเด™เดณเดฟเดฒเตŠเดจเตเดจเต เดฎเตˆเด•เตเดฐเต‹ เดธเตผเดตเต€เดธเดธเต เดŽเดจเตเดจ เด†เดถเดฏเดคเตเดคเดฟเตฝ เดตเตผเดฆเตเดงเดฟเดšเตเดšเตเดตเดฐเตเดจเตเดจ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเดพเดฏเดฟ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเดพเด‚. เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏเดฏเดฒเตเดฒเต†เด™เตเด•เดฟเดฒเตเด‚, เด…เดŸเตเดคเตเดคเดฟเดŸเต†เดฏเดพเดฃเต เด…เดคเดฟเดจเตเดฑเต† เดœเดจเดชเตเดฐเต€เดคเดฟ เด…เด•เตเดทเดฐเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด‰เดฏเตผเดจเตเดจเดคเต.

เดตเดฒเดฟเดฏ เดฎเต‹เดฃเต‹เดฒเดฟเดคเตเดคเดฟเด•เตเด•เต เดธเต‡เดตเดจเด™เตเด™เตพ เด‡เดชเตเดชเต‹เตพ เดธเตเดตเดคเดจเตเดคเตเดฐเดตเตเด‚ เดธเตเดตเดฏเด‚เดญเดฐเดฃเดพเดงเดฟเด•เดพเดฐเดฎเตเดณเตเดณเดคเตเดฎเดพเดฏ เดฎเตˆเด•เตเดฐเต‹ เดธเตผเดตเต€เดธเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเต. เด’เดฐเต เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเดฟเดจเต† เด’เดฐเตŠเดฑเตเดฑ เดชเตเดฐเดคเตเดฏเต‡เด• เด‰เดฆเตเดฆเต‡เดถเตเดฏเด‚ เดจเดฟเดฑเดตเต‡เดฑเตเดฑเตเดจเตเดจ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏเดฟ เด•เดฃเด•เตเด•เดพเด•เตเด•เดพเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด‡เดคเต เด’เดฐเต เดฑเดฟเดฒเต‡เดทเดฃเตฝ DBMS, เด’เดฐเต เดŽเด•เตเดธเตเดชเตเดฐเดธเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป, เด’เดฐเต เดธเต‹เตพเตผ เดธเต‡เดตเดจเด‚ เดŽเดจเตเดจเดฟเดตเดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚.

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต: เดฎเต‡เด•เตเด•เต เดซเดฏเดฒเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต

เดˆ เดฆเดฟเดตเดธเด™เตเด™เดณเดฟเตฝ, เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดคเต† เด’เดฐเต เดชเตเดคเดฟเดฏ เดธเต‹เดซเตเดฑเตเดฑเตเดตเต†เดฏเตผ เดธเดฟเดธเตเดฑเตเดฑเด‚ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เดธเด™เตเด•เตฝเดชเตเดชเดฟเด•เตเด•เดพเตป เดชเตเดฐเดฏเดพเดธเดฎเดพเดฃเต. เดˆ เดธเดพเดนเดšเดฐเตเดฏเด‚, เดžเด™เตเด™เดณเต† เดกเต‹เด•เตเด•เตผ เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเดฟเดฒเต‡เด•เตเด•เต เดจเดฏเดฟเด•เตเด•เตเดจเตเดจเต.

เดกเต‹เด•เตเด•เตผ

เดชเตเดฒเดพเดฑเตเดฑเตเดซเต‹เด‚ เดกเต‹เด•เตเด•เตผ, เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เดณเตเดŸเต† เดตเดฟเด•เดธเดจเดคเตเดคเดฟเดฒเตเด‚ เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดฒเตเด‚, เดเดคเดพเดฃเตเดŸเต เด’เดฐเต เดตเตเดฏเดตเดธเดพเดฏ เดจเดฟเดฒเดตเดพเดฐเดฎเดพเดฏเดฟ เดฎเดพเดฑเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดนเตˆเดฌเตเดฐเดฟเดกเต เดฎเต‡เด˜เด™เตเด™เตพ เดฎเตเดคเตฝ เดŽเดกเตเดœเต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เตพ เดตเดฐเต† - เดเดคเต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเดฒเตเด‚ เด…เดจเดพเดฏเดพเดธเดฎเดพเดฏเดฟ เดเดคเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเดจเตเด‚ เด…เดต เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เด“เตผเด—เดจเตˆเดธเต‡เดทเดจเตเด•เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต‡เดฏเตŠเดฐเต เดธเตเดตเดคเดจเตเดคเตเดฐ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตˆเดธเต‡เดทเตป เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเดพเดฃเต เดกเต‹เด•เตเด•เตผ เดŽเดจเตเดจเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚.

เดกเต‹เด•เตเด•เตผ เดฐเดšเดฟเด•เตเด•เตเด•

เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏ เดกเต‹เด•เตเด•เตผ เดฐเดšเดฟเด•เตเด•เตเด• เดฎเตพเดŸเตเดŸเดฟ-เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด’เดฐเต เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตฝ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเตเดฐเดทเตเดŸเดพเดตเดฟเดจเต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดคเตเดฐ เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚.

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเต‡เดตเดจเด™เตเด™เตพ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดชเดฐเดธเตเดชเดฐเด‚ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เดธเด‚เด˜เดŸเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด’เดฐเต YAML เดซเดฏเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเดฟเดจเดพเตฝ เดฎเตพเดŸเตเดŸเดฟ-เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดกเต‹เด•เตเด•เตผ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เด’เดฐเต เด‰เดชเด•เดฐเดฃเดฎเดพเดฃเต เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต.

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต: เดฎเต‡เด•เตเด•เต เดซเดฏเดฒเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต
เด’เดฐเต เดนเต‹เดธเตเดฑเตเดฑเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดฐเดฃเตเดŸเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ

เด—เตเดจเต เดฎเต‡เด•เตเด•เต

เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ make, เด…เดŸเดฟเดธเตเดฅเดพเดจเดชเดฐเดฎเดพเดฏเดฟ เดธเต‹เดดเตเดธเต เด•เต‹เดกเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เดณเตเดŸเต†เดฏเตเด‚ เดจเดฟเตผเดฎเตเดฎเดพเดฃเด‚ เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เด‰เดชเด•เดฐเดฃเดฎเดพเดฃเต. เดชเตŠเดคเตเดตเต‡, เดจเดฎเตเด•เตเด•เต เด…เด™เตเด™เดจเต† เดชเดฑเดฏเดพเด‚ make เดšเดฟเดฒ เด‡เตปเดชเตเดŸเตเดŸเต เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเตเด•เดณเต† เดšเดฟเดฒ เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเต เดซเต‹เดฎเดฟเดฒเต‡เด•เตเด•เต, เดšเดฟเดฒ เดฒเด•เตเดทเตเดฏเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เด…เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เด•เดฎเดพเตปเดกเตเด•เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเต เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจ เดเดคเต เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเตเด•เตเด•เตเด‚ เด‡เดคเต เดฌเดพเดงเด•เดฎเดพเดฃเต. เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด•เดฎเดพเตปเดกเตเด•เตพ docker-compose เด…เดฎเต‚เตผเดคเตเดค เดฒเด•เตเดทเตเดฏเด™เตเด™เดณเดพเดฏเดฟ เดฐเต‚เดชเดพเดจเตเดคเดฐเดชเตเดชเต†เดŸเตเด‚ (เดซเต‹เตบ เดฒเด•เตเดทเตเดฏเด™เตเด™เตพ).

เดชเดฐเดฟเดชเดพเดŸเดฟ เดชเดฑเดฏเดพเตป make เด…เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดŽเดจเตเดคเดพเดฃเต เดตเต‡เดฃเตเดŸเดคเต†เดจเตเดจเต, เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดซเดฏเตฝ เด†เดตเดถเตเดฏเดฎเดพเดฃเต Makefile.

เดžเด™เตเด™เดณเตเดŸเต† Makefile เดชเดคเดฟเดตเต เด•เดฎเดพเตปเดกเตเด•เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚ docker ะธ docker-compose, เดจเดฟเดฐเดตเดงเดฟ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดณเตเดณเดคเดพเดฃเต. เด…เดคเดพเดฏเดคเต, เดžเด™เตเด™เตพ เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เด…เดคเต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดจเดฟเตผเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเดฒเต‡เด•เตเด•เต เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดฒเต‹เด—เดฟเตป เดธเด‚เด˜เดŸเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดฒเต‹เด—เตเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดธเดฎเดพเดจเดฎเดพเดฏ เดฎเดฑเตเดฑเต เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเดฟเดจเดพเดฏเดฟ เดธเดพเดงเดพเดฐเดฃ เด‰เดชเดฏเต‹เด— เด•เต‡เดธเตเด•เตพ

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด˜เดŸเด•เด™เตเด™เดณเตเดณเตเดณ เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดจเดฎเตเด•เตเด•เต เดธเด™เตเด•เตฝเดชเตเดชเดฟเด•เตเด•เดพเด‚:

  • TimescaleDB เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต (Postgres).
  • Express.js เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป.
  • เดชเดฟเด‚เด—เต (เดตเต†เดฑเตเด‚ เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ, เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเต เด’เดจเตเดจเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒ).

เดˆ เด†เดชเตเดชเดฟเดจเต 3 เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเด‚ เด’เดฐเต เดซเดฏเดฒเตเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต docker-compose, เดˆ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เด‡เดคเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด“เดฐเต‹ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดจเตเด‚ เดตเตเดฏเดคเตเดฏเดธเตเดค เดŸเดšเตเดšเต เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เตพ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต timescale เด…เดตเตผ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด…เดคเต‡ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดธเดพเดงเดฟเด•เตเด•เตเด‚. เด…เดคเดพเดฏเดคเต, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเดŸเดคเตเดคเดพเตป เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต:

  • Postgres เดทเต†เดฒเตเดฒเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเดจเตเดจเต.
  • เดชเดŸเตเดŸเดฟเด•เด•เดณเตเดŸเต† เด‡เดฑเด•เตเด•เตเดฎเดคเดฟเดฏเตเด‚ เด•เดฏเดฑเตเดฑเตเดฎเดคเดฟเดฏเตเด‚.
  • เดธเตƒเดทเตเดŸเดฟ pg_dump เดชเดŸเตเดŸเดฟเด•เด•เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เตพ.

Express.js เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เดฃเตเดŸเต†เดฏเตเดจเตผ, expressjs, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เดดเดฟเดตเตเด•เตพ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚:

  • เดธเดฟเดธเตเดฑเตเดฑเด‚ เดฒเต‹เด—เดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑ เดจเตฝเด•เตเดจเตเดจเต.
  • เดšเดฟเดฒ เด•เดฎเดพเตปเดกเตเด•เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เดทเต†เดฒเตเดฒเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเด•.

เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเดฎเดพเดฏเดฟ เดธเด‚เดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดžเด™เตเด™เตพ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเตเด•เดดเดฟเดžเตเดžเดพเตฝ, เด† เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเดฎเดพเดฏเดฟ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เดจเดŸเดคเตเดคเดพเดจเตเดณเตเดณ เดธเดฎเดฏเดฎเดพเดฃเดฟเดคเต. เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เด’เดฐเต เด•เดฎเดพเตปเดกเต เด‰เดฃเตเดŸเต docker-compose, เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจ เด“เดชเตเดทเตป -f, เด‡เดคเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดซเดฏเตฝ เด•เตˆเดฎเดพเดฑเดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต docker-compose.yml.

เดˆ เด“เดชเตเดทเดจเตเดฑเต† เด•เดดเดฟเดตเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดซเดฏเดฒเดฟเตฝ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดคเตเดฐเดฎเต‡ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเดฟเดธเตเดฑเตเดฑเดตเตเดฎเดพเดฏเตเดณเตเดณ เด‡เดŸเดชเต†เดŸเตฝ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เด•เดดเดฟเดฏเต‚. docker-compose.yml.

เด•เดฎเดพเตปเดกเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเดฎเดพเดฏเตเดณเตเดณ เด‡เดŸเดชเต†เดŸเดฒเตเด•เตพ เดŽเด™เตเด™เดจเต†เดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดจเต‹เด•เตเด•เดพเด‚ docker-compose. เดจเดฎเตเดฎเตพ เดทเต†เดฒเตเดฒเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเดฃเดฎเต†เดจเตเดจเต เดธเด™เตเด•เตฝเดชเตเดชเดฟเด•เตเด•เตเด• psql, เด…เดชเตเดชเต‹เตพ เด…เดจเตเดฌเดจเตเดง เด•เดฎเดพเตปเดกเตเด•เตพ เด‡เดคเตเดชเต‹เดฒเต†เดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚:

docker-compose -f docker-compose.yml exec timescale psql -Upostgres

เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดคเตเดค เด…เดคเต‡ เด•เดฎเดพเตปเดกเต docker-composeเด’เดชเตเดชเด‚ docker, เด‡เดคเตเดชเต‹เดฒเต† เด•เดพเดฃเดชเตเดชเต†เดŸเดพเด‚:

docker exec -it  edp_timescale_1 psql -Upostgres

เด…เดคเตเดคเดฐเด‚ เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด• docker, เด†เดœเตเดžเดฏเตเด‚ docker-compose, เด‡เดคเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดชเต‡เดฐเตเด•เตพ เด“เตผเดฎเตเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดจเตเดฑเต† เด†เดตเดถเตเดฏเด•เดค เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจเต.

เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เดฐเดฃเตเดŸเต เด•เดฎเดพเตปเดกเตเด•เดณเตเด‚ เด…เดคเตเดฐ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเตเดณเตเดณเดคเดฒเตเดฒ. เดŽเดจเตเดจเดพเตฝ เดžเด™เตเด™เตพ เดฐเต‚เดชเดคเตเดคเดฟเตฝ เด’เดฐเต "เดฑเดพเดชเตเดชเตผ" เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเตฝ Makefile, เด…เดคเต เดจเดฎเตเด•เตเด•เต เดฒเดณเดฟเดคเดฎเดพเดฏ เด•เดฎเดพเตปเดกเตเด•เดณเตเดŸเต† เดฐเต‚เดชเดคเตเดคเดฟเตฝ เด’เดฐเต เด‡เดจเตเดฑเตผเดซเต‡เดธเต เดจเตฝเด•เตเด•เดฏเตเด‚ เดธเดฎเดพเดจเดฎเดพเดฏ เดฆเตˆเตผเด˜เตเดฏเดฎเต‡เดฑเดฟเดฏ เด•เดฎเดพเตปเดกเตเด•เตพ เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚, เด…เดชเตเดชเต‹เตพ เด…เดคเต‡ เดซเดฒเด™เตเด™เตพ เด‡เดคเตเดชเต‹เดฒเต† เดจเต‡เดŸเดพเดจเดพเด•เตเด‚:

make db-shell

เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดตเดณเดฐเต† เดตเตเดฏเด•เตเดคเดฎเดพเดฃเต Makefile เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดตเดณเดฐเต† เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด•เตเดจเตเดจเต!

เดชเตเดฐเดตเตผเดคเตเดคเดจ เดฎเดพเดคเตƒเด•

เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดกเดฏเด—เตเดฐเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ, เดžเด™เตเด™เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚ docker-compose.yml:

version: '3.3'
services:
    api:
        build: .
        image: mywebimage:0.0.1
        ports:
            - 8080:8080
        volumes:
            - /app/node_modules/
        depends_on:
            - timescale
        command: npm run dev
        networks:
            - webappnetwork
    timescale:
        image: timescale/timescaledb-postgis:latest-pg11
        environment:
          - POSTGRES_USER=postgres
          - POSTGRES_PASSWORD=postgres
        command: ["postgres", "-c", "log_statement=all", "-c", "log_destination=stderr"]
        volumes:
          - ./create_schema.sql:/docker-entrypoint-initdb.d/create_schema.sql
        networks:
           - webappnetwork
    ping:
       image: willfarrell/ping
       environment:
           HOSTNAME: "localhost"
           TIMEOUT: 300
networks:
   webappnetwork:
       driver: bridge

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฎเดพเดจเต‡เดœเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เด…เดคเต เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเดฎเดพเดฏเดฟ เดธเด‚เดตเดฆเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚, เดžเด™เตเด™เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดซเดฏเตฝ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด‚ Makefile:

THIS_FILE := $(lastword $(MAKEFILE_LIST))
.PHONY: help build up start down destroy stop restart logs logs-api ps login-timescale login-api db-shell
help:
        make -pRrq  -f $(THIS_FILE) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
build:
        docker-compose -f docker-compose.yml build $(c)
up:
        docker-compose -f docker-compose.yml up -d $(c)
start:
        docker-compose -f docker-compose.yml start $(c)
down:
        docker-compose -f docker-compose.yml down $(c)
destroy:
        docker-compose -f docker-compose.yml down -v $(c)
stop:
        docker-compose -f docker-compose.yml stop $(c)
restart:
        docker-compose -f docker-compose.yml stop $(c)
        docker-compose -f docker-compose.yml up -d $(c)
logs:
        docker-compose -f docker-compose.yml logs --tail=100 -f $(c)
logs-api:
        docker-compose -f docker-compose.yml logs --tail=100 -f api
ps:
        docker-compose -f docker-compose.yml ps
login-timescale:
        docker-compose -f docker-compose.yml exec timescale /bin/bash
login-api:
        docker-compose -f docker-compose.yml exec api /bin/bash
db-shell:
        docker-compose -f docker-compose.yml exec timescale psql -Upostgres

เด‡เดตเดฟเดŸเต† เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฎเดฟเด•เตเด• เด•เดฎเดพเตปเดกเตเด•เดณเตเด‚ เดŽเดฒเตเดฒเดพ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพเด•เตเด•เตเด‚ เดฌเดพเดงเด•เดฎเดพเดฃเต, เดชเด•เตเดทเต‡ เด“เดชเตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต c= เด’เดฐเต เด•เดฎเดพเตปเดกเดฟเดจเตเดฑเต† เดตเตเดฏเดพเดชเตเดคเดฟ เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ Makefile เดคเดฏเตเดฏเดพเดฑเดพเดฃเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เด‡เดคเตเดชเต‹เดฒเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚:

  • make help โ€” เดฒเดญเตเดฏเดฎเดพเดฏ เดŽเดฒเตเดฒเดพ เด•เดฎเดพเตปเดกเตเด•เดณเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเตฝเด•เตเดจเตเดจเต make.

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต: เดฎเต‡เด•เตเด•เต เดซเดฏเดฒเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต
เดฒเดญเตเดฏเดฎเดพเดฏ เด•เดฎเดพเตปเดกเตเด•เดณเดฟเตฝ เดธเดนเดพเดฏเด‚

  • make build - เดจเดฟเดจเตเดจเต เด’เดฐเต เดšเดฟเดคเตเดฐเด‚ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเดจเตเดจเต Dockerfile. เดžเด™เตเด™เดณเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพ เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดšเดฟเดคเตเดฐเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต timescale ะธ ping. เดŽเดจเตเดจเดพเตฝ เดšเดฟเดคเตเดฐเด‚ api เดžเด™เตเด™เตพ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เดถเต‡เด–เดฐเดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เด•เดฎเดพเตปเดกเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดคเดคเดฟเดจเต เดถเต‡เดทเด‚ เด‡เดคเต เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดšเต†เดฏเตเดฏเตเด‚.

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต: เดฎเต‡เด•เตเด•เต เดซเดฏเดฒเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต
เด’เดฐเต เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต

  • make start - เดŽเดฒเตเดฒเดพ เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เดณเตเด‚ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต. เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดฎเดพเดคเตเดฐเด‚ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚ make start c=timescale.

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต: เดฎเต‡เด•เตเด•เต เดซเดฏเดฒเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต
เดŸเตˆเด‚เดธเตโ€Œเด•เต†เดฏเดฟเตฝ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต: เดฎเต‡เด•เตเด•เต เดซเดฏเดฒเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต
เด’เดฐเต เดชเดฟเด‚เด—เต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

  • make login-timescale - เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเดจเตเดฑเต† เดฌเดพเดทเต เดธเต†เดทเดจเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเด• timescale.

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต: เดฎเต‡เด•เตเด•เต เดซเดฏเดฒเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต
เดŸเตˆเด‚เดธเตโ€Œเด•เต†เดฏเดฟเตฝ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตฝ เดฌเดพเดทเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต

  • make db-shell - เดชเตเดฐเดตเต‡เดถเดจเด‚ psql เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเตฝ timescale เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดจเต†เดคเดฟเดฐเต† SQL เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป.

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต: เดฎเต‡เด•เตเด•เต เดซเดฏเดฒเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต
เดŸเตˆเด‚เดธเตโ€Œเด•เต†เดฏเดฟเตฝเดกเต เดฌเดฟ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตฝ psql เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต

  • make stop - เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ เดจเดฟเตผเดคเตเดคเตเดจเตเดจเต.

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต: เดฎเต‡เด•เตเด•เต เดซเดฏเดฒเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต
เด’เดฐเต เดŸเตˆเด‚เดธเตเด•เต†เดฏเดฟเตฝ เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดจเดฟเตผเดคเตเดคเตเดจเตเดจเต

  • make down - เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ เดจเดฟเตผเดคเตเดคเตเด•เดฏเตเด‚ เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•. เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโ€ŒเดŸ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดจเต€เด•เตเด•เด‚เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจ เดˆ เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต - make down c=timescale เด…เดฅเดตเดพ make down c=api.

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต: เดฎเต‡เด•เตเด•เต เดซเดฏเดฒเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต
เดŽเดฒเตเดฒเดพ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเด‚ เดจเดฟเตผเดคเตเดคเตเด•เดฏเตเด‚ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดซเดฒเด™เตเด™เตพ

เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต เดžเด™เตเด™เตพเด•เตเด•เต เดธเดฎเตเดชเดจเตเดจเดฎเดพเดฏ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เด•เดฎเดพเตปเดกเตเด•เตพ เดจเตฝเด•เตเดจเตเดจเตเดฃเตเดŸเต†เด™เตเด•เดฟเดฒเตเด‚, เดšเดฟเดฒเดชเตเดชเต‹เตพ เดˆ เด•เดฎเดพเตปเดกเตเด•เตพ เดฆเตˆเตผเด˜เตเดฏเดฎเต‡เดฑเดฟเดฏเดคเตเด‚ เด“เตผเดฎเตเดฎเดฟเด•เตเด•เดพเตป เดชเตเดฐเดฏเดพเดธเดฎเตเดณเตเดณเดคเตเดฎเดพเด•เดพเด‚.

เด‰เดชเดฏเต‹เด— เดฐเต€เดคเดฟ Makefile เด’เดฐเต เดซเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเดฎเดพเดฏเดฟ เดตเต‡เด—เดคเตเดคเดฟเดฒเตเด‚ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเดฒเตเด‚ เด‡เดŸเดชเดดเด•เดพเตป เดžเด™เตเด™เดณเต† เดธเดนเดพเดฏเดฟเดšเตเดšเต docker-compose.yml. เด…เดคเดพเดฏเดคเต, เดžเด™เตเด™เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดตเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเดพเดฃเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต:

  • เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเดฎเดพเดฏเดฟ เดฎเดพเดคเตเดฐเดฎเต‡ เดกเดตเดฒเดชเตเดชเตผ เดธเด‚เดตเดฆเดฟเด•เตเด•เตเด•เดฏเตเดณเตเดณเต‚ docker-compose.yml, เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดฎเดฑเตเดฑเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เดœเต‹เดฒเดฟเดฏเดฟเตฝ เด‡เดŸเดชเต†เดŸเตเดจเตเดจเดฟเดฒเตเดฒ.
  • เด’เดฐเต เดจเดฟเดถเตเดšเดฟเดค เด•เดฎเดพเตปเดกเต เดฎเดฑเดจเตเดจเตเดชเต‹เดฏ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฎเดพเตปเดกเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเด‚ make help เดฒเดญเตเดฏเดฎเดพเดฏ เด•เดฎเดพเตปเดกเตเด•เดณเดฟเตฝ เดธเดนเดพเดฏเด‚ เดจเต‡เดŸเตเด•.
  • เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดฒเต‹เด—เต เดŽเตปเดŸเตเดฐเดฟเด•เตพ เดจเต‡เดŸเตเดจเตเดจเดคเต‹ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต‹ เดชเต‹เดฒเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเดŸเดคเตเดคเดพเตป เดจเดฟเด™เตเด™เตพ เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เดณเตเดŸเต† เดจเต€เดฃเตเดŸ เดฒเดฟเดธเตเดฑเตเดฑเตเด•เตพ เด“เตผเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด’เดฐเต เด•เดฎเดพเตปเดกเต เดชเต‹เดฒเต† docker-compose -f docker-compose.yml exec timescale psql -Upostgres เดฎเดพเดฑเตเดจเตเดจเต make db-shell.
  • เดซเดฏเดฒเต Makefile เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดตเดณเดฐเตเดจเตเดจเดคเดฟเดจเดจเตเดธเดฐเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดคเดฟเดจเต‹เดŸเต เดตเดดเด•เตเด•เดคเตเดคเต‹เดŸเต† เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเดพเตป เด•เดดเดฟเดฏเตเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดฌเดพเด•เตเด•เดชเตเดชเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต‹ เดฎเดฑเตเดฑเต‡เดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดจเดŸเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต‹ เด’เดฐเต เด•เดฎเดพเตปเดกเต เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเต เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต.
  • เดกเดตเดฒเดชเตเดชเตผเดฎเดพเดฐเตเดŸเต† เด’เดฐเต เดตเดฒเดฟเดฏ เดŸเต€เด‚ เดคเดจเตเดจเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ Makefile, เด‡เดคเต เดธเดนเด•เดฐเดฃเด‚ เด•เดพเดฐเตเดฏเด•เตเดทเดฎเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ เดชเดฟเดถเด•เตเด•เตพ เด•เตเดฑเดฏเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดชเดฟ.เดŽเดธเต เดžเด™เตเด™เดณเตเดŸเต† เดšเดจเตเดคเดธเตเดฅเดฒเด‚ เด’เดฐเต เดšเดฟเดคเตเดฐเดฎเตเดฃเตเดŸเต เดกเต‹เด•เตเด•เตผ, เด‡เดคเต เด’เดฑเตเดฑ เด•เตเดฒเดฟเด•เตเด•เดฟเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เด‡เดตเดฟเดŸเต† เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚ VPS เดฒเต‡เด•เตเด•เต. เดŽเดฒเตเดฒเดพ เดชเตเดคเดฟเดฏ เด•เตเดฒเดฏเดจเตเดฑเตเด•เตพเด•เตเด•เตเด‚ 3 เดฆเดฟเดตเดธเดคเตเดคเต† เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดธเต—เดœเดจเตเดฏเดฎเดพเดฏเดฟ เดจเตฝเด•เตเดจเตเดจเต.

เดชเตเดฐเดฟเดฏ เดตเดพเดฏเดจเด•เตเด•เดพเตผ! เดจเดฟเด™เตเด™เตพ เดŽเด™เตเด™เดจเต†เดฏเดพเดฃเต เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต?

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต: เดฎเต‡เด•เตเด•เต เดซเดฏเดฒเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•