Sèvi ak Clickhouse kòm yon Ranplasman pou ELK, Big Query ak TimescaleDB

Clickhouse se yon sous louvri sistèm jesyon baz done kolon pou pwosesis rechèch analyse sou entènèt (OLAP), ki te kreye pa Yandex. Yandex, CloudFlare, VK.com, Badoo ak lòt sèvis atravè mond lan itilize li pou konsève yon gwo kantite done (mete dè milye de ranje pou chak segonn oswa petabyte done ki estoke sou disk).

Nan yon DBMS regilye, "chaj", egzanp yo se MySQL, Postgres, MS SQL Server, done yo estoke nan lòd sa a:

Sèvi ak Clickhouse kòm yon Ranplasman pou ELK, Big Query ak TimescaleDB

Nan ka sa a, valè ki gen rapò ak yon sèl ranje fizikman estoke tou pre. Nan DBMS kolòn, valè ki soti nan kolòn diferan yo estoke separeman, epi done ki soti nan yon kolòn yo estoke ansanm:

Sèvi ak Clickhouse kòm yon Ranplasman pou ELK, Big Query ak TimescaleDB

Men kèk egzanp sou DBMS kolon yo se Vertica, Paraccel (Actian Matrix, Amazon Redshift), Sybase IQ, Exasol, Infobright, InfiniDB, MonetDB (VectorWise, Actian Vector), LucidDB, SAP HANA, Google Dremel, Google PowerDrill, Druid, kdb +.

Konpayi transitaire lapòs Qwintry te kòmanse sèvi ak Clickhouse nan 2018 pou rapòte epi li te trè enpresyone ak senplisite li yo, évolutivité, sipò SQL ak vitès. Vitès DBMS sa a te fwonte sou majik.

Senplisite

Clickhouse enstale sou Ubuntu ak yon sèl lòd. Si ou konnen SQL, ou ka imedyatman kòmanse itilize Clickhouse pou bezwen ou yo. Sepandan, sa pa vle di ke ou ka fè "montre kreye tab" nan MySQL epi kopye-kole SQL la nan Clickhouse.

Konpare ak MySQL, gen diferans enpòtan kalite done nan definisyon yo chema tab, kidonk w ap toujou bezwen kèk tan chanje definisyon yo chema tab epi aprann motè tab yo jwenn konfòtab.

Clickhouse travay byen san okenn lojisyèl adisyonèl, men si ou vle sèvi ak replikasyon, w ap bezwen enstale ZooKeeper. Analiz pèfòmans rechèch montre rezilta ekselan - tab sistèm yo genyen tout enfòmasyon yo, epi tout done yo ka rekipere lè l sèvi avèk SQL fin vye granmoun ak raz.

Pwodiktivite

  • Referans konparezon Clickhouse ak Vertica ak MySQL sou konfigirasyon sèvè a: de sipò Intel® Xeon® CPU E5-2650 v2 @ 2.60GHz; 128 GiB RAM; md RAID-5 sou 8 6TB SATA HDD, ext4.
  • Referans konparezon Clickhouse ak depo nwaj Amazon RedShift.
  • Ekstrè blog Cloudflare sou pèfòmans Clickhouse:

Sèvi ak Clickhouse kòm yon Ranplasman pou ELK, Big Query ak TimescaleDB

Baz done ClickHouse gen yon konsepsyon trè senp - tout nœuds nan gwoup la gen menm fonksyonalite a epi sèlman itilize ZooKeeper pou kowòdinasyon. Nou te konstwi yon ti gwoup plizyè nœuds ak fè tès, pandan ke nou te jwenn ke sistèm nan gen byen enpresyonan pèfòmans, ki koresponn ak avantaj yo deklare nan referans DBMS analyse. Nou deside pran yon gade pi pre nan konsèp ki dèyè ClickHouse. Premye obstak nan rechèch la se te mank de zouti ak ti kominote ClickHouse, kidonk nou te fouye nan konsepsyon DBMS sa a pou konprann kijan li fonksyone.

ClickHouse pa sipòte resevwa done dirèkteman nan men Kafka paske se jis yon baz done, kidonk nou te ekri pwòp sèvis adaptè nou an nan Go. Li te li mesaj Cap'n Proto kode soti nan Kafka, konvèti yo nan TSV epi mete yo nan ClickHouse an pakèt atravè koòdone HTTP. Nou pita reekri sèvis sa a pou nou itilize bibliyotèk Go ansanm ak pwòp koòdone ClickHouse pou amelyore pèfòmans. Lè nou evalye pèfòmans nan resevwa pakè, nou dekouvri yon bagay enpòtan - li te tounen soti ke pou ClickHouse pèfòmans sa a depann anpil sou gwosè a nan pake a, se sa ki, kantite ranje ansanm mete. Pou konprann poukisa sa rive, nou te gade fason ClickHouse estoke done yo.

Motè prensipal la, oswa pito fanmi motè tab, ClickHouse itilize pou estoke done se MergeTree. Motè sa a se konseptyèlman menm jan ak algorithm LSM yo itilize nan Google BigTable oswa Apache Cassandra, men evite konstwi yon tab memwa entèmedyè epi ekri done dirèkteman sou disk. Sa a bay li ekselan debi ekri, paske chak pake antre klase sèlman pa kle prensipal la, konprese, epi ekri sou disk yo fòme yon segman.

Absans yon tab memwa oswa nenpòt konsèp nan "frechè" nan done vle di tou ke yo ka sèlman ajoute; sistèm nan pa sipòte chanje oswa efase. Kounye a, sèl fason pou efase done se efase yo pa mwa kalandriye, paske segman pa janm travèse limit yon mwa. Ekip ClickHouse la ap travay aktivman pou rann karakteristik sa a personnalisable. Nan lòt men an, li fè ekri ak fizyone segman san deba, kidonk resevwa echèl debi lineyè ak kantite foure konkouran jiskaske I/O oswa saturation nwayo rive.
Sepandan, sa vle di tou ke sistèm nan pa apwopriye pou ti pake, kidonk sèvis Kafka ak inserters yo itilize pou tanpon. Apre sa, ClickHouse nan background nan ap kontinye toujou fè fusion segman, se konsa ke anpil ti moso nan enfòmasyon yo pral konbine ak anrejistre plis fwa, konsa ogmante entansite anrejistreman an. Sepandan, twòp pati ki pa konekte yo pral lakòz agresif throttling nan foure osi lontan ke fizyon an ap kontinye. Nou te jwenn ke pi bon konpwomi ant enjèstyon an tan reyèl ak pèfòmans enjèstyon se enjere yon kantite limite nan foure pou chak segonn nan tab la.

Kle nan pèfòmans lekti tab la se Indexing ak kote done yo sou disk. Pa gen pwoblèm konbyen vit pwosesis la se, lè motè a bezwen eskane terabyte nan done ki soti nan disk epi sèlman itilize yon pòsyon nan li, li pral pran tan. ClickHouse se yon magazen kolòn, kidonk chak segman gen yon dosye pou chak kolòn (kolòn) ak valè klase pou chak ranje. Nan fason sa a, tout kolòn ki manke nan rechèch la ka sote an premye, ak Lè sa a, selil miltip yo ka trete an paralèl ak ekzekisyon vektorize. Pou evite yon eskanè konplè, chak segman gen yon ti fichye endèks.

Etandone ke tout kolòn yo klase pa "kle prensipal la", dosye endèks la sèlman gen etikèt yo (ranje kaptire) nan chak Nyèm ranje pou kapab kenbe yo nan memwa menm pou tab trè gwo. Pou egzanp, ou ka mete paramèt default yo nan "mak chak 8192nd ranje", Lè sa a, "meg" Indexing nan yon tab ki gen 1 billions. liy ki anfòm fasil nan memwa pral pran sèlman 122 karaktè.

Devlopman sistèm lan

Devlopman ak amelyorasyon nan Clickhouse ka remonte nan Github repo epi asire w ke pwosesis la nan "grandi" rive nan yon vitès enpresyonan.

Sèvi ak Clickhouse kòm yon Ranplasman pou ELK, Big Query ak TimescaleDB

Popilarite

Popilarite Clickhouse a sanble ap grandi eksponansyèlman, espesyalman nan kominote ki pale Ris. Konferans High load 2018 ane pase a (Moskou, 8-9 novanm 2018) te montre ke monstr sa yo tankou vk.com ak Badoo itilize Clickhouse, ak ki yo mete done (pa egzanp, mòso bwa) ki soti nan plizyè dizèn de milye de serveurs ansanm. Nan yon videyo 40 minit Yuri Nasretdinov nan ekip VKontakte pale sou fason sa a fèt. Byento nou pral poste transkripsyon an sou Habr pou fasilite travay ak materyèl la.

Aplikasyon

Apre mwen fin pase kèk tan rechèch, mwen panse ke gen zòn kote ClickHouse ta ka itil oswa ka konplètman ranplase lòt solisyon ki pi tradisyonèl ak popilè tankou MySQL, PostgreSQL, ELK, Google Big Query, Amazon RedShift, TimescaleDB, Hadoop, MapReduce, Pinot ak Drwid. Sa ki anba la a dekri detay sou itilize ClickHouse pou modènize oswa konplètman ranplase DBMS ki anwo yo.

Pwolonje kapasite MySQL ak PostgreSQL

Jis dènyèman nou pasyèlman ranplase MySQL ak ClickHouse pou platfòm bilten nou an Bilten Mautic. Pwoblèm lan se te ke MySQL, akòz yon konsepsyon pòv, te antre chak imel voye ak chak lyen nan imel sa a ak yon hash base64, kreye yon gwo tab MySQL (email_stats). Apre yo te voye sèlman 10 milyon imèl bay abonnés sèvis yo, tab sa a te okipe 150 GB espas fichye, ak MySQL te kòmanse "estipid" sou demann senp. Pou ranje pwoblèm nan espas fichye, nou itilize avèk siksè konpresyon tab InnoDB ki redwi li pa yon faktè 4. Sepandan, li toujou pa fè sans nan magazen plis pase 20-30 milyon imèl nan MySQL jis pou dedomajman pou la nan lekti istwa, depi nenpòt rechèch senp ki pou kèk rezon bezwen fè yon eskanè konplè rezilta nan swap ak yon anpil nan mwen. /O chaj, dapre sa nou te resevwa regilyèman avètisman nan men Zabbix.

Sèvi ak Clickhouse kòm yon Ranplasman pou ELK, Big Query ak TimescaleDB

Clickhouse itilize de algoritm konpresyon ki diminye volim done apeprè 3-4 fwa, men nan ka patikilye sa a done yo te patikilyèman "konpresib".

Sèvi ak Clickhouse kòm yon Ranplasman pou ELK, Big Query ak TimescaleDB

Ranplase ELK

Dapre pwòp eksperyans mwen, pil ELK (ElasticSearch, Logstash ak Kibana, nan ka patikilye sa a ElasticSearch) mande plis resous pou kouri pase sa nesesè pou sere mòso bwa. ElasticSearch se yon gwo motè si ou bezwen yon bon rechèch plen tèks boutèy demi lit (ki mwen pa panse ou reyèlman bezwen), men mwen ap mande poukisa li te vin defakto estanda motè a antre. Pèfòmans ingest li yo konbine avèk Logstash te ban nou pwoblèm menm anba chay san patipri lejè e li te egzije nou ajoute pi plis ak plis RAM ak espas disk. Kòm yon baz done, Clickhouse pi bon pase ElasticSearch pou rezon sa yo:

  • SQL sipò dyalèk;
  • Pi bon degre konpresyon done ki estoke;
  • Sipò pou rechèch ekspresyon regilye Regex olye pou rechèch tèks konplè;
  • Amelyore orè demann ak pi wo pèfòmans jeneral.

Kounye a, pi gwo pwoblèm ki parèt lè w konpare ClickHouse ak ELK se mank de solisyon pou telechaje mòso bwa, osi byen ke mank de dokimantasyon ak leson patikilye sou sijè a. Anplis, chak itilizatè ka configured ELK lè l sèvi avèk manyèl Digital Ocean, ki trè enpòtan pou aplikasyon rapid teknoloji sa yo. Gen yon motè baz done, men pa gen okenn Filebeat pou ClickHouse ankò. Wi, li la fluentd ak yon sistèm pou travay ak mòso bwa loghouse, gen yon zouti clicktail pou antre done dosye log nan ClickHouse, men tout bagay sa a pran plis tan. Sepandan, ClickHouse se toujou lidè a akòz senplisite li yo, kidonk menm débutan ka fasilman enstale li epi kòmanse sèvi ak li konplètman fonksyonèl nan jis 10 minit.

Prefere solisyon minimalist, mwen te eseye itilize FluentBit, yon zouti pou anbake mòso bwa ki gen anpil memwa, ansanm ak ClickHouse, pandan y ap eseye evite itilize Kafka. Sepandan, enkonpatibilite minè bezwen adrese, tankou pwoblèm fòma datanvan sa a ka fèt san kouch prokurasyon ki konvèti done ki soti nan FluentBit nan ClickHouse.

Kòm yon altènatif, Kibana ka itilize kòm yon backend ClickHouse grafana. Dapre sa mwen konprann, sa ka lakòz pwoblèm pèfòmans lè rann yon gwo kantite pwen done, espesyalman ak ansyen vèsyon Grafana. Nou poko eseye sa a nan Qwintry, men plent sou sa parèt detanzantan sou kanal sipò ClickHouse nan Telegram.

Ranplasman Google Big Query ak Amazon RedShift (solisyon pou gwo konpayi)

Ka itilizasyon ideyal pou BigQuery se chaje 1 TB done JSON epi kouri rechèch analyse sou li. Big Query se yon pwodwi ekselan ki gen évolutivité pa ka egzajere. Sa a se lojisyèl pi konplèks pase ClickHouse, ki kouri sou yon gwoup entèn, men nan pwen de vi kliyan an li gen anpil bagay an komen ak ClickHouse. BigQuery ka vin chè byen vit yon fwa ou kòmanse peye pou chak SELECT, kidonk li se yon solisyon SaaS vre ak tout avantaj ak dezavantaj li yo.

ClickHouse se pi bon chwa lè w ap kouri yon anpil nan demann enfòmatik chè. Plis demann SELECT ou fè chak jou, se plis li fè sans pou ranplase Big Query ak ClickHouse, paske yon ranplasman sa a ka sove ou plizyè milye dola lè li rive anpil teraocte done yo ap trete. Sa a pa aplike nan done ki estoke, ki se byen bon mache pou trete nan Big Query.

Nan yon atik pa Altinity ko-fondatè Alexander Zaitsev "Chanje nan ClickHouse" pale sou benefis ki genyen nan yon migrasyon DBMS konsa.

Ranplasman TimescaleDB

TimescaleDB se yon ekstansyon PostgreSQL ki optimize travay ak seri tan seri nan yon baz done regilye (https://docs.timescale.com/v1.0/introduction, https://habr.com/ru/company/zabbix/blog/458530/).

Malgre ke ClickHouse se pa yon konkiran serye nan Tanporè nich seri, men estrikti kolòn ak ekzekisyon rechèch vektè, li se pi vit pase TimescaleDB nan pifò ka nan pwosesis rechèch analyse. An menm tan an, pèfòmans nan resevwa done pakèt soti nan ClickHouse se apeprè 3 fwa pi wo, epi li tou itilize 20 fwa mwens espas disk, ki vrèman enpòtan pou trete gwo komèsan nan done istorik: 
https://www.altinity.com/blog/ClickHouse-for-time-series.

Kontrèman ak ClickHouse, sèl fason pou konsève pou kèk espas disk nan TimescaleDB se sèvi ak ZFS oswa sistèm dosye menm jan an.

Mizajou k ap vini nan ClickHouse ap gen chans pou prezante konpresyon delta, ki pral fè li menm pi apwopriye pou trete ak estoke done seri tan. TimescaleDB ka yon pi bon chwa pase ClickHouse vid nan ka sa yo:

  • ti enstalasyon ak anpil ti RAM (<3 GB);
  • yon gwo kantite ti INSERT ke ou pa vle tampon nan fragman gwo;
  • pi bon konsistans, inifòmite ak kondisyon ACID;
  • sipò PostGIS;
  • rantre nan tab PostgreSQL ki egziste deja, depi Timescale DB se esansyèlman PostgreSQL.

Konpetisyon ak sistèm Hadoop ak MapReduce

Hadoop ak lòt pwodwi MapReduce ka fè yon anpil nan kalkil konplèks, men yo gen tandans kouri ak gwo latans.ClickHouse ranje pwoblèm sa a pa trete teraocte nan done ak pwodwi rezilta prèske imedyatman. Kidonk, ClickHouse se pi efikas nan fè rapid, rechèch entèaktif analyse, ki ta dwe enterese nan syantis done yo.

Konpetisyon ak Pinot ak Drwid

Konpetitè ki pi pre ClickHouse yo se kolòn, lineyèman évolutive pwodwi sous louvri Pinot ak Druid. Yon travay ekselan konpare sistèm sa yo pibliye nan atik la Romana Leventova ki gen dat 1ye fevriye 2018

Sèvi ak Clickhouse kòm yon Ranplasman pou ELK, Big Query ak TimescaleDB

Atik sa a bezwen mete ajou - li di ke ClickHouse pa sipòte operasyon UPDATE ak DELETE, ki pa totalman vre pou dènye vèsyon yo.

Nou pa gen anpil eksperyans ak baz done sa yo, men mwen pa vrèman renmen konpleksite nan enfrastrikti ki nesesè pou kouri Druid ak Pinot - se yon pakèt tout pati k ap deplase ki antoure pa Java sou tout kote.

Druid ak Pinot se pwojè enkibatè Apache, pwogrè ki kouvri an detay pa Apache sou paj pwojè GitHub li yo. Pinot te parèt nan enkibatè a nan mwa Oktòb 2018, ak Druid te fèt 8 mwa pi bonè - nan mwa fevriye.

Mank enfòmasyon sou fason AFS travay soulve kèk kesyon, e petèt estipid, pou mwen. Mwen mande si otè yo Pinot remake ke Fondasyon Apache a se pi favorab nan direksyon pou Druid, epi si atitid sa a anvè konkiran an te lakòz yon santiman jalouzi? Èske devlopman Druid a ralanti epi devlopman Pinot a pi vit si sipòtè ansyen yo toudenkou vin enterese nan dènye a?

Dezavantaj nan ClickHouse

Immaturite: Li evidan, sa a se toujou pa yon teknoloji raz, men nan nenpòt ka, pa gen anyen tankou sa a obsève nan lòt DBMS kolòn.

Ti foure pa fè byen nan gwo vitès: foure yo dwe divize an pi gwo moso paske pèfòmans nan foure ti degrade nan pwopòsyon ak kantite kolòn nan chak ranje. Men ki jan ClickHouse estoke done sou disk - chak kolòn reprezante 1 dosye oswa plis, kidonk pou mete 1 ranje ki gen 100 kolòn, ou bezwen louvri epi ekri omwen 100 fichye. Se poutèt sa tanpon foure mande pou yon entèmedyè (sòf si kliyan an tèt li bay tanpon) - anjeneral Kafka oswa kèk kalite sistèm jesyon keu. Ou kapab tou itilize motè tab Buffer la pou pita kopye gwo moso done nan tab MergeTree yo.

Tablo rantre yo limite pa RAM sèvè a, men omwen yo la! Pou egzanp, Druid ak Pinot pa gen koneksyon sa yo ditou, paske yo difisil pou aplike dirèkteman nan sistèm distribiye ki pa sipòte deplase gwo moso nan done ant nœuds.

Jwenn

Nou planifye pou itilize ClickHouse nan Qwintry anpil nan ane k ap vini yo, paske DBMS sa a bay yon balans ekselan nan pèfòmans, sou tèt ki ba, évolutivité ak senplisite. Mwen trè sèten li pral kòmanse gaye byen vit yon fwa kominote ClickHouse la vini ak plis fason pou itilize li nan enstalasyon ti ak mwayen gwosè.

Kèk piblisite 🙂

Mèsi paske w rete avèk nou. Ou renmen atik nou yo? Vle wè plis kontni enteresan? Sipòte nou pa mete yon lòd oswa rekòmande pou zanmi, nwaj VPS pou devlopè soti nan $ 4.99, yon analogue inik nan sèvè nivo antre, ki te envante pa nou pou ou: Tout verite sou VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps soti nan $ 19 oswa ki jan yo pataje yon sèvè? (disponib ak RAID1 ak RAID10, jiska 24 nwayo ak jiska 40GB DDR4).

Dell R730xd 2 fwa pi bon mache nan sant done Equinix Tier IV nan Amstèdam? Sèlman isit la 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV soti nan $199 nan Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - soti nan $ 99! Li sou Ki jan yo bati enfrastrikti corp. klas ak itilizasyon Dell R730xd E5-2650 v4 serveurs ki vo 9000 ero pou yon jounen travay?

Sous: www.habr.com

Add nouvo kòmantè