1.1 เดฌเดฟเดฒเตเดฏเตบ เดŸเดพเด•เตเดธเดฟ เดฏเดพเดคเตเดฐเด•เตพ: 108-เด•เต‹เตผ เด•เตเดฒเดฟเด•เตเด•เตเดนเต—เดธเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ

เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เด•เต‹เดดเตโ€Œเดธเดฟเดฒเต† เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเด•เตพเด•เตเด•เดพเดฏเดฟ เดชเตเดฐเดคเตเดฏเต‡เด•เด‚ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดฟเดฏเดคเดพเดฃเต "เดกเดพเดฑเตเดฑ เดŽเดžเตเดšเดฟเดจเต€เดฏเตผ".

1.1 เดฌเดฟเดฒเตเดฏเตบ เดŸเดพเด•เตเดธเดฟ เดฏเดพเดคเตเดฐเด•เตพ: 108-เด•เต‹เตผ เด•เตเดฒเดฟเด•เตเด•เตเดนเต—เดธเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ

เด•เตเดฒเดฟเด•เตเด•เตเดน ouse เดธเต เด’เดฐเต เด“เดชเตเดชเตบ เดธเต‹เดดเตเดธเต เด•เต‹เดณเด‚ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด†เดฃเต. เดชเตเดฐเดคเดฟเดฆเดฟเดจเด‚ เดชเดคเดฟเดจเดพเดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เดชเตเดคเดฟเดฏ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเตเดฃเตเดŸเต†เด™เตเด•เดฟเดฒเตเด‚ เดจเต‚เดฑเตเด•เดฃเด•เตเด•เดฟเดจเต เด…เดจเดฒเดฟเดธเตเดฑเตเดฑเตเด•เตพเด•เตเด•เต เดตเดฟเดถเดฆเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดตเต‡เด—เดคเตเดคเดฟเตฝ เด…เดจเตเดตเต‡เดทเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เดฎเดฟเด•เดšเตเดš เด…เดจเตเดคเดฐเต€เด•เตเดทเดฎเดพเดฃเดฟเดคเต. เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดธเด‚เดตเดฟเดงเดพเดจเดคเตเดคเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต—เด•เดฐเตเดฏ เดšเต†เดฒเดตเต เดชเตเดฐเดคเดฟเดตเตผเดทเด‚ $100 เดตเดฐเต† เด‰เดฏเตผเดจเตเดจเต‡เด•เตเด•เดพเด‚, เด‰เดชเดฏเต‹เด—เดคเตเดคเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต เด…เดคเดฟเดจเตเดฑเต† เดชเด•เตเดคเดฟเดฏเตเด‚. เด’เดฐเต เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ, Yandex Metrics-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ ClickHouse เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเดฟเตฝ 10 เดŸเตเดฐเดฟเดฒเตเดฏเตบ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. Yandex เดจเต เดชเตเดฑเดฎเต‡, เดฌเตเดฒเต‚เด‚เดฌเต†เตผเด—เต, Cloudflare เดŽเดจเตเดจเดฟเดตเดฏเดฟเดฒเตเด‚ เด•เตเดฒเดฟเด•เตเด•เตเดนเต—เดธเต เดตเดฟเดœเดฏเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดฟ.

เดฐเดฃเตเดŸเต เดตเตผเดทเด‚ เดฎเตเดฎเตเดชเต เดžเดพเตป เดšเต†เดฒเดตเดดเดฟเดšเตเดšเต เดคเดพเดฐเดคเดฎเตเดฏ เดตเดฟเดถเด•เดฒเดจเด‚ เด’เดฐเต เดฏเดจเตเดคเตเดฐเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เตพ, เด…เดคเต เดฎเดพเดฑเดฟ เดเดฑเตเดฑเดตเตเด‚ เดตเต‡เด—เดฎเต‡เดฑเดฟเดฏ เดžเดพเตป เด•เดฃเตเดŸเดฟเดŸเตเดŸเตเดณเตเดณ เด’เดฐเต เดธเตเดตเดคเดจเตเดคเตเดฐ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ. เด…เดคเดฟเดจเตเดถเต‡เดทเด‚, เด•เดพเดซเตเด•, HDFS, ZStandard เด•เด‚เดชเตเดฐเดทเตป เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เตเดณเตเดณ เดชเดฟเดจเตเดคเตเดฃ เด‰เตพเดชเตเดชเต†เดŸเต†เดฏเตเดณเตเดณ เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเต เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดจเดฟเตผเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ. เด•เดดเดฟเดžเตเดž เดตเตผเดทเด‚ เด…เดตเตผ เด•เดพเดธเตเด•เต‡เดกเดฟเด‚เด—เต เด•เด‚เดชเตเดฐเดทเตป เดฐเต€เดคเดฟเด•เตพเด•เตเด•เตเดณเตเดณ เดชเดฟเดจเตเดคเตเดฃ เดšเต‡เตผเดคเตเดคเต เดกเต†เตฝเดฑเตเดฑ-เตฝ เดจเดฟเดจเตเดจเต-เดกเต†เตฝเดฑเตเดฑ เด•เต‹เดกเดฟเด‚เด—เต เดธเดพเดงเตเดฏเดฎเดพเดฏเดฟ. เดธเดฎเดฏ เดถเตเดฐเต‡เดฃเดฟ เดกเดพเดฑเตเดฑ เด•เด‚เดชเตเดฐเดธเตเดธเตเดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เดกเต†เตฝเดฑเตเดฑ เดŽเตปเด•เต‹เดกเดฟเด‚เด—เต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด—เต‡เดœเต เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดจเดจเตเดจเดพเดฏเดฟ เด•เด‚เดชเตเดฐเดธเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚, เดŽเดจเตเดจเดพเตฝ เด•เต—เดฃเตเดŸเดฑเตเด•เตพเด•เตเด•เต เดกเต†เตฝเดฑเตเดฑ-เดฌเตˆ-เดกเต†เตฝเดฑเตเดฑ เดŽเตปเด•เต‹เดกเดฟเด‚เด—เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต. เดจเดฒเตเดฒ เด•เด‚เดชเตเดฐเดทเตป เด•เตเดฒเดฟเด•เตเด•เตเดนเต—เดธเดฟเดจเตเดฑเต† เดชเตเดฐเด•เดŸเดจเดคเตเดคเดฟเดจเตเดฑเต† เดคเดพเด•เตเด•เต‹เดฒเดพเดฏเดฟ เดฎเดพเดฑเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดฎเต‚เดจเตเดจเดพเด‚ เด•เด•เตเดทเดฟ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตพ เด’เดดเดฟเด•เต†เดฏเตเดณเตเดณ C++ เด•เต‹เดกเดฟเดจเตเดฑเต† 170 เด†เดฏเดฟเดฐเด‚ เดตเดฐเดฟเด•เตพ ClickHouse เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดค เดเดฑเตเดฑเดตเตเด‚ เดšเต†เดฑเดฟเดฏ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด•เต‹เดกเตเดฌเต‡เดธเตเด•เดณเดฟเตฝ เด’เดจเตเดจเดพเดฃเดฟเดคเต. เดคเดพเดฐเดคเดฎเตเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเตเดฎเตเดชเต‹เตพ, SQLite เดตเดฟเดคเดฐเดฃเดคเตเดคเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เด•เต‚เดŸเดพเดคเต† 235 เด†เดฏเดฟเดฐเด‚ เดธเดฟ เด•เต‹เดกเตเด•เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต. เดˆ เดŽเดดเตเดคเตเดคเต เดชเตเดฐเด•เดพเดฐเด‚, 207 เดŽเดžเตเดšเดฟเดจเต€เดฏเตผเดฎเดพเตผ ClickHouse-เดฒเต‡เด•เตเด•เต เดธเด‚เดญเดพเดตเดจ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต, เด•เต‚เดŸเดพเดคเต† เด•เดฎเตเดฎเดฟเดฑเตเดฑเตเด•เดณเตเดŸเต† เดคเต€เดตเตเดฐเดค เด…เดŸเตเดคเตเดคเดฟเดŸเต† เดตเตผเดฆเตเดงเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเดฟเดฐเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต.

2017 เดฎเดพเตผเดšเตเดšเดฟเตฝ, เด•เตเดฒเดฟเด•เตเด•เตเดนเต—เดธเต เดจเดŸเดคเตเดคเดพเตป เดคเตเดŸเด™เตเด™เดฟ เดšเต‡เดžเตเดšเตเดฒเต‹เด—เต เดตเดฟเด•เดธเดจเดคเตเดคเดฟเดจเตเดฑเต† เดŸเตเดฐเดพเด•เตเด•เต เดธเต‚เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดŽเดณเตเดชเตเดช เดฎเดพเตผเด—เดฎเดพเดฏเดฟ. เด…เดตเตผ เดฎเต‹เดฃเต‹เดฒเดฟเดคเตเดคเดฟเด•เตเด•เต เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดซเดฏเดฒเดฟเดจเต† เดฎเดพเตผเด•เตเด•เตเดกเต—เตบ เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดซเดฏเตฝ เดถเตเดฐเต‡เดฃเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดญเดœเดฟเดšเตเดšเต. เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เดณเตเด‚ เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเตเด‚ GitHub เดตเดดเดฟ เดŸเตเดฐเดพเด•เตเด•เต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต, เดชเตŠเดคเตเดตเต† เด•เดดเดฟเดžเตเดž เด•เตเดฑเดšเตเดšเต เดตเตผเดทเด™เตเด™เดณเดพเดฏเดฟ เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เด•เต‚เดŸเตเดคเตฝ เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเดตเตเดจเตเดจเดคเดพเดฃเต.

เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, 2-เด•เต‹เตผ เดชเตเดฐเต‹เดธเดธเดฑเตเด•เดณเตเด‚ NVMe เดธเด‚เดญเดฐเดฃเดตเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ AWS EC36-เดฒเต† เด’เดฐเต ClickHouse เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเตเดฑเต† เดชเตเดฐเด•เดŸเดจเด‚ เดžเดพเตป เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป เดชเต‹เด•เตเดจเตเดจเต.

เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต: เดˆ เดชเต‹เดธเตเดฑเตเดฑเต เด†เดฆเตเดฏเด‚ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเดšเตเดšเต เด’เดฐเดพเดดเตเดšเดฏเตเด•เตเด•เต เดถเต‡เดทเด‚, เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดŸ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเดพเตป เดŸเต†เดธเตเดฑเตเดฑเต เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดฎเดฟเด•เดšเตเดš เดซเดฒเด™เตเด™เตพ เดจเต‡เดŸเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต. เดˆ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดชเตเดฐเดคเดฟเดซเดฒเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดˆ เดชเต‹เดธเตเดฑเตเดฑเต เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต.

เด’เดฐเต AWS EC2 เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต

เดˆ เดชเต‹เดธเตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เดžเดพเตป เดฎเต‚เดจเตเดจเต c5d.9xlarge EC2 เดธเดจเตเดฆเตผเดญเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚. เด…เดตเดฏเดฟเตฝ เด“เดฐเต‹เดจเตเดจเดฟเดจเตเด‚ 36 เดตเต†เตผเดšเตเดตเตฝ เดธเดฟเดชเดฟเดฏเต, 72 เดœเดฟเดฌเดฟ เดฑเดพเด‚, 900 เดœเดฟเดฌเดฟ เดŽเตปเดตเดฟเดŽเด‚ เดŽเดธเตเดŽเดธเตเดกเดฟ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต, 10 เดœเดฟเด—เดพเดฌเดฟเดฑเตเดฑเต เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดŽเดจเตเดจเดฟเดต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด†เดตเดถเตเดฏเดพเดจเตเดธเดฐเดฃเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด‡เดฏเต-เดตเต†เดธเตเดฑเตเดฑเต-1,962 เดฎเต‡เด–เดฒเดฏเดฟเตฝ เด“เดฐเต‹เดจเตเดจเดฟเดจเตเด‚ $1/เดฎเดฃเดฟเด•เตเด•เต‚เดฑเดพเดฃเต เดตเดฟเดฒ. เดžเดพเตป เด‰เดฌเตเดฃเตเดŸเต เดธเต†เตผเดตเตผ 16.04 LTS เด†เดฃเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต.

เด“เดฐเต‹ เดฎเต†เดทเต€เดจเตเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เดณเดฟเดฒเตเดฒเดพเดคเต† เดชเดฐเดธเตเดชเดฐเด‚ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เดจเดŸเดคเตเดคเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เดคเดฐเดคเตเดคเดฟเตฝ เดซเดฏเตผเดตเดพเตพ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดŽเดจเตเดฑเต† IPv4 เดตเดฟเดฒเดพเดธเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† SSH เดตเตˆเดฑเตเดฑเตโ€Œเดฒเดฟเดธเตเดฑเตเดฑเต เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดณเตเดณเต‚.

NVMe เดกเตเดฐเตˆเดตเต เดชเตเดฐเดตเตผเดคเตเดคเดจ เดธเดจเตเดจเดฆเตเดงเดคเดฏเดฟเตฝ

ClickHouse เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เด“เดฐเต‹ เดธเต†เตผเดตเดฑเดฟเดฒเตเด‚ เด’เดฐเต NVMe เดกเตเดฐเตˆเดตเดฟเตฝ EXT4 เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดžเดพเตป เด’เดฐเต เดซเดฏเตฝ เดธเดฟเดธเตเดฑเตเดฑเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚.

$ sudo mkfs -t ext4 /dev/nvme1n1
$ sudo mkdir /ch
$ sudo mount /dev/nvme1n1 /ch

เดŽเดฒเตเดฒเดพเด‚ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเตเด•เดดเดฟเดžเตเดžเดพเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเต—เดฃเตเดŸเต เดชเต‹เดฏเดฟเดจเตเดฑเตเด‚ เด“เดฐเต‹ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเตเด‚ เดฒเดญเตเดฏเดฎเดพเดฏ 783 GB เดธเตเดฅเดฒเดตเตเด‚ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚.

$ lsblk

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0         7:0    0  87.9M  1 loop /snap/core/5742
loop1         7:1    0  16.5M  1 loop /snap/amazon-ssm-agent/784
nvme0n1     259:1    0     8G  0 disk
โ””โ”€nvme0n1p1 259:2    0     8G  0 part /
nvme1n1     259:0    0 838.2G  0 disk /ch

$ df -h

Filesystem      Size  Used Avail Use% Mounted on
udev             35G     0   35G   0% /dev
tmpfs           6.9G  8.8M  6.9G   1% /run
/dev/nvme0n1p1  7.7G  967M  6.8G  13% /
tmpfs            35G     0   35G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            35G     0   35G   0% /sys/fs/cgroup
/dev/loop0       88M   88M     0 100% /snap/core/5742
/dev/loop1       17M   17M     0 100% /snap/amazon-ssm-agent/784
tmpfs           6.9G     0  6.9G   0% /run/user/1000
/dev/nvme1n1    825G   73M  783G   1% /ch

เด†เดฑเต เดตเตผเดทเดคเตเดคเดฟเดจเดฟเดŸเต† เดจเตเดฏเต‚เดฏเต‹เตผเด•เตเด•เต เดธเดฟเดฑเตเดฑเดฟเดฏเดฟเตฝ เดจเดŸเดคเตเดคเดฟเดฏ 1.1 เดฌเดฟเดฒเตเดฏเตบ เดŸเดพเด•เตเดธเดฟ เดฑเตˆเดกเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดžเดพเตป เดธเตƒเดทเตเดŸเดฟเดšเตเดš เดกเดพเดฑเตเดฑ เดกเด‚เดชเดพเดฃเต เดˆ เดŸเต†เดธเตเดฑเตเดฑเดฟเตฝ เดžเดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดกเดพเดฑเตเดฑเดพเดธเต†เดฑเตเดฑเต. เดฌเตเดฒเต‹เด—เดฟเตฝ เดฑเต†เดกเตเดทเดฟเดซเตเดฑเตเดฑเดฟเตฝ เด’เดฐเต เดฌเดฟเดฒเตเดฏเตบ เดŸเดพเด•เตเดธเดฟ เดฏเดพเดคเตเดฐเด•เตพ เดˆ เดกเดพเดฑเตเดฑเดพ เดธเต†เดฑเตเดฑเต เดžเดพเตป เดŽเด™เตเด™เดจเต† เดถเต‡เด–เดฐเดฟเดšเตเดšเต เดŽเดจเตเดจเดคเดฟเดจเตเดฑเต† เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ. เด…เดต AWS S3-เตฝ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เดŽเดจเตเดฑเต† เด†เด•เตโ€Œเดธเดธเตเด‚ เดฐเดนเดธเตเดฏ เด•เต€เด•เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเดพเตป AWS CLI เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเด‚.

$ sudo apt update
$ sudo apt install awscli
$ aws configure

เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เด•เตเดฐเดฎเต€เด•เดฐเดฃเดคเตเดคเต‡เด•เตเด•เดพเตพ เดตเต‡เด—เดคเตเดคเดฟเตฝ เดซเดฏเดฒเตเด•เตพ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดžเดพเตป เด•เตเดฒเดฏเดจเตเดฑเดฟเดจเตเดฑเต† เด•เตบเด•เดฑเดจเตเดฑเต เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดชเดฐเดฟเดงเดฟ 100 เด†เดฏเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด‚.

$ aws configure set 
    default.s3.max_concurrent_requests 
    100

เดžเดพเตป AWS S3-เตฝ เดจเดฟเดจเตเดจเต เดŸเดพเด•เตเดธเดฟ เดฑเตˆเดกเต เดกเดพเดฑเตเดฑเดพเดธเต†เดฑเตเดฑเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด†เดฆเตเดฏ เดธเต†เตผเดตเดฑเดฟเดฒเต† NVMe เดกเตเดฐเตˆเดตเดฟเตฝ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เดˆ เดกเดพเดฑเตเดฑเดพเดธเต†เดฑเตเดฑเต GZIP-เด•เด‚เดชเตเดฐเดธเต เดšเต†เดฏเตเดค CSV เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเตฝ ~104GB เด†เดฃเต.

$ sudo mkdir -p /ch/csv
$ sudo chown -R ubuntu /ch/csv
$ aws s3 sync s3://<bucket>/csv /ch/csv

เด•เตเดฒเดฟเด•เตเด•เตเดนเต—เดธเต เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป

เด…เดชเตเดชเดพเดšเตเดšเต† เดธเต‚เด•เต€เดชเตเดชเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดคเดฟเดจเดพเตฝ เดœเดพเดต 8-เดจเตเดณเตเดณ OpenJDK เดกเดฟเดธเตเดŸเตเดฐเดฟเดฌเตเดฏเต‚เดทเตป เดžเดพเตป เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด‚, เดฎเต‚เดจเตเดจเต เดฎเต†เดทเต€เดจเตเด•เดณเดฟเดฒเตเด‚ ClickHouse-เดจเตเดฑเต† เดตเดฟเดคเดฐเดฃ เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

$ sudo apt update
$ sudo apt install 
    openjdk-8-jre 
    openjdk-8-jdk-headless

เด…เดชเตเดชเต‹เตพ เดžเดพเตป เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดธเดœเตเดœเดฎเดพเด•เตเด•เดฟ JAVA_HOME.

$ sudo vi /etc/profile
 
export JAVA_HOME=/usr
 
$ source /etc/profile

เดฎเต‚เดจเตเดจเต เดฎเต†เดทเต€เดจเตเด•เดณเดฟเดฒเตเด‚ ClickHouse 18.16.1, glances, ZooKeeper เดŽเดจเตเดจเดฟเดต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เดžเดพเตป เด‰เดฌเตเดฃเตเดŸเตเดตเดฟเดจเตเดฑเต† เดชเดพเด•เตเด•เต‡เดœเต เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

$ sudo apt-key adv 
    --keyserver hkp://keyserver.ubuntu.com:80 
    --recv E0C56BD4
$ echo "deb http://repo.yandex.ru/clickhouse/deb/stable/ main/" | 
    sudo tee /etc/apt/sources.list.d/clickhouse.list
$ sudo apt-get update

$ sudo apt install 
    clickhouse-client 
    clickhouse-server 
    glances 
    zookeeperd

เดžเดพเตป ClickHouse-เดจเดพเดฏเดฟ เด’เดฐเต เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดฎเต‚เดจเตเดจเต เดธเต†เตผเดตเดฑเตเด•เดณเดฟเดฒเตเด‚ เดšเดฟเดฒ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด…เดธเดพเดงเตเดตเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

$ sudo mkdir /ch/clickhouse
$ sudo chown -R clickhouse /ch/clickhouse

$ sudo mkdir -p /etc/clickhouse-server/conf.d
$ sudo vi /etc/clickhouse-server/conf.d/taxis.conf

เดžเดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด“เดตเตผเดฑเตˆเดกเตเด•เตพ เด‡เดตเดฏเดพเดฃเต.

<?xml version="1.0"?>
<yandex>
    <listen_host>0.0.0.0</listen_host>
    <path>/ch/clickhouse/</path>

 <remote_servers>
        <perftest_3shards>
            <shard>
                <replica>
                    <host>172.30.2.192</host>
                    <port>9000</port>
                 </replica>
            </shard>
            <shard>
                 <replica>
                    <host>172.30.2.162</host>
                    <port>9000</port>
                 </replica>
            </shard>
            <shard>
                 <replica>
                    <host>172.30.2.36</host>
                    <port>9000</port>
                 </replica>
            </shard>
        </perftest_3shards>
    </remote_servers>

  <zookeeper-servers>
        <node>
            <host>172.30.2.192</host>
            <port>2181</port>
        </node>
        <node>
            <host>172.30.2.162</host>
            <port>2181</port>
        </node>
        <node>
            <host>172.30.2.36</host>
            <port>2181</port>
        </node>
    </zookeeper-servers>

 <macros>
        <shard>03</shard>
        <replica>01</replica>
    </macros>
</yandex>

เดคเตเดŸเตผเดจเตเดจเต เดžเดพเตป เดฎเต‚เดจเตเดจเต เดฎเต†เดทเต€เดจเตเด•เดณเดฟเดฒเตเด‚ ZooKeeper เด‰เด‚ ClickHouse เดธเต†เตผเดตเดฑเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚.

$ sudo /etc/init.d/zookeeper start
$ sudo service clickhouse-server start

ClickHouse-เดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เด†เดฆเตเดฏ เดธเต†เตผเดตเดฑเดฟเตฝ เดžเดพเตป เด’เดฐเต เดฏเดพเดคเตเดฐเดพ เดชเดŸเตเดŸเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚ (trips), เด‡เดคเต เดฒเต‹เด—เต เดŽเดžเตเดšเดฟเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŸเดพเด•เตเดธเดฟ เดฏเดพเดคเตเดฐเด•เดณเตเดŸเต† เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดธเต†เดฑเตเดฑเต เดธเด‚เดญเดฐเดฟเด•เตเด•เตเด‚.

$ clickhouse-client --host=0.0.0.0
 
CREATE TABLE trips (
    trip_id                 UInt32,
    vendor_id               String,

    pickup_datetime         DateTime,
    dropoff_datetime        Nullable(DateTime),

    store_and_fwd_flag      Nullable(FixedString(1)),
    rate_code_id            Nullable(UInt8),
    pickup_longitude        Nullable(Float64),
    pickup_latitude         Nullable(Float64),
    dropoff_longitude       Nullable(Float64),
    dropoff_latitude        Nullable(Float64),
    passenger_count         Nullable(UInt8),
    trip_distance           Nullable(Float64),
    fare_amount             Nullable(Float32),
    extra                   Nullable(Float32),
    mta_tax                 Nullable(Float32),
    tip_amount              Nullable(Float32),
    tolls_amount            Nullable(Float32),
    ehail_fee               Nullable(Float32),
    improvement_surcharge   Nullable(Float32),
    total_amount            Nullable(Float32),
    payment_type            Nullable(String),
    trip_type               Nullable(UInt8),
    pickup                  Nullable(String),
    dropoff                 Nullable(String),

    cab_type                Nullable(String),

    precipitation           Nullable(Int8),
    snow_depth              Nullable(Int8),
    snowfall                Nullable(Int8),
    max_temperature         Nullable(Int8),
    min_temperature         Nullable(Int8),
    average_wind_speed      Nullable(Int8),

    pickup_nyct2010_gid     Nullable(Int8),
    pickup_ctlabel          Nullable(String),
    pickup_borocode         Nullable(Int8),
    pickup_boroname         Nullable(String),
    pickup_ct2010           Nullable(String),
    pickup_boroct2010       Nullable(String),
    pickup_cdeligibil       Nullable(FixedString(1)),
    pickup_ntacode          Nullable(String),
    pickup_ntaname          Nullable(String),
    pickup_puma             Nullable(String),

    dropoff_nyct2010_gid    Nullable(UInt8),
    dropoff_ctlabel         Nullable(String),
    dropoff_borocode        Nullable(UInt8),
    dropoff_boroname        Nullable(String),
    dropoff_ct2010          Nullable(String),
    dropoff_boroct2010      Nullable(String),
    dropoff_cdeligibil      Nullable(String),
    dropoff_ntacode         Nullable(String),
    dropoff_ntaname         Nullable(String),
    dropoff_puma            Nullable(String)
) ENGINE = Log;

เดžเดพเตป เด“เดฐเต‹ CSV เดซเดฏเดฒเตเด•เดณเตเด‚ เด’เดฐเต เดŸเตเดฐเดฟเดชเตเดชเต เดŸเต‡เดฌเดฟเดณเดฟเดฒเต‡เด•เตเด•เต เดŽเด•เตโ€Œเดธเตโ€ŒเดŸเตเดฐเดพเด•เตเดฑเตเดฑเต เดšเต†เดฏเตโ€Œเดคเต เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต (trips). เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดคเต 55 เดฎเดฟเดจเดฟเดฑเตเดฑเตเด‚ 10 เดธเต†เด•เตเด•เตปเดกเตเด‚ เด•เตŠเดฃเตเดŸเต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ. เดˆ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเต เดถเต‡เดทเด‚, เดกเดพเดฑเตเดฑ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเตเดŸเต† เดตเดฒเตเดชเตเดชเด‚ 134 GB เด†เดฏเดฟเดฐเตเดจเตเดจเต.

$ time (for FILENAME in /ch/csv/trips_x*.csv.gz; do
            echo $FILENAME
            gunzip -c $FILENAME | 
                clickhouse-client 
                    --host=0.0.0.0 
                    --query="INSERT INTO trips FORMAT CSV"
        done)

เด’เดฐเต เดธเต†เด•เตเด•เตปเดกเดฟเตฝ เด•เด‚เดชเตเดฐเดธเต เดšเต†เดฏเตเดฏเดพเดคเตเดค CSV เด‰เดณเตเดณเดŸเด•เตเด•เดคเตเดคเดฟเดจเตเดฑเต† 155 MB เด†เดฏเดฟเดฐเตเดจเตเดจเต เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดตเต‡เด—เดค. เด‡เดคเต GZIP เดกเต€เด•เด‚เดชเตเดฐเดทเตป เดคเดŸเดธเตเดธเด‚ เดฎเต‚เดฒเดฎเดพเดฃเต†เดจเตเดจเต เดžเดพเตป เดธเด‚เดถเดฏเดฟเด•เตเด•เตเดจเตเดจเต. xargs เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเดฎเดพเดจเตเดคเดฐเดฎเดพเดฏเดฟ เดœเดฟเดธเดฟเดชเตเดชเต เดšเต†เดฏเตโ€Œเดค เดŽเดฒเตเดฒเดพ เดซเดฏเดฒเตเด•เดณเตเด‚ เด…เตบเดธเดฟเดชเตเดชเต เดšเต†เดฏเตโ€Œเดคเต เด…เตบเดธเดฟเดชเตเดชเต เดšเต†เดฏเตโ€Œเดค เดกเดพเดฑเตเดฑ เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚. CSV เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดคเดคเดฟเดจเตเดฑเต† เด’เดฐเต เดตเดฟเดตเดฐเดฃเด‚ เดšเตเดตเดŸเต†เดฏเตเดฃเตเดŸเต.

$ sudo glances

ip-172-30-2-200 (Ubuntu 16.04 64bit / Linux 4.4.0-1072-aws)                                                                                                 Uptime: 0:11:42
CPU       8.2%  nice:     0.0%                           LOAD    36-core                           MEM      9.8%  active:    5.20G                           SWAP      0.0%
user:     6.0%  irq:      0.0%                           1 min:    2.24                            total:  68.7G  inactive:  61.0G                           total:       0
system:   0.9%  iowait:   1.3%                           5 min:    1.83                            used:   6.71G  buffers:   66.4M                           used:        0
idle:    91.8%  steal:    0.0%                           15 min:   1.01                            free:   62.0G  cached:    61.6G                           free:        0

NETWORK     Rx/s   Tx/s   TASKS 370 (507 thr), 2 run, 368 slp, 0 oth sorted automatically by cpu_percent, flat view
ens5        136b    2Kb
lo         343Mb  343Mb     CPU%  MEM%  VIRT   RES   PID USER        NI S    TIME+ IOR/s IOW/s Command
                           100.4   1.5 1.65G 1.06G  9909 ubuntu       0 S  1:01.33     0     0 clickhouse-client --host=0.0.0.0 --query=INSERT INTO trips FORMAT CSV
DISK I/O     R/s    W/s     85.1   0.0 4.65M  708K  9908 ubuntu       0 R  0:50.60   32M     0 gzip -d -c /ch/csv/trips_xac.csv.gz
loop0          0      0     54.9   5.1 8.14G 3.49G  8091 clickhous    0 S  1:44.23     0   45M /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml
loop1          0      0      4.5   0.0     0     0   319 root         0 S  0:07.50    1K     0 kworker/u72:2
nvme0n1        0     3K      2.3   0.0 91.1M 28.9M  9912 root         0 R  0:01.56     0     0 /usr/bin/python3 /usr/bin/glances
nvme0n1p1      0     3K      0.3   0.0     0     0   960 root       -20 S  0:00.10     0     0 kworker/28:1H
nvme1n1    32.1M   495M      0.3   0.0     0     0  1058 root       -20 S  0:00.90     0     0 kworker/23:1H

เดคเตเดŸเดฐเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดฏเดฅเดพเตผเดคเตเดฅ CSV เดซเดฏเดฒเตเด•เตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดฟเด•เตเด•เตŠเดฃเตเดŸเต เดžเดพเตป NVMe เดกเตเดฐเตˆเดตเดฟเตฝ เด‡เดŸเด‚ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด‚.

$ sudo rm -fr /ch/csv

เด•เต‹เดณเด‚ เดซเต‹เดฎเดฟเดฒเต‡เด•เตเด•เต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเด•

Log ClickHouse เดŽเดžเตเดšเดฟเตป เด’เดฐเต เดฑเต‹-เด“เดฑเดฟเดฏเดจเตเดฑเดกเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดกเดพเดฑเตเดฑ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเด‚. เดกเดพเดฑเตเดฑ เดตเต‡เด—เดคเตเดคเดฟเตฝ เด…เดจเตเดตเต‡เดทเดฟเด•เตเด•เดพเตป, เดฎเต†เตผเดœเตโ€ŒเดŸเตเดฐเต€ เดŽเดžเตเดšเดฟเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเดพเตป เด…เดคเดฟเดจเต† เด•เต‹เดณเด‚ เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

$ clickhouse-client --host=0.0.0.0

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดคเต 34 เดฎเดฟเดจเดฟเดฑเตเดฑเตเด‚ 50 เดธเต†เด•เตเด•เตปเดกเตเด‚ เด•เตŠเดฃเตเดŸเต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ. เดˆ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเต เดถเต‡เดทเด‚, เดกเดพเดฑเตเดฑ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเตเดŸเต† เดตเดฒเตเดชเตเดชเด‚ 237 GB เด†เดฏเดฟเดฐเตเดจเตเดจเต.

CREATE TABLE trips_mergetree
    ENGINE = MergeTree(pickup_date, pickup_datetime, 8192)
    AS SELECT
        trip_id,
        CAST(vendor_id AS Enum8('1' = 1,
                                '2' = 2,
                                'CMT' = 3,
                                'VTS' = 4,
                                'DDS' = 5,
                                'B02512' = 10,
                                'B02598' = 11,
                                'B02617' = 12,
                                'B02682' = 13,
                                'B02764' = 14)) AS vendor_id,
        toDate(pickup_datetime)                 AS pickup_date,
        ifNull(pickup_datetime, toDateTime(0))  AS pickup_datetime,
        toDate(dropoff_datetime)                AS dropoff_date,
        ifNull(dropoff_datetime, toDateTime(0)) AS dropoff_datetime,
        assumeNotNull(store_and_fwd_flag)       AS store_and_fwd_flag,
        assumeNotNull(rate_code_id)             AS rate_code_id,

        assumeNotNull(pickup_longitude)         AS pickup_longitude,
        assumeNotNull(pickup_latitude)          AS pickup_latitude,
        assumeNotNull(dropoff_longitude)        AS dropoff_longitude,
        assumeNotNull(dropoff_latitude)         AS dropoff_latitude,
        assumeNotNull(passenger_count)          AS passenger_count,
        assumeNotNull(trip_distance)            AS trip_distance,
        assumeNotNull(fare_amount)              AS fare_amount,
        assumeNotNull(extra)                    AS extra,
        assumeNotNull(mta_tax)                  AS mta_tax,
        assumeNotNull(tip_amount)               AS tip_amount,
        assumeNotNull(tolls_amount)             AS tolls_amount,
        assumeNotNull(ehail_fee)                AS ehail_fee,
        assumeNotNull(improvement_surcharge)    AS improvement_surcharge,
        assumeNotNull(total_amount)             AS total_amount,
        assumeNotNull(payment_type)             AS payment_type_,
        assumeNotNull(trip_type)                AS trip_type,

        pickup AS pickup,
        pickup AS dropoff,

        CAST(assumeNotNull(cab_type)
            AS Enum8('yellow' = 1, 'green' = 2))
                                AS cab_type,

        precipitation           AS precipitation,
        snow_depth              AS snow_depth,
        snowfall                AS snowfall,
        max_temperature         AS max_temperature,
        min_temperature         AS min_temperature,
        average_wind_speed      AS average_wind_speed,

        pickup_nyct2010_gid     AS pickup_nyct2010_gid,
        pickup_ctlabel          AS pickup_ctlabel,
        pickup_borocode         AS pickup_borocode,
        pickup_boroname         AS pickup_boroname,
        pickup_ct2010           AS pickup_ct2010,
        pickup_boroct2010       AS pickup_boroct2010,
        pickup_cdeligibil       AS pickup_cdeligibil,
        pickup_ntacode          AS pickup_ntacode,
        pickup_ntaname          AS pickup_ntaname,
        pickup_puma             AS pickup_puma,

        dropoff_nyct2010_gid    AS dropoff_nyct2010_gid,
        dropoff_ctlabel         AS dropoff_ctlabel,
        dropoff_borocode        AS dropoff_borocode,
        dropoff_boroname        AS dropoff_boroname,
        dropoff_ct2010          AS dropoff_ct2010,
        dropoff_boroct2010      AS dropoff_boroct2010,
        dropoff_cdeligibil      AS dropoff_cdeligibil,
        dropoff_ntacode         AS dropoff_ntacode,
        dropoff_ntaname         AS dropoff_ntaname,
        dropoff_puma            AS dropoff_puma
    FROM trips;

เด“เดชเตเดชเดฑเต‡เดทเตป เดธเดฎเดฏเดคเตเดคเต เด—เตเดฒเดพเตปเดธเต เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เด‡เด™เตเด™เดจเต†เดฏเดพเดฏเดฟเดฐเตเดจเตเดจเต:

ip-172-30-2-200 (Ubuntu 16.04 64bit / Linux 4.4.0-1072-aws)                                                                                                 Uptime: 1:06:09
CPU      10.3%  nice:     0.0%                           LOAD    36-core                           MEM     16.1%  active:    13.3G                           SWAP      0.0%
user:     7.9%  irq:      0.0%                           1 min:    1.87                            total:  68.7G  inactive:  52.8G                           total:       0
system:   1.6%  iowait:   0.8%                           5 min:    1.76                            used:   11.1G  buffers:   71.8M                           used:        0
idle:    89.7%  steal:    0.0%                           15 min:   1.95                            free:   57.6G  cached:    57.2G                           free:        0

NETWORK     Rx/s   Tx/s   TASKS 367 (523 thr), 1 run, 366 slp, 0 oth sorted automatically by cpu_percent, flat view
ens5         1Kb    8Kb
lo           2Kb    2Kb     CPU%  MEM%  VIRT   RES   PID USER        NI S    TIME+ IOR/s IOW/s Command
                           241.9  12.8 20.7G 8.78G  8091 clickhous    0 S 30:36.73   34M  125M /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml
DISK I/O     R/s    W/s      2.6   0.0 90.4M 28.3M  9948 root         0 R  1:18.53     0     0 /usr/bin/python3 /usr/bin/glances
loop0          0      0      1.3   0.0     0     0   203 root         0 S  0:09.82     0     0 kswapd0
loop1          0      0      0.3   0.1  315M 61.3M 15701 ubuntu       0 S  0:00.40     0     0 clickhouse-client --host=0.0.0.0
nvme0n1        0     3K      0.3   0.0     0     0     7 root         0 S  0:00.83     0     0 rcu_sched
nvme0n1p1      0     3K      0.0   0.0     0     0   142 root         0 S  0:00.22     0     0 migration/27
nvme1n1    25.8M   330M      0.0   0.0 59.7M 1.79M  2764 ubuntu       0 S  0:00.00     0     0 (sd-pam)

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

เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดŸเดจเต€เดณเด‚ เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เดตเดฟเดคเดฐเดฃเด‚

เดฎเต‚เดจเตเดจเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดจเต‹เดกเตเด•เดณเดฟเดฒเตเดŸเดจเต€เดณเด‚ เดžเดพเตป เดกเดพเดฑเตเดฑ เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเด‚. เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดšเตเดตเดŸเต† เดžเดพเตป เดฎเต‚เดจเตเดจเต เดฎเต†เดทเต€เดจเตเด•เดณเดฟเดฒเตเด‚ เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚.

$ clickhouse-client --host=0.0.0.0

CREATE TABLE trips_mergetree_third (
    trip_id                 UInt32,
    vendor_id               String,
    pickup_date             Date,
    pickup_datetime         DateTime,
    dropoff_date            Date,
    dropoff_datetime        Nullable(DateTime),
    store_and_fwd_flag      Nullable(FixedString(1)),
    rate_code_id            Nullable(UInt8),
    pickup_longitude        Nullable(Float64),
    pickup_latitude         Nullable(Float64),
    dropoff_longitude       Nullable(Float64),
    dropoff_latitude        Nullable(Float64),
    passenger_count         Nullable(UInt8),
    trip_distance           Nullable(Float64),
    fare_amount             Nullable(Float32),
    extra                   Nullable(Float32),
    mta_tax                 Nullable(Float32),
    tip_amount              Nullable(Float32),
    tolls_amount            Nullable(Float32),
    ehail_fee               Nullable(Float32),
    improvement_surcharge   Nullable(Float32),
    total_amount            Nullable(Float32),
    payment_type            Nullable(String),
    trip_type               Nullable(UInt8),
    pickup                  Nullable(String),
    dropoff                 Nullable(String),

    cab_type                Nullable(String),

    precipitation           Nullable(Int8),
    snow_depth              Nullable(Int8),
    snowfall                Nullable(Int8),
    max_temperature         Nullable(Int8),
    min_temperature         Nullable(Int8),
    average_wind_speed      Nullable(Int8),

    pickup_nyct2010_gid     Nullable(Int8),
    pickup_ctlabel          Nullable(String),
    pickup_borocode         Nullable(Int8),
    pickup_boroname         Nullable(String),
    pickup_ct2010           Nullable(String),
    pickup_boroct2010       Nullable(String),
    pickup_cdeligibil       Nullable(FixedString(1)),
    pickup_ntacode          Nullable(String),
    pickup_ntaname          Nullable(String),
    pickup_puma             Nullable(String),

    dropoff_nyct2010_gid    Nullable(UInt8),
    dropoff_ctlabel         Nullable(String),
    dropoff_borocode        Nullable(UInt8),
    dropoff_boroname        Nullable(String),
    dropoff_ct2010          Nullable(String),
    dropoff_boroct2010      Nullable(String),
    dropoff_cdeligibil      Nullable(String),
    dropoff_ntacode         Nullable(String),
    dropoff_ntaname         Nullable(String),
    dropoff_puma            Nullable(String)
) ENGINE = MergeTree(pickup_date, pickup_datetime, 8192);

เด…เดชเตเดชเต‹เตพ เด†เดฆเตเดฏเดคเตเดคเต† เดธเต†เตผเดตเดฑเดฟเดจเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† เดฎเต‚เดจเตเดจเต เดจเต‹เดกเตเด•เดณเตเด‚ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเต เดžเดพเตป เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด‚.

SELECT *
FROM system.clusters
WHERE cluster = 'perftest_3shards'
FORMAT Vertical;
Row 1:
โ”€โ”€โ”€โ”€โ”€โ”€
cluster:          perftest_3shards
shard_num:        1
shard_weight:     1
replica_num:      1
host_name:        172.30.2.192
host_address:     172.30.2.192
port:             9000
is_local:         1
user:             default
default_database:
Row 2:
โ”€โ”€โ”€โ”€โ”€โ”€
cluster:          perftest_3shards
shard_num:        2
shard_weight:     1
replica_num:      1
host_name:        172.30.2.162
host_address:     172.30.2.162
port:             9000
is_local:         0
user:             default
default_database:

Row 3:
โ”€โ”€โ”€โ”€โ”€โ”€
cluster:          perftest_3shards
shard_num:        3
shard_weight:     1
replica_num:      1
host_name:        172.30.2.36
host_address:     172.30.2.36
port:             9000
is_local:         0
user:             default
default_database:

เดธเตเด•เต€เดฎเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เด†เดฆเตเดฏ เดธเต†เตผเดตเดฑเดฟเตฝ เดžเดพเตป เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเดŸเตเดŸเดฟเด• เดจเดฟเตผเดตเดšเดฟเด•เตเด•เตเด‚ trips_mergetree_third เดกเดฟเดธเตเดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเดกเต เดŽเดžเตเดšเดฟเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

CREATE TABLE trips_mergetree_x3
    AS trips_mergetree_third
    ENGINE = Distributed(perftest_3shards,
                         default,
                         trips_mergetree_third,
                         rand());

เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เดžเดพเตป MergeTree เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเต‚เดจเตเดจเต เดธเต†เตผเดตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เดกเดพเดฑเตเดฑ เดชเด•เตผเดคเตเดคเตเด‚. เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต 34 เดฎเดฟเดจเดฟเดฑเตเดฑเตเด‚ 44 เดธเต†เด•เตเด•เตปเดกเตเด‚ เด•เตŠเดฃเตเดŸเต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ.

INSERT INTO trips_mergetree_x3
    SELECT * FROM trips_mergetree;

เดฎเตเด•เดณเดฟเดฒเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเต เดถเต‡เดทเด‚, เดชเดฐเดฎเดพเดตเดงเดฟ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดฒเต†เดตเตฝ เดฎเดพเตผเด•เตเด•เดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดพเดฑเดพเตป เดžเดพเตป เด•เตเดฒเดฟเด•เตเด•เตเดนเต—เดธเดฟเดจเต 15 เดฎเดฟเดจเดฟเดฑเตเดฑเต เดธเดฎเดฏเด‚ เดจเตฝเด•เดฟ. เดฎเต‚เดจเตเดจเต เดธเต†เตผเดตเดฑเตเด•เดณเดฟเดฒเตเด‚ เดกเดพเดฑเตเดฑ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเด•เตพ เดฏเดฅเดพเด•เตเดฐเดฎเด‚ 264 GB, 34 GB, 33 GB เดŽเดจเตเดจเดฟเด™เตเด™เดจเต†เดฏเดพเดฃเต เด…เดตเดธเดพเดจเดฟเดšเตเดšเดคเต.

เด•เตเดฒเดฟเด•เตเด•เตเดนเต—เดธเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดชเตเดฐเด•เดŸเดจ เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเตฝ

เดžเดพเตป เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ เด•เดฃเตเดŸเดคเต, เด“เดฐเต‹ เดšเต‹เดฆเตเดฏเดตเตเด‚ เด’เดฐเต เดฎเต‡เดถเดชเตเดชเตเดฑเดคเตเดคเต เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดคเดตเดฃ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เดžเดพเตป เด•เดฃเตเดŸเดฟเดŸเตเดŸเตเดณเตเดณเดคเดฟเตฝ เดตเดšเตเดšเต เดเดฑเตเดฑเดตเตเด‚ เดตเต‡เด—เดคเดฏเต‡เดฑเดฟเดฏ เดธเดฎเดฏเดฎเดพเดฃเต trips_mergetree_x3.

$ clickhouse-client --host=0.0.0.0

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต 2.449 เดธเต†เด•เตเด•เตปเดกเดฟเตฝ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ.

SELECT cab_type, count(*)
FROM trips_mergetree_x3
GROUP BY cab_type;

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต 0.691 เดธเต†เด•เตเด•เตปเดกเดฟเตฝ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ.

SELECT passenger_count,
       avg(total_amount)
FROM trips_mergetree_x3
GROUP BY passenger_count;

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต 0 เดธเต†เด•เตเด•เตปเดกเดฟเตฝ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ.

SELECT passenger_count,
       toYear(pickup_date) AS year,
       count(*)
FROM trips_mergetree_x3
GROUP BY passenger_count,
         year;

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต 0.983 เดธเต†เด•เตเด•เตปเดกเดฟเตฝ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ.

SELECT passenger_count,
       toYear(pickup_date) AS year,
       round(trip_distance) AS distance,
       count(*)
FROM trips_mergetree_x3
GROUP BY passenger_count,
         year,
         distance
ORDER BY year,
         count(*) DESC;

เดคเดพเดฐเดคเดฎเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ, เด†เดฆเตเดฏ เดธเต†เตผเดตเดฑเดฟเตฝ เดฎเดพเดคเตเดฐเด‚ เดตเดธเดฟเด•เตเด•เตเดจเตเดจ MergeTree เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดŸเต‡เดฌเดฟเดณเดฟเตฝ เดžเดพเตป เดธเดฎเดพเดจ เดšเต‹เดฆเตเดฏเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดšเตเดšเต.

เด’เดฐเต ClickHouse เดจเต‹เดกเดฟเดจเตเดฑเต† เดชเตเดฐเด•เดŸเดจ เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเตฝ

เดžเดพเตป เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ เด•เดฃเตเดŸเดคเต, เด“เดฐเต‹ เดšเต‹เดฆเตเดฏเดตเตเด‚ เด’เดฐเต เดฎเต‡เดถเดชเตเดชเตเดฑเดคเตเดคเต เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดคเดตเดฃ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เดžเดพเตป เด•เดฃเตเดŸเดฟเดŸเตเดŸเตเดณเตเดณเดคเดฟเตฝ เดตเดšเตเดšเต เดเดฑเตเดฑเดตเตเด‚ เดตเต‡เด—เดคเดฏเต‡เดฑเดฟเดฏ เดธเดฎเดฏเดฎเดพเดฃเต trips_mergetree_x3.

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต 0.241 เดธเต†เด•เตเด•เตปเดกเดฟเตฝ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ.

SELECT cab_type, count(*)
FROM trips_mergetree
GROUP BY cab_type;

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต 0.826 เดธเต†เด•เตเด•เตปเดกเดฟเตฝ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ.

SELECT passenger_count,
       avg(total_amount)
FROM trips_mergetree
GROUP BY passenger_count;

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต 1.209 เดธเต†เด•เตเด•เตปเดกเดฟเตฝ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ.

SELECT passenger_count,
       toYear(pickup_date) AS year,
       count(*)
FROM trips_mergetree
GROUP BY passenger_count,
         year;

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต 1.781 เดธเต†เด•เตเด•เตปเดกเดฟเตฝ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ.

SELECT passenger_count,
       toYear(pickup_date) AS year,
       round(trip_distance) AS distance,
       count(*)
FROM trips_mergetree
GROUP BY passenger_count,
         year,
         distance
ORDER BY year,
         count(*) DESC;

เดซเดฒเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดชเตเดฐเดคเดฟเดซเดฒเดจเด™เตเด™เตพ

เด‡เดคเดพเดฆเตเดฏเดฎเดพเดฏเดพเดฃเต เด’เดฐเต เดธเต—เดœเดจเตเดฏ เดธเดฟเดชเดฟเดฏเต เด…เดงเดฟเดทเตเด เดฟเดค เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดจเต เดŽเดจเตเดฑเต† เดŸเต†เดธเตเดฑเตเดฑเตเด•เดณเดฟเตฝ GPU เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดจเต† เดฎเดฑเดฟเด•เดŸเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดคเต. เด† เดœเดฟเดชเดฟเดฏเต เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เดฐเดฃเตเดŸเต เดชเตเดจเดฐเดตเดฒเต‹เด•เดจเด™เตเด™เดณเดฟเดฒเต‚เดŸเต† เด•เดŸเดจเตเดจเตเดชเต‹เดฏเดฟ, เดŽเดจเตเดจเดพเตฝ เด’เดฐเตŠเดฑเตเดฑ เดจเต‹เดกเดฟเตฝ เด•เตเดฒเดฟเด•เตเด•เตเดนเต—เดธเต เดจเตฝเด•เดฟเดฏ เดชเตเดฐเด•เดŸเดจเด‚ เดตเดณเดฐเต† เดถเตเดฐเดฆเตเดงเต‡เดฏเดฎเดพเดฃเต.

เด…เดคเต‡ เดธเดฎเดฏเด‚, เด’เดฐเต เดกเดฟเดธเตเดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเดกเต เดŽเดžเตเดšเดฟเดจเดฟเตฝ เด•เตเดตเดฑเดฟ 1 เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เด“เดตเตผเดนเต†เดกเต เดšเต†เดฒเดตเตเด•เตพ เด‰เดฏเตผเดจเตเดจ เด…เดณเดตเดฟเดฒเตเดณเตเดณ เด’เดฐเต เด•เตเดฐเดฎเดฎเดพเดฃเต. เดˆ เดชเต‹เดธเตเดฑเตเดฑเดฟเดจเดพเดฏเตเดณเตเดณ เดŽเดจเตเดฑเต† เด—เดตเต‡เดทเดฃเดคเตเดคเดฟเตฝ เดŽเดจเดฟเด•เตเด•เต เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดจเดทเตโ€ŒเดŸเดชเตเดชเต†เดŸเตเดŸเตเดตเต†เดจเตเดจเต เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต, เด•เดพเดฐเดฃเด‚ เดžเดพเตป เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เดจเต‹เดกเตเด•เตพ เดšเต‡เตผเด•เตเด•เตเดฎเตเดชเต‹เตพ เด…เดจเตเดตเต‡เดทเดฃ เดธเดฎเดฏเด‚ เด•เตเดฑเดฏเตเดจเตเดจเดคเต เด•เดพเดฃเดพเตป เดจเดฒเตเดฒเดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดฎเดฑเตเดฑเต เดšเต‹เดฆเตเดฏเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดชเตเดฐเด•เดŸเดจเด‚ เดเด•เดฆเต‡เดถเด‚ 2 เดฎเดŸเด™เตเด™เต เดตเตผเดฆเตเดงเดฟเดšเตเดšเต เดŽเดจเตเดจเดคเต เดตเดณเดฐเต† เดฎเดฟเด•เดšเตเดšเดคเดพเดฃเต.

เดธเด‚เดญเดฐเดฃเดตเตเด‚ เด•เด‚เดชเตเดฏเต‚เดŸเตเดŸเตเด‚ เดตเต‡เตผเดคเดฟเดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เต ClickHouse เดตเดฟเด•เดธเดฟเด•เตเด•เตเดจเตเดจเดคเต เด•เดพเดฃเตเดฎเตเดชเต‹เตพ เด…เดตเตผเด•เตเด•เต เดธเตเดตเดคเดจเตเดคเตเดฐเดฎเดพเดฏเดฟ เดธเตเด•เต†เดฏเดฟเตฝ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚. เด•เดดเดฟเดžเตเดž เดตเตผเดทเด‚ เดšเต‡เตผเดคเตเดค HDFS เดชเดฟเดจเตเดคเตเดฃ เด‡เดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดšเตเดตเดŸเตเดตเดฏเตเดชเตเดชเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚. เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฟเด‚เด—เดฟเดจเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เดจเต‹เดกเตเด•เตพ เดšเต‡เตผเดคเตเดคเตเด•เตŠเดฃเตเดŸเต เด’เดฐเตŠเดฑเตเดฑ เด…เดจเตเดตเต‡เดทเดฃเด‚ เดคเตเดตเดฐเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เด•เดดเดฟเดฏเตเดฎเต†เด™เตเด•เดฟเตฝ, เดˆ เดธเต‹เดซเตเดฑเตเดฑเตเดตเต†เดฏเดฑเดฟเดจเตเดฑเต† เดญเดพเดตเดฟ เดตเดณเดฐเต† เดถเต‹เดญเดจเดฎเดพเดฃเต.

เดˆ เดชเต‹เดธเตเดฑเตเดฑเต เดตเดพเดฏเดฟเด•เตเด•เดพเตป เดธเดฎเดฏเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏเดคเดฟเดจเต เดจเดจเตเดฆเดฟ. เดตเดŸเด•เตเด•เต‡ เด…เดฎเต‡เดฐเดฟเด•เตเด•เดฏเดฟเดฒเต†เดฏเตเด‚ เดฏเต‚เดฑเต‹เดชเตเดชเดฟเดฒเต†เดฏเตเด‚ เด•เตเดฒเดฏเดจเตเดฑเตเด•เตพเด•เตเด•เต เดžเดพเตป เด•เตบเดธเตพเดŸเตเดŸเดฟเด‚เด—เต, เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเตผ, เดชเดฐเดฟเดถเต€เดฒเดจ เดตเดฟเด•เดธเดจ เดธเต‡เดตเดจเด™เตเด™เตพ เดŽเดจเตเดจเดฟเดต เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดŽเดจเตเดฑเต† เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฌเดฟเดธเดฟเดจเดธเดฟเดจเต† เดŽเด™เตเด™เดจเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เดฆเดฏเดตเดพเดฏเดฟ เดŽเดจเตเดจเต† เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเด• เดฒเดฟเด™เตเด•เตเดกเต.

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

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