Ce que vous devez savoir sur l'architecture ClickHouse pour l'utiliser efficacement. Alexey Zatelepin (2018)

ClickHouse est une base de données analytique open source haute performance développée par Yandex. Initialement, ClickHouse a été créé pour les tùches Yandex.Metrica , mais a progressivement trouvé de nombreuses utilisations à la fois au sein de Yandex et dans d'autres entreprises. Je vais vous dire comment ClickHouse est organisé en interne, en mettant l'accent sur les conséquences de l'architecture choisie du point de vue d'un développeur d'applications.



Les sujets suivants seront abordés:



  • Comment ClickHouse stocke les donnĂ©es sur le disque et exĂ©cute une requĂȘte, pourquoi cette mĂ©thode de stockage vous permet d'accĂ©lĂ©rer les requĂȘtes analytiques de plusieurs ordres de grandeur, mais est mal adaptĂ©e aux charges OLTP et clĂ©-valeur.
  • Comment fonctionnent la rĂ©plication et le partitionnement, comment rĂ©aliser une mise Ă  l'Ă©chelle linĂ©aire et que faire avec une cohĂ©rence Ă©ventuelle.
  • Comment diagnostiquer les problĂšmes sur un cluster de production ClickHouse.




Vidéo:





L'idée du rapport est assez simple: si vous utilisez un outil ou allez l'utiliser, alors il est conseillé d'imaginer au moins en termes généraux ce qui se passe à l'intérieur afin d'éviter certaines mauvaises décisions et de prendre la bonne décision. Je vais essayer de transmettre cette compréhension sur ClickHouse aujourd'hui.





J'ai rĂ©cemment travaillĂ© sur ClickHouse. Avant cela, j'ai travaillĂ© chez Yandex.Maps pendant plusieurs annĂ©es. C'Ă©tait un dĂ©veloppeur appliquĂ©. J'y ai beaucoup travaillĂ© avec des bases de donnĂ©es, avec Postgres, donc je ne suis pas encore trĂšs infectĂ© par le virus ClickHouse, je me souviens encore de ce que signifie ĂȘtre un dĂ©veloppeur appliquĂ©. Mais, en principe, je comprends dĂ©jĂ  assez bien tout.





. ClickHouse – , , . .



. . - . . – , ClickHouse .



  • - .
  • .
  • , .
  • DNS-.


? - , . . - , , - .





, , . . . , , .



ClickHouse :



  • . ? , , . ? -, . , , . , , ClickHouse, , , . . . . .
  • SQL. , . , SQL , . . . SQL . . . SQL , - , . , SQL , .
  • . . . , , . , , , . . , . . , .
  • , , ClickHouse. , . , ClickHouse, . . - json blob, , . , .




. , ., -. , . CounterID. hits, . Referer, -. . . , 100 .



. Referer, count, count. 10 .





. ?



-, :



  • , , . . . . . : ConterID, Date, Referrer. , 100. , , .
  • , , , . , , . , , . , .
  • . .




, , . ClickHouse :



  • , . ? – , - . ? ClickHouse – . , – . overhead , . SIMD . , , , , - .
  • . .




, , , . -, , . . , . . - . , , , – CounterID, Date.



, ? CounterID, Date , , . , . .



ClickHouse . -, . . , . , , , . .





, , , , . . , . , 8 192 . . , , .



, , ? , . 1234 31 . 23 . , , , . , 1235. , , . , – . - , . , 8 000 .



, , . , ClickHouse . , « », , .



? . , . . . .



? Key-Value . - , , - , . , , .



, , 100 , , , , , . , , , - .





, , , . , , ClickHouse, . . . insert , .



, , . . - . , . . . . - .



? ClickHouse . MergeTree. , LSM . . . . , . .





, . – , . ., , , . – . . . .





ClickHouse? . . ? insert , . . - .



, , - ClickHouse, , . , , 1 000 , , .





. - . . . merge.



ClickHouse . , . , M N. , , N+1.





. N+1. .



? . , , - , , , , .



ClickHouse? ( – ) 200 , . ClickHouse . 300 , , . , ClickHouse, . ClickHouse Graphite. . . , . , - . .





. ClickHouse, . .



  • , . .
  • , , .
  • ClickHouse , , . .


ClickHouse? .





? – . - . , . local_table.



distributed ? view , . . . , . , , – . .



? select from distributed_table. distributed_table local_table. .





. , . . . - , . distributed . Distributed .





benchmark. . - . . .



. . . . , . 140 , 140 , . . . , 140- , , . .





?



, , , distributed , , , , . , , - . , .



, , distributed , .



-, , . . distributed , - .





. . , . . .



? . . , joins , , joins , , .





ClickHouse. , , . , . - , . , , . . . , .



ClickHouse - , — ReplicatedMergeTree. , .





. . , . . . . . .



:



  • INSERT —
  • FETCH —
  • MERGE —


? . , 1 – , . ZooKeeper. . . , , ZooKeeper.



- . , - , , fetch.



merge, . . . Merge , . . , , , . . . 2 – . , , ZooKeeper, merge.



checksums. - , , . . -. , . . , , , .





CAP-, . . - , , , : , - .



ClickHouse . , , , , , , . – : , . . , . , , .



. ClickHouse? -. ZK 3- -, , , 2-. , , .



: « - ?». - ZooKeeper. , - - . , . , .



? ? , , quorum ZK, . . , , . .





: distributed_table, replicated_table . . . ClickHouse . . . N . distributed , – , . , . . - , .



consistency. - . distributed , , . .





ClickHouse?



  • column-oriented , .
  • – SQL .
  • OLTP, . Key-Value, . , . Key-Value blob, .
  • , distributed .
  • , replicate .
  • open source community.






! . ! . , ClickHouse . - - , ?



? , , , retry. retry, , , ClickHouse , retry. , , . ClickHouse . ?





. ZK checksums . , 100 – . - , – , . , ClickHouse .



. . 10 000 , , ?



. .



. . , , 10 000. , , , .



, .



. . , ?



, checksum. checksum , .



. . distributed replicated . , . - , - , , - ?



, . . , . -, max_parallel_replicas. ? , . , , . ClickHouse – . , . , max_parallel_replicas, , . .



?



, . , .



, !



! . , , . . 8 000 -. . - ? - ?



, . , , , , , ClickHouse .



? -, , - . , . . . . , ClickHouse, Kafka. Kafka lock, Kafka ClickHouse. .



, . . . . distributed , . , , distributed . , ?



Distributed . , , . , local_tables, , , , .



. , . - , , , , ? .



, . , , . .



. . , ?



, distributed . 500 , , . 500 . . , . 100 , . . .



!



? - , , , ?



, , , . – . . «alter table drop partition» , .



, - , . . , , . . . , . ClickHouse , CollapsingMergeTree. , . - , : – , – . - . - .



-. , , ClickHouse : « ?», .



. , , , Kafka ? . . -, .



- replicated . ? distributed .



replicated ? , , , . - ? Slave , slave?



Kafka ?



Kafka . Kafka .



Kafka ZK.



. , , Kafka . , ClickHouse .



ClickHouse , ZK .



, , quorum ZK, . quorum .



replicated , ? , . distributed , - . , . – . replicated .



. ? instants ?



, ClickHouse , max_memory_usage. , . ? . . . ClickHouse - . , ? o_direct - . ClickHouse . - ( ) . , , . , .



ClickHouse ? , . . - , , count, .



? group by . , referrers - referrers, urls. . , , , group by , .



?



.



- , ? , 32 GB ? . ., .



, . 128 GB.



instance 128 , ?



, , . , , . , . , , .



, ! ?



. , . , , . , . , . .



?



, 70 .



!



! . , ClickHouse http- . - roadmap, ?



. http, http- , JDBC- . , - . . - , Go , , , . C++ , ClickHouse, . , , . . . . , . .



! , . , Impala HDFS , . , , HDFS?



. ClickHouse . merge , . , , HDFS . , HDFS , .



. . ?



, , . . - , -, .



– HDFS *opened*, .



. . HDFS ?



. . HDFS , , .



- .



HDFS . , , .



, .



!




All Articles