O que vocĂȘ precisa saber sobre a arquitetura ClickHouse para usĂĄ-la efetivamente. Alexey Zatelepin (2018)

ClickHouse Ă© um banco de dados analĂ­tico de cĂłdigo aberto de alto desempenho desenvolvido pela Yandex. Inicialmente, o ClickHouse foi criado para tarefas Yandex.Metrica , mas gradualmente encontrou muitos usos no Yandex e em outras empresas. Vou lhe dizer como o ClickHouse Ă© organizado internamente, com ĂȘnfase nas conseqĂŒĂȘncias da arquitetura escolhida do ponto de vista de um desenvolvedor de aplicativos.



Os seguintes tĂłpicos serĂŁo abordados:



  • Como o ClickHouse armazena dados no disco e realiza uma consulta, por que esse mĂ©todo de armazenamento permite acelerar as consultas analĂ­ticas por vĂĄrias ordens de magnitude, mas Ă© pouco adequado para cargas OLTP e valores-chave.
  • Como a replicação e o sharding funcionam, como obter escala linear e o que fazer com a consistĂȘncia eventual.
  • Como diagnosticar problemas em um cluster de produção ClickHouse.




VĂ­deo:





A ideia do relatĂłrio Ă© bastante simples: se vocĂȘ usar alguma ferramenta ou for usĂĄ-la, Ă© aconselhĂĄvel, pelo menos em termos gerais, imaginar o que estĂĄ acontecendo lĂĄ dentro, a fim de evitar algumas decisĂ”es erradas e tomar a decisĂŁo certa. Vou tentar transmitir esse entendimento sobre o ClickHouse hoje.





Eu tenho trabalhado no ClickHouse recentemente. Antes disso, trabalhei na Yandex.Maps por vĂĄrios anos. Ele era um desenvolvedor aplicado. Trabalhei muito lĂĄ com bancos de dados, com o Postgres, por isso ainda nĂŁo estou muito infectado com o vĂ­rus ClickHouse, ainda me lembro do que significa ser um desenvolvedor aplicado. Mas, em princĂ­pio, eu jĂĄ entendo tudo muito bem.





. 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