ВСзисы

  • ClickHouse β€” колоночная аналитичСская Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, разработанная ЯндСксом для высоконагруТСнных систСм.
  • ΠžΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ΡΡ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, компрСссиСй Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ аналитичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
  • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° для ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ распрСдСлСнной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.
  • Основной Π΄Π²ΠΈΠΆΠΎΠΊ β€” MergeTree, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ с Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ индСксами ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ.
  • ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ нСдостатки: отсутствиС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, низкая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠ³ΠΎ чтСния, ограничСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° SQL.
  • РСкомСндуСтся ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ частоту вставок Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΏΠ°Ρ‡ΠΊΠΈ.

ClickHouse β€” это колоночная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, разработанная ЯндСксом для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с большими объСмами Π΄Π°Π½Π½Ρ‹Ρ…. Она ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚Π°ΠΊΠΈΡ… сСрвисах, ΠΊΠ°ΠΊ ЯндСкс.ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠ° ΠΈ ЯндСкс.ΠœΡƒΠ·Ρ‹ΠΊΠ°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… отличаСтся высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ аналитичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. Однако для Π΅Ρ‘ эффСктивного использования Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ особСнности ΠΈ ограничСния.

ClickHouse Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Ρ‘ особСнно подходящСй для аналитичСских Π·Π°Π΄Π°Ρ‡. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ объСм Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π·Π° счСт эффСктивной компрСссии ΠΈ обСспСчиваСт Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов, Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΡ… большоС количСство строк, Π½ΠΎ нСбольшой Π½Π°Π±ΠΎΡ€ столбцов.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ характСристики

  • ΠšΠΎΠ»ΠΎΠ½ΠΎΡ‡Π½Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, оптимизированная для аналитичСских Π·Π°Π΄Π°Ρ‡.
  • Написана Π½Π° C++ Π² ЯндСксС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚Π°ΠΊΠΈΡ… сСрвисах ΠΊΠ°ΠΊ ЯндСкс.ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠ°, ЯндСкс.ΠœΡƒΠ·Ρ‹ΠΊΠ° ΠΈ для логирования.
  • Π Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ β€œΠΈΠ· коробки”: ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° кластСрной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.
  • ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹: Π°ΠΊΡ†Π΅Π½Ρ‚ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (Partition, Tolerance, Availability).

ВстроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  • ВСкторная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ….
  • ΠšΠΎΠΌΠΏΡ€Π΅ΡΡΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ настройки ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ².
  • Частичная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π³Π΅ΠΎΠ΄Π°Π½Π½Ρ‹Ρ… ΠΈ машинного обучСния.
  • АналитичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ высокого уровня.

НСдостатки

  • ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ: Π½Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ACID.
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Π½Π° измСнСния Π΄Π°Π½Π½Ρ‹Ρ…: Π΄Π°Π½Π½Ρ‹Π΅ нСльзя ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ.
  • НСт ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π° запросов.
  • Низкая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠ³ΠΎ чтСния: систСма рассчитана Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ….
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ: Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π½Π΅ всСгда согласованы Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
  • Частичная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° SQL: Π½Π΅ всС возмоТности SQL Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹.

Основной двиТок: MergeTree

Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… строится Π²ΠΎΠΊΡ€ΡƒΠ³ Π΄Π²ΠΈΠΆΠΊΠ° MergeTree, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ создаётся дирСктория Π½Π° дискС, Π³Π΄Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  • ΠŸΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ: каТдая партиция Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ сохраняСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅.
  • Колонки: каТдая ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° хранится Π² своём Ρ„Π°ΠΉΠ»Π΅ (*.bin).
  • Π˜Π½Π΄Π΅ΠΊΡΡ‹: Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ индСксы Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ„Π°ΠΉΠ» primary.idx. ИндСкс содСрТит ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ N-ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ index_granularity = 8192). Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ это минимальноС количСство Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π° Ρ€Π°Π· Π²Ρ‹Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ClickHouse, поэтому ΠΈ Π½Π΅ рСкомСндуСтся ΠΈΡΠΊΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΠ΅.
  • Π€Π°ΠΉΠ»Ρ‹ засСчСк: Π΄Π°Π½Π½Ρ‹Π΅ для быстрого доступа ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Ρ„Π°ΠΉΠ»Π°Ρ… *.mrk2.

На Π±Π°Π·Π΅ MergeTree Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ нСсколько ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΉ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… добавляСт спСцифичСскоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…:

  • ReplacingMergeTree:
    • ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π²ΠΎ врСмя слияния ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ строки Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ.
    • ПолСзСн для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π³Π΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ повторСния, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ остороТности ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ схлопываниС происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ.
  • SummingMergeTree:
    • ΠœΠΎΠΆΠ΅Ρ‚ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ значСния ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π²ΠΎ врСмя слияния.
    • ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π·Π°Π΄Π°Ρ‡ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°ΠΌΠΈ.
  • AggregatingMergeTree:
    • Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΉ, позволяя Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.
    • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² сцСнариях, Π³Π΄Π΅ трСбуСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π°Ρ€Π°Π½Π΅Π΅ рассчитанных ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ.
  • CollapsingMergeTree:
    • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ sign (значСния 1 ΠΈΠ»ΠΈ -1), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ…Π»ΠΎΠΏΡ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ.
    • ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡ‚ΠΌΠ΅Π½Ρƒ. НапримСр, строка с sign = -1 удаляСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ строку с sign = 1.
    • Π‘Ρ…Π»ΠΎΠΏΡ‹Π²Π°Π½ΠΈΠ΅ происходит Π² процСссС слияния Π΄Π°Π½Π½Ρ‹Ρ…, оставляя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ строки (послСдниС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ с ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ 1).

Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

Вставка Π΄Π°Π½Π½Ρ‹Ρ…:

  • КаТдая опСрация вставки создаёт Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (ΠΏΠ°Ρ€Ρ‚).
  • Π’ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ClickHouse ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΏΠ°Ρ€Ρ‚Ρ‹ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство ΠΌΠ΅Π»ΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΡ€ΠΈ этом старыС вСрсии Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΠΈ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· 8 ΠΌΠΈΠ½ΡƒΡ‚).
  • Если ΠΏΡ€ΠΈ создании Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π΅ Π·Π°Π΄Π°Π½Ρ‹ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ, всС Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½Ρƒ ΠΏΠ°ΠΏΠΊΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ большом количСствС вставок.

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ индСксация:

  • Π”Π°Π½Π½Ρ‹Π΅ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ полю, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π² ORDER BY. Π­Ρ‚ΠΎ опрСдСляСт Ρ„ΠΈΠ·ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° дискС.
  • ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ сортировки Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½ послС создания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

ΠšΠΎΠΌΠΏΡ€Π΅ΡΡΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ…:

  • КаТдая ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ собствСнный ΠΊΠΎΠ΄Π΅ΠΊ для сТатия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π±Π΅Π· пСрСсоздания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. НовыС вставки Π½Π°Ρ‡Π½ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄Π΅ΠΊ.
  • ΠŸΡ€ΠΈ слиянии ΠΏΠ°Ρ€Ρ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ ΡΠΆΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ. Π­Ρ‚ΠΎ практичСски Π½Π΅ влияСт Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

РСпликация

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ:

  • Доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π΄Π²ΠΈΠΆΠΊΠΎΠ² сСмСйства MergeTree.
  • РСпликация выполняСтся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ‚Π°Π±Π»ΠΈΡ†, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ….
  • РСпликация происходит Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ сТатых Π΄Π°Π½Π½Ρ‹Ρ… для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ INSERT ΠΈ ALTER.
  • Для ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ZooKeeper:
    • ΠŸΡ€ΠΈ нСдоступности ZooKeeper Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ пСрСходят Π² Ρ€Π΅ΠΆΠΈΠΌ read-only.
    • ZooKeeper управляСт ΠΌΠ΅Ρ€ΠΆΠ°ΠΌΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ расхоТдСния Π΄Π°Π½Π½Ρ‹Ρ….
    • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ΡΡ асинхронная рСпликация с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ настройки количСства Ρ€Π΅ΠΏΠ»ΠΈΠΊ, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… подтвСрТдСния.
  • РСпликация master-master: ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ€ΠΆΠ°ΠΌΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊ Ρ‡Π΅Ρ€Π΅Π· ZooKeeper.
  • Атомарная запись Π±Π»ΠΎΠΊΠΎΠ² с Π΄Π΅Π΄ΡƒΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ: для послСдних 100 вставок хранится Ρ…Π΅Ρˆ-сумма, рСализуя ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ClickHouse максимально эффСктивно, ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ:

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ вставок

  • Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Ρ… вставок. Они ΡΠΎΠ·Π΄Π°ΡŽΡ‚ мноТСство ΠΌΠ΅Π»ΠΊΠΈΡ… ΠΏΠ°Ρ€Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ сниТСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Π΅ вставки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов:
    • KittenHouse β€” внСшний инструмСнт Π½Π° Go (Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² VK).
    • ClickHouse-bulk β€” ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ массовых вставок.
    • Buffer Table β€” встроСнный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для накоплСния Π΄Π°Π½Π½Ρ‹Ρ….

ΠœΠ΅Ρ‚Π° информация

ΠžΠ±Π»Π°ΡΡ‚ΡŒ:: 00 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ::
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ::
Π‘ΠΎΠ·Π΄Π°Π½Π°:: 2024-11-26
Автор::

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹

Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ