ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

Аналитичната Π‘Π£Π‘Π” ClickHouse ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½ΠΈΠ·ΠΈ, консумирайки рСсурси. Π—Π° Π΄Π° ускори Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° систСмата, постоянно сС добавят Π½ΠΎΠ²ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡŠΡ‚ Π½Π° ClickHouse Николай ΠšΠΎΡ‡Π΅Ρ‚ΠΎΠ² Ρ€Π°Π·ΠΊΠ°Π·Π²Π° Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π΄Π°Π½Π½ΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Π½ΠΈΠ·ΠΎΠ²Π΅Ρ‚Π΅, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π·Π° новия Ρ‚ΠΈΠΏ LowCardinality, ΠΈ обяснява ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ускорим Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с Π½ΠΈΠ·ΠΎΠ²Π΅Ρ‚Π΅.

ΠŸΡƒΡΠ½Π΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅ΠΎΡ‚ΠΎ

β€” ΠŸΡŠΡ€Π²ΠΎ, Π½Π΅ΠΊΠ° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Π½ΠΈΠ·ΠΎΠ²Π΅.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

ИмамС Π½ΠΈΠ·ΠΎΠ²ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ. String Π΅ подходящ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΈ трябва Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΡ‡Ρ‚ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ. Има малък Overhead β€” 9 Π±Π°ΠΉΡ‚Π° Π·Π° Π½ΠΈΠ·. Ако искамС Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅Ρ‚Π΅ Π΄Π° бъдС фиксиран ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ извСстСн, Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ FixedString. Π’ Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΠΌ нСобходимия Π±Ρ€ΠΎΠΉ Π±Π°ΠΉΡ‚ΠΎΠ²Π΅, ΡƒΠ΄ΠΎΠ±Π΅Π½ Π΅ Π·Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° IP адрСси ΠΈΠ»ΠΈ Ρ…Π΅Ρˆ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

Π Π°Π·Π±ΠΈΡ€Π° сС, понякога Π½Π΅Ρ‰ΠΎ забавя. Π”Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Π΅ ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ към Ρ‚Π°Π±Π»ΠΈΡ†Π°. ClickHouse Ρ‡Π΅Ρ‚Π΅ доста голямо количСство Π΄Π°Π½Π½ΠΈ, Π΄Π° Ρ€Π΅Ρ‡Π΅ΠΌ със скорост 100 Π“Π‘/с, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅ Π΅ ΠΌΠ°Π»ΠΊΠ°. ИмамС Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈ Π΄Π°Π½Π½ΠΈ. ΠžΡ‚ Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° ClickHouse Ρ‡Π΅Ρ‚Π΅ Π΄Π°Π½Π½ΠΈ с ΠΏΠΎ-голяма скорост, Π½ΠΎ Π½ΠΈΠ·ΠΎΠ²Π΅Ρ‚Π΅ Π² сСкунда сС Ρ‡Π΅Ρ‚Π°Ρ‚ Ρ‚Ρ€ΠΈ ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° компрСсиранитС Π΄Π°Π½Π½ΠΈ, Ρ‚ΠΎΠΉ Ρ‰Π΅ бъдС ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ€Π°Π²Π΅Π½. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π² Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅ са записани Π΅Π΄Π½ΠΈ ΠΈ ΡΡŠΡ‰ΠΈ Π΄Π°Π½Π½ΠΈ β€” ΠΏΡŠΡ€Π²ΠΈΡΡ‚ ΠΌΠΈΠ»ΠΈΠ°Ρ€Π΄ числа β€” само Ρ‡Π΅ Π² ΠΏΡŠΡ€Π²Π°Ρ‚Π° ΠΊΠΎΠ»ΠΎΠ½Π° Ρ‚Π΅ са записани ΠΊΠ°Ρ‚ΠΎ UInt64, Π° във Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° β€” ΠΊΠ°Ρ‚ΠΎ String. Π—Π°Ρ€Π°Π΄ΠΈ Ρ‚ΠΎΠ²Π° Π²Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ ΠΎΡ‚Π½Π΅ΠΌΠ° ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΎΡ‚ диска ΠΈ Π·Π° Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

Π•Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π”Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ извСстСн Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π½ΠΈΠ·ΠΎΠ²Π΅, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π΄ΠΎ константа 1000 ΠΈΠ»ΠΈ 10 000 ΠΈ практичСски Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ сС промСня. Π’ Ρ‚ΠΎΠ·ΠΈ случай Ρ‚ΠΈΠΏΡŠΡ‚ Π΄Π°Π½Π½ΠΈ Enum Π΅ подходящ, Π² ClickHouse ΠΈΠΌΠ° Π΄Π²Π΅ разновидности β€” Enum8 ΠΈ Enum16. Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² Enum Π½ΠΈΠ΅ Π±ΡŠΡ€Π·ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°ΠΌΠ΅ запитвания.

Π’ ClickHouse ΠΈΠΌΠ° ускорСния Π·Π° GROUP BY, IN, DISTINCT ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π° някои Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° сравняванС с константСн Π½ΠΈΠ·. Π Π°Π·Π±ΠΈΡ€Π° сС, числата Π² Π½ΠΈΠ·Π° Π½Π΅ сС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Ρ‚, Π°, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², константният Π½ΠΈΠ· сС ΠΏΡ€ΠΈΠ²ΠΎΠ΄Π΅ към стойността Π½Π° Enum. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° всичко сС сравнява Π±ΡŠΡ€Π·ΠΎ.

Но ΠΈΠΌΠ° ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ. Π”ΠΎΡ€ΠΈ ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π·Π½Π°Π΅ΠΌ Ρ‚ΠΎΡ‡Π½ΠΎΡ‚ΠΎ мноТСство ΠΎΡ‚ Π½ΠΈΠ·ΠΎΠ²Π΅, понякога Ρ‚ΠΎ трябва Π΄Π° сС Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°. Появява сС Π½ΠΎΠ² Π½ΠΈΠ· β€” трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ALTER.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

ALTER Π·Π° Enum Π² ClickHouse Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½. НС прСзаписвамС Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° диска, Π½ΠΎ ALTER ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π±Π°Π²Π΅Π½ Π·Π°Ρ€Π°Π΄ΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ структуритС Enum сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² схСмата Π½Π° самата Ρ‚Π°Π±Π»ΠΈΡ†Π°. Π—Π°Ρ‚ΠΎΠ²Π° трябва Π΄Π° ΠΈΠ·Ρ‡Π°ΠΊΠ°ΠΌΠ΅ заявкитС Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΎΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Π’ΡŠΠΏΡ€ΠΎΡΡŠΡ‚ Π΅, ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Π½Π΅Ρ‰Π°Ρ‚Π° ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅? Π‘ΠΈΠ³ΡƒΡ€Π½ΠΎ, ΠΌΠΎΠΆΠ΅. МоТС Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΠΈΠΌ структурата Π½Π° Enum Π½Π΅ Π² схСмата Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°, Π° Π² ZooKeeper. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΠΎΠ±Π°Ρ‡Π΅ Π΄Π° Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ със синхронизацията. НапримСр, Π°ΠΊΠΎ Сдиният Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π΄Π°Π½Π½ΠΈ, Π° другият Π½Π΅, ΠΈ Π°ΠΊΠΎ Ρ‚ΠΎΠΉ ΠΈΠΌΠ° стара вСрсия Π½Π° Enum, Π½Π΅Ρ‰ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС счупи. (Π’ ClickHouse ΠΏΠΎΡ‡Ρ‚ΠΈ Π·Π°Π²ΡŠΡ€ΡˆΠΈΡ…ΠΌΠ΅ Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰ΠΈΡ‚Π΅ ALTER заявки. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π³ΠΈ Π·Π°Π²ΡŠΡ€ΡˆΠΈΠΌ напълно, няма Π΄Π° Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° Ρ‡Π°ΠΊΠ°ΠΌΠ΅ заявки Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅.)

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

Π—Π° Π΄Π° Π½Π΅ сС Π½Π°Π³ΡŠΡ€Π±Π²Π°ΠΌΠ΅ с ALTER Enum, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ външни Ρ€Π΅Ρ‡Π½ΠΈΡ†ΠΈ Π² ClickHouse. Напомням, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ структура ΠΎΡ‚ Ρ‚ΠΈΠΏ ΠΊΠ»ΡŽΡ‡-стойност Π² ClickHouse, с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° която ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ външни ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ, Π½Π°ΠΏΡ€. ΠΎΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ MySQL.

Π’ Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ° Π½Π° ClickHouse ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½ΠΈΠ·ΠΎΠ²Π΅, Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° β€” Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° числа. Ако трябва Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½ΠΈΠ·, ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΠΌΠ΅ функцията dictGet ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с нСя. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΏΡ€Π°Π²ΠΈΠΌ ALTER. Π—Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅Ρ‰ΠΎ Π² Enum, просто Π³ΠΎ вмъквамС Π² ΡΡŠΡ‰Π°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° MySQL.

Но Ρ‚ΡƒΠΊ Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. ΠŸΡŠΡ€Π²ΠΎ, Π½Π΅ΡƒΠ΄ΠΎΠ±Π΅Π½ синтаксис. Ако искамС Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½ΠΈΠ·, трябва Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΠΌΠ΅ dictGet. Π’Ρ‚ΠΎΡ€ΠΎ, липсата Π½Π° някои ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ с константСн Π½ΠΈΠ· Π·Π° Ρ€Π΅Ρ‡Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π΅ Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π±ΡŠΡ€Π·ΠΎ.

ΠœΠΎΠ³Π°Ρ‚ ΡΡŠΡ‰ΠΎ Π΄Π° Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Π΅ смС поискали Π½ΠΈΠ· Π² кСш-Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ°, Π° Ρ‚ΠΎΠΉ Π½Π΅ Π΅ ΠΏΠΎΠΏΠ°Π΄Π½Π°Π» Π² кСша. Π’ Ρ‚Π°ΠΊΡŠΠ² случай Ρ‰Π΅ трябва Π΄Π° Ρ‡Π°ΠΊΠ°ΠΌΠ΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС зарСдят ΠΎΡ‚ външСн ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

ΠžΠ±Ρ‰ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ Π½Π° Π΄Π²Π°Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΅, Ρ‡Π΅ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ всичкитС ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ Π½Π° Π΅Π΄Π½ΠΎ място ΠΈ Π³ΠΈ синхронизирамС. Π’Π°ΠΊΠ° Ρ‡Π΅, Π·Π°Ρ‰ΠΎ Π΄Π° Π½Π΅ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Ρ€Π΅Ρ‡Π½ΠΈΡ†ΠΈΡ‚Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ? Няма синхронизация β€” няма ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. МоТСм Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ° Π»ΠΎΠΊΠ°Π»Π½ΠΎ Π² част Π½Π° диска. ВоСст, Π½Π°ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ смС Insert, записали смС Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ°. Ако Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с Π΄Π°Π½Π½ΠΈ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° запишСм Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ° ΠΈΠ»ΠΈ Π² Π±Π»ΠΎΠΊ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ, ΠΈΠ»ΠΈ Π² част ΠΎΡ‚ ΠΊΠΎΠ»ΠΎΠ½Π°, ΠΈΠ»ΠΈ Π² някакъв кСш, Π·Π° Π΄Π° ускорим изчислСнията.

Π Π΅Ρ‡Π½ΠΈΠΊΠΎΠ²ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅

Π’Π°ΠΊΠ° стигнахмС Π΄ΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½ΠΎΠ² Ρ‚ΠΈΠΏ Π΄Π°Π½Π½ΠΈ Π² ClickHouse β€” LowCardinality. Π’ΠΎΠ²Π° Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ: ΠΊΠ°ΠΊ сС записват Π½Π° диска ΠΈ ΠΊΠ°ΠΊ сС Ρ‡Π΅Ρ‚Π°Ρ‚, ΠΊΠ°ΠΊ са прСдставСни Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ схСмата Π½Π° тяхната ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

На слайда ΠΈΠΌΠ° Π΄Π²Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ. ΠžΡ‚Π΄ΡΡΠ½ΠΎ, Ρ€Π΅Π΄ΠΎΠ²Π΅Ρ‚Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ стандартно, Π² Ρ‚ΠΈΠΏ String. Ясно Π΅, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° са ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΈ. ΠžΡ‚Π»ΡΠ²ΠΎ ΠΈΠΌΠ° Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠ°Π²Π° ΠΊΠΎΠ»ΠΎΠ½Π°, само Ρ‡Π΅ Π² Ρ‚ΠΈΠΏ LowCardinality. Вя сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Ρ€Π΅Ρ‡Π½ΠΈΠΊ с мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ (Ρ€Π΅Π΄ΠΎΠ²Π΅Ρ‚Π΅ ΠΎΡ‚ ΠΊΠΎΠ»ΠΎΠ½Π°Ρ‚Π° вдясно) ΠΈ списък с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ (Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅Ρ‚Π΅).

Π‘ ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ‚Π΅Π·ΠΈ Π΄Π²Π΅ структури ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½Π°Ρ‚Π° ΠΊΠΎΠ»ΠΎΠ½Π°. Π‘ΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π΅Π½ индСкс β€” Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π°, която ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ позицията Π² Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ° ΠΏΠΎ Ρ€Π΅Π΄. Вя Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π·Π° ускоряванС Π½Π° някои заявки. НапримСр, Π°ΠΊΠΎ искамС Π΄Π° сравним, Π΄Π° ΠΏΠΎΡ‚ΡŠΡ€ΡΠΈΠΌ Ρ€Π΅Π΄ Π² ΠΊΠΎΠ»ΠΎΠ½Π°Ρ‚Π° ΠΈΠ»ΠΈ Π΄Π° Π³ΠΈ ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΠΌ.

LowCardinality β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π΅Π½ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½ΠΈ. Π’ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ»ΠΈ число, ΠΈΠ»ΠΈ Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° число, ΠΈΠ»ΠΈ стринг, ΠΈΠ»ΠΈ Nullable ΠΎΡ‚ тях.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

Π₯арактСристика Π½Π° LowCardinality Π΅, Ρ‡Π΅ Ρ‚ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π·Π°ΠΏΠ°Π·ΠΈ Π·Π° някои Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. На слайда Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° заявка. Π’ ΠΏΡŠΡ€Π²ΠΈΡ Ρ€Π΅Π΄ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ… ΠΊΠΎΠ»ΠΎΠ½Π° ΠΎΡ‚ Ρ‚ΠΈΠΏ LowCardinality ΠΎΡ‚ String, Π½Π°Ρ€Π΅ΠΊΠΎΡ… я S. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΏΠΈΡ‚Π°Ρ… Π·Π° ΠΈΠΌΠ΅Ρ‚ΠΎ ѝ β€” ClickHouse ΠΊΠ°Π·Π°, Ρ‡Π΅ Π΅ LowCardinality ΠΎΡ‚ String. Всичко Π΅ вярно.

ВрСтият Ρ€Π΅Π΄ Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ ΡΡŠΡ‰ΠΈΡΡ‚, само Ρ‡Π΅ ΠΈΠ·Π²ΠΈΠΊΠ°Ρ…ΠΌΠ΅ функцията length. Π’ ClickHouse функцията length Π²Ρ€ΡŠΡ‰Π° Ρ‚ΠΈΠΏ Π΄Π°Π½Π½ΠΈ UInt64. Но сСга ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ LowCardinality ΠΎΡ‚ UInt64. Какъв Π΅ ΡΠΌΠΈΡΡŠΠ»ΡŠΡ‚?

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

Π’ Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ° бяха ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈ ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΈ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ…ΠΌΠ΅ функцията length. Π‘Π΅Π³Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Ρ€Π΅Ρ‡Π½ΠΈΠΊ, ΡΡŠΡΡ‚ΠΎΡΡ‰ сС само ΠΎΡ‚ числа β€” Ρ‚ΠΎΠ²Π° са Π΄ΡŠΠ»ΠΆΠΈΠ½ΠΈΡ‚Π΅ Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅Ρ‚Π΅. ΠšΠΎΠ»ΠΎΠ½Π°Ρ‚Π° с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈΡ‚Π΅ Π½Π΅ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ. Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈΡ…ΠΌΠ΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π΄Π°Π½Π½ΠΈ, спСстихмС Π²Ρ€Π΅ΠΌΠ΅ ΠΏΡ€ΠΈ запитванията.

ΠœΠΎΠ³Π°Ρ‚ Π΄Π° сС направят ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ добавянС Π½Π° прост кСш. ΠŸΡ€ΠΈ изчисляванС Π½Π° стойността Π½Π° функция, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° я Π·Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ ΠΈ Π΄Π° я ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ ΠΎΡ‚Π½ΠΎΠ²ΠΎ, Π±Π΅Π· Π΄Π° я изчислявамС ΠΎΡ‚Π½ΠΎΠ²ΠΎ.

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ оптимизация Π½Π° GROUP BY, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π½Π°ΡˆΠ°Ρ‚Π° ΠΊΠΎΠ»ΠΎΠ½Π° с Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ° Π²Π΅Ρ‡Π΅ Π΅ частично Π°Π³Ρ€Π΅Π³ΠΈΡ€Π°Π½Π° β€” ΠΌΠΎΠΆΠ΅ Π΄Π° сС изчисляват ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ стойноститС Π½Π° Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ ΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° сС Π½Π°ΠΌΠ΅Ρ€ΠΈ bucket, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π΄Π° сС постави новият Ρ€Π΅Π΄. ОсвСн Ρ‚ΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° сС спСциализират някои Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ uniq, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π² нСя ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ само Ρ€Π΅Ρ‡Π½ΠΈΠΊ, Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈΡ‚Π΅ Π΄Π° останат Π½Π΅Ρ‚Ρ€ΠΎΠ½Π°Ρ‚ΠΈ β€” Ρ‚Π°ΠΊΠ° всичко Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ. ΠŸΡŠΡ€Π²ΠΈΡ‚Π΅ Π΄Π²Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π΅Ρ‡Π΅ смС Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² ClickHouse.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

Какво Ρ‰Π΅ станС, Π°ΠΊΠΎ създадСм ΠΊΠΎΠ»ΠΎΠ½Π° с нашия Ρ‚ΠΈΠΏ Π΄Π°Π½Π½ΠΈ ΠΈ вмъкнСм Π² нСя ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ лоши Ρ€Π΅Π΄ΠΎΠ²Π΅? Няма Π»ΠΈ Π΄Π° прСнаситим ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° си? НС, Π·Π° Ρ‚ΠΎΠ²Π° Π² ClickHouse ΠΈΠΌΠ° Π΄Π²Π΅ спСциални настройки. ΠŸΡŠΡ€Π²Π°Ρ‚Π° β€” low_cardinality_max_dictionary_size. Π’ΠΎΠ²Π° Π΅ максималният Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ°, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС записан Π½Π° диск. Π’ΠΌΡŠΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΡ‡Π° ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½: ΠΊΠΎΠ³Π°Ρ‚ΠΎ вмъквамС Π΄Π°Π½Π½ΠΈ, ΠΈΠ΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΡƒ ΠΎΡ‚ Ρ€Π΅Π΄ΠΎΠ²Π΅, ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°ΠΌΠ΅ голям ΠΎΠ±Ρ‰ Ρ€Π΅Ρ‡Π½ΠΈΠΊ. Ако Ρ€Π΅Ρ‡Π½ΠΈΠΊΡŠΡ‚ станС ΠΏΠΎ-голям ΠΎΡ‚ стойността Π½Π° настройката, записвамС тСкущия Ρ€Π΅Ρ‡Π½ΠΈΠΊ Π½Π° диск, Π° останалитС Ρ€Π΅Π΄ΠΎΠ²Π΅ β€” някъдС β€žΠΎΡ‚ΡΡ‚Ρ€Π°Π½ΠΈβ€œ, Π±Π»ΠΈΠ·ΠΎ Π΄ΠΎ индСкситС. Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка Π½ΠΈΠΊΠΎΠ³Π° няма Π΄Π° прСизчислявамС голям Ρ€Π΅Ρ‡Π½ΠΈΠΊ ΠΈ няма Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°.

Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° настройка сС Π½Π°Ρ€ΠΈΡ‡Π° low_cardinality_use_single_dictionary_for_part. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π΅Ρ‚Π΅ си, Ρ‡Π΅ Π² ΠΏΡ€Π΅Π΄Π½Π°Ρ‚Π° схСма, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π²ΠΌΡŠΠΊΠ²Π°Ρ…ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ, Π½Π°ΡˆΠΈΡΡ‚ Ρ€Π΅Ρ‡Π½ΠΈΠΊ Π΅ прСнаситСн ΠΈ смС Π³ΠΎ записали Π½Π° диск. Π’ΡŠΠ·Π½ΠΈΠΊΠ²Π° Π²ΡŠΠΏΡ€ΠΎΡΡŠΡ‚, Π·Π°Ρ‰ΠΎ сСга Π΄Π° Π½Π΅ ΡΡŠΡΡ‚Π°Π²ΠΈΠΌ ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΡŠΠ² Ρ€Π΅Ρ‡Π½ΠΈΠΊ?

ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ‚ΠΎΠΉ прСнасити, ΠΎΡ‚Π½ΠΎΠ²ΠΎ Ρ‰Π΅ Π³ΠΎ запишСм Π½Π° диск ΠΈ Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ Π΄Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°ΠΌΠ΅ Ρ‚Ρ€Π΅Ρ‚ΠΈ. Π’Π°Π·ΠΈ настройка Ρ‚ΠΎΡ‡Π½ΠΎ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π° Ρ‚Π°ΠΊΠ°Π²Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π΅Ρ‡Π½ΠΈΡ†ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° са ΠΏΠΎΠ»Π΅Π·Π½ΠΈ, Π°ΠΊΠΎ искамС Π΄Π° вмъкнСм мноТСство Ρ€Π΅Π΄ΠΎΠ²Π΅, Π½ΠΎ случайно смС вмъкнали β€žΠ±ΠΎΠΊΠ»ΡƒΠΊβ€œ. Π”Π° ΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Π΅ ΠΏΡŠΡ€Π²ΠΎ смС вмъкнали лоши Ρ€Π΅Π΄ΠΎΠ²Π΅, Π° слСд Ρ‚ΠΎΠ²Π° Π΄ΠΎΠ±Ρ€ΠΈ. Π’ΠΎΠ³Π°Π²Π° Ρ€Π΅Ρ‡Π½ΠΈΠΊΡŠΡ‚ Ρ‰Π΅ сС Ρ€Π°Π·Π΄Π΅Π»ΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»ΠΊΠΈ Ρ€Π΅Ρ‡Π½ΠΈΡ†ΠΈ. Част ΠΎΡ‚ тях Ρ‰Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ β€žΠ±ΠΎΠΊΠ»ΡƒΠΊβ€œ, Π½ΠΎ послСднитС Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ с Π΄ΠΎΠ±Ρ€ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅. И Π°ΠΊΠΎ ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅ΠΌ, Π΄Π° Ρ€Π΅Ρ‡Π΅ΠΌ, само послСдната Π³Ρ€Π°Π½ΡƒΠ»Π°, всичко всС ΠΏΠ°ΠΊ Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π±ΡŠΡ€Π·ΠΎ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° прСдимствата Π½Π° LowCardinality, Π²Π΅Π΄Π½Π°Π³Π° Ρ‰Π΅ ΠΊΠ°ΠΆΠ°, Ρ‡Π΅ вряд Π»ΠΈ Ρ‰Π΅ постигнСм намаляванС Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° диска (Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС случи), Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ClickHouse компрСсира Π΄Π°Π½Π½ΠΈΡ‚Π΅. Има ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‰ сС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” LZ4. МоТС Π΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ ΠΈ компрСсия с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ZSTD. Но ΠΈ Π΄Π²Π°Ρ‚Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΠ° Π²Π΅Ρ‡Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ Ρ€Π΅Ρ‡Π½ΠΈΠΊΠΎΠ²Π° компрСсия, Π·Π°Ρ‚ΠΎΠ²Π° Π½Π°ΡˆΠΈΡΡ‚ външСн Ρ€Π΅Ρ‡Π½ΠΈΠΊ Π² ClickHouse Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½.

Π—Π° Π΄Π° Π½Π΅ бъда голословСн, Π²Π·Π΅Ρ… някои Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°Ρ‚Π° β€” String, LowCardinality(String) ΠΈ Enum β€” ΠΈ Π³ΠΈ Π·Π°ΠΏΠ°Π·ΠΈΡ… Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ…Π° сС Ρ‚Ρ€ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ с Π΅Π΄ΠΈΠ½ ΠΌΠΈΠ»ΠΈΠ°Ρ€Π΄ Ρ€Π΅Π΄Π°. Π’ ΠΏΡŠΡ€Π²Π°Ρ‚Π° ΠΊΠΎΠ»ΠΎΠ½Π°, CodePage, ΠΈΠΌΠ° само 62 стойности. И Π΅ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Π΅ Π² LowCardinality(String) смС Π³ΠΈ компрСсирали ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅. String Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-лошо, Π½ΠΎ вСроятно Π΅ Π·Π°Ρ€Π°Π΄ΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Π½ΠΈΠ·ΠΎΠ²Π΅Ρ‚Π΅ са къси, ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Π΄ΡŠΠ»ΠΆΠΈΠ½ΠΈΡ‚Π΅ ΠΈΠΌ, Π° Ρ‚Π΅ Π·Π°Π΅ΠΌΠ°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ място ΠΈ сС компрСсират слабо.

Ако Π²Π·Π΅ΠΌΠ΅ΠΌ PhoneModel, Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ са 48 хиляди β€” Π²Π΅Ρ‡Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅, ΠΈ Ρ€Π°Π·Π»ΠΈΠΊΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ String ΠΈ LowCardinality(String) ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚. Π—Π° URL ΡΡŠΡ‰ΠΎ спСстихмС само 2 Π“Π‘ β€” мисля, няма Π½ΡƒΠΆΠ΄Π° Π΄Π° сС Ρ€Π°Π·Ρ‡ΠΈΡ‚Π° Π½Π° Ρ‚ΠΎΠ²Π°.

ΠžΡ†Π΅Π½ΠΊΠ° Π½Π° скоростта Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс
Π’Ρ€ΡŠΠ·ΠΊΠ° ΠΎΡ‚ слайда

Π‘Π΅Π³Π° Ρ‰Π΅ ΠΎΡ†Π΅Π½ΠΈΠΌ скоростта Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°. Π—Π° Π΄Π° я оцСня, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ… Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ Π·Π° описания Π½Π° таксита Π² Ню Π™ΠΎΡ€ΠΊ. Π’ΠΎΠΉ Π΅ Π½Π°Π»ΠΈΡ‡Π΅Π½ сС Π½Π°ΠΌΠΈΡ€Π° Π½Π° GitHub. Π’ Π½Π΅Π³ΠΎ ΠΈΠΌΠ° ΠΌΠ°Π»ΠΊΠΎ Π½Π°Π΄ Π΅Π΄ΠΈΠ½ ΠΌΠΈΠ»ΠΈΠ°Ρ€Π΄ ΠΏΠΎΠ΅Π·Π΄ΠΊΠΈ. Π’Π°ΠΌ са ΠΎΡ‚Ρ€Π°Π·Π΅Π½ΠΈ мСстополоТСниС, Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΡ€Π°ΠΉ Π½Π° ΠΏΡŠΡ‚ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ, ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° ΠΏΠ»Π°Ρ‰Π°Π½Π΅, Π±Ρ€ΠΎΠΉ ΠΏΡŠΡ‚Π½ΠΈΡ†ΠΈ ΠΈ Π΄ΠΎΡ€ΠΈ Π²ΠΈΠ΄ такси β€” Π·Π΅Π»Π΅Π½, ΠΆΡŠΠ»Ρ‚ ΠΈ Uber.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

ΠŸΡŠΡ€Π²ΠΈΡ Π·Π°ΠΏΠΈΡ‚ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ… доста прост β€” ΠΏΠΎΠΏΠΈΡ‚Π°Ρ… къдС Π½Π°ΠΉ-чСсто сС ΠΏΠΎΡ€ΡŠΡ‡Π²Π°Ρ‚ таксита. Π—Π° Ρ‚ΠΎΠ²Π° трябва Π΄Π° Π²Π·Π΅ΠΌΠ° мСстополоТСниСто, ΠΎΡ‚ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½Π° ΠΏΠΎΡ€ΡŠΡ‡ΠΊΠ°Ρ‚Π°, Π΄Π° направя GROUP BY ΠΏΠΎ Π½Π΅Π³ΠΎ ΠΈ Π΄Π° прСброя функцията count. Π•Ρ‚ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ ΠΈΠ·Π΄Π°Π²Π° ClickHouse.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

Π—Π° Π΄Π° измСря скоростта Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ, ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ… Ρ‚Ρ€ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈ Π΄Π°Π½Π½ΠΈ, Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ… Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½ΠΈ Π·Π° Π½Π°ΡˆΠ°Ρ‚Π° стартова локация β€” String, LowCardinality ΠΈ Enum. LowCardinality ΠΈ Enum сС ΠΎΠΊΠ°Π·Π°Ρ…Π° ΠΏΠ΅Ρ‚ ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΈ ΠΎΡ‚ String. Enum Π΅ ΠΏΠΎ-Π±ΡŠΡ€Π·, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ с числа. LowCardinality β€” Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° оптимизация Π·Π° GROUP BY.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

НСка Π΄Π° услоТним Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ β€” Π΄Π° ΠΏΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ къдС сС Π½Π°ΠΌΠΈΡ€Π° Π½Π°ΠΉ-популярният ΠΏΠ°Ρ€ΠΊ Π² Ню Π™ΠΎΡ€ΠΊ. ΠžΡ‚Π½ΠΎΠ²ΠΎ Ρ‰Π΅ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΠΌ Ρ‚ΠΎΠ²Π° ΠΏΠΎ мСстата, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π½Π°ΠΉ-чСсто сС ΠΏΠΎΡ€ΡŠΡ‡Π²Π°Ρ‚ таксита, Π½ΠΎ Ρ‰Π΅ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°ΠΌΠ΅ само Ρ‚Π΅Π·ΠΈ Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΈΠΌΠ° Π΄ΡƒΠΌΠ°Ρ‚Π° β€žΠΏΠ°Ρ€ΠΊβ€œ. ОсвСн Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ функцията like.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

ПоглСТдамС Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ β€” Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ Enum Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π° Π΄Π° забавя. ОсвСн Ρ‚ΠΎΠ²Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΎΡ‰Π΅ ΠΏΠΎ-Π±Π°Π²Π½ΠΎ ΠΎΡ‚ стандартния Ρ‚ΠΈΠΏ Π΄Π°Π½Π½ΠΈ String. Π’ΠΎΠ²Π° става, Π·Π°Ρ‰ΠΎΡ‚ΠΎ функцията like ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π½Π΅ Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° Π·Π° Enum. Налага сС Π΄Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°ΠΌΠ΅ Π½Π°ΡˆΠΈΡ‚Π΅ Π½ΠΈΠ·ΠΎΠ²Π΅ ΠΎΡ‚ Enum Π² ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ Π½ΠΈΠ·ΠΎΠ²Π΅ β€” ΠΏΡ€Π°Π²ΠΈΠΌ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚Π°. LowCardinality(String) ΡΡŠΡ‰ΠΎ Π½Π΅ Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Π½ΠΎ Ρ‚Π°ΠΌ like Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²ΡŠΡ€Ρ…Ρƒ Ρ€Π΅Ρ‡Π½ΠΈΠΊ, ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ сС ускорява Π² сравнСниС със String.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Enum ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° ΠΏΠΎ-Π³Π»ΠΎΠ±Π°Π»Π΅Π½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Ако искамС Π΄Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅, трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚ΠΎΠ²Π° Π½Π° всяко място Π² ΠΊΠΎΠ΄Π°. Π”Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Π΅ смС написали Π½ΠΎΠ²Π° функция β€” Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ Π΅ Π΄Π° измислим оптимизация Π·Π° Enum. А ΠΏΡ€ΠΈ LowCardinality всичко Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

Π”Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ послСдния Π·Π°ΠΏΠΈΡ‚, ΠΏΠΎ-изкуствСн. ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ‰Π΅ изчислим Ρ…Π΅Ρˆ-функция Π·Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ мСстополоТСниС. Π₯Сш-функцията Π΅ доста Π±Π°Π²Π΅Π½ Π·Π°ΠΏΠΈΡ‚, ΠΎΡ‚Π½Π΅ΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅, Π·Π°Ρ‚ΠΎΠ²Π° всичко Ρ‰Π΅ сС Π·Π°Π±Π°Π²ΠΈ Ρ‚Ρ€ΠΈ ΠΏΡŠΡ‚ΠΈ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

LowCardinality всС ΠΎΡ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ няма Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅. Π’ΠΎΠ²Π° сС случва, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½Π°ΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ работят само с Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ°. Π₯Сш-функцията ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ β€” тя ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π΄Π°Π½Π½ΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄Π° Π²ΡŠΡ€Π½Π΅ LowCardinality.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Π½ΠΈΠ·ΠΈ Π² ClickHouse. Π”ΠΎΠΊΠ»Π°Π΄ Π½Π° ЯндСкс

ΠΠ°ΡˆΠΈΡΡ‚ Π³Π»ΠΎΠ±Π°Π»Π΅Π½ ΠΏΠ»Π°Π½ Π΅ Π΄Π° постигнСм скорост Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°, Π½Π΅ ΠΏΠΎ-ниска ΠΎΡ‚ Ρ‚Π°Π·ΠΈ Π½Π° String ΠΏΡ€ΠΈ всякакви обстоятСлства, ΠΈ Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΠΌ ускорСниСто. И ΠΌΠΎΠΆΠ΅ Π±ΠΈ някога Ρ‰Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΠΌ String с LowCardinality, Π²ΠΈΠ΅ Ρ‰Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ClickHouse ΠΈ всичко Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ.

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster