рд╕реЛрд▓рд░ рдЧреИрд▓реЗрдХреНрд╕реА рдореЗрдВ Clickhouse рдХреЛ рдХреИрд╕реЗ рдЪреБрдирд╛ рдЧрдпрд╛

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


рдЫрд╡рд┐


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ OCaml рдореЗрдВ рд╕реНрддрдВрднреЛрдВ рдХреЗ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ (рдкрд╛рда рдЕрднреНрдпрд╛рд╡реЗрджрди lz4 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ) рдФрд░ рдЗрд╕рдХреА рдЕрдкрдиреА, рдПрд╕-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдХрд╛рдлреА рд▓рдЪреАрд▓реА, рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ред рдкреНрд░рддрд┐ рджрд┐рди рд╡рд┐рднрд╛рдЬрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдЕрдиреБрд░реЛрдз рдЙрджрд╛рд╣рд░рдг:


рдЫрд╡рд┐


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


  • рд╢реБрджреНрдз рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ;
    • Postgres + cstore_fdw;
    • Slickhouse;
    • рд▓рдЪреАрд▓рд╛ред

рдкреЛрд╕реНрдЯрдЧреНрд░реИрдЬреЗрд╕ рдмрдирд╛рдо рдЗрд▓рд╛рд╕реНрдЯрд┐рдХ рдХреА рддреБрд▓рдирд╛


рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ, рд╣рдордиреЗ Elastic and Postgres + cstore рдХреА рддреБрд▓рдирд╛ рдХреАред рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреЛ рд╕рдмрд╕реЗ рдХрд░реАрдм рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдЙрдкрд▓рдмреНрдз рдереАред


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


рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЖрдзрд╛рд░ рд╕реЗ рдмреЗрд╣рддрд░ рдерд╛, рдЬрд┐рд╕рдиреЗ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХ рдореЗрдВ рдЗрд╕ рдмрдирд╛рдо 5-6 рд╕реЗрдХрдВрдб рдФрд░ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдореЗрдВ 15-55 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд▓рд┐рдпрд╛ред


рдкреЛрд╕реНрдЯрдЧреНрд░реБрдк рдмрдирд╛рдо рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рддреБрд▓рдирд╛


рд╕реНрд░реЛрдд рдбреЗрдЯрд╛


Https://github.com/wizardjedi/clickhouse-test рдХреЗ рд╕рд╛рде рд╣рдордиреЗ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдФрд░ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рд▓рд┐рдПред рдЗрди рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЯреЗрдмрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреЗ рд▓рд┐рдП рдЯреЗрдмрд▓ рд╡реНрдпреВ:


рдЫрд╡рд┐


рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рдирд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝ рдореЗрдВ рд╡рд┐рджреЗрд╢реА рддрд╛рд▓рд┐рдХрд╛ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИред


Clickhouse рдХреЗ рд▓рд┐рдП, рдРрд╕реА рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:


рдЫрд╡рд┐


Postgres рдХреЗ рд▓рд┐рдП cstore рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, https://github.com/citusdata/cstore_fdw рдкрд░ рдЬрд╛рдПрдВ ред


рд╕рд╛рде рд╣реА, cstore рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ postgresql-server-dev-XY рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ


рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╕рдордп, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛ рдЖрдХрд╛рд░ (рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдореЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:


рдЫрд╡рд┐


рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рд╕рднреА рдЯреБрдкрд▓реНрд╕ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ sql рдХреНрд╡реЗрд░реА рд╣реИ, рдЕрд░реНрдерд╛рдд рдХрдЪреНрдЪрд╛ рдбреЗрдЯрд╛
рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рднрд╛рд░реА рд╡рд╛рд▓реЗ, рдбреЗрдЯрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреЛ рдорд╛рдкрд╛ рдЧрдпрд╛ред


рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдХреЗ рд▓рд┐рдП рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрдврд╝реЗред


рдЫрд╡рд┐


рдХрдореНрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкреИрд░рд╛рдореАрдЯрд░


рдирд┐рд░реНрдорд╛рддрд╛: рдЗрдВрдЯреЗрд▓
рдкрдВрдХреНрддрд┐: рдХреЛрд░ i5
рдореЙрдбрд▓: 8250U
рдШрдбрд╝реА рдХреА рдЖрд╡реГрддреНрддрд┐: рдкреНрд░рддрд┐ рдХреЛрд░ 1.60GHz
рдХреЛрд╕: рек
рд░реИрдо: 16 рдЬреАрдмреА
рдПрд╕рдПрд╕рдбреА: 256 рдЬреАрдмреА


рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ


Clickhouse рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдЗрддрдиреА рдорд╛рддреНрд░рд╛ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЛрдВрдиреЗ рдмрд╣реБрдд рдЬрд▓реНрджреА рд▓реЛрдб рдХрд┐рдпрд╛: 1 рдШрдВрдЯрд╛ 40 рдорд┐рдирдЯ (рдпрд╣ 600 рдорд┐рд▓рд┐рдпрди рдЯреНрдпреВрдкрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рд╣реИ)ред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдм рдХреБрдЫ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ, рд▓реЗрдХрд┐рди "bad_alloc" рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЧрдИред рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Clickhouse рдХреА рдЕрдХреНрд╖рдорддрд╛ рдХреЗ рдХрд╛рд░рдгред рдХреЛрдИ рд╣рд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЗрд╕рд▓рд┐рдП, 600 рдорд┐рд▓рд┐рдпрди рдЯреНрдпреВрдкрд▓реНрд╕ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ 20 рдорд┐рд▓рд┐рдпрди рдХреА 30 рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ 3 рдорд┐рдирдЯ рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреЗ рд╕рд╛рде, рдЪреАрдЬреЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдереАрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╢реБрд░реБрдЖрдд рдореЗрдВред INSERT INTO <table_name> (рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ) рдпреБрдХреНрдд рдХрдЪреНрдЪреЗ sql рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╕рдордп рд╕рд╛рд░рдгреА рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рд╕реАрдПрд╕рд╡реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рд╕реАрдПрд╕рдкреА рдХреЗ рд╕рд╛рде COPY <table_name> FROM рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рд╣рдордиреЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдЯреЗрдмрд▓ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛, рдЬрд╣рд╛рдВ рд╕реЗ рд╣рдордиреЗ рдЗрд╕реЗ рдПрдХ рд╡рд┐рджреЗрд╢реА рдЯреЗрдмрд▓ рдкрд░ рдХреЙрдкреА рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ cstore рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдПрдХ рд╕реАрдПрд╕рд╡реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рд▓реЛрдб рдХрд░рдирд╛ рднреА рджреЛ рдШрдВрдЯреЗ рд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо рд╕рдордп рд▓рдЧрд╛ред


рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛


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



рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, cstore рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд╣рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╡рд╣ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ PostDes рдХреА рддреБрд▓рдирд╛ рдореЗрдВ EventDate рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЛрд╕реНрдЯреЛрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреЗрдЬрд╝ рдереЗред


рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХрднреА-рдХрднреА рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд╣рд░реА рдбреНрд░рд╛рдЗрд╡ рдкрд░ 27 рдЬреАрдмреА рддрдХ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред


Clickhouse рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд░реИрдо рд╣реЛрддреА рд╣реИред


рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ /etc/clickhouse/users.xml, <max_memory_usage> 12000000000 </ max_memory_usage> рдФрд░ <max_bytes_before_external_sage> 1000000000 </ max_btes_before_external_sort> рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЧрдП рдереЗред


рдХреБрдЫ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП, RAM рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдереА, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рдмрдврд╝рд╛рдирд╛ рдкрдбрд╝рд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рд░рд╣рд╛, рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рдЕрдиреБрд░реЛрдз рдкрд░ рдпрд╣ рдЕрднреА рднреА рдмрд╛рдзрд┐рдд рдерд╛ред рдореЗрдореЛрд░реА рдЦрдкрдд рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдЙрдкрд▓рдмреНрдз рдереЗ https://clickhouse.yandex/docs/ru/query_language/queries/ ред


рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рд╣рдордиреЗ 600_000_000 рдХреЗ рдмрдЬрд╛рдп рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕: 695_640_000 рдЯреНрдпреВрдкрд▓реНрд╕ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдЙрдиреНрд╣реЗрдВ рдЬреАрддрдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрд╛ред


Cstore_fdw рдкрд░, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/citusdata/cstore_fdw/issues/174 , https://github.com/citusdata/cstore_fdw , рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


рд╡рд┐рднрд╛рдЬрди


рд╡рд┐рднрд╛рдЬрди рдХреЗ рд▓рд┐рдП, рдпрд╣ Clickhouse https://github.com/yandex/ClickHouse/blob/master/docs/ru/table_engines/custom_partitioning_key.md , https://clickhouse.yandex/docs/ru/table_engines/custom_partitioning_key рдореЗрдВ рднреА рд╣реИред / , рдФрд░ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ (10 рдФрд░ 11 рд╕рдВрд╕реНрдХрд░рдг) рдореЗрдВред рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг https://github.com/yandex/ClickHouse/blob/master/dbms/tests/queries/0_stateless/00502_custom_partitioning-local.sql рдФрд░ https://github.com/yandex/ClickHouse/issues/1513 рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред ред


Postgres рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ cstore рдХреЗрд╡рд▓ рд╡рд┐рджреЗрд╢реА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЖрдк рдирд┐рдпрдорд┐рдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдПрдХ рд╡рд┐рджреЗрд╢реА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╡рд┐рднрд╛рдЬрди рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд╕реНрд╡рдпрдВ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕рдВрднрд╡ рддрд░реАрдХрд╛ рд╣реИ: рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рднрд╛рд╡рдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВ, рдЖрдк рдЗрд╕рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рджреЗрд╢реА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА cstore_fdw рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред


рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдкрд░, рд╡рд┐рднрд╛рдЬрди рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


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


рдирддреАрдЬрддрди, рд╣рдордиреЗ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдорд╛рд░реНрдЯ рд╣реИ: рдпрд╣ рд╣рдореЗрд╢рд╛ рдПрдирд╛рд▓реЙрдЧреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо 10 рдЧреБрдирд╛ рддреЗрдЬ рд╣реЛрддрд╛ рд╣реИред рдореЗрдореЛрд░реА рд╕рд░реНрд╡рд░ рдкрд░, рдЖрдорддреМрд░ рдкрд░ 32 рдЬреАрдмреА, 64 рдФрд░ 128 рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП 50 рдЬреАрдмреА рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдкрд░ рдкреНрд░рд╢реНрди рдареАрдХ рдЪрд▓реЗрдВрдЧреЗред рдпрджрд┐ рддрд╛рд▓рд┐рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИ, рдЬреЛ рдХрд┐, рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕-рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрди, рдпрд╛ рдареАрдХ-рдЯреНрдпреВрдирд┐рдВрдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧреАред

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


All Articles