แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ— แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒš แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒก แƒ›แƒกแƒแƒคแƒšแƒ˜แƒแƒจแƒ˜* แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒœแƒแƒฎแƒแƒ•แƒแƒ“

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ— แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒš แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒก แƒ›แƒกแƒแƒคแƒšแƒ˜แƒแƒจแƒ˜* แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒœแƒแƒฎแƒแƒ•แƒแƒ“ แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ“แƒ”แƒกแƒ›แƒ” แƒ’แƒแƒ›แƒแƒ’แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒแƒ— แƒ•แƒ”แƒ‘ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ”แƒ‘แƒ˜ แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒœแƒแƒฎแƒแƒ•แƒแƒ“, แƒ›แƒแƒจแƒ˜แƒœ แƒแƒšแƒ‘แƒแƒ— แƒจแƒ”แƒแƒ›แƒฉแƒœแƒ˜แƒ”แƒ—, แƒ แƒแƒ’แƒแƒ , แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ”แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ”แƒ‘แƒ˜ แƒ แƒ—แƒฃแƒšแƒ˜ แƒ“แƒ (แƒฎแƒจแƒ˜แƒ แƒแƒ“) แƒแƒ แƒช แƒ—แƒฃ แƒ˜แƒกแƒ” แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ“แƒ แƒกแƒแƒžแƒแƒกแƒฃแƒฎแƒแƒ. แƒ–แƒแƒ’แƒก แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒ”แƒ’แƒฃแƒแƒ—, แƒ–แƒแƒ’แƒก แƒแƒ‘แƒกแƒแƒšแƒฃแƒขแƒฃแƒ แƒแƒ“ แƒกแƒแƒจแƒ˜แƒœแƒ”แƒšแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ”แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ˜ แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒแƒ แƒแƒกแƒฌแƒแƒ แƒแƒ“ แƒ›แƒ˜แƒ•แƒฃแƒ“แƒ’แƒ”แƒ‘แƒ˜แƒ— แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒฎแƒ•แƒ˜แƒก แƒแƒ›แƒแƒชแƒแƒœแƒแƒก: แƒ•แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒ•แƒ”แƒ‘ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜, แƒกแƒแƒ“แƒแƒช CLI (แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜) แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒแƒ“. แƒ›แƒ” แƒžแƒ˜แƒ แƒแƒ“แƒแƒ“ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ™แƒแƒ›แƒคแƒแƒ แƒขแƒฃแƒšแƒแƒ“ แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘ tail-แƒ—แƒแƒœ, grep-แƒ—แƒแƒœ, awk-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒฎแƒ•แƒ”แƒ‘แƒ—แƒแƒœ แƒ“แƒ, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒฉแƒ”แƒ›แƒ—แƒ•แƒ˜แƒก แƒ˜แƒ“แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜ แƒšแƒแƒ’แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ tail-แƒ˜แƒกแƒ แƒ“แƒ grep-แƒ˜แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒแƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ“แƒแƒœ แƒ›แƒแƒกแƒฃแƒš แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒแƒ“. แƒ”แƒก, แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ— ClickHouse-แƒ“แƒแƒœ!

*แƒฐแƒแƒ‘แƒ แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒแƒ–แƒ แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— แƒ›แƒแƒ’แƒแƒ แƒ˜ แƒฎแƒแƒ 

แƒ’แƒแƒ˜แƒชแƒแƒœแƒ˜แƒ— logscli

แƒ›แƒ” แƒแƒ  แƒ›แƒแƒ•แƒ˜แƒคแƒ˜แƒฅแƒ แƒ” แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒฉแƒ”แƒ›แƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ, แƒ›แƒแƒ แƒ—แƒแƒšแƒ˜ แƒ’แƒ˜แƒ—แƒฎแƒ แƒแƒ—, แƒ˜แƒก แƒฃแƒคแƒ แƒ แƒžแƒ แƒแƒขแƒแƒขแƒ˜แƒžแƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฃ แƒ’แƒกแƒฃแƒ แƒ— แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒœแƒแƒฎแƒแƒ— แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ แƒ™แƒแƒ“แƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒ›แƒแƒ’แƒ”แƒกแƒแƒšแƒ›แƒ”แƒ‘แƒแƒ—: https://github.com/YuriyNasretdinov/logscli (แƒจแƒ”แƒ แƒฉแƒ”แƒฃแƒšแƒ˜ Go แƒ™แƒแƒ“แƒ˜แƒก 350 แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜).

แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜

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

  1. แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜, แƒคแƒ˜แƒšแƒขแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”.
  2. แƒ“แƒแƒขแƒแƒ•แƒ” แƒฎแƒแƒ–แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒฅแƒ•แƒ”แƒกแƒขแƒ แƒ˜แƒœแƒ’แƒก (แƒ“แƒ แƒแƒจแƒ -F ัƒ grep).
  3. แƒ“แƒแƒขแƒแƒ•แƒ”แƒ— แƒฎแƒแƒ–แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒจแƒ”แƒ”แƒกแƒแƒ‘แƒแƒ›แƒ”แƒ‘แƒ แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒš แƒ’แƒแƒ›แƒแƒœแƒแƒ—แƒฅแƒ•แƒแƒ›แƒก (แƒ“แƒ แƒแƒจแƒ -E ัƒ grep).
  4. แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, แƒœแƒแƒฎแƒ•แƒ แƒฎแƒ“แƒ”แƒ‘แƒ แƒกแƒแƒžแƒ˜แƒ แƒ˜แƒกแƒžแƒ˜แƒ แƒ แƒฅแƒ แƒแƒœแƒแƒšแƒแƒ’แƒ˜แƒฃแƒ แƒ˜ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ˜แƒ—, แƒ แƒแƒ“แƒ’แƒแƒœ แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒแƒ.
  5. แƒ™แƒแƒœแƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒฎแƒแƒ–แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒ— (แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ -A, -B ะธ -C ัƒ grep, N แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜แƒก แƒ“แƒแƒ‘แƒ”แƒญแƒ“แƒ•แƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒจแƒ”แƒกแƒแƒขแƒงแƒ•แƒ˜แƒกแƒ˜ แƒฎแƒแƒ–แƒ˜แƒก แƒฌแƒ˜แƒœ, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒ แƒ’แƒแƒ แƒจแƒ”แƒ›แƒ, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“).
  6. แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒจแƒ”แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ  แƒ“แƒ แƒแƒจแƒ˜, แƒ’แƒแƒคแƒ˜แƒšแƒขแƒ•แƒ แƒ˜แƒ— แƒแƒœ แƒ›แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” (แƒแƒ แƒกแƒ”แƒ‘แƒ˜แƒ—แƒแƒ“ tail -f | grep).
  7. แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒแƒ“แƒ˜ less, head, tail แƒ“แƒ แƒกแƒฎแƒ•แƒ”แƒ‘แƒ˜ - แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒก แƒ›แƒแƒ—แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”; แƒฎแƒแƒ–แƒ”แƒ‘แƒ˜ แƒ˜แƒ‘แƒ”แƒญแƒ“แƒ”แƒ‘แƒ แƒœแƒแƒ™แƒแƒ“แƒแƒ“ แƒ›แƒแƒœแƒแƒ›, แƒกแƒแƒœแƒแƒ› แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ“แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ›แƒแƒ—แƒ˜ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ˜แƒ—; แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜ SIGPIPE แƒฃแƒœแƒ“แƒ แƒฉแƒฃแƒ›แƒแƒ“ แƒจแƒ”แƒฌแƒงแƒ•แƒ˜แƒขแƒแƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก แƒœแƒแƒ™แƒแƒ“แƒ˜, แƒ˜แƒกแƒ”แƒ•แƒ” แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ›แƒแƒก แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ”แƒœ tail, grep แƒ“แƒ UNIX-แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜.

ะ ะตะฐะปะธะทะฐั†ะธั

แƒ›แƒ” แƒ•แƒ˜แƒ•แƒแƒ แƒแƒฃแƒ“แƒ”แƒ‘, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒ™แƒ•แƒ” แƒ˜แƒชแƒ˜แƒ— แƒ แƒแƒ’แƒแƒ  แƒ›แƒ˜แƒแƒฌแƒแƒ“แƒแƒ— แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜ ClickHouse-แƒจแƒ˜. แƒ—แƒฃ แƒแƒ แƒ, แƒ’แƒ˜แƒ แƒฉแƒ”แƒ•แƒ— แƒกแƒชแƒแƒ“แƒแƒ— LSD ะธ แƒ™แƒœแƒฃแƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒšแƒ˜แƒ“แƒ แƒ”แƒก แƒกแƒขแƒแƒขแƒ˜แƒ แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘.

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

แƒแƒœแƒฃ, แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒกแƒฅแƒ”แƒ›แƒ:

CREATE TABLE logs(
    category LowCardinality(String), -- ะบะฐั‚ะตะณะพั€ะธั ะปะพะณะพะฒ (ะพะฟั†ะธะพะฝะฐะปัŒะฝะพ)
    time DateTime, -- ะฒั€ะตะผั ัะพะฑั‹ั‚ะธั
    millis UInt16, -- ะผะธะปะปะธัะตะบัƒะฝะดั‹ (ะผะพะณัƒั‚ ะฑั‹ั‚ัŒ ะธ ะผะธะบั€ะพัะตะบัƒะฝะดั‹, ะธ ั‚.ะด.): ั€ะตะบะพะผะตะฝะดัƒะตั‚ัั ั…ั€ะฐะฝะธั‚ัŒ, ะตัะปะธ ัะพะฑั‹ั‚ะธะน ะผะฝะพะณะพ, ั‡ั‚ะพะฑั‹ ะฑั‹ะปะพ ะปะตะณั‡ะต ั€ะฐะทะปะธั‡ะฐั‚ัŒ ัะพะฑั‹ั‚ะธั ะผะตะถะดัƒ ัะพะฑะพะน
    ..., -- ะฒะฐัˆะธ ัะพะฑัั‚ะฒะตะฝะฝั‹ะต ะฟะพะปั, ะฝะฐะฟั€ะธะผะตั€ ะธะผั ัะตั€ะฒะตั€ะฐ, ัƒั€ะพะฒะตะฝัŒ ะปะพะณะธั€ะพะฒะฐะฝะธั, ะธ ั‚ะฐะบ ะดะฐะปะตะต
    message String -- ั‚ะตะบัั‚ ัะพะพะฑั‰ะตะฝะธั
) ENGINE=MergeTree()
ORDER BY (category, time, millis)

แƒกแƒแƒ›แƒฌแƒฃแƒฎแƒแƒ แƒแƒ“, แƒ›แƒ” แƒ›แƒแƒจแƒ˜แƒœแƒ•แƒ” แƒ•แƒ”แƒ  แƒ•แƒ˜แƒžแƒแƒ•แƒ” แƒฆแƒ˜แƒ แƒฌแƒงแƒแƒ แƒแƒ”แƒ‘แƒ˜ แƒ แƒ”แƒแƒšแƒ˜แƒกแƒขแƒฃแƒ แƒ˜ แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒจแƒ”แƒ›แƒ”แƒซแƒšแƒ แƒแƒ”แƒฆแƒ แƒ“แƒ แƒ’แƒแƒ“แƒ›แƒแƒ•แƒฌแƒ”แƒ แƒ, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒแƒ›แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“ แƒแƒ•แƒ˜แƒฆแƒ” แƒ”แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒแƒ›แƒแƒ–แƒแƒœแƒ˜แƒก แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒ 2015 แƒฌแƒšแƒแƒ›แƒ“แƒ”. แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒ›แƒแƒ—แƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒ’แƒ˜แƒ•แƒ”, แƒ แƒแƒช แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒแƒ˜แƒšแƒฃแƒกแƒขแƒ แƒแƒชแƒ˜แƒแƒ“ แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜.

แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒแƒ›แƒแƒ–แƒแƒœแƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒ”แƒ‘แƒ˜แƒก แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก ClickHouse-แƒ–แƒ”

แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒชแƒฎแƒ แƒ˜แƒšแƒ˜:

CREATE TABLE amazon(
   review_date Date,
   time DateTime DEFAULT toDateTime(toUInt32(review_date) * 86400 + rand() % 86400),
   millis UInt16 DEFAULT rand() % 1000,
   marketplace LowCardinality(String),
   customer_id Int64,
   review_id String,
   product_id LowCardinality(String),
   product_parent Int64,
   product_title String,
   product_category LowCardinality(String),
   star_rating UInt8,
   helpful_votes UInt32,
   total_votes UInt32,
   vine FixedString(1),
   verified_purchase FixedString(1),
   review_headline String,
   review_body String
)
ENGINE=MergeTree()
ORDER BY (time, millis)
SETTINGS index_granularity=8192

แƒแƒ›แƒแƒ–แƒแƒœแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜ แƒแƒ แƒ˜แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒ•แƒ˜แƒก แƒ—แƒแƒ แƒ˜แƒฆแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ–แƒฃแƒกแƒขแƒ˜ แƒ“แƒ แƒ แƒแƒ  แƒแƒ แƒ˜แƒก, แƒแƒกแƒ” แƒ แƒแƒ›, แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒแƒ•แƒกแƒแƒ— แƒ”แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ แƒแƒœแƒ“แƒแƒœแƒ˜แƒ—.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ— แƒงแƒ•แƒ”แƒšแƒ tsv แƒคแƒแƒ˜แƒšแƒ˜ แƒ“แƒ แƒจแƒ”แƒ›แƒแƒ˜แƒคแƒแƒ แƒ’แƒšแƒแƒ— แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ ~ 10-20-แƒ˜แƒ—, แƒ แƒแƒ—แƒ แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ“แƒ˜แƒ“แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ  แƒฏแƒ“แƒ”แƒ‘แƒ 16 GB แƒแƒžแƒ”แƒ แƒแƒขแƒ˜แƒฃแƒšแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒจแƒ˜. TSV แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒกแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ“ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ” แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ:

for i in *.tsv; do
    echo $i;
    tail -n +2 $i | pv |
    clickhouse-client --input_format_allow_errors_ratio 0.5 --query='INSERT INTO amazon(marketplace,customer_id,review_id,product_id,product_parent,product_title,product_category,star_rating,helpful_votes,total_votes,vine,verified_purchase,review_headline,review_body,review_date) FORMAT TabSeparated'
done

แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒš แƒ›แƒ“แƒ’แƒ แƒแƒ“ แƒ“แƒ˜แƒกแƒ™แƒ–แƒ” (แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ แƒ˜แƒก HDD) Google Cloud-แƒจแƒ˜ 1000 แƒ’แƒ‘ แƒ–แƒแƒ›แƒ˜แƒ— (แƒ”แƒก แƒ–แƒแƒ›แƒ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒแƒ“ แƒ˜แƒ›แƒ˜แƒขแƒแƒ› แƒแƒ•แƒ˜แƒฆแƒ”, แƒ แƒแƒ› แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ” แƒแƒ“แƒœแƒแƒ• แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒงแƒแƒคแƒ˜แƒšแƒ˜แƒงแƒ, แƒ—แƒฃแƒ›แƒชแƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒกแƒแƒญแƒ˜แƒ แƒ แƒ–แƒแƒ›แƒ˜แƒก SSD แƒฃแƒคแƒ แƒ แƒ˜แƒแƒคแƒ˜ แƒฆแƒ˜แƒ แƒ“แƒ) แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ” แƒ˜แƒงแƒ แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— ~ 75 แƒ›แƒ‘/แƒฌแƒ› 4 แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ–แƒ”.

  • แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ แƒ“แƒแƒฏแƒแƒ•แƒจแƒœแƒ, แƒ แƒแƒ› แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘ Google-แƒจแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ” แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜ แƒ“แƒ แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒก แƒแƒ แƒแƒคแƒ”แƒ แƒ˜ แƒแƒฅแƒ•แƒก แƒกแƒแƒ”แƒ แƒ—แƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒแƒจแƒ˜ แƒฉแƒ”แƒ›แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒกแƒ—แƒแƒœ.

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

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒ”แƒกแƒ˜แƒก แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ

แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ ClickHouse-แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒกแƒ แƒฃแƒš แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒแƒก แƒ›แƒแƒ’แƒ˜แƒ“แƒแƒ–แƒ” แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ“แƒ แƒแƒ› แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒแƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ“แƒ แƒ แƒ“แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒฆแƒแƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒœแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜, แƒ—แƒฃ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒจแƒ”แƒกแƒแƒขแƒงแƒ•แƒ˜แƒกแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒœแƒแƒžแƒแƒ•แƒœแƒ˜, แƒ›แƒ˜แƒ–แƒแƒœแƒจแƒ”แƒฌแƒแƒœแƒ˜แƒšแƒ˜แƒ แƒแƒฉแƒ•แƒ”แƒœแƒแƒ— แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒ”แƒกแƒ˜ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒแƒ›แƒ“แƒ”. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, HTTP แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒจแƒ˜ แƒแƒ แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ— แƒžแƒ แƒแƒ’แƒ แƒ”แƒกแƒ˜ HTTP แƒกแƒแƒ—แƒแƒฃแƒ แƒ”แƒ‘แƒจแƒ˜: send_progress_in_http_headers=1. แƒกแƒแƒ›แƒฌแƒฃแƒฎแƒแƒ แƒแƒ“, แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ Go แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ แƒ•แƒ”แƒ  แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒกแƒแƒ—แƒแƒฃแƒ แƒ”แƒ‘แƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› HTTP 1.0 แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜ (แƒแƒ  แƒฃแƒœแƒ“แƒ แƒแƒ’แƒ•แƒ”แƒ แƒ˜แƒแƒก 1.1-แƒจแƒ˜!) แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒšแƒ˜แƒ ClickHouse-แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ , แƒแƒกแƒ” แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒฎแƒกแƒœแƒแƒ— แƒ“แƒแƒฃแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ”แƒšแƒ˜ TCP แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ ClickHouse-แƒ—แƒแƒœ แƒ“แƒ แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ— แƒ˜แƒฅ. GET /?query=... HTTP/1.0nn แƒ“แƒ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ— แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒก แƒกแƒแƒ—แƒแƒฃแƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒขแƒ”แƒฅแƒกแƒขแƒ˜ แƒงแƒแƒ•แƒ”แƒšแƒ’แƒ•แƒแƒ แƒ˜ แƒ’แƒแƒฅแƒชแƒ”แƒ•แƒ˜แƒก แƒแƒœ แƒ“แƒแƒจแƒ˜แƒคแƒ•แƒ แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒแƒกแƒ” แƒ แƒแƒ›, แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒแƒ แƒช แƒ™แƒ˜ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ.

แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒ แƒ˜แƒ›แƒ˜แƒœแƒ’แƒ˜ ClickHouse-แƒ“แƒแƒœ

ClickHouse-แƒก แƒแƒฅแƒ•แƒก แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก ORDER BY-แƒ˜แƒ— แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒœแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ (2019 แƒฌแƒšแƒ˜แƒ“แƒแƒœ?), แƒแƒกแƒ” แƒ แƒแƒ›, แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ

SELECT time, millis, message
FROM logs
WHERE message LIKE '%something%'
ORDER BY time DESC, millis DESC

แƒ˜แƒก แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ‘แƒก แƒฎแƒแƒ–แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒแƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒกแƒแƒช แƒแƒฅแƒ•แƒ— แƒฅแƒ•แƒ”แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜ "แƒ แƒแƒฆแƒแƒช" แƒ›แƒแƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒจแƒ˜, แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒ›แƒ“แƒ” แƒ›แƒแƒšแƒแƒ“แƒ˜แƒœแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”.

แƒแƒกแƒ”แƒ•แƒ”, แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ, แƒ—แƒฃ แƒ—แƒแƒ•แƒแƒ“ ClickHouse-แƒ›แƒ แƒ’แƒแƒแƒฃแƒฅแƒ›แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ›แƒแƒกแƒ—แƒแƒœ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ แƒ“แƒแƒ˜แƒฎแƒฃแƒ แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒฅแƒชแƒ”แƒ•แƒ. แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒ’แƒแƒฃแƒฅแƒ›แƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฉแƒแƒ แƒ—แƒแƒ— แƒแƒคแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— cancel_http_readonly_queries_on_client_close=1.

SIGPIPE-แƒ˜แƒก แƒกแƒฌแƒแƒ แƒ˜ แƒ›แƒแƒ แƒ—แƒ•แƒ Go-แƒจแƒ˜

แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ—, แƒ—แƒฅแƒ•แƒ˜แƒ—, แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ some_cmd | head -n 10, แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ แƒแƒ’แƒแƒ  แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ some_cmd แƒแƒฉแƒ”แƒ แƒ”แƒ‘แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช head แƒ’แƒแƒ›แƒแƒแƒ™แƒšแƒ 10 แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜? แƒžแƒแƒกแƒฃแƒฎแƒ˜ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ: แƒ แƒแƒ“แƒ˜แƒก head แƒ›แƒ—แƒแƒ•แƒ แƒ“แƒ”แƒ‘แƒ, แƒ›แƒ˜แƒšแƒ˜ แƒ˜แƒฎแƒฃแƒ แƒ”แƒ‘แƒ แƒ“แƒ some_cmd แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก stdout แƒ˜แƒฌแƒงแƒ”แƒ‘แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒแƒก, แƒžแƒ˜แƒ แƒแƒ‘แƒ˜แƒ—แƒแƒ“, "แƒแƒ แƒกแƒแƒ“". แฒ แƒแƒ“แƒ”แƒกแƒแƒช some_cmd แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒก แƒฉแƒแƒฌแƒ”แƒ แƒแƒก แƒ“แƒแƒฎแƒฃแƒ แƒฃแƒš แƒ›แƒ˜แƒšแƒ–แƒ”, แƒ˜แƒก แƒ˜แƒฆแƒ”แƒ‘แƒก SIGPIPE แƒกแƒ˜แƒ’แƒœแƒแƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฉแƒฃแƒ›แƒแƒ“ แƒฌแƒงแƒ•แƒ”แƒขแƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒแƒก แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“.

Go-แƒจแƒ˜ แƒ”แƒก แƒแƒกแƒ”แƒ•แƒ” แƒฎแƒ“แƒ”แƒ‘แƒ แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, แƒ›แƒแƒ’แƒ แƒแƒ› SIGPIPE แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒ“แƒแƒ›แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒ‘แƒ”แƒญแƒ“แƒแƒ•แƒก "แƒกแƒ˜แƒ’แƒœแƒแƒšแƒก: SIGPIPE" แƒแƒœ แƒ›แƒกแƒ’แƒแƒ•แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก แƒ‘แƒแƒšแƒแƒก แƒ“แƒ แƒแƒ› แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒกแƒฃแƒคแƒ—แƒแƒ•แƒ”แƒ‘แƒšแƒแƒ“ แƒฉแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ›แƒแƒ•แƒ˜แƒฅแƒชแƒ”แƒ— SIGPIPE แƒ˜แƒกแƒ” แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒ˜แƒœแƒ“แƒ, แƒแƒœแƒฃ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒฉแƒฃแƒ›แƒแƒ“. แƒ’แƒแƒกแƒแƒกแƒ•แƒšแƒ”แƒšแƒ˜:

ch := make(chan os.Signal)
signal.Notify(ch, syscall.SIGPIPE)
go func() {
    <-ch
    os.Exit(0)
}()

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ

แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ’แƒกแƒฃแƒ แƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒ™แƒแƒœแƒขแƒ”แƒฅแƒกแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒ›แƒแƒฎแƒ“แƒ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ แƒแƒ›แƒ”แƒšแƒ›แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒ› แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ˜แƒ แƒžแƒแƒœแƒ˜แƒ™แƒ, แƒแƒœ แƒ แƒ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ˜แƒงแƒ แƒฎแƒ˜แƒšแƒฃแƒšแƒ˜ แƒแƒ•แƒแƒ แƒ˜แƒแƒ›แƒ“แƒ”) แƒ“แƒ grep แƒ”แƒก แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ -A, -B แƒ“แƒ -C แƒแƒคแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒœ แƒฎแƒแƒ–แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒš แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒฌแƒ˜แƒœ แƒ“แƒ แƒ’แƒแƒ แƒจแƒ”แƒ›แƒ, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“.

แƒกแƒแƒ›แƒฌแƒฃแƒฎแƒแƒ แƒแƒ“, แƒ›แƒ” แƒ•แƒ”แƒ  แƒ•แƒ˜แƒžแƒแƒ•แƒ” แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ’แƒ–แƒ, แƒ แƒแƒ› แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ แƒ˜แƒ’แƒ˜แƒ•แƒ” ClickHouse-แƒจแƒ˜, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ™แƒแƒœแƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒกแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“, แƒแƒกแƒ”แƒ—แƒ˜ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ–แƒ” (แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒแƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ”แƒ‘แƒแƒ–แƒ” แƒ“แƒ แƒ™แƒแƒœแƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒแƒ–แƒ” แƒแƒ“แƒ แƒ”. แƒแƒœ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’):

SELECT time,millis,review_body FROM amazon
WHERE (time = 'ะ’ะ ะ•ะœะฏ_ะกะžะ‘ะซะขะ˜ะฏ' AND millis < ะœะ˜ะ›ะ›ะ˜ะกะ•ะšะฃะะ”ะซ_ะกะžะ‘ะซะขะ˜ะฏ) OR (time < 'ะ’ะ ะ•ะœะฏ_ะกะžะ‘ะซะขะ˜ะฏ')
ORDER BY time DESC, millis DESC
LIMIT ะšะžะ›ะ˜ะงะ•ะกะขะ’ะž_ะกะขะ ะžะš_ะšะžะะขะ•ะšะกะขะ
SETTINGS max_threads=1

แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒ›แƒแƒจแƒ˜แƒœแƒ•แƒ” แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒช ClickHouse แƒ“แƒแƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒก แƒฎแƒแƒ–แƒก, แƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒ แƒ“แƒ”แƒ‘แƒ แƒฅแƒ”แƒจแƒจแƒ˜ แƒ“แƒ แƒ–แƒแƒ’แƒแƒ“แƒแƒ“ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒกแƒ แƒฃแƒšแƒ“แƒ”แƒ‘แƒ แƒ“แƒ แƒ›แƒแƒ˜แƒฎแƒ›แƒแƒ แƒก แƒ›แƒชแƒ˜แƒ แƒ” แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒก (แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— ~ 6 ms แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒฉแƒ”แƒ›แƒก แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ”).

แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ  แƒ“แƒ แƒแƒจแƒ˜

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

แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜

แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ logscli แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒจแƒ˜?

แƒ—แƒฃ แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ— แƒแƒ›แƒแƒ–แƒแƒœแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒจแƒ˜ แƒแƒฆแƒ•แƒœแƒ˜แƒจแƒœแƒ”, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ:

# ะŸะพะบะฐะทะฐั‚ัŒ ัั‚ั€ะพะบะธ, ะณะดะต ะฒัั‚ั€ะตั‡ะฐะตั‚ัั ัะปะพะฒะพ walmart
$ logscli -F 'walmart' | less

# ะŸะพะบะฐะทะฐั‚ัŒ ัะฐะผั‹ะต ัะฒะตะถะธะต 10 ัั‚ั€ะพะบ, ะณะดะต ะฒัั‚ั€ะตั‡ะฐะตั‚ัั "terrible"
$ logscli -F terrible -limit 10

# ะขะพ ะถะต ัะฐะผะพะต ะฑะตะท -limit:
$ logscli -F terrible | head -n 10

# ะŸะพะบะฐะทะฐั‚ัŒ ะฒัะต ัั‚ั€ะพะบะธ, ะฟะพะดั…ะพะดัั‰ะธะต ะฟะพะด /times [0-9]/, ะฝะฐะฟะธัะฐะฝะฝั‹ะต ะดะปั vine ะธ ัƒ ะบะพั‚ะพั€ั‹ั… ะฒั‹ัะพะบะธะน ั€ะตะนั‚ะธะฝะณ
$ logscli -E 'times [0-9]' -where="vine='Y' AND star_rating>4" | less

# ะŸะพะบะฐะทะฐั‚ัŒ ะฒัะต ัั‚ั€ะพะบะธ ัะพ ัะปะพะฒะพะผ "panic" ะธ 3 ัั‚ั€ะพะบะธ ะบะพะฝั‚ะตะบัั‚ะฐ ะฒะพะบั€ัƒะณ
$ logscli -F 'panic' -C 3 | less

# ะะตะฟั€ะตั€ั‹ะฒะฝะพ ะฟะพะบะฐะทั‹ะฒะฐั‚ัŒ ะฝะพะฒั‹ะต ัั‚ั€ะพะบะธ ัะพ ัะปะพะฒะพะผ "5-star"
$ logscli -F '5-star' -tailf

แƒšแƒ˜แƒขแƒ”แƒ แƒแƒขแƒฃแƒ แƒ

แƒ™แƒแƒ›แƒฃแƒœแƒแƒšแƒฃแƒ แƒ˜ แƒ™แƒแƒ“แƒ˜ (แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”) แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ github-แƒ–แƒ” https://github.com/YuriyNasretdinov/logscli. แƒ›แƒแƒฎแƒแƒ แƒฃแƒšแƒ˜ แƒ•แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ˜ แƒ›แƒแƒ•แƒ˜แƒกแƒ›แƒ˜แƒœแƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒกแƒแƒ–แƒ แƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒฉแƒ”แƒ›แƒก แƒ˜แƒ“แƒ”แƒแƒ–แƒ” แƒ™แƒแƒœแƒกแƒแƒšแƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ—แƒ•แƒแƒšแƒ˜แƒ”แƒ แƒ”แƒ‘แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒก ClickHouse-แƒ–แƒ” แƒ“แƒแƒงแƒ แƒ“แƒœแƒแƒ‘แƒ˜แƒ—.

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

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