ما تحتاج إلى معرفته عن هندسة ClickHouse لاستخدامه بشكل فعال. أليكسي زاتيلين (2018)

ClickHouse عبارة عن قاعدة بيانات تحليلية مفتوحة المصدر عالية الأداء تم تطويرها بواسطة Yandex. في البداية ، تم إنشاء ClickHouse لمهام Yandex.Metrica ، ولكنه وجد تدريجيًا العديد من الاستخدامات داخل Yandex وفي الشركات الأخرى. سأخبرك كيف يتم ترتيب ClickHouse داخليًا ، مع التركيز على عواقب البنية المختارة من وجهة نظر مطور التطبيقات.



سيتم تغطية المواضيع التالية:



  • كيف يقوم ClickHouse بتخزين البيانات على القرص وإجراء استعلام ، لماذا تسمح لك طريقة التخزين هذه بتسريع الاستعلامات التحليلية بعدة أوامر من الحجم ، ولكنها غير مناسبة بشكل جيد لتحميلات OLTP وقيمة المفتاح.
  • كيف يعمل النسخ والتجزئة ، وكيفية تحقيق التحجيم الخطي ، وماذا تفعل مع الاتساق النهائي.
  • كيفية تشخيص المشكلات في مجموعة إنتاج ClickHouse.




فيديو:





فكرة التقرير بسيطة للغاية: إذا كنت تستخدم أداة ما أو ستستخدمها ، فمن المستحسن على الأقل بشكل عام تخيل ما يجري في الداخل لتجنب بعض القرارات الخاطئة واتخاذ القرار الصحيح. سأحاول أن أنقل هذا الفهم حول ClickHouse اليوم.





لقد كنت أعمل على ClickHouse مؤخرًا. قبل ذلك ، عملت في Yandex.Maps لعدة سنوات. كان مطورًا تطبيقيًا. لقد عملت كثيرًا مع قواعد البيانات ، مع Postgres ، لذلك لم أكن مصابًا بعد بفيروس ClickHouse ، ما زلت أتذكر معنى أن أكون مطورًا تطبيقيًا. لكن ، من حيث المبدأ ، أفهم بالفعل كل شيء جيدًا.





. 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