1.1 เจฌเจฟเจฒเฉ€เจ…เจจ เจŸเฉˆเจ•เจธเฉ€ เจฏเจพเจคเจฐเจพเจตเจพเจ‚: 108-เจ•เฉ‹เจฐ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจ•เจฒเฉฑเจธเจŸเจฐ

เจฒเฉ‡เจ– เจฆเจพ เจ…เจจเฉเจตเจพเจฆ เจ•เฉ‹เจฐเจธ เจฆเฉ‡ เจตเจฟเจฆเจฟเจ†เจฐเจฅเฉ€เจ†เจ‚ เจฒเจˆ เจตเจฟเจธเจผเฉ‡เจธเจผ เจคเฉŒเจฐ 'เจคเฉ‡ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจกเจพเจŸเจพ เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐ.

1.1 เจฌเจฟเจฒเฉ€เจ…เจจ เจŸเฉˆเจ•เจธเฉ€ เจฏเจพเจคเจฐเจพเจตเจพเจ‚: 108-เจ•เฉ‹เจฐ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจ•เจฒเฉฑเจธเจŸเจฐ

เจ•เจฒเจฟเจ•เจนเจพouseเจธ เจ‡เฉฑเจ• เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจ•เจพเจฒเจฎเจจเจฐ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจนเฉˆเฅค เจ‡เจน เจ‡เฉฑเจ• เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจฎเจพเจนเฉŒเจฒ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจธเฉˆเจ‚เจ•เฉœเฉ‡ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจกเฉ‡เจŸเจพ เจฆเฉ€ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจ, เจญเจพเจตเฉ‡เจ‚ เจ•เจฟ เจชเฉเจฐเจคเฉ€ เจฆเจฟเจจ เจ…เจฐเจฌเจพเจ‚ เจจเจตเฉ‡เจ‚ เจฐเจฟเจ•เจพเจฐเจก เจฆเจฐเจœ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจ…เจœเจฟเจนเฉ€ เจชเฉเจฐเจฃเจพเจฒเฉ€ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจจ เจฒเจˆ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ€ เจฒเจพเจ—เจค เจชเฉเจฐเจคเฉ€ เจธเจพเจฒ $100 เจคเฉฑเจ• เจตเฉฑเจง เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจธเฉฐเจญเจพเจตเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡ เจ…เฉฑเจงเฉ€ เจนเฉˆเฅค เจ‡เฉฑเจ• เจฌเจฟเฉฐเจฆเฉ‚ 'เจคเฉ‡, Yandex Metrics เจคเฉ‹เจ‚ ClickHouse เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš 10 เจŸเฉเจฐเจฟเจฒเฉ€เจ…เจจ เจฐเจฟเจ•เจพเจฐเจก เจธเจจเฅค Yandex เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, ClickHouse เจจเฉ‚เฉฐ เจฌเจฒเฉ‚เจฎเจฌเจฐเจ— เจ…เจคเฉ‡ เจ•เจฒเจพเจ‰เจกเจซเจฒเฉ‡เจ…เจฐ เจจเจพเจฒ เจตเฉ€ เจธเจซเจฒเจคเจพ เจฎเจฟเจฒเฉ€ เจนเฉˆเฅค

เจฆเฉ‹ เจธเจพเจฒ เจชเจนเจฟเจฒเจพเจ‚ เจฎเฉˆเจ‚ เจฌเจฟเจคเจพเจ เจคเฉเจฒเจจเจพเจคเจฎเจ• เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ‡เฉฑเจ• เจฎเจธเจผเฉ€เจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ, เจ…เจคเฉ‡ เจ‡เจน เจฌเจฃ เจ—เจฟเจ† เจธเจญ เจคเฉ‹เจ‚ เจคเฉ‡เจœ เจฎเฉเจซเจค เจกเจพเจŸเจพเจฌเฉ‡เจธ เจธเจพเจซเจŸเจตเฉ‡เจ…เจฐ เจœเฉ‹ เจฎเฉˆเจ‚ เจ•เจฆเฉ‡ เจฆเฉ‡เจ–เจฟเจ† เจนเฉˆเฅค เจ‰เจฆเฉ‹เจ‚ เจคเฉ‹เจ‚, เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจจเฉ‡ เจ•เจพเจซเจ•เจพ, HDFS เจ…เจคเฉ‡ ZStandard เจ•เฉฐเจชเจฐเฉˆเจธเจผเจจ เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจธเจฎเฉ‡เจค เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจเจพ เจฌเฉฐเจฆ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจนเฉˆเฅค เจชเจฟเจ›เจฒเฉ‡ เจธเจพเจฒ เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ เจ•เฉˆเจธเจ•เฉ‡เจกเจฟเฉฐเจ— เจ•เฉฐเจชเจฐเฉˆเจธเจผเจจ เจตเจฟเจงเฉ€เจ†เจ‚ เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจœเฉ‹เฉœเจฟเจ†, เจ…เจคเฉ‡ เจกเฉˆเจฒเจŸเจพ เจคเฉ‹เจ‚ เจกเฉˆเจฒเจŸเจพ เจ•เฉ‹เจกเจฟเฉฐเจ— เจธเฉฐเจญเจต เจนเฉ‹ เจ—เจˆเฅค เจŸเจพเจˆเจฎ เจธเฉ€เจฐเฉ€เจœเจผ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡, เจ—เฉ‡เจœ เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจกเฉˆเจฒเจŸเจพ เจเจจเจ•เฉ‹เจกเจฟเฉฐเจ— เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจšเฉฐเจ—เฉ€ เจคเจฐเฉเจนเจพเจ‚ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจชเจฐ เจ•เจพเจŠเจ‚เจŸเจฐเจพเจ‚ เจฒเจˆ เจกเฉˆเจฒเจŸเจพ-เจฌเจพเจˆ-เจกเฉˆเจฒเจŸเจพ เจเจจเจ•เฉ‹เจกเจฟเฉฐเจ— เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจฌเจฟเจนเจคเจฐ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจšเฉฐเจ—เฉ€ เจธเฉฐเจ•เฉเจšเจจ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจฆเฉ‡ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฆเฉ€ เจ•เฉเฉฐเจœเฉ€ เจฌเจฃ เจ—เจˆ เจนเฉˆ.

เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจตเจฟเฉฑเจš เจคเฉ€เจœเฉ€-เจงเจฟเจฐ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ›เฉฑเจก เจ•เฉ‡, C++ เจ•เฉ‹เจก เจฆเฉ€เจ†เจ‚ 170 เจนเจœเจผเจพเจฐ เจฒเจพเจˆเจจเจพเจ‚ เจนเจจ, เจ…เจคเฉ‡ เจ‡เจน เจธเจญ เจคเฉ‹เจ‚ เจ›เฉ‹เจŸเฉ‡ เจตเฉฐเจกเฉ‡ เจ—เจ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ•เฉ‹เจกเจฌเฉ‡เจธ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉˆเฅค เจ‡เจธเจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡, SQLite เจตเฉฐเจก เจฆเจพ เจธเจฎเจฐเจฅเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš C เจ•เฉ‹เจก เจฆเฉ€เจ†เจ‚ 235 เจนเจœเจผเจพเจฐ เจฒเจพเจˆเจจเจพเจ‚ เจนเจจเฅค เจ‡เจธ เจฒเจฟเจ–เจค เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, 207 เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐเจพเจ‚ เจจเฉ‡ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจตเจฟเฉฑเจš เจฏเฉ‹เจ—เจฆเจพเจจ เจชเจพเจ‡เจ† เจนเฉˆ, เจ…เจคเฉ‡ เจ•เจฎเจฟเจŸ เจฆเฉ€ เจคเฉ€เจฌเจฐเจคเจพ เจนเจพเจฒ เจนเฉ€ เจตเจฟเฉฑเจš เจตเจง เจฐเจนเฉ€ เจนเฉˆเฅค

เจฎเจพเจฐเจš 2017 เจตเจฟเฉฑเจš, เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจจเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเจพ เจฒเฉŒเจ— เจฌเจฆเจฒเฉ‹ เจตเจฟเจ•เจพเจธ 'เจคเฉ‡ เจจเจœเจผเจฐ เจฐเฉฑเจ–เจฃ เจฆเจพ เจ‡เฉฑเจ• เจ†เจธเจพเจจ เจคเจฐเฉ€เจ•เจพ เจนเฉˆเฅค เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ เจฎเจพเจฐเจ•เจกเจพเจŠเจจ-เจ…เจงเจพเจฐเจฟเจค เจซเจพเจˆเจฒ เจฒเฉœเฉ€ เจตเจฟเฉฑเจš เจฎเฉ‹เจจเฉ‹เจฒเฉ€เจฅเจฟเจ• เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจตเฉ€ เจคเฉ‹เฉœ เจฆเจฟเฉฑเจคเจพเฅค เจฎเฉเฉฑเจฆเจฟเจ†เจ‚ เจ…เจคเฉ‡ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ GitHub เจฆเฉเจ†เจฐเจพ เจŸเจฐเฉˆเจ• เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจชเจฟเจ›เจฒเฉ‡ เจ•เฉเจ เจธเจพเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจชเจนเฉเฉฐเจšเจฏเฉ‹เจ— เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆเฅค

เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ 2-เจ•เฉ‹เจฐ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐเจพเจ‚ เจ…เจคเฉ‡ NVMe เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ AWS EC36 'เจคเฉ‡ เจ‡เฉฑเจ• เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเฉ‡ เจชเฉเจฐเจฆเจฐเจธเจผเจจ 'เจคเฉ‡ เจ‡เฉฑเจ• เจจเจœเจผเจฐ เจฎเจพเจฐเจจ เจœเจพ เจฐเจฟเจนเจพ เจนเจพเจ‚เฅค

เจ…เฉฑเจชเจกเฉ‡เจŸ: เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‡เจธ เจชเฉ‹เจธเจŸ เจจเฉ‚เฉฐ เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เจฐเจจ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเจซเจผเจคเฉ‡ เจฌเจพเจ…เจฆ, เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจธเฉเจงเจพเจฐเฉ€ เจนเฉ‹เจˆ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจจเจพเจฒ เจŸเฉˆเจธเจŸ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเจพ เจ…เจคเฉ‡ เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจจเจคเฉ€เจœเฉ‡ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ‡เฅค เจ‡เจนเจจเจพเจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจฃ เจฒเจˆ เจ‡เจธ เจชเฉ‹เจธเจŸ เจจเฉ‚เฉฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค

เจ‡เฉฑเจ• AWS EC2 เจ•เจฒเฉฑเจธเจŸเจฐ เจฒเจพเจ‚เจš เจ•เจฐเจจเจพ

เจฎเฉˆเจ‚ เจ‡เจธ เจชเฉ‹เจธเจŸ เจฒเจˆ เจคเจฟเฉฐเจจ c5d.9xlarge EC2 เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เจพเฅค เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐเฉ‡เจ• เจตเจฟเฉฑเจš 36 เจตเจฐเจšเฉเจ…เจฒ CPU, 72 GB RAM, 900 GB NVMe SSD เจธเจŸเฉ‹เจฐเฉ‡เจœ เจ…เจคเฉ‡ 10 เจ—เฉ€เจ—เจพเจฌเจพเจˆเจŸ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจœเจฆเฉ‹เจ‚ เจฎเฉฐเจ— 'เจคเฉ‡ เจšเฉฑเจฒเจฆเฉ‡ เจนเจจ เจคเจพเจ‚ eu-west-1,962 เจ–เฉ‡เจคเจฐ เจตเจฟเฉฑเจš เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจ•เฉ€เจฎเจค $1/เจ˜เฉฐเจŸเจพ เจนเฉˆเฅค เจฎเฉˆเจ‚ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจตเจœเฉ‹เจ‚ เจ‰เจฌเฉฐเจŸเฉ‚ เจธเจฐเจตเจฐ 16.04 LTS เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เจพเฅค

เจซเจพเจ‡เจฐเจตเจพเจฒ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจคเจพเจ‚ เจ•เจฟ เจนเจฐเฉ‡เจ• เจฎเจธเจผเฉ€เจจ เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจชเจพเจฌเฉฐเจฆเฉ€ เจฆเฉ‡ เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจจเจพเจฒ เจธเฉฐเจšเจพเจฐ เจ•เจฐ เจธเจ•เฉ‡, เจ…เจคเฉ‡ เจธเจฟเจฐเจซเจผ เจฎเฉ‡เจฐเจพ IPv4 เจชเจคเจพ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš SSH เจฆเฉเจ†เจฐเจพ เจตเจพเจˆเจŸเจฒเจฟเจธเจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค

NVMe เจกเจฐเจพเจˆเจต เจธเฉฐเจšเจพเจฒเจจ เจคเจฟเจ†เจฐเฉ€ เจ…เจตเจธเจฅเจพ เจตเจฟเฉฑเจš

เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจฆเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ, เจฎเฉˆเจ‚ เจนเจฐเฉ‡เจ• เจธเจฐเจตเจฐ 'เจคเฉ‡ 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 เจฒเจˆ เจ“เจชเจจเจœเฉ‡เจกเฉ€เจ•เฉ‡ เจกเจฟเจธเจŸเจฐเฉ€เจฌเจฟเจŠเจธเจผเจจ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจพเจ‚เจ—เจพ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจ…เจชเจพเจšเฉ‡ เจœเจผเฉ‚เจ•เฉ€เจชเจฐ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจธเจพเจฐเฉ€เจ†เจ‚ เจคเจฟเฉฐเจจ เจฎเจธเจผเฉ€เจจเจพเจ‚ 'เจคเฉ‡ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจฆเฉ€ เจตเฉฐเจกเฉ€ เจธเจฅเจพเจชเจจเจพ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจนเฉˆเฅค

$ 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

เจซเจฟเจฐ เจฎเฉˆเจ‚ เจคเจฟเฉฐเจจเฉ‹เจ‚ เจฎเจธเจผเฉ€เจจเจพเจ‚ 'เจคเฉ‡ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ 18.16.1, เจ—เจฒเฉ‡เจ‚เจธ เจ…เจคเฉ‡ เจœเจผเฉ‚เจ•เฉ€เจชเจฐ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจ‰เจฌเฉฐเจŸเฉ‚ เจฆเฉ‡ เจชเฉˆเจ•เฉ‡เจœ เจชเฉเจฐเจฌเฉฐเจงเจจ เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เจพเฅค

$ 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

เจฎเฉˆเจ‚ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจฒเจˆ เจ‡เฉฑเจ• เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฌเจฃเจพเจตเจพเจ‚เจ—เจพ เจ…เจคเฉ‡ เจธเจพเจฐเฉ‡ เจคเจฟเฉฐเจจ เจธเจฐเจตเจฐเจพเจ‚ 'เจคเฉ‡ เจ•เฉเจ เจธเฉฐเจฐเจšเจจเจพ เจ“เจตเจฐเจฐเจพเจˆเจก เจตเฉ€ เจ•เจฐเจพเจ‚เจ—เจพเฅค

$ 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>

เจฎเฉˆเจ‚ เจซเจฟเจฐ เจœเจผเฉ‚เจ•เฉ€เจชเจฐ เจ…เจคเฉ‡ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจคเจฟเฉฐเจจเฉ‹เจ‚ เจฎเจธเจผเฉ€เจจเจพเจ‚ 'เจคเฉ‡ เจšเจฒเจพเจตเจพเจ‚เจ—เจพเฅค

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

เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ 'เจคเฉ‡ เจกเจพเจŸเจพ เจ…เฉฑเจชเจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ

เจชเจนเจฟเจฒเฉ‡ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจŸเฉเจฐเจฟเจช เจŸเฉ‡เจฌเจฒ เจฌเจฃเจพเจตเจพเจ‚เจ—เจพ (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 เจœเฉ€.เจฌเฉ€.

$ 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)

เจ†เจฏเจพเจค เจ—เจคเฉ€ เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ 155 MB เจ…เจฃเจ•เฉฐเจชเจฐเฉˆเฉฑเจธเจก CSV เจธเจฎเฉฑเจ—เจฐเฉ€ เจธเฉ€เฅค เจฎเฉˆเจจเฉ‚เฉฐ เจธเจผเฉฑเจ• เจนเฉˆ เจ•เจฟ เจ‡เจน GZIP เจกเฉ€เจ•เฉฐเจชเฉเจฐเฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฐเฉเจ•เจพเจตเจŸ เจฆเฉ‡ เจ•เจพเจฐเจจ เจธเฉ€เฅค xargs เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเจพเจฐเฉ€เจ†เจ‚ gzipped เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจตเจฟเฉฑเจš เจ…เจจเจœเจผเจฟเจช เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจซเจฟเจฐ เจ…เจจเจœเจผเจฟเจช เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฒเฉ‹เจก เจ•เจฐเจจเจพ เจคเฉ‡เจœเจผ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจนเฉ‡เจ เจพเจ‚ 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

เจ•เจพเจฒเจฎ เจซเจพเจฐเจฎ เจตเจฟเฉฑเจš เจฌเจฆเจฒเฉ‹

เจฒเฉŒเจ— เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจ‡เฉฐเจœเจฃ เจ‡เฉฑเจ• เจ•เจคเจพเจฐ-เจฎเฉเจ–เฉ€ เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเฉ‡เจ—เจพเฅค เจกเจพเจŸเจพ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจ•เจฐเจจ เจฒเจˆ, เจฎเฉˆเจ‚ เจ‡เจธเจจเฉ‚เฉฐ MergeTree เจ‡เฉฐเจœเจฃ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ•เจพเจฒเจฎ เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฆเจพ เจนเจพเจ‚เฅค

$ clickhouse-client --host=0.0.0.0

เจนเฉ‡เจ  เจฒเจฟเจ–เจฟเจ†เจ‚ เจจเฉ‚เฉฐ 34 เจฎเจฟเฉฐเจŸ เจ…เจคเฉ‡ 50 เจธเจ•เจฟเฉฐเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจชเฉ‚เจฐเจพ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค เจ‡เจธ เจ•เจพเจฐเจตเจพเจˆ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจกเฉ‡เจŸเจพ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฆเจพ เจ†เจ•เจพเจฐ 237 เจœเฉ€.เจฌเฉ€.

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-เจ…เจงเจพเจฐเจฟเจค เจŸเฉ‡เจฌเจฒ 'เจคเฉ‡ เจ‰เจนเฉ€ เจธเจตเจพเจฒ เจšเจฒเจพเจ เจœเฉ‹ เจธเจฟเจฐเจซเจผ เจชเจนเจฟเจฒเฉ‡ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจฐเจนเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจจเฉ‹เจก เจฆเจพ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฎเฉเจฒเจพเจ‚เจ•เจฃ

เจœเฉ‹ เจฎเฉˆเจ‚ เจ…เฉฑเจ—เฉ‡ เจฆเฉ‡เจ–เจฟเจ† เจ‰เจน เจธเจญ เจคเฉ‹เจ‚ เจคเฉ‡เจœเจผ เจธเจฎเจพเจ‚ เจธเฉ€ เจœเจฆเฉ‹เจ‚ เจฎเฉˆเจ‚ เจนเจฐเฉ‡เจ• เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจจเฉ‚เฉฐ เจ•เจˆ เจตเจพเจฐ เจŸเฉ‡เจฌเจฒ 'เจคเฉ‡ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจฆเฉ‡เจ–เจฟเจ† เจนเฉˆ 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;

เจจเจคเฉ€เจœเจฟเจ†เจ‚ 'เจคเฉ‡ เจชเฉเจฐเจคเฉ€เจฌเจฟเฉฐเจฌ

เจ‡เจน เจชเจนเจฟเจฒเฉ€ เจตเจพเจฐ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจฎเฉเจซเจค CPU- เจ…เจงเจพเจฐเจค เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฎเฉ‡เจฐเฉ‡ เจŸเฉˆเจธเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• GPU- เจ…เจงเจพเจฐเจค เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจชเจ›เจพเฉœเจฃ เจฆเฉ‡ เจฏเฉ‹เจ— เจธเฉ€เฅค เจ‰เจน GPU- เจ…เจงเจพเจฐเจค เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ‰เจฆเฉ‹เจ‚ เจคเฉ‹เจ‚ เจฆเฉ‹ เจธเฉฐเจธเจผเฉ‹เจงเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฒเฉฐเจ˜เจฟเจ† เจนเฉˆ, เจชเจฐ เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจจเฉ‹เจก 'เจคเฉ‡ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจซเจฟเจฐ เจตเฉ€ เจฌเจนเฉเจค เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ€ เจนเฉˆ.

เจ‡เจธ เจฆเฉ‡ เจจเจพเจฒ เจนเฉ€, เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจกเจฟเจธเจŸเฉเจฐเฉ€เจฌเจฟเจŠเจŸเจฟเจก เจ‡เฉฐเจœเจฃ 'เจคเฉ‡ เจ•เจฟเจŠเจฐเฉ€ 1 เจจเฉ‚เฉฐ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ“เจตเจฐเจนเฉˆเฉฑเจก เจฒเจพเจ—เจคเจพเจ‚ เจฆเฉ€ เจฎเจพเจคเจฐเจพ เจตเฉฑเจง เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจฎเฉ€เจฆ เจนเฉˆ เจ•เจฟ เจฎเฉˆเจ‚ เจ‡เจธ เจชเฉ‹เจธเจŸ เจฒเจˆ เจ†เจชเจฃเฉ€ เจ–เฉ‹เจœ เจตเจฟเฉฑเจš เจ•เฉเจ เจ—เฉเจ† เจฒเจฟเจ† เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจฆเฉ‡เจ–เจฃเจพ เจšเฉฐเจ—เจพ เจนเฉ‹เจตเฉ‡เจ—เจพ เจ•เจฟ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจจเฉ‚เฉฐ เจ˜เฉฑเจŸ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฎเฉˆเจ‚ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจนเฉ‹เจฐ เจจเฉ‹เจก เจœเฉ‹เฉœเจฆเจพ เจนเจพเจ‚เฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจน เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจนเฉˆ เจ•เจฟ เจœเจฆเฉ‹เจ‚ เจนเฉ‹เจฐ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ›เจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹เจ, เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฒเจ—เจญเจ— 2 เจ—เฉเจฃเจพ เจตเจง เจ—เจฟเจ† เจนเฉˆ.

เจ‡เจน เจฆเฉ‡เจ–เจฃเจพ เจšเฉฐเจ—เจพ เจฒเฉฑเจ—เฉ‡เจ—เจพ เจ•เจฟ เจ•เจฒเจฟเจ•เจนเจพเจŠเจธ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจ…เจคเฉ‡ เจ—เจฃเจจเจพ เจจเฉ‚เฉฐ เจตเฉฑเจ– เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจฃ เจตเฉฑเจฒ เจตเจฟเจ•เจธเจฟเจค เจนเฉ‹ เจฐเจฟเจนเจพ เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจ‰เจน เจธเฉเจคเฉฐเจคเจฐ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจ•เฉ‡เจฒ เจ•เจฐ เจธเจ•เจฃเฅค HDFS เจธเจฎเจฐเจฅเจจ, เจœเฉ‹ เจ•เจฟ เจชเจฟเจ›เจฒเฉ‡ เจธเจพเจฒ เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจ‡เจธ เจตเฉฑเจฒ เจ‡เฉฑเจ• เจ•เจฆเจฎ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ•เฉฐเจชเจฟเจŠเจŸเจฟเฉฐเจ— เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš, เจœเฉ‡เจ•เจฐ เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจจเฉ‚เฉฐ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจนเฉ‹เจฐ เจจเฉ‹เจก เจœเฉ‹เฉœ เจ•เฉ‡ เจคเฉ‡เจœเจผ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจธ เจธเจพเจซเจŸเจตเฉ‡เจ…เจฐ เจฆเจพ เจญเจตเจฟเฉฑเจ– เจฌเจนเฉเจค เจ‰เจœเจตเจฒ เจนเฉˆเฅค

เจ‡เจธ เจชเฉ‹เจธเจŸ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจ เจฒเจˆ เจธเจฎเจพเจ‚ เจ•เฉฑเจขเจฃ เจฒเจˆ เจคเฉเจนเจพเจกเจพ เจงเฉฐเจจเจตเจพเจฆเฅค เจฎเฉˆเจ‚ เจ‰เฉฑเจคเจฐเฉ€ เจ…เจฎเจฐเฉ€เจ•เจพ เจ…เจคเฉ‡ เจฏเฉ‚เจฐเจช เจตเจฟเฉฑเจš เจ—เจพเจนเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจธเจฒเจพเจน, เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ, เจ…เจคเฉ‡ เจ…เจญเจฟเจ†เจธ เจตเจฟเจ•เจพเจธ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฆเฉ€ เจชเฉ‡เจธเจผเจ•เจธเจผ เจ•เจฐเจฆเจพ เจนเจพเจ‚เฅค เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจšเจฐเจšเจพ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจฎเฉ‡เจฐเฉ‡ เจธเฉเจเจพเจ… เจคเฉเจนเจพเจกเฉ‡ เจ•เจพเจฐเฉ‹เจฌเจพเจฐ เจฆเฉ€ เจ•เจฟเจตเฉ‡เจ‚ เจฎเจฆเจฆ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจ, เจคเจพเจ‚ เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจฎเฉ‡เจฐเฉ‡ เจจเจพเจฒ เจธเฉฐเจชเจฐเจ• เจ•เจฐเฉ‹ เจธเจฌเฉฐเจงเจค.

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹