Π’ΡΠΈ Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ ΠΠΈΠΊΡΠΎΡ Π’Π°ΡΠ½Π°Π²ΡΠΊΠΈΠΉ ΠΈ ΠΠ»Π΅ΠΊΡΠ΅ΠΉ ΠΠΈΠ»ΠΎΠ²ΠΈΠ΄ΠΎΠ² ΠΈΠ· Π―Π½Π΄Π΅ΠΊΡΠ° Π½Π° ΡΡΠ΅Π½Π΅ HighLoad++
Π’ΡΠΈ Π³ΠΎΠ΄Π° ΡΠΏΡΡΡΡ 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
ΠΠ΅ ΡΠΎΡΠΌΠΎΠ·ΠΈΡ! ΠΡΠΎ Π³Π»Π°Π²Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π°. ClickHouse β ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠ°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π²:
Π‘Π»ΡΡΠ°ΠΉΠ½ΡΠ΅ ΡΠΈΡΠ°ΡΡ Π»ΡΠ΄Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»Π³ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ 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 Π² ΡΠ°ΠΌΡΡ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΡ Π°Π½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ !
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ 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 Π±Π°Π· Π΄Π°Π½Π½ΡΡ
.
Π time-series ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ·ΠΊΠ°Ρ ΡΠ°Π±Π»ΠΈΡΠ° β Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ
ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ. Π‘ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½ΡΡ
, β ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ, β ΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌΠΈ Π²ΡΡΠ°Π²ΠΊΠ°ΠΌΠΈ (real-time ΡΡΡΠΈΠΌΠΈΠ½Π³ΠΎΠΌ). ΠΠΎΡΡΠΎΠΌΡ Π½ΡΠΆΠ΅Π½ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π²ΡΡΠ°Π²ΠΊΠΈ, Π° ΡΠ°ΠΌΠΈ Π·Π°ΠΏΡΠΎΡΡ β ΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΎΠΉ.
Log Management. Π‘Π±ΠΎΡ Π»ΠΎΠ³ΠΎΠ² Π² ΠΠ β ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠ»ΠΎΡ ΠΎ, Π½ΠΎ Π² ClickHouse ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ClickHouse ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠ»ΠΎΡΠΊΠ°Ρ ΡΠΈΡΠΎΠΊΠ°Ρ ΡΠ°Π±Π»ΠΈΡΠ°, Π³Π΄Π΅ ΠΌΡ Ρ ΡΠ°Π½ΠΈΠΌ Π»ΠΎΠ³ΠΈ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π²ΠΈΠ΄Π΅ JSON), Π»ΠΈΠ±ΠΎ Π½Π°ΡΠ΅Π·Π°Π΅ΠΌ Π½Π° ΡΠ°ΡΡΠΈ. ΠΠ°Π½Π½ΡΠ΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π±Π°ΡΡΠ°ΠΌΠΈ (ΡΠ°ΠΉΠ»Π°ΠΌΠΈ), Π° ΠΈΡΠ΅ΠΌ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎΠ»Ρ.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΠ. ClickHouse ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π²ΡΡ ΠΈ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΎ, ΡΡΠΎ ΠΎΠ±Π³ΠΎΠ½ΡΠ΅Ρ ΠΈΡ ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ time-series ΡΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΈ ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Β«Π³ΠΎΡΠΎΠ²ΠΈΡΡΒ» ClickHouse ΠΏΠΎΠ΄ ΡΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ.
Time-Series
Π Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ClickHouse ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ. Time-series β ΡΡΠΎ Π½Π°Π±ΠΎΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΡΡΠΎΡΠ° ΡΠ΅ΡΠ΄ΡΠ΅Π±ΠΈΠ΅Π½ΠΈΠΉ Π·Π° Π΄Π΅Π½Ρ ΠΈΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΡΡ, ΡΡΠΎ Π΄Π°Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠΈ Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ-ΡΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ β ΡΡΠΎ time-series:
ΠΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΡΠΎΠ±ΡΡΠΈΠΉ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡ ΠΈΠ· ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π²Π΅Π±Π°, Π½ΠΎ ΠΈ ΡΠ΅Π°Π»ΡΠ½ΡΡ
ΡΡΡΡΠΎΠΉΡΡΠ²: Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ, ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ, IoT, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ² ΠΈΠ»ΠΈ Π±Π΅ΡΠΏΠΈΠ»ΠΎΡΠ½ΡΡ
ΡΠ°ΠΊΡΠΈ, Π² Π±Π°Π³Π°ΠΆΠ½ΠΈΠΊ ΠΊΠΎΡΠΎΡΡΡ
Π―Π½Π΄Π΅ΠΊΡ ΡΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ ΠΊΠ»Π°Π΄Π΅Ρ ClickHouse-ΡΠ΅ΡΠ²Π΅Ρ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Ρ ΡΡΠ΄ΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ Π΄Π°ΡΡΠΈΠΊΠΈ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²ΠΎΠ·Π° ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΎΡΠ½ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ. ΠΠ½ΠΆΠ΅Π½Π΅ΡΡ ΠΈΡ ΠΈΠ·ΡΡΠ°ΡΡ, ΡΡΡΠΎΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΠ½ΡΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ΄Π½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²ΠΎΠ· Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°ΡΡ Π½ΠΈ ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΡΠ±ΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ β ΡΡΠΎ ΠΏΠΎΡΠ΅ΡΡ Π΄Π΅Π½Π΅Π³, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΆΠ½ΠΎ ΡΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΡΠΎΡΠ½ΠΊΠΈ Π±ΡΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ.
Π‘Π΅ΠΉΡΠ°Ρ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ ΡΠΎΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΠ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΡΡΡ time-series. ΠΠ° ΡΠ°ΠΉΡΠ΅ DB-Engines ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ°Π½ΠΆΠΈΡΡΡΡΡΡ ΡΠ°Π·Π½ΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΈ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠΎ ΡΠΈΠΏΠ°ΠΌ:
Π‘Π°ΠΌΡΠΉ Π±ΡΡΡΡΠΎΡΠ°ΡΡΡΡΠΈΠΉ ΡΠΈΠΏ β 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 β ΠΊΠΎΠ»ΠΎΠ½ΠΎΡΠ½Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ , Π° ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ Ρ ΡΠ°Π½ΠΈΡΡ Π²ΡΠ΅ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, ΡΠΎ ΠΎΠ½Π° ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΡΡΡΠΎΠΊΠΎΠ²ΡΡ, ΠΈ ΠΌΡ ΠΏΠ»Π°ΡΠΈΠΌ Π·Π° Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΡ. ΠΠ° Π»ΡΠ±ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π²Π΅ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π² ΠΏΠ°ΠΌΡΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΉΡΠΈ Π² Π½Π΅ΠΌ Π½ΡΠΆΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ β Π° Π΅ΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°ΡΡΠ΅Ρ, ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡ Π΄Π΅Π³ΡΠ°Π΄ΠΈΡΡΠ΅Ρ.
Π ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ β ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ. ΠΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠ»ΠΎΡ ΠΎ ΡΠΆΠΈΠΌΠ°ΡΡΡΡ, ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ, Π΄Π° Π΅ΡΡ ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡΠΎΡΡ ΠΈΠ΄ΡΡ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΌΠ΅ΡΡΠΈΠΊΠ°ΠΌ, ΡΠΎ 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 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠ΄Π΅ΠΊΠΈ:
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΡ:
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 ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΈΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ Π΄Π°Π½Π½ΡΡ Π½Π° Π΄ΠΈΡΠΊΠ΅ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ:
ΠΠ΄Π΅ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡΠ° Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π½ΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°Π·Π½ΡΡ
ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΈΠΉ:
- Π² GZIPβΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Π½Π° Π΄ΠΈΡΠΊΠ΅;
- Π² ClickHouse Π±Π΅Π· ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ², Π½ΠΎ Ρ ZSTD-ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΈΠ΅ΠΉ;
- Π² ClickHouse c ΠΊΠΎΠ΄Π΅ΠΊΠ°ΠΌΠΈ ΠΈ ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΈΠ΅ΠΉ LZ4 ΠΈ ZSTD.
ΠΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠ°Π±Π»ΠΈΡΡ Ρ ΠΊΠΎΠ΄Π΅ΠΊΠ°ΠΌΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΠΌΠ΅ΡΡΠ°.
Π Π°Π·ΠΌΠ΅Ρ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
ΠΠ΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ
ΠΠΎ Π²ΡΠ΅Ρ
ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
Π²ΡΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Float64. ΠΠΎ Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ Π²ΡΠ±ΡΠ°Π»ΠΈ Float32, ΡΠΎ ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π΄Π°ΠΆΠ΅ Π»ΡΡΡΠ΅. ΠΡΠΎ Ρ
ΠΎΡΠΎΡΠΎ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΠ΅Π±ΡΡΠ° ΠΈΠ· ΠΠ΅ΡΠΊΠΎΠ½Ρ Π² ΡΡΠ°ΡΡΠ΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Π²ΡΡΠ΅. ΠΠ°ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΉ ΡΠΈΠΏ, ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΠΉ ΠΏΠΎΠ΄ Π·Π°Π΄Π°ΡΡ: Π΄Π°ΠΆΠ΅ Π² ΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° Π΄ΠΈΡΠΊΠ΅, ΡΠ΅ΠΌ Π΄Π»Ρ ΡΠΊΠΎΡΠΎΡΡΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ². ClickHouse ΠΎΡΠ΅Π½Ρ ΠΊ ΡΡΠΎΠΌΡ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½.
ΠΡΠ»ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ int32 Π²ΠΌΠ΅ΡΡΠΎ int64, ΡΠΎ ΠΎΠΆΠΈΠ΄Π°ΠΉΡΠ΅ ΠΏΠΎΡΡΠΈ Π΄Π²ΡΠΊΡΠ°ΡΠ½ΠΎΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ°Π½Π½ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈ Π²ΡΡ Β«Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ°Β» ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΡΡΡΡΠ΅Π΅. ClickHouse Π²Π½ΡΡΡΠΈ ΡΠ΅Π±Ρ β ΠΎΡΠ΅Π½Ρ ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΎΠ½ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ³ΡΠ΅Π³Π°ΡΠΈΡ ΠΈ Materialized Views
ΠΠ³ΡΠ΅Π³Π°ΡΠΈΡ ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π°Π³ΡΠ΅Π³Π°ΡΡ Π½Π° ΡΠ°Π·Π½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ ΠΆΠΈΠ·Π½ΠΈ:
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π²Π°Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π΅ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΈ Π½Π° Π½ΠΈΡ
ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π²Π΅ΡΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΠ΅Π· ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ 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 ΡΠ΅ΠΉΡΠ°Ρ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ:
ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ (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 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡ ΡΠΌΠ΅ΡΡΠΈΡΡ ΠΈ ΡΠΊΠ»Π΅ΠΈΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΎΠ΄Π½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΡΡΠ΄Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π΄ΡΡΠ³ΠΎΠΌ, ΠΈ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΡΠ΅ΠΊ:
ΠΠ½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
Π ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ 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 ΠΏΡΠΈΠ½ΡΡΠΎ ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊ:
Π― ΠΎΠ±Π΅ΡΠ°Π» Π»ΡΠΌΠ±Π΄Ρ β Π²ΠΎΡ ΠΎΠ½ΠΈ!
ΠΡΠΎ Π°Π½Π°Π»ΠΎΠ³ Π°Π½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ SQL-2003: ΠΎΠ½ ΡΡΠΈΡΠ°Π΅Ρ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ timestamp, duration, ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ β Π²ΡΡ, ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΠΌΡ ΡΡΠΈΡΠ°Π΅ΠΌ Π°Π½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ. Π ClickHouse ΠΌΡ ΠΈΡ ΡΡΠΈΡΠ°Π΅ΠΌ ΡΠ΅ΡΠ΅Π· ΠΌΠ°ΡΡΠΈΠ²Ρ: ΡΠ½Π°ΡΠ°Π»Π° ΡΠ²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΌΠ°ΡΡΠΈΠ², ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π½Π° ΠΌΠ°ΡΡΠΈΠ²Π΅ Π΄Π΅Π»Π°Π΅ΠΌ Π²ΡΡ, ΡΡΠΎ Ρ ΠΎΡΠΈΠΌ, Π° ΠΏΠΎΡΠΎΠΌ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ. ΠΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ, ΡΡΠ΅Π±ΡΠ΅Ρ Π»ΡΠ±Π²ΠΈ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, Π½ΠΎ ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π³ΠΈΠ±ΠΊΠΎ.
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ Π² ClickHouse ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΡΠΈΠΉ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ? Π’ΠΈΠΏΠΈΡΠ½Π°Ρ Π·Π°Π΄Π°ΡΠ° Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΎΠ΄Π½ΠΈΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠΌ. Π ClickHouse Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ:
ΠΠΎΠΎΠ±ΡΠ΅, Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΡΠ΅Π»Π΅ΠΉ Π² 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 Π±Π°Π· Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Β«ΠΏΠΎΠΆΠΈΡΠ°ΡΒ» ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ΅Π±Ρ.
ΠΡΠΎ ΡΠΎΠΆΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡ β ΡΠ°Π· ΠΌΡ Ρ
ΠΎΡΠΎΡΠΎ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ°Π±ΠΎΡΡ Π΄Π»Ρ time-series, ΠΏΠΎΡΠ΅ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°ΠΌΠΈ Π² ΡΠ΅Π±Π΅ Ρ
ΡΠ°Π½ΠΈΡΡ Π²ΡΡ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ? ΠΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ΅Π½ Prometheus, ΠΌΡ Ρ
ΡΠ°Π½ΠΈΠΌ Π²ΡΡ Π² ΡΠ΅Π±Π΅. ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»ΠΈ Grafana ΠΈ ΡΠ°ΠΌΠΈ ΡΠ΅Π±Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ ClickHouse ΡΠΏΠ°Π΄Π΅Ρ, ΡΠΎ ΠΌΡ Π½Π΅ ΡΠ²ΠΈΠ΄ΠΈΠΌ, β ΠΏΠΎΡΠ΅ΠΌΡ, β ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°ΠΊ Π½Π΅ Π΄Π΅Π»Π°ΡΡ.
ΠΠΎΠ»ΡΡΠΎΠΉ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ClickHouse
Π§ΡΠΎ Π»ΡΡΡΠ΅ β ΠΎΠ΄ΠΈΠ½ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ClickHouse? Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ DWH β ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠ»Π°ΡΡΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠ΄Π΅Π»ΡΡΡΡΡ ΡΡ Π΅ΠΌΡ ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡ ΠΏΡΠΈΡΠ»ΠΈ ΠΊ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ ΠΠ β Π΄Π°ΠΉΡΠ΅ Π½Π°ΠΌ ΡΡ Π΅ΠΌΡ, ΠΈ Π½Π°ΠΌ Π΅Ρ Π²ΡΠ΄Π°Π»ΠΈ:
Π ClickHouse ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ. ΠΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ClickHouse:
ΠΠ°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ΅Π½ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΌΠΎΠ½ΡΡΡΡΠΎΠ·Π½ΡΠΉ DWH ΠΈ Π½Π΅ΡΠ³ΠΎΠ²ΠΎΡΡΠΈΠ²ΡΠ΅ Π°Π΄ΠΌΠΈΠ½Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΡΠ΄Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ClickHouse, ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ClickHouse ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
ΠΠΎ Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ClickHouse, ΠΈ Π½Π°Π΄ΠΎ ΡΠ°ΡΡΠΎ Π΅Π³ΠΎ ΡΡΠ°Π²ΠΈΡΡ, ΡΠΎ Ρ
ΠΎΡΠ΅ΡΡΡ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Kubernetes ΠΈ clickhouse-ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ. Π Kubernetes ClickHouse ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Β«ΠΏΠΎ ΡΠ΅Π»ΡΠΊΡΒ»: Ρ ΠΌΠΎΠ³Ρ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ, Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ ΠΈ Π±Π°Π·Π° Π³ΠΎΡΠΎΠ²Π°. ΠΠΎΠΆΠ½ΠΎ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡ
Π΅ΠΌΡ, Π½Π°ΡΠ°ΡΡ ΡΡΠ΄Π° Π³ΡΡΠ·ΠΈΡΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ, ΠΈ ΡΠ΅ΡΠ΅Π· 5 ΠΌΠΈΠ½ΡΡ Ρ ΠΌΠ΅Π½Ρ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ² Π΄Π°ΡΠ±ΠΎΡΠ΄ Grafana. ΠΠ°ΡΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ!
Π§ΡΠΎ Π² ΠΈΡΠΎΠ³Π΅?
ΠΡΠ°ΠΊ, ClickHouse β ΡΡΠΎ:
- ΠΡΡΡΡΠΎ. ΠΡΠΎ Π²ΡΠ΅ΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ.
- ΠΡΠΎΡΡΠΎ. ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠ½ΠΎ, Π½ΠΎ Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΡΡΠΆΠ΅Π»ΠΎ Π² ΡΡΠ΅Π½ΠΈΠΈ, Π»Π΅Π³ΠΊΠΎ Π² Π±ΠΎΡ. ΠΡΠ»ΠΈ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ClickHouse ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π΄Π°Π»ΡΡΠ΅ Π²ΡΠ΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ.
- Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎ. ΠΠ½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π²: DWH, Time Series, Log Storage. ΠΠΎ ΡΡΠΎ Π½Π΅ OLTP Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΠΏΡΡΠ°ΠΉΡΠ΅ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΌ ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ Π²ΡΡΠ°Π²ΠΊΠΈ ΠΈ ΡΡΠ΅Π½ΠΈΡ.
- ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ. ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅, ΡΠΎΡ, ΠΊΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ClickHouse, ΠΏΠ΅ΡΠ΅ΠΆΠΈΠ» ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΠΌΠΈΠ½ΡΡ Π² Ρ ΠΎΡΠΎΡΠ΅ΠΌ ΠΈ ΠΏΠ»ΠΎΡ ΠΎΠΌ ΡΠΌΡΡΠ»Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΡΠ΅Π» Π½ΠΎΠ²ΡΠΉ ΡΠ΅Π»ΠΈΠ·, Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π²Ρ Π±ΠΈΠ»ΠΈΡΡ Π½Π°Π΄ Π·Π°Π΄Π°ΡΠ΅ΠΉ Π΄Π²Π° Π΄Π½Ρ, Π½ΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΠΎΠΏΡΠΎΡΠ° Π² Π’Π΅Π»Π΅Π³ΡΠ°ΠΌ-ΡΠ°ΡΠ΅ Π·Π°Π΄Π°ΡΠ° ΡΠ΅ΡΠΈΠ»Π°ΡΡ Π·Π° Π΄Π²Π΅ ΠΌΠΈΠ½ΡΡΡ. ΠΠ»ΠΈ ΠΊΠ°ΠΊ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π΅ ΠΠ΅ΡΠΈ ΠΠΈΠ»ΠΎΠ²ΠΈΠ΄ΠΎΠ²Π° ΡΠΊΡΠΈΠ½ΡΠΎΡ ΠΈΠ· ClickHouse ΡΠ»ΠΎΠΌΠ°Π» ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ HighLoad++. Π’Π°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° Π²Π΅ΡΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΈ Π΄Π΅Π»Π°ΡΡ Π½Π°ΡΡ ΠΆΠΈΠ·Π½Ρ Ρ ClickHouse ΡΡΠΊΠΎΠΉ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΉ!
ΠΡΠ΅Π·Π΅ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ
ΠΠΎΠ»Π³ΠΎΠΆΠ΄Π°Π½Π½Π°Ρ Π²ΡΡΡΠ΅ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ Π½Π°
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 ,Vkontakte ΠΈ
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com