ClickHouse рдЙрддреНрдкрд╛рдж рд╡рд┐рд╢реНрд▓реЗрд╖рд┐рдХреА VKontakte



рдХрд┐рд╕реА рднреА рдЙрддреНрдкрд╛рдж рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛, рдЪрд╛рд╣реЗ рд╡рд╣ рд╡реАрдбрд┐рдпреЛ рд╕реЗрд╡рд╛ рд╣реЛ рдпрд╛ рдЯреЗрдк, рдХрд╣рд╛рдирд┐рдпрд╛рдВ рдпрд╛ рд▓реЗрдЦ, рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕рд╢рд░реНрдд "рдЦреБрд╢реА" рдХреЛ рдорд╛рдкрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдпрд╛ рдмрджрддрд░ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдЙрддреНрдкрд╛рдж рд╡рд┐рдХрд╛рд╕ рдХреА рджрд┐рд╢рд╛ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рдФрд░ рдЕрдкрдиреА рднрд╛рд╡рдирд╛рдУрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдкрд░ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рд╣рдордиреЗ 97 рдорд┐рд▓рд┐рдпрди-рдорд╛рд╕рд┐рдХ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗрд╡рд╛ рдкрд░ рдЙрддреНрдкрд╛рдж рдЖрдБрдХрдбрд╝реЗ рдФрд░ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдмреА рд╣рд╛рд╕рд┐рд▓ рдХреА, рдЬрдмрдХрд┐ рдЕрддреНрдпрдзрд┐рдХ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдкреНрд░рд╢реНрди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдПред рд╣рдо ClickHouse рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЗрдВрдЬрди рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред рдореИрдВ рдбреЗрдЯрд╛ рдПрдХрддреНрд░реАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛, рдЬреЛ рд╣рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╕реЗрдХрдВрдб рдореЗрдВ рдЬрдЯрд┐рд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИред

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐ рджрд┐рди рд▓рдЧрднрдЧ 6 рдмрд┐рд▓рд┐рдпрди рднреЛрдЬрди рдХреА рдШрдЯрдирд╛рдПрдВ рд╣реИрдВ, рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо 20-25 рдмрд┐рд▓рд┐рдпрди рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдВрдЧреЗред рдФрд░ рдлрд┐рд░ - рдЗрддрдиреА рддреЗрдЬ рдЧрддрд┐ рд╕реЗ рдирд╣реАрдВ, рд╣рдо рд╡рд░реНрд╖ рдХреЗ рдЕрдВрдд рддрдХ 40-50 рдмрд┐рд▓рд┐рдпрди рддрдХ рдмрдврд╝ рдЬрд╛рдПрдВрдЧреЗ рдЬрдм рд╣рдо рд╣рдорд╛рд░реЗ рд▓рд┐рдП рднреЛрдЬрди рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗред

рд╕реЗрдЯ рдореЗрдВ 1 рдкрдВрдХреНрддрд┐рдпрд╛рдБред рдмреАрддрд╛ рд╣реБрдЖ: 0.287 рд╕реЗрдХрдВрдбред 59.85 рдмрд┐рд▓рд┐рдпрди рдкрдВрдХреНрддрд┐рдпреЛрдВ, 59.85 GB (208.16 рдмрд┐рд▓рд┐рдпрди рдкрдВрдХреНрддрд┐рдпреЛрдВ / s, 208.16 GB / s) рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рддред

рдХрдЯ рдХреЗ рддрд╣рдд рд╡рд┐рд╡рд░рдгред

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдЙрдкрдХрд░рдг рдкрд╣рд▓реЗ VKontakte рдереЗред рдЕрджреНрд╡рд┐рддреАрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕реНрд▓рд╛рдЗрд╕ рджреНрд╡рд╛рд░рд╛ рдЗрд╡реЗрдВрдЯ рд╢реЗрдбреНрдпреВрд▓ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдерд╛ рдФрд░ рдЗрд╕ рддрд░рд╣ рдпрд╣ рд╕реЗрд╡рд╛ рдХреА рдЧрд╣рд░рд╛рдИ рдореЗрдВ рдЧрд┐рд░ рдЧрдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рддрдп рд╕реНрд▓рд╛рдЗрд╕ рдХрд╛ рд╕рд╡рд╛рд▓ рдерд╛, рдЕрджреНрд╡рд┐рддреАрдп рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдЪрдПрд▓рдПрд▓ рдХрд╛, рдХреБрдЫ рдЬрдХрдбрд╝рди рдХрд╛ рдФрд░ рдХреБрдЫ рдЬрд▓реНрджреА рд╕реЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рдХреЗ рд▓рд┐рдП "рдХрд┐рддрдирд╛?"

рдмреЗрд╢рдХ, рд╡рд╣рд╛рдБ рдерд╛, рд╣реИ рдФрд░ рдХрд░реЗрдВрдЧреЗ, рдпрд╣ рднреА рд▓рд┐рдЦрд╛ рдерд╛, рд▓рд┐рдЦрд╛ рд╣реИ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рдХрд╛ рдПрдХ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрдЪрдбреАрдПрдлрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдХреБрдЫ рдЯреАрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рджреБрдЦ рдХреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдПрдЪрдбреАрдПрдлрд╝рдПрд╕ рддреНрд╡рд░рд┐рдд рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ: рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдкреНрд░рд╢реНрди рдереЗ, рдЬрд┐рдирдХреЗ рдЙрддреНрддрд░ рдХреЛрдб рдореЗрдВ рдкрд╛рдП рдЬрд╛рдиреЗ рдереЗ, рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдирд╣реАрдВред

рд╣рдо рдЗрд╕ рдирддреАрдЬреЗ рдкрд░ рдкрд╣реБрдБрдЪреЗ рдХрд┐ рдЕрдм рдЗрд╕ рддрд░рд╣ рд░рд╣рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЯреАрдо рдореЗрдВ рдбреЗрдЯрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрди рдкрд░ рдХреНрд╡реЗрд░реАрдЬрд╝ рддреЗрдЬрд╝ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдбреЗрдЯрд╛ рд╕реНрд╡рдпрдВ рд╣реА рдЙрдкрдпреЛрдЧреА рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд╕рдЯреАрдХ рдФрд░ рд╕рдореГрджреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рд╕рд╛рдВрдЦреНрдпрд┐рдХреА / рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХреА рдирдИ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рддреИрдпрд╛рд░ рдХреА рд╣реИрдВ:

  • рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдкреНрд░рд╢реНрди рддреЗрдЬреА рд╕реЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП;
  • рдбреЗрдЯрд╛ рдХрд╛рдлреА рд╕рдЯреАрдХ рд╣реИ, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдпреЗ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдХрдЪреНрдЪреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЗрд╡реЗрдВрдЯ рд╣реИрдВ;
  • рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди, рд╕рдордЭ рдФрд░ рд╕реБрд▓рдн рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП;
  • рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг, рдПрдХ рдмрд╛рд░ рд╡рд┐рддрд░рдг рдХреА рдЧрд╛рд░рдВрдЯреА;
  • рдпреВрдирд┐рдпрдиреЛрдВ, рджрд░реНрд╢рдХреЛрдВ (рджреИрдирд┐рдХ, рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ, рдорд╛рд╕рд┐рдХ), рдкреНрд░рддрд┐рдзрд╛рд░рдг рдореИрдЯреНрд░рд┐рдХреНрд╕, рд╕реЗрд╡рд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рд╕рдордп, рд╕реНрд▓рд╛рдЗрд╕ рдХреЗ рд╕реЗрдЯ рджреНрд╡рд╛рд░рд╛ рдЕрджреНрд╡рд┐рддреАрдп рдФрд░ рдЕрдиреНрдп рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рдорд╛рддреНрд░рд╛рддреНрдордХ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ;
  • рдкрд░реАрдХреНрд╖рдг, рдбреЗрдЯрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИрдВред

рд░рд╕реЛрдИ рдореЗрдВ


рдЕрдиреБрднрд╡ рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рд╣рдореЗрдВ рджреЛ рдбреЗрдЯрд╛рдмреЗрд╕реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА: рдПрдХ рдзреАрдорд╛ рдПрдХ, рдЬрд╣рд╛рдВ рд╣рдо рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдФрд░ рд╕рдореГрджреНрдз рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдПрдХ рддреЗрдЬрд╝ рдПрдХ, рдЬрд╣рд╛рдВ рд╣рдо рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЧреНрд░рд╛рдлрд╝ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдмрд╕реЗ рдЖрдо рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдЪрдбреАрдПрдлрд╝рдПрд╕ рдореЗрдВ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдиреБрдорд╛рдиреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рд▓реЛрдЧреЛрдВ рдкрд░ рдФрд░ рд╕реНрд▓рд╛рдЗрд╕ рджреНрд╡рд╛рд░рд╛ рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ред

рдПрдХ рдЧрд░реНрдо рд╕рд┐рддрдВрдмрд░ рдХреЗ рджрд┐рди, рдХрдЬрд╝рд╛рди рдХреИрдереЗрдбреНрд░рд▓ рдХреА рдЕрдирджреЗрдЦреА рд░рд╕реЛрдИ рдореЗрдВ рдПрдХ рдХрдк рдЪрд╛рдп рдкрд░ рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдХреЛ рдПрдХ рддреНрд╡рд░рд┐рдд рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдЬрд╝рдорд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ - рдЙрд╕ рд╕рдордп рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрдХрдиреАрдХреА рд▓реЙрдЧ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛ред рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЧрддрд┐ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рд╕реЗ рдЬреБрдбрд╝реЗ рдХрдИ рд╕рдВрджреЗрд╣ рдереЗ: рдШреЛрд╖рд┐рдд рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдереЗ, рдФрд░ рдирдП рдбреЗрдЯрд╛рдмреЗрд╕ рдиреЗ рд╕рдордп-рд╕рдордп рдкрд░ рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рд╕реНрддрд╛рд╡ рд╕рд░рд▓ рдерд╛ - рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдкрд╣рд▓реЗ рдирдореВрдиреЗ


рд╣рдордиреЗ рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рджреЛ рдорд╢реАрдиреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рд╣реИ:
2xE5-2620 v4 (рдХреБрд▓ рдореЗрдВ 32 рдХреЛрд░), 256G ram, 28T рд╕реНрдерд╛рди (ext4 рдХреЗ рд╕рд╛рде raid10)ред

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдпрд╣ рд▓реЗрдЖрдЙрдЯ рдХреЗ рдкрд╛рд╕ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╣рдордиреЗ рджреВрд░ рддрдХ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ред ClickHouse рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреЗрдмрд▓ рдЗрдВрдЬрди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдорд░реНрдЬрдЯреНрд░реА рдкрд░рд┐рд╡рд╛рд░ рд╕реЗ рд╣реИрдВред рд╣рдордиреЗ рдирд┐рдореНрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде ReplpedReplacingMergeTree рдХреЛ рдЪреБрдирд╛:

PARTITION BY dt ORDER BY (toStartOfHour(time), cityHash64(user_id), event_microsec, event_id) SAMPLE BY cityHash64(user_id) SETTINGS index_granularity = 8192; 

рдкреНрд░рддрд┐рдХреГрддрд┐ - рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╣рдорд╛рд░реА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ - рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдХрдЯреМрддреА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рд╕реЙрд░реНрдЯ рдХреБрдВрдЬреА рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП ORDER BY рдЕрдиреБрднрд╛рдЧ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреНрдпрд╛ рд╣реИред

рдирдореВрдирд╛ рджреНрд╡рд╛рд░рд╛ - рдореИрдВ рднреА рдирдореВрдирд╛ рд▓реЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛: рдирдореВрдирд╛ рдПрдХ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдирдореВрдирд╛ рджреЗрддрд╛ рд╣реИред

index_granularity = 8192 рдЗрдВрдбреЗрдХреНрд╕ рд╕реЗрд░рд┐рдлрд╝реНрд╕ (рд╣рд╛рдБ, рдпрд╣ рд╡рд┐рд░рд▓ рд╣реИ) рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдЬрд╛рджреБрдИ рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдордиреЗ рдЗрд╕реЗ рдирд╣реАрдВ рдмрджрд▓рд╛ред

рд╡рд┐рднрд╛рдЬрди рджрд┐рди рдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ - рдорд╣реАрдиреЗ рдХреЗ рдЕрдиреБрд╕рд╛рд░)ред рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреЗрдЯрд╛ рдЕрдиреБрд░реЛрдз рдЗрдВрдЯреНрд░рд╛рдбреЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдереЗ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рджрд┐рди рдХреЗ рд▓рд┐рдП рд╡реАрдбрд┐рдпреЛ рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдПрдХ рдорд┐рдирдЯ рдЪрд╛рд░реНрдЯ рдмрдирд╛рдПрдВред

рдЕрдЧрд▓рд╛, рд╣рдордиреЗ рддрдХрдиреАрдХреА рд▓реЙрдЧ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд▓рд┐рдпрд╛ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд▓рдЧрднрдЧ рдПрдХ рдЕрд░рдм рдкрдВрдХреНрддрд┐рдпреЛрдВ рд╕реЗ рднрд░ рджрд┐рдпрд╛ред рдЙрддреНрдХреГрд╖реНрдЯ рд╕рдВрдкреАрдбрд╝рди, рд╕реНрддрдВрдн рдкреНрд░рдХрд╛рд░ Int * рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣реАрдХрд░рдг, рдЕрджреНрд╡рд┐рддреАрдп рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ - рд╕рдм рдХреБрдЫ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛!

рдЧрддрд┐ рдХреА рдмрд╛рдд рдХрд░реЗрдВ рддреЛ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рднреА рдЕрдиреБрд░реЛрдз 500 рдПрдордПрд╕ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдирд╣реАрдВ рдЪрд▓рд╛ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ 50-100 рдПрдордПрд╕ рдореЗрдВ рдлрд┐рдЯ рд╣реЛ рдЧрдПред рдФрд░ рдпрд╣ рджреЛ рдорд╢реАрдиреЛрдВ рдкрд░ рд╣реИ - рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рдЧрдгрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдерд╛ред

рд╣рдордиреЗ рдпрд╣ рд╕рдм рджреЗрдЦрд╛ рдФрд░ рдХрд▓реНрдкрдирд╛ рдХреА рдХрд┐ UInt8 рдХреЙрд▓рдо рдХреЗ рдмрдЬрд╛рдп рдПрдХ рджреЗрд╢ рдЖрдИрдбреА рд╣реЛрдЧрд╛, рдФрд░ Int8 рдХреЙрд▓рдо рдХреЛ рдбреЗрдЯрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЙрдореНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ ClickHouse рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдордЬрдмреВрдд рдбреЗрдЯрд╛ рдЯрд╛рдЗрдкрд┐рдВрдЧ


ClickHouse рдХрд╛ рд▓рд╛рдн рдареАрдХ рддрдм рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╕рд╣реА рдбреЗрдЯрд╛ рд╕реНрдХреАрдорд╛ рдмрдирддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг: рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реНрдЯреНрд░рд┐рдВрдЧ - рдЦрд╝рд░рд╛рдм, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо Int8 + рдбрд┐рдХреНрд╢рдирд░реА - рдЕрдЪреНрдЫрд╛, рд▓реЛрдХрд╛рд░реНрдбрд┐рдиреИрд▓рд┐рдЯреА (рд╕реНрдЯреНрд░рд┐рдВрдЧ) - рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдЕрдЪреНрдЫрд╛ (рдореИрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рд▓реЛрдХрд╛рд░реНрдбрд┐рдирд╛рд▓рд┐рдЯреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛)ред

рд╣рдордиреЗ php рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЬрдирд░реЗрдЯрд░ рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛, рдЬреЛ рдЕрдиреБрд░реЛрдз рдкрд░, ClickHouse рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдШрдЯрдирд╛рдУрдВ рдкрд░ рд░реИрдкрд░ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИред рдореИрдВ рдЙрд╕ рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдмрддрд╛рдКрдВрдЧрд╛ рдЬреЛ рдирд┐рдХрд▓реА:

  1. рд╡рд┐рд╢реНрд▓реЗрд╖рдХ / рдбреЗрдЯрд╛ рдЗрдВрдЬреАрдирд┐рдпрд░ / рдбреЗрд╡рд▓рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ: рдХреМрди рд╕реЗ рдХреНрд╖реЗрддреНрд░, рд╕рдВрднрд╡ рдореВрд▓реНрдп, рдШрдЯрдирд╛рдУрдВ рдХреЛ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  2. рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рд╕реЗ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ ClickHouse рдореЗрдВ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред
  3. рдПрдХ рдЯреЗрдмрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд░реИрдкрд┐рдВрдЧ рдХрдХреНрд╖рд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред
  4. рдЙрддреНрдкрд╛рдж рдЯреАрдо рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рднрд░рддреА рд╣реИ, рднреЗрдЬрддреА рд╣реИред

рдпреЛрдЬрдирд╛ рдХреЛ php рд╕реНрддрд░ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдФрд░ рд▓реЙрдЧрд╣рд╛рдЙрд╕ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдмрджрд▓реЗ рдмрд┐рдирд╛ рд▓реЙрдЧ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдФрд░ рдпрд╣, рдмрджрд▓реЗ рдореЗрдВ, рдЯреАрдо рдХреЗ рд╕рд╛рде рд╕рдордиреНрд╡рдп рдХреЗ рдмрд┐рдирд╛, рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдмрджрд▓рд╛рд╡ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП, рдЖрдк рджреЛ рд╕реЗрдЯрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреНрд░рдорд╢рдГ ClickHouse рдФрд░ hadoop рдкрд░ рднреЗрдЬреА рдЧрдИ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐рд╢рдд рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреА рд╣реИрдВред рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХреНрд░рдорд┐рдХ рд░реЛрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд▓реЙрдЧрд┐рдВрдЧ рдХреЛ рдХрд╛рдЯрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рдеред рд╣рдбреВрдк рд╕реЗ рдкрд╣рд▓реЗ, рдХрд╛рдлреНрдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдирдХ рддрд░реАрдХреЗ рд╕реЗ рдбреЗрдЯрд╛ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ ClickHouse рдореЗрдВ, рд╡реЗ рд▓рдЧрд╛рддрд╛рд░ рдореЛрдб рдореЗрдВ KittenHouse рдХреЗ рд╕рд╛рде рдПрдХ рдпреЛрдЬрдирд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдбрд╝рд╛рди рднрд░рддреЗ рд╣реИрдВ , рдЬреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХрд▓ рдИрд╡реЗрдВрдЯ рдбрд┐рд▓реАрд╡рд░реА рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИред

рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╢рд╛рд░реНрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ user_id рд╕реЗ рдХреБрдЫ рд╣реИрд╢ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╢реЗрд╖ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдШрдЯрдирд╛ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд╢рд╛рд░реНрдк рдкрд░ рдмрдлрд░ рдЯреЗрдмрд▓ рдкрд░ рдкрд╣реБрдВрдЪрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рдмрдлрд╝рд░ рддрд╛рд▓рд┐рдХрд╛ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░рд┐рдкреНрд░рд┐рд▓реНрдб рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯрдордЧрд░рдЯреНрд░реА рдкрд░ рдлрд╝реНрд▓рд╢ рдХрд░рддреА рд╣реИред рдФрд░ рд╕реНрдерд╛рдиреАрдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░, рдПрдХ рд╡рд┐рддрд░рд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╕рднреА рд╢рд╛рд░реНрдХ рд╕реЗ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

denormalizing


ClickHouse рдПрдХ рд╕реНрддрдВрдн DBMS рд╣реИред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдШрдЯрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╕рд╣реА рд╣реЛрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЬреЙрдЗрди рднреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╕рд╣реА рдЯреЗрдмрд▓ рдореЗрдореЛрд░реА рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рджрд░реНрдж рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рджреГрдврд╝ рдЗрдЪреНрдЫрд╛рд╢рдХреНрддрд┐ рд╡рд╛рд▓рд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛: рд╣рдорд╛рд░реА рд░реБрдЪрд┐ рдХреЗ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдШрдЯрдирд╛ рдореЗрдВ рд╣реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд┐рдВрдЧ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЙрдореНрд░, рджреЗрд╢, рд╢рд╣рд░, рдЬрдиреНрдорджрд┐рди - рдпрд╣ рд╕рдм рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдЬреЛ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреА рд╡рд╕реНрддреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рднреАред рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡реАрдбрд┐рдпреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ video_id, video_owner_id, рд╡реАрдбрд┐рдпреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рддрд┐рдерд┐, рд▓рдВрдмрд╛рдИ, рдЧреБрдгрд╡рддреНрддрд╛ рдШрдЯрдирд╛ рдХреЗ рд╕рдордп, рдЕрдзрд┐рдХрддрдо рдЧреБрдгрд╡рддреНрддрд╛, рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╣реИред

рдХреБрд▓ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 50 рд╕реЗ 200 рдХреЙрд▓рдо рд╣реИрдВ, рдЬрдмрдХрд┐ рд╕рднреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕реЗрд╡рд╛ рдХреНрд╖реЗрддреНрд░ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддреНрд░реБрдЯрд┐ рд▓реЙрдЧ error_log рд╣реИ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рддреНрд░реБрдЯрд┐ рдХреЛ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╣рддреЗ рд╣реИрдВред рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдЬреАрдм рдорд╛рди рдЙрдореНрд░ рдХреЗ рд╕рд╛рде рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЖрдХрд╛рд░ рдХреЗ рдкрд░реЗ рдЬрд╛рддреЗ рд╣реИрдВред

рд▓реЛ-рдХрд╛рд░реНрдбрд┐рдиреИрд▓рд┐рдЯреА (T) рдЯрд╛рдЗрдк рдХрд░реЗрдВ


ClickHouse рдореЗрдВ рдмрд╛рд╣рд░реА рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдордп-рд╕рдордп рдкрд░ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреНрд▓рд╛рд╕рд┐рдХ рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрдХреЗрдВ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ + рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ред рдмреЗрд╢рдХ, рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░, рдФрд░ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд▓рд┐рдЦрдирд╛ рддрд╛рд░реНрдХрд┐рдХ рд╣реИ, рдФрд░ рдЬрдм рдЖрдкрдХреЛ рдЬрд╝рд░реВрд░рдд рд╣реЛ рддреЛ рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

 dictGetString('os', 'os_name', toUInt64(os_id)) 

рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рд╣реИ - рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП LowCardinality (рд╕реНрдЯреНрд░рд┐рдВрдЧ), рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдмрдирд╛рддрд╛ рд╣реИред рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреА рдХрдо рдХрд╛рд░реНрдбрд┐рдиреИрд▓рд┐рдЯреА рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рддрд╣рдд LowCardinality рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдИрд╡реЗрдВрдЯ рдкреНрд░рдХрд╛рд░ 'рдкреНрд▓реЗ', 'рдкреЙрдЬрд╝', 'рд░рд┐рд╡рд╛рдЗрдВрдб' рдХреЗ рд▓рд┐рдП рд▓реЛ-рдХрд╛рд░реНрдбрд┐рдиреИрд▓рд┐рдЯреА (рд╕реНрдЯреНрд░рд┐рдВрдЧ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╛ рдордВрдЪ рдХреЗ рд▓рд┐рдП: 'рд╡реЗрдм', 'рдПрдВрдбреНрд░реЙрдЗрдб', 'рдЖрдИрдлреЛрди':

 SELECT vk_platform, count() FROM t WHERE dt = yesterday() GROUP BY vk_platform Elapsed: 0.145 sec. Processed 1.98 billion rows, 5.96 GB (13.65 billion rows/s., 41.04 GB/s.) 

рд╕реБрд╡рд┐рдзрд╛ рдЕрднреА рднреА рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

 SET allow_experimental_low_cardinality_type = 1; 

рд▓реЗрдХрд┐рди рдПрдХ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕рдордп рдХреЗ рдмрд╛рдж рд╡рд╣ рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдирд╣реАрдВ рд░рд╣реЗрдЧреАред

VKontakte рдбреЗрдЯрд╛ рдПрдХрддреНрд░реАрдХрд░рдг


рдЪреВрдВрдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЙрд▓рдо рд╣реИрдВ, рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдШрдЯрдирд╛рдПрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рд╛рдХреГрддрд┐рдХ рдЗрдЪреНрдЫрд╛ "рдкреБрд░рд╛рдиреЗ" рд╡рд┐рднрд╛рдЬрди рдХреЛ рдХрд╛рдЯрдиреЗ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ - рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдХрднреА-рдХрднреА, рдХрдЪреНрдЪреА рдШрдЯрдирд╛рдУрдВ (рдПрдХ рдорд╣реАрдиреЗ рдпрд╛ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ) рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдЪрдбреАрдПрдлрдПрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдореЗрдВ рдХрдЯреМрддреА рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ - рдХреЛрдИ рднреА рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд┐рд╕реА рднреА рддрд╛рд░реАрдЦ рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрд┐рдд рд▓рдХрдбрд╝реА рдХреА рдЫрдд рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдПрдХрддреНрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдо рд╣рдореЗрд╢рд╛ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрд░рд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддрд┐ рдпреВрдирд┐рдЯ рд╕рдордп рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдЯ рдкрд╛рд╡рд░ рдХреЗ рдЙрддреНрдкрд╛рдж рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдпрд╣ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддрд╛ рд╣реИ: рджреЗрд╢реЛрдВ рдХреЛ 'рд░реВрд╕', 'рдПрд╢рд┐рдпрд╛', 'рдпреВрд░реЛрдк', 'рдмрд╛рдХреА рджреБрдирд┐рдпрд╛' рдЬреИрд╕реЗ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрдореНрд░ - рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ, рдкреНрд░рддрд┐ рд╢рд░реНрдд рд╕рд╢рд░реНрдд рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдЖрдпрд╛рдо рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рджрд┐рдирд╛рдВрдХ, user_id рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░реАрдХрд░рдг


рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ ClickHouse рд╣реИ! рдХреНрдпрд╛ рд╣рдо рдПрдХ рддрд╛рд░реАрдЦ рдореЗрдВ 50-100 рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЧрддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?
рддреНрд╡рд░рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрд╕ рд╕рдордп рдПрдХ рд╕рд░рд▓ рд╡рд┐рдЪрд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реБрдЖ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдорд╢реАрди рдореЗрдВ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдПред рдЕрд░реНрдерд╛рддреН, рд╕реНрдкрд╛рд░реНрдХ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ "рджрд┐рдирд╛рдВрдХ, рд╕реНрд▓рд╛рдЗрд╕" рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛ рдХреЗ рдХреБрдЫ "рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝рди" рдХрд░рддреЗ рд╕рдордп, рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рджреНрд╡рд╛рд░рд╛ "рджрд┐рдирд╛рдВрдХ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛" рдХрд╛ рдЕрд░реНрде рд╣реИред

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХрддреНрд░рд┐рдд рдбреЗрдЯрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдЕрднреА рднреА рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рдВрдХреЗрддрдХ, рдЕрд╡рдзрд╛рд░рдг рдФрд░ рдЖрд╡реГрддреНрддрд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдкреВрд░реЗ VKontakte рджрд░реНрд╢рдХреЛрдВ рддрдХ рдХрдИ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдЖрдо рджрд░реНрд╢рдХреЛрдВ рдХреА рдЧрд┐рдирддреА рдХрд░рддреЗ рд╣реБрдП, рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдм рдХрд┐рд╕реА рднреА рд╕реНрд▓рд╛рдЗрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдЙрд╕реА рд╕рдордп рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред

рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдмрддрд╛рдКрдВрдЧрд╛:



рдПрдХрддреНрд░реАрдХрд░рдг рдХреЗ рдмрд╛рдж (рджрд╛рдИрдВ рдУрд░ рдХрдИ рдФрд░ рдХреЙрд▓рдо):



рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХрддреНрд░реАрдХрд░рдг рдареАрдХ рдЗрд╕реА рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ (dt, user_id)ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХрддреНрд░реАрдХрд░рдг рдХреЗ рд╕рд╛рде, рдЖрдк рдХрд┐рд╕реА рднреА, рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд┐рд╕реА рднреА рд╣рд╛рдЗрд╡реЗ (рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо) рдХреЛ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд╡реАрдбрд┐рдпреЛ рдЗрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк groupUniqArray (рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрди рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдШрдЯрдирд╛ рдХреЛ рдЙрдард╛рдпрд╛ рдерд╛ред рдпрджрд┐ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдФрд░ рд╕реНрдЯреЛрд░ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрд▓рдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реЗ рдЖрдзреЗ рдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рдЕрджреНрд╡рд┐рддреАрдп рд╡реАрдбрд┐рдпреЛ рдХреА рд╕рдВрдЦреНрдпрд╛:

 uniqCombinedIf(cityHash64(video_owner_id, video_id), (platform = 'android') AND (event = '50p')) as uniq_videos_50p_android 

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдмрд▓реНрдХрд┐ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕рдореБрдЪреНрдЪрдп рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдо рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдЙрд╕рдХреА рдмрд╛рддрдЪреАрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред

рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдХреЗ DAU рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рдХреБрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

 SELECT dt, count() as DAU FROM agg GROUP BY dt Elapsed: 0.078 sec. 

рдпрд╛ рдЧрдгрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдХрд┐рддрдиреЗ рджрд┐рди рд╕реЗрд╡рд╛ рдореЗрдВ рдереЗ:

 SELECT days_in_service, count() AS uniques FROM ( SELECT uniqUpTo(7)(dt) AS days_in_service FROM agg2 WHERE dt > (yesterday() - 7) GROUP BY user_id ) GROUP BY days_in_service ORDER BY days_in_service ASC 7 rows in set. Elapsed: 2.922 sec. 

рд╣рдо рдирдореВрдиреЗ рдореЗрдВ рддреЗрдЬреА рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рд▓рдЧрднрдЧ рд╕рдЯреАрдХрддрд╛ рдЦреЛрдП рдмрд┐рдирд╛:

 SELECT days_in_service, 10 * count() AS uniques FROM ( SELECT uniqUpTo(7)(dt) AS days_in_service FROM agg2 SAMPLE 1 / 10 WHERE dt > (yesterday() - 7) GROUP BY user_id ) GROUP BY days_in_service ORDER BY days_in_service ASC 7 rows in set. Elapsed: 0.454 sec. 

рдпрд╣ рддреБрд░рдВрдд рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдирдореВрдирд╛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐рд╢рдд рд╕реЗ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐рд╢рдд рд╕реЗ рд╣реИ - рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдпрд╣ рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рдмрди рдЬрд╛рддрд╛ рд╣реИред

рдпрд╛ 1/100 рдирдореВрдиреЗ рдХреЗ рд╕рд╛рде 4 рд╕рдкреНрддрд╛рд╣ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди - рд▓рдЧрднрдЧ 1% рдХрдо рд╕рдЯреАрдХ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред

 SELECT days_in_service, 100 * count() AS uniques FROM ( SELECT uniqUpTo(7)(dt) AS days_in_service FROM agg2 SAMPLE 1 / 100 WHERE dt > (yesterday() - 28) GROUP BY user_id ) GROUP BY days_in_service ORDER BY days_in_service ASC 28 rows in set. Elapsed: 0.287 sec. 

рджреВрд╕рд░реА рдУрд░ рдПрдХрддреНрд░реАрдХрд░рдг


рдЬрдм (dt, user_id) рдХреЛ рдПрдХрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдирд╣реАрдВ рдЦреЛрддреЗ рд╣реИрдВ, рд╣рдо рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдЙрд╕рдХреА рдмрд╛рддрдЪреАрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓реЗрдиреЗ рд╕реЗ рдирд╣реАрдВ рдЪреВрдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореАрдЯреНрд░рд┐рдХ рдЦреЛ рджреЗрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдЦреЛ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ - рдЪрд▓реЛ рдЗрдХрд╛рдИ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ
(dt, video_owner_id, video_id), рд╕рдорд╛рди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗред рд╣рдо рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ рд╡реАрдбрд┐рдпреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╡реАрдбрд┐рдпреЛ рдХреА рдмрд╛рддрдЪреАрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдпрд╛рдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВред

 SELECT starts FROM agg3 WHERE (dt = yesterday()) AND (video_id = ...) AND (video_owner_id = ...) 1 rows in set. Elapsed: 0.030 sec 

рдпрд╛ рдХрд▓ рд╢реАрд░реНрд╖ 10 рд╡реАрдбрд┐рдпреЛ рджреГрд╢реНрдп:

 SELECT video_id, video_owner_id, watches FROM video_agg_video_d1 WHERE dt = yesterday() ORDER BY watches DESC LIMIT 10 10 rows in set. Elapsed: 0.035 sec. 

рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлреЙрд░реНрдо рдХреЗ рд╕рдореБрдЪреНрдЪрдп рдХреА рдПрдХ рдпреЛрдЬрдирд╛ рд╣реИ:

  • рдЙрддреНрдкрд╛рдж рдХреЗ рднреАрддрд░ "рддрд┐рдерд┐, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛" рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░реАрдХрд░рдг;
  • рдЙрддреНрдкрд╛рдж рдХреЗ рднреАрддрд░ "рддрд╛рд░реАрдЦ, рдмрд╛рддрдЪреАрдд рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп" рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░реАрдХрд░рдг;
  • рдХрднреА-рдХрднреА рдЕрдиреНрдп рдЕрдиреБрдорд╛рди рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред

рдЕрдЬрд╝рдХрдмрди рдФрд░ рдЯреАрдорд╕рд┐рдЯреА


рдЕрдВрдд рдореЗрдВ, рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред рд╣рдорд╛рд░рд╛ рдПрдХрддреНрд░рд┐рдд рд╕рдВрдЧреНрд░рд╣ рд░рд╛рдд рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдкрд░ OPTIMIZE рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддрд┐рдХреГрддрд┐ рдбреЗрдЯрд╛ рд░рд┐рдкреНрд▓реЗрд╕реЗрдорд░рдЯреНрд░реАрдЯреНрд░реА рдореЗрдВ рдПрдХ рдЕрд╕рд╛рдзрд╛рд░рдг рдбреЗрдЯрд╛ рдорд░реНрдЬ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред рдСрдкрд░реЗрд╢рди рдХрд╛рдлреА рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рд╡реЗ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЕрдм рддрдХ рдореИрдВрдиреЗ рдХрднреА рднреА рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдВрдЧреЗред

рдЕрдЧрд▓рд╛ рдХрджрдо рд╕рдореБрдЪреНрдЪрдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реИред рдпреЗ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ:

  • рдкрд╣рд▓реЗ рд╣рдо рд╢рд╛рд░реНрдк рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╢рд╛рд░реНрдж рд╕реЗ рдХреБрдЫ рд╣реЛрд╕реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

     SELECT shard_num, any(host_name) AS host FROM system.clusters GROUP BY shard_num 
  • рддрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рд░реНрдж рдХреЗ рд▓рд┐рдП рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреА рд╣реИ (рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕-рдХреНрд▓рд╛рдЗрдВрдЯ -рдПрдЪ $ рд╣реЛрд╕реНрдЯ) рдлреЙрд░реНрдо рдХрд╛ рдЕрдиреБрд░реЛрдз (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдХреБрд▓ рдХреЗ рд▓рд┐рдП):

     INSERT INTO ... SELECT ... FROM ... SAMPLE 1/$shards_count OFFSET 1/$shard_num 

рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИ рдФрд░ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рдмреАрдЪ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рдирдП рд╢рд╛рд░реНрдХ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ, рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреА рд╕реНрдерд╛рдиреАрдпрддрд╛ рдмрдирд╛рдП рд░рдЦреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рдЪрд┐рдВрддрд╛ рди рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдЬрд╝рдХрд╛рдмрд╛рди рд╣реИ рдЬреЛ рдХрд╛рд░реНрдп рдЕрдиреБрд╕реВрдЪрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рд╕реБрдкрд░-рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрдм рдпрд╣ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ рдФрд░ рдЬрдм рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрдИ рдЕрдиреНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдХреБрд▓ рд╕рдордп рдХреЛ рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЦрд░реНрдЪ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдХреБрд▓ рд╕рдордп 15 рдорд┐рдирдЯ рд╣реИред

рдкрд░реАрдХреНрд╖рдг


рд╣рд░ рд╕реБрдмрд╣ рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рдореБрдЪреНрдЪрдп рдХреА рддрддреНрдкрд░рддрд╛ рдФрд░ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рджреЗрддреЗ рд╣реИрдВ: тАЬрдЬрд╛рдБрдЪ рд▓реЗрдВ рдХрд┐ рдХрд▓ рдХреЗ рд▓рд┐рдП рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рдпрд╛ рд╕рдореБрдЪреНрдЪрдп рдкрд░ рдЖрдзреЗ рдкреНрд░рддрд┐рд╢рдд рд╕реЗ рдХрдо рдбреЗрдЯрд╛ рдпрд╛ рдЕрджреНрд╡рд┐рддреАрдп рдбреЗрдЯрд╛ рдирд╣реАрдВ рдереЗред рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдПрдХ рд╣реА рджрд┐рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВред тАЭ

рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдпреЗ JUnit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ ClickHouse рдХреЗ рд▓рд┐рдП jdbc рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдзрд╛рд░рдг рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВред рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд░рди рдХреЛ рдЯреАрдорд╕рд┐рдЯреА рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ 1 рдзрд╛рдЧреЗ рдореЗрдВ рд▓рдЧрднрдЧ 30 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЕрджреНрднреБрдд рдЯреАрдорд╕рд┐рдЯреА рдмреЙрдЯ рд╕реЗ VKontakte рд╕реВрдЪрдирд╛рдПрдВ рдорд┐рд▓рддреА рд╣реИрдВред

рдирд┐рд╖реНрдХрд░реНрд╖


ClickHouse рдХреЗ рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЖрдкрдХреЗ рдмрд╛рд▓ рдирд░рдо рдФрд░ рд░реЗрд╢рдореА рд╣реЛрдВрдЧреЗред рдпрд╣ рдЬреЛрдбрд╝рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ ClickHouse рдзреАрдорд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ред

Source: https://habr.com/ru/post/hi445284/


All Articles