āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ˛āĻāĻā§āĻ˛āĻŋ āĻĻā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻ¨āĻ āĻāĻ¯āĻŧā§āĻŦ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĨāĻžāĻā§āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°ā§āĻā§āĻ¨ āĻ¯ā§ āĻā§āĻāĻžāĻŦā§, āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻšāĻŋāĻ¸āĻžāĻŦā§, āĻāĻ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸āĻā§āĻ˛āĻŋ āĻāĻāĻŋāĻ˛ āĻāĻŦāĻ (āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ) āĻā§āĻŦ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻļā§āĻ˛ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻŋāĻā§ āĻāĻĒāĻ¨āĻŋ āĻ āĻā§āĻ¯āĻ¸ā§āĻ¤ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻāĻŋāĻā§ āĻāĻā§āĻŦāĻžāĻ°ā§ āĻāĻ¯āĻŧāĻžāĻ¨āĻ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻž āĻāĻŽāĻžāĻ° āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻāĻžāĻ°āĻŖ āĻšāĻ˛ āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻā§āĻ˛āĻāĻžāĻŦā§ āĻ˛āĻ āĻĻā§āĻāĻžāĻ° āĻāĻžāĻāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻāĻ°āĻŋ: āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻ¯āĻŧā§āĻŦ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋ āĻ¯ā§āĻāĻžāĻ¨ā§ CLI (āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻāĻ¨ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸) āĻāĻžāĻ˛ āĻāĻžāĻ āĻāĻ°ā§ āĻāĻŽāĻŋ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤āĻāĻžāĻŦā§ tail, grep, awk āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻā§āĻŦ āĻ¸ā§āĻŦāĻžāĻā§āĻāĻ¨ā§āĻĻā§āĻ¯āĻŦā§āĻ§ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻ¤āĻžāĻ āĻāĻŽāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ˛āĻāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĻāĻ°ā§āĻļ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸āĻāĻŋ āĻā§āĻ˛ āĻāĻŦāĻ āĻā§āĻ°ā§āĻĒā§āĻ° āĻŽāĻ¤ā§āĻ āĻāĻŋāĻā§ āĻšāĻŦā§, āĻ¤āĻŦā§ āĻāĻāĻŋ āĻ āĻ¨ā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻāĻ¸āĻž āĻ˛āĻāĻā§āĻ˛āĻŋ āĻĒāĻĄāĻŧāĻ¤ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¯ā§, āĻ āĻŦāĻļā§āĻ¯āĻ, āĻā§āĻ˛āĻŋāĻāĻšāĻžāĻāĻ¸ āĻĨā§āĻā§ āĻ¤āĻžāĻĻā§āĻ° āĻĒāĻĄāĻŧā§āĻ¨!
*āĻšāĻžāĻŦāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤ āĻŽāĻ¤āĻžāĻŽāĻ¤ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§
logscli āĻāĻ° āĻ¸āĻžāĻĨā§ āĻĻā§āĻāĻž āĻāĻ°ā§āĻ¨
āĻāĻŽāĻŋ āĻāĻŽāĻžāĻ° āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¨āĻžāĻŽ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ¸āĻŋāĻ¨āĻŋ, āĻāĻŦāĻ, āĻ¸āĻ¤ā§āĻ¯āĻŋ āĻŦāĻ˛āĻ¤ā§, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻāĻžāĻāĻĒā§āĻ° āĻāĻāĻžāĻ°ā§ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨, āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ
āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄāĻāĻŋ āĻĻā§āĻāĻ¤ā§ āĻāĻžāĻ¨ āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸ā§āĻŦāĻžāĻāĻ¤ āĻāĻžāĻ¨āĻžāĻ:
āĻ¸ā§āĻ¯ā§āĻ
āĻāĻŽāĻžāĻ° āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻŋāĻ˛ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯āĻž āĻ¤āĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻŦā§ āĻ¯āĻžāĻ°āĻž āĻā§āĻāĻ˛/āĻā§āĻ°ā§āĻĒ āĻāĻ°āĻ¤ā§ āĻ āĻā§āĻ¯āĻ¸ā§āĻ¤, āĻ āĻ°ā§āĻĨāĻžā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻŋāĻ¨āĻŋāĻ¸āĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯:
- āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻŋāĻ āĻāĻžāĻĄāĻŧāĻžāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ˛āĻ āĻĻā§āĻā§āĻ¨āĨ¤
- āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻžāĻŦāĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻ§āĻžāĻ°āĻŖāĻāĻžāĻ°ā§ āĻ˛āĻžāĻāĻ¨āĻā§āĻ˛āĻŋ āĻā§āĻĄāĻŧā§ āĻĻāĻŋāĻ¨ (āĻĒāĻ¤āĻžāĻāĻž
-F
Ņgrep
). - āĻ°ā§āĻā§āĻ˛āĻžāĻ° āĻāĻā§āĻ¸āĻĒā§āĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽā§āĻ˛ā§ āĻāĻŽāĻ¨ āĻ˛āĻžāĻāĻ¨āĻā§āĻ˛āĻŋ āĻā§āĻĄāĻŧā§ āĻĻāĻŋāĻ¨ (āĻĒāĻ¤āĻžāĻāĻž
-E
Ņgrep
). - āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§, āĻĻā§āĻāĻž āĻŦāĻŋāĻĒāĻ°ā§āĻ¤ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻā§āĻ°āĻŽāĻŋāĻ āĻā§āĻ°āĻŽā§ āĻšāĻ¯āĻŧ, āĻ¯ā§āĻšā§āĻ¤ā§ āĻ¸āĻžāĻŽā§āĻĒā§āĻ°āĻ¤āĻŋāĻ āĻ˛āĻāĻā§āĻ˛āĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻĒā§āĻ°āĻĨāĻŽ āĻāĻā§āĻ°āĻšā§āĻ° āĻšāĻ¯āĻŧā§ˇ
- āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ˛āĻžāĻāĻ¨ā§āĻ° āĻĒāĻžāĻļā§ āĻĒā§āĻ°āĻ¸āĻā§āĻ āĻĻā§āĻāĻžāĻ¨ (āĻŦāĻŋāĻāĻ˛ā§āĻĒ
-A
,-B
и-C
Ņgrep
, āĻ¯āĻĨāĻžāĻā§āĻ°āĻŽā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻŽāĻŋāĻ˛āĻŋāĻ¤ āĻ˛āĻžāĻāĻ¨ā§āĻ° āĻāĻā§, āĻĒāĻ°ā§ āĻāĻŦāĻ āĻāĻžāĻ°āĻĒāĻžāĻļā§ N āĻ˛āĻžāĻāĻ¨ āĻŽā§āĻĻā§āĻ°āĻŖ)āĨ¤ - āĻ°āĻŋāĻ¯āĻŧā§āĻ˛ āĻāĻžāĻāĻŽā§ āĻāĻ¨āĻāĻžāĻŽāĻŋāĻ āĻ˛āĻāĻā§āĻ˛āĻŋ āĻĻā§āĻā§āĻ¨, āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻŋāĻ āĻ¸āĻš āĻŦāĻž āĻāĻžāĻĄāĻŧāĻžāĻ (āĻŽā§āĻ˛āĻ¤
tail -f | grep
). - āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻšāĻ¤ā§ āĻšāĻŦā§
less
,head
,tail
āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ - āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§, āĻĢāĻ˛āĻžāĻĢāĻ˛āĻā§āĻ˛āĻŋ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻžāĻ° āĻāĻĒāĻ° āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻāĻžāĻĄāĻŧāĻžāĻ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤; āĻ˛āĻžāĻāĻ¨āĻā§āĻ˛āĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°ā§āĻŽ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŽā§āĻĻā§āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻ¯āĻ¤āĻā§āĻˇāĻŖ āĻ¨āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻĒā§āĻ¤ā§ āĻāĻā§āĻ°āĻšā§ āĻšāĻ¯āĻŧ; āĻ¸āĻāĻā§āĻ¤SIGPIPE
āĻ¨āĻŋāĻāĻļāĻŦā§āĻĻā§ āĻ˛āĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻŋāĻ āĻŦāĻžāĻ§āĻž āĻĻā§āĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤, āĻ āĻŋāĻ āĻ¯ā§āĻŽāĻ¨ āĻ¤āĻžāĻ°āĻž āĻāĻ°ā§tail
,grep
āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻāĻ¨āĻŋāĻā§āĻ¸ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋāĨ¤
āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨
āĻāĻŽāĻŋ āĻ
āĻ¨ā§āĻŽāĻžāĻ¨ āĻāĻ°āĻŦ āĻ¯ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻāĻžāĻ¨ā§āĻ¨ āĻāĻŋāĻāĻžāĻŦā§ āĻā§āĻ˛āĻŋāĻ āĻšāĻžāĻāĻ¸ā§ āĻ˛āĻ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻšāĻ¯āĻŧ, āĻāĻŽāĻŋ āĻāĻāĻŋ āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāĻ
āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻŦā§āĻ¸ āĻ¸ā§āĻāĻŋāĻŽā§āĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ¸āĻŽāĻ¯āĻŧ āĻ āĻ¨ā§āĻ¸āĻžāĻ°ā§ āĻ¸āĻžāĻāĻžāĻ¨ā§ āĻ˛āĻāĻā§āĻ˛āĻŋ āĻĒā§āĻ¤ā§ āĻāĻžāĻ¨, āĻ¤āĻžāĻ āĻ¸ā§āĻā§āĻ˛āĻŋāĻā§ āĻ¸ā§āĻāĻžāĻŦā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻ¯ā§āĻā§āĻ¤āĻŋāĻ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋ āĻ āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻ˛āĻ āĻŦāĻŋāĻāĻžāĻ āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻāĻāĻ āĻ§āĻ°āĻŖā§āĻ° āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻā§-āĻāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻāĻ˛āĻžāĻŽ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻāĻāĻŋ āĻ˛āĻ āĻŦāĻŋāĻāĻžāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ - āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻžāĻ§āĻŋāĻ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻ°āĻžāĻāĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻŦā§, āĻ¯āĻž āĻāĻāĻāĻŋ āĻŦāĻĄāĻŧ āĻĒā§āĻ˛āĻžāĻ¸ āĻšāĻŦā§ āĻ¯āĻāĻ¨ āĻā§āĻ˛āĻŋāĻāĻšāĻžāĻāĻ¸ā§ āĻĸā§āĻāĻžāĻ¨ā§ (āĻšāĻžāĻ°ā§āĻĄ āĻĄā§āĻ°āĻžāĻāĻ āĻ¸āĻš āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§, āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ ~1 āĻŦāĻžāĻ°ā§āĻ° āĻŦā§āĻļāĻŋ āĻĄā§āĻāĻž āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻāĻ°āĻžāĻ¨ā§ āĻŦāĻžāĻā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĒā§āĻ°ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯).
āĻ āĻ°ā§āĻĨāĻžā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻā§āĻŦāĻŋāĻ˛ āĻ¸ā§āĻāĻŋāĻŽ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨:
CREATE TABLE logs(
category LowCardinality(String), -- ĐēĐ°ŅĐĩĐŗĐžŅиŅ ĐģĐžĐŗОв (ĐžĐŋŅиОĐŊĐ°ĐģŅĐŊĐž)
time DateTime, -- вŅĐĩĐŧŅ ŅОйŅŅиŅ
millis UInt16, -- ĐŧиĐģĐģиŅĐĩĐēŅĐŊĐ´Ņ (ĐŧĐžĐŗŅŅ ĐąŅŅŅ и ĐŧиĐēŅĐžŅĐĩĐēŅĐŊĐ´Ņ, и Ņ.Đ´.): ŅĐĩĐēĐžĐŧĐĩĐŊĐ´ŅĐĩŅŅŅ Ņ
ŅĐ°ĐŊиŅŅ, ĐĩŅĐģи ŅОйŅŅиК ĐŧĐŊĐžĐŗĐž, ŅŅОйŅ ĐąŅĐģĐž ĐģĐĩĐŗŅĐĩ ŅаСĐģиŅĐ°ŅŅ ŅОйŅŅиŅ ĐŧĐĩĐļĐ´Ņ ŅОйОК
..., -- ваŅи ŅОйŅŅвĐĩĐŊĐŊŅĐĩ ĐŋĐžĐģŅ, ĐŊĐ°ĐŋŅиĐŧĐĩŅ иĐŧŅ ŅĐĩŅвĐĩŅĐ°, ŅŅОвĐĩĐŊŅ ĐģĐžĐŗиŅОваĐŊиŅ, и ŅĐ°Đē Đ´Đ°ĐģĐĩĐĩ
message String -- ŅĐĩĐēŅŅ ŅООйŅĐĩĐŊиŅ
) ENGINE=MergeTree()
ORDER BY (category, time, millis)
āĻĻā§āĻ°ā§āĻāĻžāĻā§āĻ¯āĻŦāĻļāĻ¤, āĻāĻŽāĻŋ āĻ
āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻ¸āĻŽā§āĻŽāĻ¤ āĻ˛āĻ āĻ¸āĻš āĻā§āĻ¨ā§ āĻāĻ¨ā§āĻŽā§āĻā§āĻ¤ āĻāĻ¤ā§āĻ¸ āĻā§āĻāĻā§ āĻĒāĻžāĻāĻ¨āĻŋ āĻ¯āĻž āĻāĻŽāĻŋ āĻ§āĻ°āĻ¤ā§ āĻāĻŦāĻ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻ¤āĻžāĻ āĻāĻŽāĻŋ āĻāĻāĻŋāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ
āĻā§āĻ˛āĻŋāĻāĻšāĻžāĻāĻ¸ā§ āĻ ā§āĻ¯āĻžāĻŽāĻžāĻāĻ¨ āĻ°āĻŋāĻāĻŋāĻ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻžāĻŦāĻ˛ā§
āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ:
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
āĻ ā§āĻ¯āĻžāĻŽāĻžāĻāĻ¨ āĻĄā§āĻāĻžāĻ¸ā§āĻā§ āĻāĻāĻāĻŋ āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§āĻāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ°āĻŋāĻ āĻāĻā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻā§āĻ¨ āĻ¸āĻ āĻŋāĻ āĻ¸āĻŽāĻ¯āĻŧ āĻ¨ā§āĻ, āĻ¤āĻžāĻ āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻ°ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ¨ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻ āĻĄā§āĻāĻž āĻĒā§āĻ°āĻŖ āĻāĻ°āĻŋāĨ¤
10 GB āĻ°âā§āĻ¯āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻžāĻ¨āĻžāĻ¨āĻ¸āĻ āĻ¨āĻ¯āĻŧ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻŦāĻĄāĻŧ āĻĄā§āĻāĻž āĻĒāĻžāĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ tsv āĻĢāĻžāĻāĻ˛ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻ¨āĻŋāĻā§āĻā§ āĻĒā§āĻ°āĻĨāĻŽ ~20-16-āĻ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻžāĨ¤ 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
Google āĻā§āĻ˛āĻžāĻāĻĄā§ 1000 āĻāĻŋāĻāĻžāĻŦāĻžāĻāĻ āĻāĻāĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻĒāĻžāĻ°āĻ¸āĻŋāĻ¸ā§āĻā§āĻ¨ā§āĻ āĻĄāĻŋāĻ¸ā§āĻā§ (āĻ¯āĻž āĻāĻāĻāĻŋ HDD) (āĻāĻŽāĻŋ āĻŽā§āĻ˛āĻ¤ āĻāĻ āĻāĻāĻžāĻ°āĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ āĻ¯āĻžāĻ¤ā§ āĻāĻ¤āĻŋ āĻāĻāĻā§ āĻŦā§āĻļāĻŋ āĻšāĻ¯āĻŧ, āĻ¯āĻĻāĻŋāĻ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻāĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ SSD āĻ¸āĻ¸ā§āĻ¤āĻž āĻšāĻ¤) āĻāĻĒāĻ˛ā§āĻĄ 75 āĻā§āĻ°ā§ āĻāĻ¤āĻŋ āĻāĻŋāĻ˛ āĻĒā§āĻ°āĻžāĻ¯āĻŧ ~ 4 MB/sec.
- āĻāĻŽāĻŋ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻāĻāĻŋ āĻ°āĻŋāĻāĻžāĻ°ā§āĻā§āĻļāĻ¨ āĻāĻ°āĻŦ āĻ¯ā§ āĻāĻŽāĻŋ Google āĻ āĻāĻžāĻ āĻāĻ°āĻŋ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤ āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ¤ā§ āĻāĻŽāĻžāĻ° āĻāĻžāĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻā§āĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ āĻ¨ā§āĻ
āĻāĻŽāĻŋ āĻāĻ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĄā§āĻāĻžāĻ¸ā§āĻā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻŋāĻ¤ā§āĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦ, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻžāĻ° āĻšāĻžāĻ¤ā§ āĻāĻāĻŋāĻ āĻāĻŋāĻ˛āĨ¤
āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻŋāĻ āĻ āĻā§āĻ°āĻāĻ¤āĻŋ āĻĻā§āĻāĻžāĻ¨
āĻ¯ā§āĻšā§āĻ¤ā§ ClickHouse-āĻ āĻāĻŽāĻ°āĻž āĻ˛āĻ āĻ¸āĻš āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ā§ āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ, āĻāĻŦāĻ āĻāĻ āĻ
āĻĒāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻāĻāĻāĻŋ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻāĻŋāĻā§ āĻŽāĻŋāĻ˛ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¤āĻŦā§ āĻĻā§āĻ°ā§āĻ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ¨ā§ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¨āĻžāĻ āĻĻāĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¤āĻžāĻ āĻāĻāĻŋ āĻĻā§āĻāĻžāĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻāĻ¯āĻŧāĻž āĻŦāĻžāĻā§āĻāĻ¨ā§āĻ¯āĻŧāĨ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¸āĻš āĻĒā§āĻ°āĻĨāĻŽ āĻ¸āĻžāĻ°āĻŋ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĒā§āĻ°āĻļā§āĻ¨ā§āĻ° āĻ
āĻā§āĻ°āĻāĻ¤āĻŋāĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, HTTP āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ā§ āĻāĻāĻāĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ HTTP āĻļāĻŋāĻ°ā§āĻ¨āĻžāĻŽā§ āĻ
āĻā§āĻ°āĻāĻ¤āĻŋ āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻĻā§āĻ¯āĻŧ: send_progress_in_http_headers=1
. āĻĻā§āĻ°ā§āĻāĻžāĻā§āĻ¯āĻŦāĻļāĻ¤, āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻā§ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻļāĻŋāĻ°ā§āĻ¨āĻžāĻŽāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§ āĻĒāĻĄāĻŧāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¨āĻž, āĻ¤āĻŦā§ HTTP 1.0 āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ (1.1 āĻāĻ° āĻ¸āĻžāĻĨā§ āĻŦāĻŋāĻā§āĻ°āĻžāĻ¨ā§āĻ¤ āĻšāĻŦā§āĻ¨ āĻ¨āĻž!) ClickHouse āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤, āĻ¤āĻžāĻ āĻāĻĒāĻ¨āĻŋ ClickHouse-āĻ āĻāĻāĻāĻŋ āĻāĻžāĻāĻāĻž TCP āĻ¸āĻāĻ¯ā§āĻ āĻā§āĻ˛āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻŋ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ GET /?query=... HTTP/1.0nn
āĻāĻŦāĻ āĻā§āĻ¨ā§ āĻĒāĻžāĻ˛āĻžāĻ¨ā§ āĻŦāĻž āĻāĻ¨āĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻāĻžāĻĄāĻŧāĻžāĻ āĻ°ā§āĻ¸āĻĒāĻ¨ā§āĻ¸ āĻšā§āĻĄāĻžāĻ° āĻāĻŦāĻ āĻŦāĻĄāĻŋ āĻĒāĻžāĻŦā§āĻ¨, āĻ¤āĻžāĻ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ°āĻ āĻĻāĻ°āĻāĻžāĻ° āĻ¨ā§āĻāĨ¤
ClickHouse āĻĨā§āĻā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻŋāĻ āĻ˛āĻ
ClickHouse āĻ¤ā§āĻ˛āĻ¨āĻžāĻŽā§āĻ˛āĻāĻāĻžāĻŦā§ āĻĻā§āĻ°ā§āĻ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ (2019 āĻ¸āĻžāĻ˛ āĻĨā§āĻā§?) ORDER BY-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ°āĻļā§āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāĻ¨ āĻāĻ°ā§āĻā§, āĻ¤āĻžāĻ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ¯ā§āĻŽāĻ¨
SELECT time, millis, message
FROM logs
WHERE message LIKE '%something%'
ORDER BY time DESC, millis DESC
āĻāĻāĻŋ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ āĻļā§āĻˇ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻā§āĻˇāĻž āĻ¨āĻž āĻāĻ°ā§, āĻ¤āĻžāĻĻā§āĻ° āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ āĻ¸āĻžāĻŦāĻ¸ā§āĻā§āĻ°āĻŋāĻ "āĻāĻŋāĻā§" āĻāĻā§ āĻāĻŽāĻ¨ āĻ˛āĻžāĻāĻ¨āĻā§āĻ˛āĻŋ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻāĻ¯āĻŧāĻž āĻļā§āĻ°ā§ āĻāĻ°āĻŦā§āĨ¤
āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻāĻŋ āĻā§āĻŦ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻšāĻŦā§ āĻ¯āĻĻāĻŋ āĻā§āĻ˛āĻŋāĻāĻšāĻžāĻāĻ¸ āĻ¨āĻŋāĻā§āĻ āĻ
āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋ āĻŦāĻžāĻ¤āĻŋāĻ˛ āĻāĻ°ā§ āĻĻā§āĻ¯āĻŧ āĻ¯āĻāĻ¨ āĻāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻ āĻŦāĻ¨ā§āĻ§ āĻāĻŋāĻ˛, āĻ¤āĻŦā§ āĻāĻāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻāĻāĻ°āĻŖ āĻ¨āĻ¯āĻŧāĨ¤ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻŦāĻžāĻ¤āĻŋāĻ˛āĻāĻ°āĻŖ āĻ¸āĻā§āĻˇāĻŽ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ cancel_http_readonly_queries_on_client_close=1
.
Go-āĻ¤ā§ SIGPIPE-āĻāĻ° āĻ¸āĻ āĻŋāĻ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻŋāĻ
āĻ¯āĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻāĻžāĻ˛āĻžāĻ¨, āĻŦāĻ˛ā§āĻ¨, āĻāĻĻā§āĻļ some_cmd | head -n 10
, āĻ āĻŋāĻ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻĻā§āĻļ some_cmd
āĻ¯āĻāĻ¨ āĻŽā§āĻ¤ā§āĻ¯ā§āĻĻāĻ¨ā§āĻĄ āĻŦāĻ¨ā§āĻ§ āĻāĻ°ā§ āĻĻā§āĻ¯āĻŧ head
10 āĻ˛āĻžāĻāĻ¨ āĻŦāĻŋāĻ¯āĻŧā§āĻ? āĻāĻ¤ā§āĻ¤āĻ°āĻāĻŋ āĻ¸āĻšāĻ: āĻāĻāĻ¨ head
āĻļā§āĻˇ āĻšāĻ¯āĻŧ, āĻĒāĻžāĻāĻĒ āĻŦāĻ¨ā§āĻ§ āĻšāĻ¯āĻŧ, āĻāĻŦāĻ some_cmd āĻāĻŽāĻžāĻ¨ā§āĻĄā§āĻ° stdout āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°ā§, āĻļāĻ°ā§āĻ¤āĻ¸āĻžāĻĒā§āĻā§āĻˇā§, "āĻā§āĻĨāĻžāĻ āĻ¨āĻž"āĨ¤ āĻāĻāĻ¨ some_cmd
āĻāĻāĻāĻŋ āĻŦāĻ¨ā§āĻ§ āĻĒāĻžāĻāĻĒā§ āĻ˛āĻŋāĻāĻ¤ā§ āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§,
āĻā§-āĻ¤ā§ āĻāĻāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§āĻ āĻāĻā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ 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 āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻ˛āĻžāĻāĻ¨āĻāĻŋ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§āĻ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ āĻāĻāĻŋ āĻā§āĻ¯āĻžāĻļā§ āĻļā§āĻˇ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§ āĻ āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋ āĻā§āĻŦ āĻĻā§āĻ°ā§āĻ¤ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ¸āĻžāĻŽāĻžāĻ¨ā§āĻ¯ CPU āĻāĻ°āĻ āĻāĻ°ā§ (āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋ āĻāĻŽāĻžāĻ° āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧ ~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-āĻ āĻāĻĒāĻ˛āĻŦā§āĻ§
āĻāĻ¤ā§āĻ¸: www.habr.com