ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

Π’Ρ€ΠΈ Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ Π’ΠΈΠΊΡ‚ΠΎΡ€ Варнавский ΠΈ АлСксСй Миловидов ΠΈΠ· ЯндСкса Π½Π° сцСнС HighLoad++ рассказывали, ΠΊΠ°ΠΊΠΎΠΉ ClickHouse Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ, ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ Π½Π΅ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚. А Π½Π° сосСднСй сцСнС Π±Ρ‹Π» АлСксандр Π—Π°ΠΉΡ†Π΅Π² с Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠΌ ΠΎ ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄Π΅ Π½Π° ClickHouse с Π΄Ρ€ΡƒΠ³ΠΎΠΉ аналитичСской Π‘Π£Π‘Π” ΠΈ с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ClickHouse, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ, Π½ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ. Когда Π² 2016 Π³ΠΎΠ΄Ρƒ компания LifeStreet, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‚ΠΎΠ³Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Π» АлСксандр, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠ»Π° ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ΅Ρ‚Π°Π±Π°ΠΉΡ‚ΠΎΠ²ΡƒΡŽ Π°Π½Π°Π»ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ систСму Π½Π° ClickHouse, это Π±Ρ‹Π»Π° ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Β«Π΄ΠΎΡ€ΠΎΠ³Π° ΠΈΠ· ΠΆΠ΅Π»Ρ‚ΠΎΠ³ΠΎ ΠΊΠΈΡ€ΠΏΠΈΡ‡Π°Β», полная Π½Π΅Π²Π΅Π΄ΠΎΠΌΡ‹Ρ… опасностСй β€” ClickHouse Ρ‚ΠΎΠ³Π΄Π° Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π» ΠΌΠΈΠ½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅.

Π’Ρ€ΠΈ Π³ΠΎΠ΄Π° спустя ClickHouse стал Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ β€” Π·Π° это врСмя АлСксандр основал компанию Altinity, которая Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Ρ‚ΡŒ Π½Π° ClickHouse дСсяткам ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π½ΠΎ ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΡƒΠ΅Ρ‚ сам ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ вмСстС с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ ΠΈΠ· ЯндСкса. БСйчас ClickHouse всС Π΅Ρ‰Π΅ Π½Π΅ бСззаботная ΠΏΡ€ΠΎΠ³ΡƒΠ»ΠΊΠ°, Π½ΠΎ ΡƒΠΆΠ΅ ΠΈ Π½Π΅ ΠΌΠΈΠ½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅.

АлСксандр занимаСтся распрСдСлСнными систСмами с 2003 Π³ΠΎΠ΄Π°, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π» ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π½Π° MySQL, Oracle ΠΈ Vertica. На ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅ΠΉ HighLoad++ 2019 АлСксандр, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΈΠΎΠ½Π΅Ρ€ΠΎΠ² использования ClickHouse, рассказал, Ρ‡Ρ‚ΠΎ сСйчас ΠΈΠ· сСбя прСдставляСт эта Π‘Π£Π‘Π”. ΠœΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΏΡ€ΠΎ основныС особСнности ClickHouse: Ρ‡Π΅ΠΌ ΠΎΠ½ отличаСтся ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… систСм ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ… случаях Π΅Π³ΠΎ эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… рассмотрим свСТиС ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΏΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ систСм Π½Π° ClickHouse.


РСтроспСктива: Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ 3 Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄

Π’Ρ€ΠΈ Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠ»ΠΈ компанию LifeStreet Π½Π° ClickHouse с Π΄Ρ€ΡƒΠ³ΠΎΠΉ аналитичСской Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ миграция Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ½ΠΎΠΉ сСти выглядСла Ρ‚Π°ΠΊ:

  • Июнь 2016. Π’ OpenSource появился ClickHouse ΠΈ стартовал наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚;
  • Август. Proof Of Concept: большая рСкламная ΡΠ΅Ρ‚ΡŒ, инфраструктура ΠΈ 200-300 Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚ Π΄Π°Π½Π½Ρ‹Ρ…;
  • ΠžΠΊΡ‚ΡΠ±Ρ€ΡŒ. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-Π΄Π°Π½Π½Ρ‹Π΅;
  • Π”Π΅ΠΊΠ°Π±Ρ€ΡŒ. Полная продуктовая Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” 10-50 ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ΠΎΠ² событий Π² дСнь.
  • Июнь 2017. Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ClickHouse, 2,5 ΠΏΠ΅Ρ‚Π°Π±Π°ΠΉΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° кластСрС ΠΈΠ· 60-Ρ‚ΠΈ сСрвСров.

Π’ процСссС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ росло ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ClickHouse β€” это Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ систСма, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ приятно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½ΠΎ это Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ЯндСкс. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΅ΡΡ‚ΡŒ Π½ΡŽΠ°Π½ΡΡ‹: ЯндСкс сначала Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ собствСнными Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ β€” сообщСством ΠΈ Π½ΡƒΠΆΠ΄Π°ΠΌΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π° ClickHouse Π½Π΅ дотягивал Ρ‚ΠΎΠ³Π΄Π° Π΄ΠΎ уровня энтСрпрайза ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ областям. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² ΠΌΠ°Ρ€Ρ‚Π΅ 2017 Π³ΠΎΠ΄Π° ΠΌΡ‹ основали компанию Altinity, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ClickHouse Π΅Ρ‰Ρ‘ быстрСС ΠΈ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ЯндСкса, Π½ΠΎ ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹:

  • ΠžΠ±ΡƒΡ‡Π°Π΅ΠΌ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅ΠΌ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° ClickHouse Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΈ Π½Π΅ Π½Π°Π±ΠΈΠ²Π°Π»ΠΈ шишки, ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² ΠΈΡ‚ΠΎΠ³Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ;
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅ΠΌ 24/7 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ClickHouse-инсталляций;
  • Π Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ собствСнныС экосистСмныС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹;
  • Активно ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠΌ Π² сам ClickHouse, отвСчая Π½Π° запросы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ.

И ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΡ‹ ΠΏΠΎΠΌΠΎΠ³Π°Π΅ΠΌ с ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄ΠΎΠΌ Π½Π° ClickHouse с MySQL, Vertica, Oracle, Greenplum, Redshift ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… систСм. ΠœΡ‹ участвовали Π² самых Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄Π°Ρ…, ΠΈ ΠΎΠ½ΠΈ всС Π±Ρ‹Π»ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌΠΈ.

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

Π—Π°Ρ‡Π΅ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Ρ‚ΡŒ Π½Π° ClickHouse

НС Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚! Π­Ρ‚ΠΎ главная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°. ClickHouse β€” ΠΎΡ‡Π΅Π½ΡŒ быстрая Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… для Ρ€Π°Π·Π½Ρ‹Ρ… сцСнариСв:

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

Π‘Π»ΡƒΡ‡Π°ΠΉΠ½Ρ‹Π΅ Ρ†ΠΈΡ‚Π°Ρ‚Ρ‹ людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ClickHouse.

ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ. На ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π‘Π” ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΆΠ΅Π»Π΅Π·ΠΊΠ΅, Π½ΠΎ ClickHouse ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ, Π½ΠΎ ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ, просто добавляя сСрвСра. ВсС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ Π³Π»Π°Π΄ΠΊΠΎ, ΠΊΠ°ΠΊ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. МоТно Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°Ρ‚ΡŒ систСму вмСстС с ростом бизнСса. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ сСйчас ΠΈ всСгда Π΅ΡΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» для развития.

ΠŸΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ. НСт привязки ΠΊ Ρ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ. НапримСр, с Amazon Redshift тяТСло ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΅Ρ…Π°Ρ‚ΡŒ. А ClickHouse ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС Π½Π° Π½ΠΎΡƒΡ‚Π±ΡƒΠΊ, сСрвСр, Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ Π² ΠΎΠ±Π»Π°ΠΊΠΎ, ΡƒΠΉΡ‚ΠΈ Π² Kubernetes β€” Π½Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ инфраструктуры. Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для всСх, ΠΈ это большоС прСимущСство, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ…Π²Π°ΡΡ‚Π°Ρ‚ΡŒΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π‘Π”.

Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ. ClickHouse Π½Π΅ останавливаСтся Π½Π° Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° ЯндСкс.ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠ΅, Π° развиваСтся ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ всё большСм ΠΈ большСм количСствС Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ индустрий. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ, добавляя Π½ΠΎΠ²Ρ‹Π΅ возмоТности для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. НапримСр, считаСтся, Ρ‡Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈ Π² Π‘Π” β€” ΠΌΠΎΠ²Π΅Ρ‚ΠΎΠ½, поэтому для этого ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ Elasticsearch. Но, благодаря гибкости ClickHouse, Π² Π½Ρ‘ΠΌ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈ, ΠΈ часто это Π΄Π°ΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Π² Elasticsearch β€” Π² ClickHouse для этого трСбуСтся Π² 10 Ρ€Π°Π· мСньшС ΠΆΠ΅Π»Π΅Π·Π°.

БСсплатный Open Source. НС Π½ΡƒΠΆΠ½ΠΎ Π½ΠΈ Π·Π° Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ. НС Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ систСму сСбС Π½Π° Π½ΠΎΡƒΡ‚Π±ΡƒΠΊ ΠΈΠ»ΠΈ сСрвСр. НСт скрытых ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ. ΠŸΡ€ΠΈ этом никакая другая Open Source тСхнология Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ скорости с ClickHouse. MySQL, MariaDB, Greenplum β€” всС ΠΎΠ½ΠΈ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅.

БообщСство, Π΄Ρ€Π°ΠΉΠ² ΠΈ fun. Π£ ClickHouse ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ сообщСство: ΠΌΠΈΡ‚Π°ΠΏΡ‹, Ρ‡Π°Ρ‚Ρ‹ ΠΈ АлСксСй Миловидов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нас всСх заряТаСт своСй энСргиСй ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΌΠΎΠΌ.

ΠŸΠ΅Ρ€Π΅Π΅Π·Π΄ Π½Π° ClickHouse

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° ClickHouse с Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ, Π½ΡƒΠΆΠ½Ρ‹ всСго лишь Ρ‚Ρ€ΠΈ Π²Π΅Ρ‰ΠΈ:

  • ΠŸΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ограничСния ClickHouse ΠΈ для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСимущСства Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ Π΅Π΅ самыС ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны.
  • Π­ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π”Π°ΠΆΠ΅ понимая ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ClickHouse, Π½Π΅ всСгда Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠ³Π°Π΄Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ быстрСС, ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅ΠΉ, ΠΊΠΎΠ³Π΄Π° Π»ΡƒΡ‡ΡˆΠ΅, Π° ΠΊΠΎΠ³Π΄Π° Ρ…ΡƒΠΆΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄Π°

Π•ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Β«Π½ΠΎΒ»: Ссли ΠΏΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅Ρ‚Π΅ Π½Π° ClickHouse с Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ΄Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ. ΠœΡ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌ ΠΈ Π²Π΅Ρ‰Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² любимой Π‘Π”. НапримСр, любой Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ с SQL-Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, считаСт ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚Π°ΠΊΠΎΠΉ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

  • Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ;
  • констрСйнты;
  • consistency;
  • индСксы;
  • UPDATE/DELETE;
  • NULLs;
  • миллисСкунды;
  • автоматичСскиС привСдСния Ρ‚ΠΈΠΏΠΎΠ²;
  • мноТСствСнныС Π΄ΠΆΠΎΠΉΠ½Ρ‹;
  • ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ;
  • срСдства управлСния кластСром.

Набор-Ρ‚ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, Π½ΠΎ Ρ‚Ρ€ΠΈ Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ Π² ClickHouse Π½Π΅ Π±Ρ‹Π»ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ! БСйчас ΠΈΠ· Π½Π΅Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ мСньшС ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹: Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, констрСйнты, Consistency, миллисСкунды ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ².

И Π³Π»Π°Π²Π½ΠΎΠ΅ β€” Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² ClickHouse Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стандартныС ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ. Всё, Ρ‡Ρ‚ΠΎ появляСтся Π² ClickHouse, соотвСтствуСт Β«ClickHouse wayΒ», Ρ‚.Π΅. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π‘Π”. НапримСр:

  • Π˜Π½Π΄Π΅ΠΊΡΡ‹ Π½Π΅ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚, Π° ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚.
  • UPDATE/DELETE Π½Π΅ синхронныС, Π° асинхронныС.
  • ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ Π΄ΠΆΠΎΠΉΠ½Ρ‹ Π΅ΡΡ‚ΡŒ, Π½ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° запросов Π½Π΅Ρ‚. Как ΠΎΠ½ΠΈ Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ, Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ понятно людям ΠΈΠ· ΠΌΠΈΡ€Π° Π‘Π”.

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΈ ClickHouse

Π’ 1960 Π³ΠΎΠ΄Ρƒ амСриканский ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊ вСнгСрского происхоТдСния Wigner E. P. написал ΡΡ‚Π°Ρ‚ΡŒΡŽ Β«The unreasonable effectiveness of mathematics in the natural sciencesΒ» («НСпостиТимая ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π² СстСствСнных Π½Π°ΡƒΠΊΠ°Ρ…Β») ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΠΉ ΠΌΠΈΡ€ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ описываСтся матСматичСскими Π·Π°ΠΊΠΎΠ½Π°ΠΌΠΈ. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° β€” абстрактная Π½Π°ΡƒΠΊΠ°, Π° физичСскиС Π·Π°ΠΊΠΎΠ½Ρ‹, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Π΅ Π² матСматичСской Ρ„ΠΎΡ€ΠΌΠ΅ Π½Π΅ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹, ΠΈ Wigner E. P. ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΠ», Ρ‡Ρ‚ΠΎ это ΠΎΡ‡Π΅Π½ΡŒ странно.

Π‘ ΠΌΠΎΠ΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, ClickHouse β€” такая ΠΆΠ΅ ΡΡ‚Ρ€Π°Π½Π½ΠΎΡΡ‚ΡŒ. ΠŸΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΡƒΡ Π’ΠΈΠ³Π½Π΅Ρ€Π°, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ: ΠΏΠΎΡ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Π° нСпостиТимая ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ClickHouse Π² самых Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… аналитичСских прилоТСниях!

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

НапримСр, возьмСм Real-Time Data Warehouse, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π½Π½Ρ‹Π΅ грузятся практичСски Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΡ‚ Π½Π΅Π³ΠΎ запросы с сСкундной Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π° β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ClickHouse, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ для этого сцСнария ΠΎΠ½ ΠΈ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½. ClickHouse ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π²Π΅Π±, Π½ΠΎ ΠΈ Π² ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ ΠΈ финансовой Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ΅, AdTech, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Fraud detection. Π’ Real-time Data Warehouse ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ слоТная структурированная схСма Ρ‚ΠΈΠΏΠ° Β«Π·Π²Π΅Π·Π΄Π°Β» ΠΈΠ»ΠΈ «снСТинка», ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π°Π±Π»ΠΈΡ† с JOIN (ΠΈΠ½ΠΎΠ³Π΄Π° мноТСствСнными), Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ хранятся ΠΈ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ систСмах.

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ сцСнарий β€” Time Series: ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ устройств, сСтСй, статистика использования, ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π²Π΅Ρ‰Π΅ΠΉ. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ встрСчаСмся с упорядочСнными ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ достаточно простыми событиями. ClickHouse для этого Π½Π΅ Π±Ρ‹Π» ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½, Π½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ сСбя ΠΏΠΎΠΊΠ°Π·Π°Π», поэтому ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ClickHouse ΠΊΠ°ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ ClickHouse для time-series, ΠΌΡ‹ сдСлали Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊ Π½Π° основС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… InfluxDB ΠΈ TimescaleDB β€” спСциализированных time-series Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…. Оказалось, Ρ‡Ρ‚ΠΎ ClickHouse, Π΄Π°ΠΆΠ΅ Π±Π΅Π· ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ Ρ‚Π°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ ΠΈ Π½Π° Ρ‡ΡƒΠΆΠΎΠΌ ΠΏΠΎΠ»Π΅:

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

Π’ time-series ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ узкая Ρ‚Π°Π±Π»ΠΈΡ†Π° β€” нСсколько ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ. Π‘ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…, β€” ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ записСй Π² сСкунду, β€” ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ малСнькими вставками (real-time стримингом). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½ΡƒΠΆΠ΅Π½ Π΄Ρ€ΡƒΠ³ΠΎΠΉ сцСнарий вставки, Π° сами запросы β€” со своСй Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ спСцификой.

Log Management. Π‘Π±ΠΎΡ€ Π»ΠΎΠ³ΠΎΠ² Π² Π‘Π” β€” это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ, Π½ΠΎ Π² ClickHouse это ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ коммСнтариями, ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅. МногиС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ClickHouse ΠΈΠΌΠ΅Π½Π½ΠΎ для этого. Π’ этом случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ плоская ΡˆΠΈΡ€ΠΎΠΊΠ°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π°, Π³Π΄Π΅ ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ Π»ΠΎΠ³ΠΈ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π²ΠΈΠ΄Π΅ JSON), Π»ΠΈΠ±ΠΎ Π½Π°Ρ€Π΅Π·Π°Π΅ΠΌ Π½Π° части. Π”Π°Π½Π½Ρ‹Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ большими Π±Π°Ρ‚Ρ‡Π°ΠΌΠΈ (Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ), Π° ΠΈΡ‰Π΅ΠΌ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ полю.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ спСциализированныС Π‘Π”. ClickHouse ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ это всё ΠΈ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ‡Ρ‚ΠΎ обгоняСт ΠΈΡ… ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим time-series сцСнарий, ΠΈ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Β«Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΒ» ClickHouse ΠΏΠΎΠ΄ этот сцСнарий.

Time-Series

Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ это основной сцСнарий, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ClickHouse считаСтся стандартным Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ. Time-series β€” это Π½Π°Π±ΠΎΡ€ упорядочСнных Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ событий, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… измСнСния ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ процСсса Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. НапримСр, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ частота сСрдцСбиСний Π·Π° дСнь ΠΈΠ»ΠΈ количСство процСссов Π² систСмС. Всё, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΊΠΈ с ΠΊΠ°ΠΊΠΈΠΌΠΈ-Ρ‚ΠΎ измСрСниями – это time-series:

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

Π‘ΠΎΠ»ΡŒΡˆΠ΅ всСго Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° событий ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π²Π΅Π±Π°, Π½ΠΎ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… устройств: Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ, ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ… систСм, IoT, производств ΠΈΠ»ΠΈ бСспилотных такси, Π² Π±Π°Π³Π°ΠΆΠ½ΠΈΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ЯндСкс ΡƒΠΆΠ΅ сСйчас ΠΊΠ»Π°Π΄Π΅Ρ‚ ClickHouse-сСрвСр.

НапримСр, Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ с судов. ΠšΠ°ΠΆΠ΄Ρ‹Π΅ нСсколько сСкунд Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²ΠΎΠ·Π° ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ сотни Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ. Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ ΠΈΡ… ΠΈΠ·ΡƒΡ‡Π°ΡŽΡ‚, строят ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ½ΡΡ‚ΡŒ, насколько эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ судно, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²ΠΎΠ· Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΡΡ‚Π°ΠΈΠ²Π°Ρ‚ΡŒ Π½ΠΈ сСкунды. Π›ΡŽΠ±ΠΎΠΉ простой β€” это потСря Π΄Π΅Π½Π΅Π³, поэтому Π²Π°ΠΆΠ½ΠΎ ΡΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ стоянки Π±Ρ‹Π»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ.

БСйчас Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ рост спСциализированных Π‘Π”, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‚ time-series. На сайтС DB-Engines ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π°Π½ΠΆΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΠΎ Ρ‚ΠΈΠΏΠ°ΠΌ:

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

Π‘Π°ΠΌΡ‹ΠΉ быстрорастущий Ρ‚ΠΈΠΏ β€” time-series. Π’Π°ΠΊΠΆΠ΅ растут Π³Ρ€Π°Ρ„ΠΎΠ²Ρ‹Π΅ Π‘Π”, Π½ΠΎ time-series растут быстрСС послСдниС нСсколько Π»Π΅Ρ‚. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ прСдставитСли Π‘Π” этого сСмСйства β€” это InfluxDB, Prometheus, KDB, TimescaleDB (построСнная Π½Π° PostgreSQL), Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΡ‚ Amazon. ClickHouse здСсь Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован, ΠΈ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ нСсколько ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

Один ΠΈΠ· ΠΏΠΈΠΎΠ½Π΅Ρ€ΠΎΠ² β€” компания CloudFlare (CDN-ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€). Они мониторят свой CDN Ρ‡Π΅Ρ€Π΅Π· ClickHouse (DNS-запросы, HTTP-запросы) с Π³Ρ€ΠΎΠΌΠ°Π΄Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ β€” 6 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² событий Π² сСкунду. ВсС ΠΈΠ΄Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· Kafka, отправляСтся Π² ClickHouse, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹ событий Π² систСмС.

Comcast β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π»ΠΈΠ΄Π΅Ρ€ΠΎΠ² Ρ‚Π΅Π»Π΅ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² БША: ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ΅ Ρ‚Π΅Π»Π΅Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅, тСлСфония. Они создали Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ систСму управлСния CDN Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Open Source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Apache Traffic Control для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со своими ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. ClickHouse ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ бэкСнд для Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ.

Percona встроили ClickHouse Π²Π½ΡƒΡ‚Ρ€ΡŒ своСго PMM, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… MySQL.

БпСцифичСскиС трСбования

К time-series Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π΅ΡΡ‚ΡŒ свои спСцифичСскиС трСбования.

  • Быстрая вставка со ΠΌΠ½ΠΎΠ³ΠΈΡ… Π°Π³Π΅Π½Ρ‚ΠΎΠ². ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ быстро Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ со ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². ClickHouse Ρ…ΠΎΡ€ΠΎΡˆΠΎ это Π΄Π΅Π»Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ всС вставки Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅. Π›ΡŽΠ±ΠΎΠΉ insert β€” это Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π½Π° дискС, Π° малСнькиС вставки ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌ способом. Π’ ClickHouse Π»ΡƒΡ‡ΡˆΠ΅ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ большими ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, Π° Π½Π΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ строчкС.
  • Гибкая схСма. Π’ time-series ΠΌΡ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Π·Π½Π°Π΅ΠΌ структуру Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°. МоТно ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ систСму ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ прилоТСния, Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° Π΅Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ прилоТСния. Для этого Π½ΡƒΠΆΠ½Π° Π±ΠΎΠ»Π΅Π΅ гибкая схСма. ClickHouse, позволяСт это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π΄Π°ΠΆΠ΅ нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это строго типизированная Π±Π°Π·Π°.
  • Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ Β«Π·Π°Π±Ρ‹Π²Π°Π½ΠΈΠ΅Β» Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² time-series гигантский объСм Π΄Π°Π½Π½Ρ‹Ρ…, поэтому ΠΈΡ… Π½Π°Π΄ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ максимально эффСктивно. НапримСр, Ρƒ InfluxDB Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ компрСссия β€” это Π΅Π³ΠΎ основная Ρ„ΠΈΡˆΠΊΠ°. Но ΠΊΡ€ΠΎΠΌΠ΅ хранСния, Π½ΡƒΠΆΠ½ΠΎ Π΅Ρ‰Π΅ ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΈ Β«Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒΒ» старыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ downsampling β€” автоматичСский подсчСт Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΎΠ².
  • БыстрыС запросы Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Иногда интСрСсно ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ послСдниС 5 ΠΌΠΈΠ½ΡƒΡ‚ с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ миллисСкунд, Π½ΠΎ Π½Π° мСсячных Π΄Π°Π½Π½Ρ‹Ρ… минутная ΠΈΠ»ΠΈ сСкундная Π³Ρ€Π°Π½ΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½Π° β€” достаточно ΠΎΠ±Ρ‰Π΅ΠΉ статистики. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°, ΠΈΠ½Π°Ρ‡Π΅ запрос Π·Π° 3 мСсяца Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎ Π΄Π°ΠΆΠ΅ Π² ClickHouse.
  • Запросы Ρ‚ΠΈΠΏΠ° Β«last point, as ofΒ». Π­Ρ‚ΠΎ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ для time-series запросы: смотрим послСднСС ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ состояниС систСмы Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ t. Для Π‘Π” это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ приятныС запросы, Π½ΠΎ ΠΈΡ… Ρ‚ΠΎΠΆΠ΅ Π½Π°Π΄ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ.
  • Β«Π‘ΠΊΠ»Π΅ΠΈΠ²Π°Π½ΠΈΠ΅Β» Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов. Time-series β€” это Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ряд. Если Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ряда, Ρ‚ΠΎ ΠΈΡ… часто Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ ΠΈ ΠΊΠΎΡ€Ρ€Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. НС Π½Π° всСх Π‘Π” это ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, особСнно, с Π½Π΅Π²Ρ‹Ρ€Π°Π²Π½Π΅Π½Π½Ρ‹ΠΌΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ рядами: здСсь β€” ΠΎΠ΄Π½ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ засСчки, Ρ‚Π°ΠΌ β€” Π΄Ρ€ΡƒΠ³ΠΈΠ΅. МоТно ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ срСдниС, Π½ΠΎ Π²Π΄Ρ€ΡƒΠ³ Ρ‚Π°ΠΌ всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Ρ‹Ρ€ΠΊΠ°, поэтому нСпонятно.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ эти трСбования Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² ClickHouse.

Π‘Ρ…Π΅ΠΌΠ°

Π’ ClickHouse схСму для time-series ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами, Π² зависимости ΠΎΡ‚ стСпСни рСгулярности Π΄Π°Π½Π½Ρ‹Ρ…. МоТно ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ систСму Π½Π° рСгулярных Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ всС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π·Π°Ρ€Π°Π½Π΅Π΅. НапримСр, Ρ‚Π°ΠΊ сдСлал CloudFlare с ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠΌ CDN β€” это Ρ…ΠΎΡ€ΠΎΡˆΠΎ оптимизированная систСма. МоТно ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΡƒΡŽ систСму, которая ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ всю инфраструктуру, Ρ€Π°Π·Π½Ρ‹Π΅ сСрвисы. Π’ случаС нСрСгулярных Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ Π·Π°Ρ€Π°Π½Π΅Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠΌ β€” ΠΈ, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, это Π½Π°Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΉ случай.

РСгулярныС Π΄Π°Π½Π½Ρ‹Π΅. Колонки. Π‘Ρ…Π΅ΠΌΠ° простая – ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ:

CREATE TABLE cpu (
  created_date Date DEFAULT today(),  
  created_at DateTime DEFAULT now(),  
  time String,  
  tags_id UInt32,  /* join to dim_tag */
  usage_user Float64,  
  usage_system Float64,  
  usage_idle Float64,  
  usage_nice Float64,  
  usage_iowait Float64,  
  usage_irq Float64,  
  usage_softirq Float64,  
  usage_steal Float64,  
  usage_guest Float64,  
  usage_guest_nice Float64
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);

Π­Ρ‚ΠΎ обычная Ρ‚Π°Π±Π»ΠΈΡ†Π°, которая ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ систСмы (user, system, idle, nice). ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Π½ΠΎ Π½Π΅ Π³ΠΈΠ±ΠΊΠΎ. Если Ρ…ΠΎΡ‚ΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΡƒΡŽ схСму, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массивы.

НСрСгулярныС Π΄Π°Π½Π½Ρ‹Π΅. ΠœΠ°ΡΡΠΈΠ²Ρ‹:

CREATE TABLE cpu_alc (
  created_date Date,  
  created_at DateTime,  
  time String,  
  tags_id UInt32,  
  metrics Nested(
    name LowCardinality(String),  
    value Float64
  )
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);

SELECT max(metrics.value[indexOf(metrics.name,'usage_user')]) FROM ...

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Nested β€” это Π΄Π²Π° массива: metrics.name ΠΈ metrics.value. Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠ°ΠΊ массив Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΈ массив ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ событии. Для дальнСйшСй ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ вмСсто ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°ΠΊΠΎΠΉ структуры ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСсколько. НапримСр, ΠΎΠ΄Π½Ρƒ β€” для float-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π΄Ρ€ΡƒΠ³ΡƒΡŽ β€” для int-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ int хочСтся Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ эффСктивнСС.

Но ΠΊ Ρ‚Π°ΠΊΠΎΠΉ структурС слоТнСС ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ. ΠŸΡ€ΠΈΠ΄Π΅Ρ‚ΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Ρ‚Π°ΡΠΊΠΈΠ²Π°Ρ‚ΡŒ значСния сначала индСкса, Π° ΠΏΠΎΡ‚ΠΎΠΌ массива:

SELECT max(metrics.value[indexOf(metrics.name,'usage_user')]) FROM ...

Но это всС Ρ€Π°Π²Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ достаточно быстро. Π”Ρ€ΡƒΠ³ΠΎΠΉ способ хранСния нСрСгулярных Π΄Π°Π½Π½Ρ‹Ρ… – ΠΏΠΎ строкам.

НСрСгулярныС Π΄Π°Π½Π½Ρ‹Π΅. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ. Π’ этом Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ способС Π±Π΅Π· массивов хранятся сразу названия ΠΈ значСния. Если с ΠΎΠ΄Π½ΠΎΠ³ΠΎ устройства ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ сразу 5 000 ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ β€” гСнСрируСтся 5 000 строк Π² Π‘Π”:

CREATE TABLE cpu_rlc (
  created_date Date,  
  created_at DateTime,  
  time String,  
  tags_id UInt32,  
  metric_name LowCardinality(String),  
  metric_value Float64
) ENGINE = MergeTree(created_date, (metric_name, tags_id, created_at), 8192);


SELECT 
    maxIf(metric_value, metric_name = 'usage_user'),
    ... 
FROM cpu_r
WHERE metric_name IN ('usage_user', ...)

ClickHouse с этим справляСтся β€” Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ClickHouse SQL. НапримСр, maxIf β€” ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ функция, которая считаСт максимум ΠΏΠΎ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ условия. МоТно Π² ΠΎΠ΄Π½ΠΎΠΌ запросС Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ нСсколько Ρ‚Π°ΠΊΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ сразу ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ.

Π‘Ρ€Π°Π²Π½ΠΈΠΌ Ρ‚Ρ€ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°:

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

Π”Π΅Ρ‚Π°Π»ΠΈ

Π—Π΄Π΅ΡΡŒ я Π΄ΠΎΠ±Π°Π²ΠΈΠ» Β«Π Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° дискС» для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ тСстового Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…. Π’ случаС с ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ Ρƒ нас самый малСнький Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ…: максимальноС сТатиС, максимальная ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ запросов, Π½ΠΎ ΠΌΡ‹ ΠΏΠ»Π°Ρ‚ΠΈΠΌ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ всС сразу Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π’ случаС с массивами всё Ρ‡ΡƒΡ‚ΡŒ Ρ…ΡƒΠΆΠ΅. Π”Π°Π½Π½Ρ‹Π΅ всС Ρ€Π°Π²Π½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΡΠΆΠΈΠΌΠ°ΡŽΡ‚ΡΡ, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅Ρ€Π΅Π³ΡƒΠ»ΡΡ€Π½ΡƒΡŽ схСму. Но ClickHouse β€” колоночная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, Π° ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС Π² массивС, Ρ‚ΠΎ ΠΎΠ½Π° прСвращаСтся Π² ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΡƒΡŽ, ΠΈ ΠΌΡ‹ ΠΏΠ»Π°Ρ‚ΠΈΠΌ Π·Π° Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ. На Π»ΡŽΠ±ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ придСтся ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ вСсь массив Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, послС этого Π½Π°ΠΉΡ‚ΠΈ Π² Π½Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ΠΉ элСмСнт β€” Π° Ссли массив растСт, Ρ‚ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π΄Π΅Π³Ρ€Π°Π΄ΠΈΡ€ΡƒΠ΅Ρ‚.

Π’ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Uber), массивы Π½Π°Ρ€Π΅Π·Π°ΡŽΡ‚ΡΡ Π½Π° кусочки ΠΈΠ· 128 элСмСнтов. Π”Π°Π½Π½Ρ‹Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… тысяч ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ объСмом Π² 200 Π’Π‘ Π΄Π°Π½Π½Ρ‹Ρ…/Π² дСнь хранятся Π½Π΅ Π² ΠΎΠ΄Π½ΠΎΠΌ массивС, Π° Π² ΠΈΠ· 10 ΠΈΠ»ΠΈ 30 массивах со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ для хранСния.

Максимально простой ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” со строками. Но Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ»ΠΎΡ…ΠΎ ΡΠΆΠΈΠΌΠ°ΡŽΡ‚ΡΡ, Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ получаСтся большой, Π΄Π° Π΅Ρ‰Ρ‘ ΠΊΠΎΠ³Π΄Π° запросы ΠΈΠ΄ΡƒΡ‚ ΠΏΠΎ нСскольким ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°ΠΌ, Ρ‚ΠΎ ClickHouse Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ.

Гибридная схСма

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ схСму с массивом. Но Ссли ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π½Π°ΡˆΠΈΡ… Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ΠΎΠ² ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ user ΠΈ system, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ· массива Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

CREATE TABLE cpu_alc (
  created_date Date,  
  created_at DateTime,  
  time String,  
  tags_id UInt32,  
  metrics Nested(
    name LowCardinality(String),  
    value Float64
  ),
  usage_user Float64 
             MATERIALIZED metrics.value[indexOf(metrics.name,'usage_user')],
  usage_system Float64 
             MATERIALIZED metrics.value[indexOf(metrics.name,'usage_system')]
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);

ΠŸΡ€ΠΈ вставкС ClickHouse автоматичСски ΠΈΡ… посчитаСт. Π’Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ приятноС с ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ: схСма гибкая ΠΈ общая, Π½ΠΎ самыС часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΠΌΡ‹ Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΠ»ΠΈ. Π—Π°ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ это Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ вставку ΠΈ ETL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ массивы. ΠœΡ‹ просто сдСлали ALTER TABLE, Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Ρƒ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ гибридная ΠΈ Π±ΠΎΠ»Π΅Π΅ быстрая схСма, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ сразу Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

КодСки ΠΈ компрСссия

Для time-series Π²Π°ΠΆΠ½ΠΎ, насколько Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π²Ρ‹ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ массив ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ большой. Π’ ClickHouse Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ срСдств для достиТСния эффСкта компрСссии 1:10, 1:20, Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ большС. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ объСмом 1 Π’Π‘ Π½Π° дискС Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ 50-100 Π“Π‘. МСньший Ρ€Π°Π·ΠΌΠ΅Ρ€ β€” это Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π΄Π°Π½Π½Ρ‹Π΅ быстрСС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Для достиТСния высокого уровня компрСссии, ClickHouse ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ΄Π΅ΠΊΠΈ:

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹:

CREATE TABLE benchmark.cpu_codecs_lz4 (
    created_date Date DEFAULT today(), 
    created_at DateTime DEFAULT now() Codec(DoubleDelta, LZ4), 
    tags_id UInt32, 
    usage_user Float64 Codec(Gorilla, LZ4), 
    usage_system Float64 Codec(Gorilla, LZ4), 
    usage_idle Float64 Codec(Gorilla, LZ4), 
    usage_nice Float64 Codec(Gorilla, LZ4), 
    usage_iowait Float64 Codec(Gorilla, LZ4), 
    usage_irq Float64 Codec(Gorilla, LZ4), 
    usage_softirq Float64 Codec(Gorilla, LZ4), 
    usage_steal Float64 Codec(Gorilla, LZ4), 
    usage_guest Float64 Codec(Gorilla, LZ4), 
    usage_guest_nice Float64 Codec(Gorilla, LZ4), 
    additional_tags String DEFAULT ''
)
ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ опрСдСляСм ΠΊΠΎΠ΄Π΅ΠΊ DoubleDelta Π² ΠΎΠ΄Π½ΠΎΠΌ случаС, Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ β€” Gorilla, ΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ добавляСм Π΅Ρ‰Π΅ LZ4 ΠΊΠΎΠΌΠΏΡ€Π΅ΡΡΠΈΡŽ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° дискС сильно ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ:

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, сколько мСста Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ ΠΏΡ€ΠΈ использовании Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ² ΠΈ компрСссий:

  • Π² GZIP’ованном Ρ„Π°ΠΉΠ»Π΅ Π½Π° дискС;
  • Π² ClickHouse Π±Π΅Π· ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ², Π½ΠΎ с ZSTD-компрСссиСй;
  • Π² ClickHouse c ΠΊΠΎΠ΄Π΅ΠΊΠ°ΠΌΠΈ ΠΈ компрСссиСй LZ4 ΠΈ ZSTD.

Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с ΠΊΠΎΠ΄Π΅ΠΊΠ°ΠΌΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ мСньшС мСста.

Π Π°Π·ΠΌΠ΅Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

НС ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…:

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

Π’ΠΎ всСх ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π²Ρ‹ΡˆΠ΅ я использовал Float64. Но Ссли Π±Ρ‹ ΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Float32, Ρ‚ΠΎ это Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π΄Π°ΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ продСмонстрировали рСбята ΠΈΠ· ΠŸΠ΅Ρ€ΠΊΠΎΠ½Ρ‹ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΠΎ ссылкС Π²Ρ‹ΡˆΠ΅. Π’Π°ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ максимально ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, подходящий ΠΏΠΎΠ΄ Π·Π°Π΄Π°Ρ‡Ρƒ: Π΄Π°ΠΆΠ΅ Π² мСньшСй стСпСни для Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° дискС, Ρ‡Π΅ΠΌ для скорости запросов. ClickHouse ΠΎΡ‡Π΅Π½ΡŒ ΠΊ этому чувствитСлСн.

Если Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ int32 вмСсто int64, Ρ‚ΠΎ ΠΎΠΆΠΈΠ΄Π°ΠΉΡ‚Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Π΄Π²ΡƒΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π”Π°Π½Π½Ρ‹Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ мСньшС памяти, ΠΈ вся Β«Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ°Β» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС. ClickHouse Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя β€” ΠΎΡ‡Π΅Π½ΡŒ строго типизированная систСма, ΠΎΠ½ максимально ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ всС возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ соврСмСнныС систСмы.

АгрСгация ΠΈ Materialized Views

АгрСгация ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ прСдставлСния ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π°Π³Ρ€Π΅Π³Π°Ρ‚Ρ‹ Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ случаи ΠΆΠΈΠ·Π½ΠΈ:

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

НапримСр, Ρƒ вас ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ исходныС Π΄Π°Π½Π½Ρ‹Π΅, ΠΈ Π½Π° Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π²Π΅ΡΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ прСдставлСния с автоматичСским суммированиСм Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ SummingMergeTree (SMT). SMT β€” это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ структура Π΄Π°Π½Π½Ρ‹Ρ…, которая считаСт Π°Π³Ρ€Π΅Π³Π°Ρ‚Ρ‹ автоматичСски. Π’ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ сырыС Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠ½ΠΈ автоматичСски Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, ΠΈ сразу ΠΏΠΎ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹.

TTL β€” Β«Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌΒ» старыС Π΄Π°Π½Π½Ρ‹Π΅

Как Β«Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒΒ» Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ большС Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹? ClickHouse ΡƒΠΌΠ΅Π΅Ρ‚ это. ΠŸΡ€ΠΈ создании Ρ‚Π°Π±Π»ΠΈΡ† ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ TTL выраТСния: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ ΠΌΠΈΠ½ΡƒΡ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΠΌ ΠΎΠ΄ΠΈΠ½ дСнь, Π΄Π½Π΅Π²Π½Ρ‹Π΅ β€” 30 Π΄Π½Π΅ΠΉ, Π° Π½Π΅Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ»ΠΈ мСсячныС Π½Π΅ Ρ‚Ρ€ΠΎΠ³Π°Π΅ΠΌ Π½ΠΈΠΊΠΎΠ³Π΄Π°:

CREATE TABLE aggr_by_minute
…
TTL time + interval 1 day

CREATE TABLE aggr_by_day
…
TTL time + interval 30 day

CREATE TABLE aggr_by_week
…
/* no TTL */

Multi-tier β€” раздСляСм Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ дискам

Развивая эту идСю, Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ClickHouse Π² Ρ€Π°Π·Π½Ρ‹Ρ… мСстах. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, горячиС Π΄Π°Π½Π½Ρ‹Π΅ Π·Π° послСднюю нСдСлю Ρ…ΠΎΡ‚ΠΈΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π° ΠΎΡ‡Π΅Π½ΡŒ быстром локальном SSD, Π° Π±ΠΎΠ»Π΅Π΅ историчСскиС Π΄Π°Π½Π½Ρ‹Π΅ складываСм Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто. Π’ ClickHouse сСйчас это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ:

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

МоТно ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ хранСния (storage policy) Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ClickHouse Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΏΠ΅Ρ€Π΅ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ Π΄ΠΎΡΡ‚ΠΈΠΆΠ΅Π½ΠΈΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… условий Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

Но ΠΈ это Π΅Ρ‰Π΅ Π½Π΅ всС. На ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ пСрСходят Π½Π° Ρ…ΠΎΠ»ΠΎΠ΄Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅. НапримСр, 7 Π΄Π½Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Π΅ Π»Π΅ΠΆΠ°Ρ‚ Π½Π° ΠΎΡ‡Π΅Π½ΡŒ быстром дискС, Π° всС, Ρ‡Ρ‚ΠΎ ΡΡ‚Π°Ρ€ΡˆΠ΅, пСрСносится Π½Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ позволяСт систСму Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π° максимальной ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΡ€ΠΈ этом контролируя расходы ΠΈ Π½Π΅ тратя срСдства Π½Π° Ρ…ΠΎΠ»ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

CREATE TABLE 
... 
TTL date + INTERVAL 7 DAY TO VOLUME 'cold_volume', 
    date + INTERVAL 180 DAY DELETE

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ возмоТности ClickHouse

ΠŸΠΎΡ‡Ρ‚ΠΈ Π²ΠΎ всём Π² ClickHouse Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ «изюминки», Π½ΠΎ ΠΎΠ½ΠΈ Π½ΠΈΠ²Π΅Π»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ эксклюзивом β€” Ρ‚Π΅ΠΌ, Ρ‡Π΅Π³ΠΎ Π½Π΅Ρ‚ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π‘Π”. НапримСр, Π²ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ClickHouse:

  • ΠœΠ°ΡΡΠΈΠ²Ρ‹. Π’ ClickHouse ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° для массивов, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π° Π½ΠΈΡ… слоТныС вычислСния.
  • ΠΠ³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Β«ΠΊΠΈΠ»Π»Π΅Ρ€-Ρ„ΠΈΡ‡Β» ClickHouse. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ рСбята ΠΈΠ· ЯндСкса говорят, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, всС Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‚ Π² ClickHouse, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это быстро ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.
  • ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ прСдставлСния. ВмСстС с Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ структурами Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ прСдставлСния ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ real-time Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡŽ.
  • ClickHouse SQL. Π­Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ языка SQL с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ ΡΠΊΡΠΊΠ»ΡŽΠ·ΠΈΠ²Π½Ρ‹ΠΌΠΈ Ρ„ΠΈΡ‡Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ClickHouse. РаньшС это Π±Ρ‹Π»ΠΎ ΠΊΠ°ΠΊ Π±Ρ‹ с ΠΎΠ΄Π½ΠΎΠΉ стороны Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, Π° с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны β€” нСдостаток. БСйчас ΠΏΠΎΡ‡Ρ‚ΠΈ всС нСдостатки ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с SQL 92 ΠΌΡ‹ ΡƒΠ±Ρ€Π°Π»ΠΈ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅.
  • Lambda–выраТСния. Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΎΠ½ΠΈ Π΅Ρ‰Ρ‘ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…?
  • ML-ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°. Π­Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π‘Π”, Π² ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Π² ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Ρ…ΡƒΠΆΠ΅.
  • ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠΎΠ΄. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ ClickHouse вмСстС. БСйчас Π² ClickHouse ΠΎΠΊΠΎΠ»ΠΎ 500 ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€ΠΎΠ², ΠΈ это число постоянно растСт.

Π₯ΠΈΡ‚Ρ€Ρ‹Π΅ запросы

Π’ ClickHouse Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ трСмя Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ послСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для CPU (Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ, Π½ΠΎ ΠΎΠ½ Π΅Ρ‰Ρ‘ экзотичнСС).

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² ClickHouse запросы, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ tuple содСрТится Π² подзапросС. Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Π΅Π³ΠΎ ΠΌΠ½Π΅ Π»ΠΈΡ‡Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π‘Π”. Если я Ρ…ΠΎΡ‡Ρƒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с подзапросом, Ρ‚ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π‘Π” с Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ скаляр, Π° для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π½Π°Π΄ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ JOIN. Π’ ClickHouse ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ tuple:

SELECT *
  FROM cpu 
 WHERE (tags_id, created_at) IN 
    (SELECT tags_id, max(created_at)
        FROM cpu 
        GROUP BY tags_id)

Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ argMax:

SELECT 
    argMax(usage_user), created_at),
    argMax(usage_system), created_at),
...
 FROM cpu 

Π’ ClickHouse Π΅ΡΡ‚ΡŒ нСсколько дСсятков Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€Ρ‹, Ρ‚ΠΎ ΠΏΠΎ Π·Π°ΠΊΠΎΠ½Π°ΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€ΠΈΠΊΠΈ ΠΈΡ… получится ΠΎΠΊΠΎΠ»ΠΎ тысячи. ArgMax β€” ΠΎΠ΄Π½Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, которая считаСт максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: запрос Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ usage_user, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ достигаСтся максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ created_at:

SELECT now() as created_at,
       cpu.*
  FROM (SELECT DISTINCT tags_id from cpu) base 
  ASOF LEFT JOIN cpu USING (tags_id, created_at)

ASOF JOIN β€” «склСиваниС» рядов c Ρ€Π°Π·Π½Ρ‹ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. Π­Ρ‚ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ функция для Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, которая Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² kdb+. Если Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ряда с Ρ€Π°Π·Π½Ρ‹ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, ASOF JOIN позволяСт ΠΈΡ… ΡΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΈ ΡΠΊΠ»Π΅ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ запросС. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния Π² ΠΎΠ΄Π½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ ряду находится блиТайшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ, ΠΈ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ строчСк:

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

АналитичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π’ стандартС SQL-2003 ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

SELECT origin,
       timestamp,
       timestamp -LAG(timestamp, 1) OVER (PARTITION BY origin ORDER BY timestamp) AS duration,
       timestamp -MIN(timestamp) OVER (PARTITION BY origin ORDER BY timestamp) AS startseq_duration,
       ROW_NUMBER() OVER (PARTITION BY origin ORDER BY timestamp) AS sequence,
       COUNT() OVER (PARTITION BY origin ORDER BY timestamp) AS nb
  FROM mytable
ORDER BY origin, timestamp;

Π’ ClickHouse Ρ‚Π°ΠΊ нСльзя β€” ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ стандарт SQL-2003 ΠΈ, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ это Π΄Π΅Π»Π°Ρ‚ΡŒ. ВмСсто этого Π² ClickHouse принято ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

Π― ΠΎΠ±Π΅Ρ‰Π°Π» лямбды – Π²ΠΎΡ‚ ΠΎΠ½ΠΈ!

Π­Ρ‚ΠΎ Π°Π½Π°Π»ΠΎΠ³ аналитичСского запроса Π² стандартС SQL-2003: ΠΎΠ½ считаСт Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя timestamp, duration, порядковый Π½ΠΎΠΌΠ΅Ρ€ β€” всё, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΡ‹ считаСм аналитичСскими функциями. Π’ ClickHouse ΠΌΡ‹ ΠΈΡ… считаСм Ρ‡Π΅Ρ€Π΅Π· массивы: сначала сворачиваСм Π΄Π°Π½Π½Ρ‹Π΅ Π² массив, послС этого Π½Π° массивС Π΄Π΅Π»Π°Π΅ΠΌ всё, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΠΌ, Π° ΠΏΠΎΡ‚ΠΎΠΌ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Π­Ρ‚ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ любви ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Π½ΠΎ это ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΊΠΎ.

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ Π² ClickHouse ΠΌΠ½ΠΎΠ³ΠΎ спСциализированных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. НапримСр, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, сколько сСссий ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ? Випичная Π·Π°Π΄Π°Ρ‡Π° для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° – ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΎΠ΄Π½ΠΈΠΌ запросом. Π’ ClickHouse Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ функция для этой Ρ†Π΅Π»ΠΈ:

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

Π’ΠΎΠΎΠ±Ρ‰Π΅, для ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ Π² ClickHouse Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  • runningDifference, runningAccumulate, neighbor;
  • sumMap(key, value);
  • timeSeriesGroupSum(uid, timestamp, value);
  • timeSeriesGroupRateSum(uid, timestamp, value);
  • skewPop, skewSamp, kurtPop, kurtSamp;
  • WITH FILL / WITH TIES;
  • simpleLinearRegression, stochasticLinearRegression.

Π­Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ список Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, всСго ΠΈΡ… 500-600. Π₯ΠΈΠ½Ρ‚: всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ClickHouse Π΅ΡΡ‚ΡŒ Π² систСмной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ (Π½Π΅ всС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Π½ΠΎ всС интСрСсны):

select * from system.functions order by name

ClickHouse сам Π² сСбС Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ сСбС, Π² Ρ‚ΠΎΠΌ числС log tables, query_log, Π»ΠΎΠ³ трассировки, Π»ΠΎΠ³ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (part_log), Π»ΠΎΠ³ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, ΠΈ систСмный Π»ΠΎΠ³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚ Π½Π° диск. Π›ΠΎΠ³ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ – это time-series Π² ClickHouse Π½Π° самом ClickHouse: Π‘Π” сама для сСбя ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Ρ€ΠΎΠ»ΡŒ time-series Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ «поТирая» самого сСбя.

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ Π²Π΅Ρ‰ΡŒ β€” Ρ€Π°Π· ΠΌΡ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄Π΅Π»Π°Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ для time-series, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ сами Π² сСбС Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ? Нам Π½Π΅ Π½ΡƒΠΆΠ΅Π½ Prometheus, ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ всё Π² сСбС. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Grafana ΠΈ сами сСбя ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠΌ. Однако, Ссли ClickHouse ΡƒΠΏΠ°Π΄Π΅Ρ‚, Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, β€” ΠΏΠΎΡ‡Π΅ΠΌΡƒ, β€” поэтому ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚.

Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ кластСр ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… ClickHouse

Π§Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ β€” ΠΎΠ΄ΠΈΠ½ большой кластСр ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… ClickHouse? Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ DWH β€” это большой кластСр, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ схСмы ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠœΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ администратору Π‘Π” β€” Π΄Π°ΠΉΡ‚Π΅ Π½Π°ΠΌ схСму, ΠΈ Π½Π°ΠΌ Π΅Ρ‘ Π²Ρ‹Π΄Π°Π»ΠΈ:

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

Π’ ClickHouse ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. МоТно ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой собствСнный ClickHouse:

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

Нам большС Π½Π΅ Π½ΡƒΠΆΠ΅Π½ большой монструозный DWH ΠΈ нСсговорчивыС Π°Π΄ΠΌΠΈΠ½Ρ‹. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π²Ρ‹Π΄Π°Ρ‚ΡŒ свой собствСнный ClickHouse, ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сам, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ClickHouse ΠΎΡ‡Π΅Π½ΡŒ просто устанавливаСтся ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ слоТного администрирования:

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

Но Ссли Ρƒ нас ΠΌΠ½ΠΎΠ³ΠΎ ClickHouse, ΠΈ Π½Π°Π΄ΠΎ часто Π΅Π³ΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Ρ‚ΠΎ хочСтся этот процСсс Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Для этого ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Kubernetes ΠΈ clickhouse-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Π’ Kubernetes ClickHouse ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Β«ΠΏΠΎ Ρ‰Π΅Π»Ρ‡ΠΊΡƒΒ»: я ΠΌΠΎΠ³Ρƒ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ, Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ манифСст ΠΈ Π±Π°Π·Π° Π³ΠΎΡ‚ΠΎΠ²Π°. МоТно сразу ΠΆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ схСму, Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ‚ΡƒΠ΄Π° Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, ΠΈ Ρ‡Π΅Ρ€Π΅Π· 5 ΠΌΠΈΠ½ΡƒΡ‚ Ρƒ мСня ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ² Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ Grafana. ΠΠ°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ всС просто!

Π§Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅?

Π˜Ρ‚Π°ΠΊ, ClickHouse β€” это:

  • Быстро. Π­Ρ‚ΠΎ всСм извСстно.
  • ΠŸΡ€ΠΎΡΡ‚ΠΎ. НСмного спорно, Π½ΠΎ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ тяТСло Π² ΡƒΡ‡Π΅Π½ΠΈΠΈ, Π»Π΅Π³ΠΊΠΎ Π² бою. Если ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ClickHouse Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, дальшС всС ΠΎΡ‡Π΅Π½ΡŒ просто.
  • Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎ. Он ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π°Π·Π½Ρ‹Ρ… сцСнариСв: DWH, Time Series, Log Storage. Но это Π½Π΅ OLTP Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, поэтому Π½Π΅ ΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΌ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ вставки ΠΈ чтСния.
  • Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ. НавСрноС, Ρ‚ΠΎΡ‚, ΠΊΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ClickHouse, ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ» ΠΌΠ½ΠΎΠ³ΠΎ интСрСсных ΠΌΠΈΠ½ΡƒΡ‚ Π² Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΌ ΠΈ ΠΏΠ»ΠΎΡ…ΠΎΠΌ смыслС. НапримСр, Π²Ρ‹ΡˆΠ΅Π» Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ·, всС пСрСстало Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Или ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ бились Π½Π°Π΄ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ Π΄Π²Π° дня, Π½ΠΎ послС вопроса Π² Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌ-Ρ‡Π°Ρ‚Π΅ Π·Π°Π΄Π°Ρ‡Π° Ρ€Π΅ΡˆΠΈΠ»Π°ΡΡŒ Π·Π° Π΄Π²Π΅ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹. Или ΠΊΠ°ΠΊ Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π΅ Π›Π΅ΡˆΠΈ Миловидова ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ ΠΈΠ· ClickHouse сломал Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ HighLoad++. Π’Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Π²Π΅Ρ‰ΠΈ происходят постоянно ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ Π½Π°ΡˆΡƒ Тизнь с ClickHouse яркой ΠΈ интСрСсной!

ΠŸΡ€Π΅Π·Π΅Ρ‚Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ здСсь.

ΠŸΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π΅ΠΌ Π½Π° ClickHouse: 3 Π³ΠΎΠ΄Π° спустя

ДолгоТданная встрСча Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² высоконагруТСнных систСм Π½Π° HighLoad++ состоится 9 ΠΈ 10 ноября Π² Π‘ΠΊΠΎΠ»ΠΊΠΎΠ²ΠΎ. НаконСц это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ„Π»Π°ΠΉΠ½-конфСрСнция (Ρ…ΠΎΡ‚ΡŒ ΠΈ с соблюдСниСм всСх ΠΌΠ΅Ρ€ прСдостороТности), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ½Π΅Ρ€Π³ΠΈΡŽ HighLoad++ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ½Π»Π°ΠΉΠ½.

Для ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ ΠΌΡ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π²Π°ΠΌ кСйсы ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… возмоТностях Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ: HighLoad++ Π±Ρ‹Π», Π΅ΡΡ‚ΡŒ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ СдинствСнным мСстом, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π° Π΄Π²Π° дня ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ устроСны Facebook, ЯндСкс, Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅, Google ΠΈ Amazon.

ΠŸΡ€ΠΎΠ²ΠΎΠ΄Ρ наши встрСчи Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²Π° с 2007 Π³ΠΎΠ΄Π°, Π² этом Π³ΠΎΠ΄Ρƒ ΠΌΡ‹ встрСтимся Π² 14-ΠΉ Ρ€Π°Π·. Π—Π° это врСмя конфСрСнция выросла Π² 10 Ρ€Π°Π·, Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Π³ΠΎΠ΄Ρƒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ событиС отрасли собрало 3339 участника, 165 спикСров Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ² ΠΈ ΠΌΠΈΡ‚Π°ΠΏΠΎΠ², Π° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ шло 16 Ρ‚Ρ€Π΅ΠΊΠΎΠ².
Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Π³ΠΎΠ΄Ρƒ для вас Π±Ρ‹Π»ΠΎ 20 автобусов, 5280 Π»ΠΈΡ‚Ρ€ΠΎΠ² чая ΠΈ ΠΊΠΎΡ„Π΅, 1650 Π»ΠΈΡ‚Ρ€ΠΎΠ² морсов ΠΈ 10200 Π±ΡƒΡ‚Ρ‹Π»ΠΎΡ‡Π΅ΠΊ Π²ΠΎΠ΄Ρ‹. А Π΅Ρ‰Ρ‘ 2640 ΠΊΠΈΠ»ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠ² Π΅Π΄Ρ‹, 16 000 Ρ‚Π°Ρ€Π΅Π»ΠΎΠΊ ΠΈ 25 000 стаканчиков. ΠšΡΡ‚Π°Ρ‚ΠΈ, Π½Π° дСньги, Π²Ρ‹Ρ€ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π±ΡƒΠΌΠ°Π³ΠΈ, ΠΌΡ‹ посадили 100 саТСнцСв Π΄ΡƒΠ±Π° πŸ™‚

Π‘ΠΈΠ»Π΅Ρ‚Ρ‹ ΠΊΡƒΠΏΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ здСсь, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ новости ΠΎ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ β€” здСсь, Π° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ β€” Π²ΠΎ всСх соцсСтях: Telegram, Facebook, Vkontakte ΠΈ Twitter.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com