1.1 แƒ›แƒ˜แƒšแƒ˜แƒแƒ แƒ“แƒ˜ แƒขแƒแƒฅแƒกแƒ˜แƒ— แƒ›แƒ’แƒ–แƒแƒ•แƒ แƒแƒ‘แƒ: 108 แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒแƒœแƒ˜ ClickHouse แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜

แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜ แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ“แƒ แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ แƒแƒ“ แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒกแƒขแƒฃแƒ“แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ˜แƒœแƒŸแƒ˜แƒœแƒ”แƒ แƒ˜.

1.1 แƒ›แƒ˜แƒšแƒ˜แƒแƒ แƒ“แƒ˜ แƒขแƒแƒฅแƒกแƒ˜แƒ— แƒ›แƒ’แƒ–แƒแƒ•แƒ แƒแƒ‘แƒ: 108 แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒแƒœแƒ˜ ClickHouse แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜

clickhouse แƒแƒ แƒ˜แƒก แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒกแƒ•แƒ”แƒขแƒแƒ•แƒแƒœแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ. แƒ”แƒก แƒจแƒ”แƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜ แƒ’แƒแƒ แƒ”แƒ›แƒแƒ, แƒกแƒแƒ“แƒแƒช แƒแƒกแƒแƒ‘แƒ˜แƒ— แƒแƒœแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒแƒกแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ›แƒแƒ˜แƒซแƒ˜แƒแƒก แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜, แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒ“แƒฆแƒ”แƒจแƒ˜ แƒแƒ—แƒแƒ‘แƒ˜แƒ— แƒ›แƒ˜แƒšแƒ˜แƒแƒ แƒ“แƒ˜ แƒแƒฎแƒแƒšแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜ แƒจแƒ”แƒ˜แƒขแƒแƒœแƒ”แƒ‘แƒ. แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒฎแƒแƒ แƒฏแƒ”แƒ‘แƒ˜ แƒแƒกแƒ”แƒ—แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒกแƒแƒญแƒ”แƒ แƒแƒ“ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก $100 แƒฌแƒ”แƒšแƒ˜แƒฌแƒแƒ“แƒจแƒ˜, แƒ“แƒ แƒžแƒแƒขแƒ”แƒœแƒชแƒ˜แƒฃแƒ แƒแƒ“ แƒœแƒแƒฎแƒ”แƒ•แƒแƒ แƒ˜, แƒ แƒแƒช แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ–แƒ”. แƒ”แƒ แƒ— แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜, ClickHouse-แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ Yandex Metrics-แƒ˜แƒกแƒ’แƒแƒœ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒ“แƒ 10 แƒขแƒ แƒ˜แƒšแƒ˜แƒแƒœ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒก. Yandex-แƒ˜แƒก แƒ’แƒแƒ แƒ“แƒ, ClickHouse-แƒ›แƒ แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒ˜แƒแƒฆแƒฌแƒ˜แƒ แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒแƒก Bloomberg-แƒ—แƒแƒœ แƒ“แƒ Cloudflare-แƒ—แƒแƒœ.

แƒแƒ แƒ˜ แƒฌแƒšแƒ˜แƒก แƒฌแƒ˜แƒœ แƒ’แƒแƒ•แƒแƒขแƒแƒ แƒ” แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ”แƒ‘แƒ˜ แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ˜แƒก แƒ’แƒแƒฎแƒ“แƒ แƒฃแƒกแƒฌแƒ แƒแƒคแƒ”แƒกแƒ˜ แƒฃแƒคแƒแƒกแƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ“แƒ”แƒกแƒ›แƒ” แƒ›แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก. แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒก แƒแƒ  แƒจแƒ”แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒแƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ, แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก Kafka, HDFS แƒ“แƒ ZStandard แƒจแƒ”แƒ™แƒฃแƒ›แƒจแƒ•แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ. แƒ’แƒแƒกแƒฃแƒš แƒฌแƒ”แƒšแƒก แƒ›แƒแƒ— แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒก แƒ™แƒแƒกแƒ™แƒแƒ“แƒฃแƒ แƒ˜ แƒจแƒ”แƒ™แƒฃแƒ›แƒจแƒ•แƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ“แƒ แƒ“แƒ”แƒšแƒขแƒ-แƒ“แƒแƒœ แƒ“แƒ”แƒšแƒขแƒ แƒ™แƒแƒ“แƒ˜แƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ’แƒแƒฎแƒ“แƒ. แƒ“แƒ แƒแƒ˜แƒก แƒกแƒ”แƒ แƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ™แƒฃแƒ›แƒจแƒ•แƒ˜แƒกแƒแƒก, แƒšแƒ˜แƒแƒœแƒ“แƒแƒ’แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ˜แƒงแƒแƒก แƒจแƒ”แƒ™แƒฃแƒ›แƒจแƒฃแƒšแƒ˜ แƒ“แƒ”แƒšแƒขแƒ แƒ™แƒแƒ“แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ“แƒ”แƒšแƒขแƒ แƒ“แƒ”แƒšแƒขแƒ แƒ™แƒแƒ“แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ. แƒ™แƒแƒ แƒ’แƒ˜ แƒจแƒ”แƒ™แƒฃแƒ›แƒจแƒ•แƒ แƒ’แƒแƒฎแƒ“แƒ ClickHouse-แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜.

ClickHouse แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ C++ แƒ™แƒแƒ“แƒ˜แƒก 170 แƒแƒ—แƒแƒกแƒ˜ แƒฎแƒแƒ–แƒ˜แƒกแƒ’แƒแƒœ, แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒ›แƒฎแƒแƒ แƒ˜แƒก แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ™แƒšแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒžแƒแƒขแƒแƒ แƒ แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒก แƒ‘แƒแƒ–แƒ. แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, SQLite แƒแƒ  แƒฃแƒญแƒ”แƒ แƒก แƒ›แƒฎแƒแƒ แƒก แƒ“แƒ˜แƒกแƒขแƒ แƒ˜แƒ‘แƒฃแƒชแƒ˜แƒแƒก แƒ“แƒ แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ 235 แƒแƒ—แƒแƒกแƒ˜ แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜แƒกแƒ’แƒแƒœ C แƒ™แƒแƒ“แƒ˜แƒกแƒ’แƒแƒœ. แƒแƒ› แƒ“แƒ แƒแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, 207 แƒ˜แƒœแƒŸแƒ˜แƒœแƒ”แƒ แƒ›แƒ แƒจแƒ”แƒ˜แƒขแƒแƒœแƒ แƒฌแƒ•แƒšแƒ˜แƒšแƒ˜ ClickHouse-แƒจแƒ˜ แƒ“แƒ แƒ‘แƒแƒšแƒ แƒ“แƒ แƒแƒก แƒ›แƒแƒขแƒฃแƒšแƒแƒ‘แƒก แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒœแƒกแƒ˜แƒ•แƒแƒ‘แƒ.

2017 แƒฌแƒšแƒ˜แƒก แƒ›แƒแƒ แƒขแƒจแƒ˜ ClickHouse-แƒ›แƒ แƒ“แƒแƒ˜แƒฌแƒงแƒ แƒฉแƒแƒขแƒแƒ แƒ”แƒ‘แƒ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜ แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ’แƒ–แƒ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ—แƒ•แƒแƒšแƒงแƒฃแƒ แƒ˜แƒก แƒ“แƒ”แƒ•แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ›แƒแƒ— แƒแƒกแƒ”แƒ•แƒ” แƒ“แƒแƒจแƒแƒšแƒ”แƒก แƒ›แƒแƒœแƒแƒšแƒ˜แƒ—แƒฃแƒ แƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜ Markdown-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ˜แƒ”แƒ แƒแƒ แƒฅแƒ˜แƒแƒจแƒ˜. แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒก แƒ—แƒ•แƒแƒšแƒงแƒฃแƒ แƒก แƒแƒ“แƒ”แƒ•แƒœแƒ”แƒ‘แƒ— GitHub-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ–แƒแƒ’แƒแƒ“แƒแƒ“ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒ’แƒแƒฎแƒ“แƒ แƒ‘แƒแƒšแƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฌแƒšแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜.

แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ›แƒ” แƒ•แƒแƒžแƒ˜แƒ แƒ”แƒ‘ แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒ ClickHouse แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก AWS EC2-แƒ–แƒ” 36 แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒแƒœแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ NVMe แƒกแƒแƒชแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ: แƒแƒ› แƒžแƒแƒกแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ”แƒ แƒ—แƒ˜ แƒ™แƒ•แƒ˜แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ›แƒ” แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒฉแƒแƒ•แƒแƒขแƒแƒ แƒ” แƒขแƒ”แƒกแƒขแƒ˜ แƒ’แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒ— แƒ“แƒ แƒ›แƒ˜แƒ•แƒแƒฆแƒฌแƒ˜แƒ” แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒ™แƒ”แƒ—แƒ”แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒก. แƒ”แƒก แƒžแƒแƒกแƒขแƒ˜ แƒ’แƒแƒœแƒแƒฎแƒšแƒ“แƒ แƒแƒ› แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒแƒกแƒแƒฎแƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

AWS EC2 แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ

แƒแƒ› แƒžแƒแƒกแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘ แƒกแƒแƒ› c5d.9xlarge EC2 แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒแƒก. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก 36 แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒก, 72 GB แƒแƒžแƒ”แƒ แƒแƒขแƒ˜แƒฃแƒšแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒก, 900 GB NVMe SSD แƒกแƒแƒชแƒแƒ•แƒก แƒ“แƒ แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก 10 แƒ’แƒ˜แƒ’แƒแƒ‘แƒ˜แƒขแƒ˜แƒแƒœ แƒฅแƒกแƒ”แƒšแƒก. แƒ›แƒแƒ—แƒ˜ แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ 1,962$/แƒกแƒแƒแƒ—แƒจแƒ˜ แƒ—แƒ˜แƒ—แƒ eu-west-1 แƒ แƒ”แƒ’แƒ˜แƒแƒœแƒจแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜. แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒš แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒ“ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘ Ubuntu Server 16.04 LTS-แƒก.

Firewall แƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒก แƒจแƒ”แƒ”แƒซแƒšแƒแƒก แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒ—แƒแƒœ แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” แƒ“แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒฉแƒ”แƒ›แƒ˜ IPv4 แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜ แƒแƒ แƒ˜แƒก แƒ—แƒ”แƒ—แƒ  แƒกแƒ˜แƒแƒจแƒ˜ SSH แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜.

NVMe แƒ“แƒ˜แƒกแƒ™แƒ˜ แƒแƒžแƒ”แƒ แƒแƒขแƒ˜แƒฃแƒšแƒ˜ แƒ›แƒ–แƒแƒ“แƒงแƒแƒคแƒœแƒ˜แƒก แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒแƒจแƒ˜แƒ

แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› ClickHouse-แƒ›แƒ แƒ˜แƒ›แƒฃแƒจแƒแƒแƒก, แƒ›แƒ” แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒ˜ แƒคแƒแƒ˜แƒšแƒฃแƒ  แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒก EXT4 แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜ NVMe แƒ“แƒ˜แƒกแƒ™แƒ–แƒ” แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”.

$ 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 แƒ›แƒ˜แƒšแƒ˜แƒแƒ แƒ“แƒ˜ แƒขแƒแƒฅแƒกแƒ˜แƒ— แƒ›แƒ’แƒ–แƒแƒ•แƒ แƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“ แƒœแƒ˜แƒฃ-แƒ˜แƒแƒ แƒ™แƒจแƒ˜ แƒ”แƒฅแƒ•แƒกแƒ˜ แƒฌแƒšแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜. แƒ‘แƒšแƒแƒ’แƒ–แƒ” แƒ”แƒ แƒ—แƒ˜ แƒ›แƒ˜แƒšแƒ˜แƒแƒ แƒ“แƒ˜ แƒขแƒแƒฅแƒกแƒ˜แƒ— แƒ›แƒแƒ’แƒ–แƒแƒฃแƒ แƒแƒ‘แƒ Redshift-แƒจแƒ˜ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ•แƒแƒ’แƒ แƒแƒ•แƒ” แƒ”แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜. แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ 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 แƒ“แƒ˜แƒกแƒ™แƒ–แƒ” แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”. แƒ”แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜ แƒแƒ แƒ˜แƒก ~104 GB GZIP-แƒจแƒ”แƒ™แƒฃแƒ›แƒจแƒฃแƒšแƒ˜ CSV แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜.

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

ClickHouse-แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ

แƒ›แƒ” แƒ“แƒแƒ•แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘ OpenJDK แƒ“แƒ˜แƒกแƒขแƒ แƒ˜แƒ‘แƒฃแƒชแƒ˜แƒแƒก Java 8-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒแƒญแƒ˜แƒ แƒแƒ Apache ZooKeeper-แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒญแƒ˜แƒ แƒแƒ 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

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ›แƒ” แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘ Ubuntu-แƒก แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒก 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), แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒขแƒแƒฅแƒกแƒ˜แƒ— แƒ›แƒ’แƒ–แƒแƒ•แƒ แƒแƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒก Log แƒซแƒ แƒแƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

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

แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜แƒก แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ” แƒ˜แƒงแƒ 155 แƒ›แƒ‘ แƒจแƒ”แƒฃแƒ™แƒฃแƒ›แƒจแƒฃแƒšแƒ˜ CSV แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜ แƒฌแƒแƒ›แƒจแƒ˜. แƒ›แƒ”แƒ”แƒญแƒ•แƒ”แƒ‘แƒ, แƒ แƒแƒ› แƒ”แƒก แƒ’แƒแƒ›แƒแƒฌแƒ•แƒ”แƒฃแƒšแƒ˜ แƒ˜แƒงแƒ GZIP-แƒ˜แƒก แƒ“แƒ”แƒ™แƒแƒ›แƒžแƒ แƒ”แƒกแƒ˜แƒ˜แƒก แƒจแƒ”แƒคแƒ”แƒ แƒฎแƒ”แƒ‘แƒ˜แƒ—. แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒงแƒแƒคแƒ˜แƒšแƒ˜แƒงแƒ แƒงแƒ•แƒ”แƒšแƒ gzipped แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒแƒ“ แƒแƒ›แƒแƒฎแƒกแƒœแƒ xargs-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ unzipped แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜. แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒ˜แƒ›แƒ˜แƒก แƒแƒฆแƒฌแƒ”แƒ แƒ, แƒ—แƒฃ แƒ แƒ แƒ˜แƒงแƒ แƒ›แƒแƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ 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

แƒ’แƒแƒ•แƒแƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒšแƒ”แƒ‘ NVMe แƒ“แƒ˜แƒกแƒ™แƒ–แƒ” แƒแƒ“แƒ’แƒ˜แƒšแƒก แƒแƒ แƒ˜แƒ’แƒ˜แƒœแƒแƒšแƒฃแƒ แƒ˜ CSV แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ˜แƒ—, แƒกแƒแƒœแƒแƒ› แƒ’แƒแƒ•แƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘.

$ sudo rm -fr /ch/csv

แƒ’แƒแƒ“แƒแƒ˜แƒงแƒ•แƒแƒœแƒ”แƒ— แƒกแƒ•แƒ”แƒขแƒ˜แƒก แƒคแƒแƒ แƒ›แƒแƒจแƒ˜

Log ClickHouse แƒซแƒ แƒแƒ•แƒ แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ›แƒฌแƒ™แƒ แƒ˜แƒ•แƒ–แƒ” แƒแƒ แƒ˜แƒ”แƒœแƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜. แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ›แƒ˜แƒ–แƒœแƒ˜แƒ—, แƒ›แƒ” แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒงแƒ•แƒแƒœแƒ” แƒกแƒ•แƒ”แƒขแƒ˜แƒก แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜ MergeTree แƒซแƒ แƒแƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

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

แƒ–แƒ”แƒ›แƒแƒแƒฆแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ˜ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ ClickHouse-แƒก แƒ›แƒ˜แƒ•แƒ”แƒชแƒ˜ 15 แƒฌแƒฃแƒ—แƒ˜, แƒ แƒแƒ—แƒ แƒ“แƒแƒจแƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒงแƒ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ˜แƒก แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒœแƒ˜แƒก แƒœแƒ˜แƒจแƒœแƒฃแƒšแƒก. แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒ”แƒ‘แƒ˜ 264 GB, 34 GB แƒ“แƒ 33 GB, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒกแƒแƒ›แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ“แƒแƒœ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ–แƒ” แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ.

ClickHouse แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒคแƒแƒกแƒ”แƒ‘แƒ

แƒ แƒแƒช แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ•แƒœแƒแƒฎแƒ”, แƒ˜แƒงแƒ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ“แƒ แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ›แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒ›แƒแƒ’แƒ˜แƒ“แƒแƒ–แƒ” แƒ แƒแƒ›แƒ“แƒ”แƒœแƒฏแƒ”แƒ แƒ›แƒ” 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;

แƒ แƒ”แƒคแƒšแƒ”แƒฅแƒกแƒ˜แƒ แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ–แƒ”

แƒ”แƒก แƒแƒ แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ, แƒ แƒแƒชแƒ CPU-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ›แƒ แƒฃแƒคแƒแƒกแƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒ› แƒจแƒ”แƒซแƒšแƒ แƒฉแƒ”แƒ›แƒก แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒจแƒ˜ GPU-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒš แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒก แƒ’แƒแƒฃแƒกแƒฌแƒ แƒ. GPU-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ›แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒ› แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ˜แƒแƒ แƒ แƒแƒ แƒ˜ แƒ’แƒแƒ“แƒแƒกแƒ˜แƒœแƒฏแƒ•แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช ClickHouse-แƒ›แƒ แƒ›แƒ˜แƒแƒฌแƒแƒ“แƒ แƒ”แƒ แƒ— แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ”, แƒ›แƒแƒ˜แƒœแƒช แƒซแƒแƒšแƒ˜แƒแƒœ แƒจแƒ—แƒแƒ›แƒ‘แƒ”แƒญแƒ“แƒแƒ•แƒ˜แƒ.

แƒแƒ›แƒแƒ•แƒ“แƒ แƒแƒฃแƒšแƒแƒ“, แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก 1-แƒ˜แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒš แƒซแƒ แƒแƒ•แƒ–แƒ” แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒ–แƒ”แƒ“แƒœแƒแƒ“แƒ”แƒ‘แƒ˜ แƒฎแƒแƒ แƒฏแƒ”แƒ‘แƒ˜ แƒฃแƒคแƒ แƒ แƒ›แƒแƒฆแƒแƒšแƒ˜แƒ. แƒ˜แƒ›แƒ”แƒ“แƒ˜ แƒ›แƒแƒฅแƒ•แƒก, แƒ แƒแƒฆแƒแƒช แƒ’แƒแƒ›แƒแƒ›แƒ แƒฉแƒ แƒฉแƒ”แƒ›แƒก แƒ™แƒ•แƒšแƒ”แƒ•แƒแƒจแƒ˜ แƒแƒ› แƒžแƒแƒกแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ™แƒแƒ แƒ’แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒแƒ“แƒ, แƒ แƒแƒ› แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒ“แƒ แƒ แƒจแƒ”แƒ›แƒชแƒ˜แƒ แƒ“แƒ”แƒก, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜ แƒ›แƒ”แƒข แƒ™แƒ•แƒแƒœแƒซแƒก แƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘. แƒ—แƒฃแƒ›แƒชแƒ, แƒ™แƒแƒ แƒ’แƒ˜แƒ, แƒ แƒแƒ› แƒกแƒฎแƒ•แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 2-แƒฏแƒ”แƒ  แƒ’แƒแƒ˜แƒ–แƒแƒ แƒ“แƒ.

แƒ™แƒแƒ แƒ’แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒแƒ“แƒ, แƒ แƒแƒ› แƒœแƒแƒฎแƒแƒ— ClickHouse แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ, แƒ แƒแƒ—แƒ แƒจแƒ”แƒซแƒšแƒแƒก แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ, แƒ แƒแƒ—แƒ แƒ›แƒแƒ— แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒšแƒแƒ“ แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜แƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒซแƒšแƒแƒœ. HDFS แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒ”แƒ›แƒแƒขแƒ แƒ’แƒแƒกแƒฃแƒš แƒฌแƒ”แƒšแƒก, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ แƒแƒ› แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒฃแƒšแƒ”แƒ‘แƒ˜แƒ—. แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒก แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ—, แƒ—แƒฃ แƒ”แƒ แƒ—แƒ˜ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒ“แƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜ แƒ›แƒ”แƒขแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒจแƒ˜แƒœ แƒแƒ› แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ˜แƒก แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒซแƒแƒšแƒ˜แƒแƒœ แƒœแƒแƒ—แƒ”แƒšแƒ˜แƒ.

แƒ’แƒ›แƒแƒ“แƒšแƒแƒ‘แƒ—, แƒ แƒแƒ› แƒ“แƒ แƒ แƒ“แƒแƒฃแƒ—แƒ›แƒ”แƒ— แƒแƒ› แƒžแƒแƒกแƒขแƒ˜แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒก. แƒ›แƒ” แƒ•แƒ—แƒแƒ•แƒแƒ–แƒแƒ‘ แƒกแƒแƒ™แƒแƒœแƒกแƒฃแƒšแƒขแƒแƒชแƒ˜แƒ, แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ˜แƒกแƒ แƒ“แƒ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒก แƒฉแƒ แƒ“แƒ˜แƒšแƒแƒ”แƒ— แƒแƒ›แƒ”แƒ แƒ˜แƒ™แƒแƒกแƒ แƒ“แƒ แƒ”แƒ•แƒ แƒแƒžแƒแƒจแƒ˜. แƒ—แƒฃ แƒ’แƒกแƒฃแƒ แƒ— แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒแƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฉแƒ”แƒ›แƒ˜ แƒฌแƒ˜แƒœแƒแƒ“แƒแƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒแƒ”แƒฎแƒ›แƒแƒ แƒแƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ‘แƒ˜แƒ–แƒœแƒ”แƒกแƒก, แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒ“แƒแƒ›แƒ˜แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ— แƒแƒ› แƒ’แƒ–แƒ˜แƒ— LinkedIn.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ