Lub ClickHouse database muaj tus qauv tsim yooj yim heev - tag nrho cov nodes hauv pawg muaj qhov ua haujlwm zoo ib yam thiab siv ZooKeeper nkaus xwb rau kev sib koom tes. Peb tau tsim ib pawg me me ntawm ob peb lub nodes thiab ua qhov kev sim, thaum lub sijhawm peb pom tias lub kaw lus muaj kev ua tau zoo heev, uas sib haum rau qhov tau txais txiaj ntsig zoo hauv kev ntsuas DBMS cov qauv ntsuas. Peb txiav txim siab los saib ze dua ntawm lub tswv yim qab ClickHouse. Thawj qhov teeb meem rau kev tshawb fawb yog qhov tsis muaj cov cuab yeej thiab cov zej zog me me ntawm ClickHouse, yog li peb delved rau hauv kev tsim ntawm DBMS no kom nkag siab tias nws ua haujlwm li cas.
ClickHouse tsis txhawb tau txais cov ntaub ntawv ncaj qha los ntawm Kafka, vim nws tsuas yog ib qho chaw khaws ntaub ntawv, yog li peb tau sau peb tus kheej cov kev pabcuam adapter hauv Go. Nws nyeem Cap'n Proto encoded cov lus los ntawm Kafka, hloov lawv mus rau TSV, thiab muab tso rau hauv ClickHouse hauv pawg ntawm HTTP interface. Tom qab ntawd peb rov sau cov kev pabcuam no los siv Go lub tsev qiv ntawv ua ke nrog peb tus kheej ClickHouse interface los txhim kho kev ua haujlwm. Thaum ntsuas qhov kev ua tau zoo ntawm cov pob ntawv tau txais, peb pom ib qho tseem ceeb - nws tau muab tawm tias rau ClickHouse qhov kev ua tau zoo no yog nyob ntawm qhov loj ntawm pob ntawv, uas yog, tus naj npawb ntawm kab tso rau tib lub sijhawm. Kom nkag siab tias yog vim li cas qhov no tshwm sim, peb tau kawm li cas ClickHouse khaws cov ntaub ntawv.
Lub cav tseem ceeb, lossis theej, tsev neeg ntawm lub rooj cav siv los ntawm ClickHouse rau khaws cov ntaub ntawv, yog MergeTree. Lub cav no yog lub tswv yim zoo ib yam li LSM algorithm siv hauv Google BigTable lossis Apache Cassandra, tab sis zam kev tsim lub rooj nruab nrab nco thiab sau cov ntaub ntawv ncaj qha rau disk. Qhov no muab kev sau ntawv zoo heev, vim tias txhua pob ntawv ntxig tsuas yog txheeb los ntawm "tus yuam sij tseem ceeb" thawj tus yuam sij, compressed, thiab sau rau disk los ua ib ntu.
Qhov tsis muaj lub cim xeeb lossis ib lub tswv yim ntawm "freshness" ntawm cov ntaub ntawv kuj txhais tau hais tias lawv tsuas yog ntxiv tau, lub kaw lus tsis txhawb kev hloov lossis tshem tawm. Raws li niaj hnub no, tib txoj hauv kev los rho tawm cov ntaub ntawv yog rho tawm los ntawm lub hli, raws li ntu tsis hla ib lub hli ciam teb. Pab pawg ClickHouse nquag ua haujlwm ntawm kev ua qhov no tuaj yeem hloov kho. Ntawm qhov tod tes, nws ua rau kev sau ntawv thiab kev sib koom ua ke tsis muaj kev sib cav sib ceg, yog li tau txais cov txheej txheem sib luag nrog cov lej sib npaug kom txog thaum I / O lossis cores saturate.
Txawm li cas los xij, qhov xwm txheej no tseem txhais tau hais tias lub kaw lus tsis haum rau cov pob ntawv me me, yog li Kafka cov kev pabcuam thiab cov ntxig ntxig siv rau kev buffering. Tsis tas li ntawd, ClickHouse nyob rau hauv keeb kwm yav dhau tseem txuas ntxiv txuas ntxiv ua ntu ntu, kom ntau cov ntaub ntawv me me yuav raug muab tso ua ke thiab kaw ntau zaus, yog li ua rau kev siv cov ntaub ntawv ntau ntxiv. Txawm li cas los xij, ntau qhov tsis sib xws yuav ua rau muaj kev kub ntxhov ntawm cov ntxig ntxig ntev npaum li qhov kev sib koom ua ke txuas ntxiv mus. Peb tau pom tias qhov kev cuam tshuam zoo tshaj plaws ntawm kev noj cov ntaub ntawv ntawm lub sijhawm tiag tiag thiab kev noj zaub mov zoo yog lees txais qee qhov txwv ntawm cov ntxig ib ob rau hauv lub rooj.
Tus yuam sij rau cov lus nyeem kev ua tau zoo yog qhov indexing thiab qhov chaw ntawm cov ntaub ntawv ntawm disk. Txawm hais tias kev ua haujlwm ceev npaum li cas, thaum lub cav yuav tsum luam theej duab terabytes ntawm cov ntaub ntawv los ntawm disk thiab tsuas yog siv ib feem ntawm nws, nws yuav siv sijhawm. ClickHouse yog ib kem khw, yog li txhua ntu muaj cov ntaub ntawv rau txhua kem (kem) nrog cov nqi sib tw rau txhua kab. Yog li, tag nrho cov kab tsis muaj nyob rau hauv cov lus nug tuaj yeem hla ua ntej, thiab tom qab ntawd ntau lub hlwb tuaj yeem ua tiav nyob rau hauv parallel nrog vectorized execution. Txhawm rau zam kev luam theej duab tag nrho, txhua ntu muaj cov ntaub ntawv qhia me me.
Muab hais tias tag nrho cov kab ntawv raug txheeb xyuas los ntawm "tus yuam sij tseem ceeb", cov ntaub ntawv ntsuas tsuas yog muaj cov ntawv sau (cov kab ntes) ntawm txhua kab Nth, txhawm rau kom muaj peev xwm khaws lawv hauv kev nco txawm tias cov ntxhuav loj heev. Piv txwv li, koj tuaj yeem teeb tsa lub neej ntawd rau "kos txhua 8192th kab", tom qab ntawd "meager" indexing ntawm lub rooj nrog 1 trillion. kab uas haum yooj yim rau hauv lub cim xeeb tsuas yog siv 122 cim.
Nws zoo nkaus li tias Clickhouse qhov muaj koob meej loj hlob zuj zus, tshwj xeeb tshaj yog nyob rau hauv zej zog hais lus Lavxias. Xyoo tas los High load 2018 lub rooj sib tham (Moscow, Kaum Ib Hlis 8-9, 2018) pom tias monsters zoo li vk.com thiab Badoo siv Clickhouse, uas ntxig cov ntaub ntawv (piv txwv li, cav) los ntawm kaum tawm txhiab tus servers ib txhij. Hauv 40 feeb video Yuri Nasretdinov los ntawm pab pawg VKontakte tham txog yuav ua li cas nws ua tiav. Tsis ntev peb yuav tshaj tawm cov ntawv sau tseg ntawm Habr kom yooj yim ntawm kev ua haujlwm nrog cov khoom siv.
Daim ntaub ntawv
Tom qab siv qee lub sij hawm tshawb fawb, kuv xav tias muaj cov cheeb tsam uas ClickHouse tuaj yeem pab tau lossis tuaj yeem hloov pauv lwm cov kev daws teeb meem thiab nrov xws li MySQL, PostgreSQL, ELK, Google Big Query, Amazon RedShift, TimescaleDB, Hadoop, MapReduce, Pinot thiab Druid. Cov hauv qab no yog cov ntsiab lus ntawm kev siv ClickHouse los hloov kho lossis hloov tag nrho cov saum toj no DBMS.
Txuas MySQL thiab PostgreSQL
Tsis ntev los no, peb ib nrab hloov MySQL nrog ClickHouse rau cov ntawv xov xwm platform Mautic tsab ntawv xov xwm. Qhov teeb meem yog tias MySQL vim qhov tsis zoo tsim tsim tau nkag mus rau txhua tus email xa thiab txhua qhov txuas hauv email ntawd nrog lub hauv paus 64 hash, tsim kom muaj lub rooj loj MySQL (email_stats). Tom qab xa tsuas yog 10 lab emails rau cov kev pabcuam cov neeg siv khoom, lub rooj no tau nyob 150 GB ntawm qhov chaw ntaub ntawv, thiab MySQL pib " ruam" ntawm cov lus nug yooj yim. Txhawm rau txhim kho qhov teeb meem ntawm qhov chaw, peb ua tiav siv InnoDB rooj compression, uas txo nws los ntawm qhov zoo ntawm 4. Txawm li cas los xij, nws tseem tsis tau txais txiaj ntsig los khaws ntau dua 20-30 lab emails hauv MySQL tsuas yog rau kev nyeem ntawv keeb kwm, raws li cov lus nug yooj yim uas vim qee qhov yuav tsum tau ua tag nrho cov txiaj ntsig scan hauv kev sib pauv thiab hnyav I / O. nyiaj siv ua haujlwm, uas peb niaj hnub tau txais Zabbix ceeb toom.
Clickhouse siv ob compression algorithms uas txo tus nqi ntawm cov ntaub ntawv los ntawm txog 3-4 lub sij hawm, tab sis hauv qhov tshwj xeeb no, cov ntaub ntawv tshwj xeeb yog "compressible".
ELK Hloov
Raws li kuv tus kheej kev paub dhau los, ELK pawg (ElasticSearch, Logstash thiab Kibana, hauv qhov tshwj xeeb no ElasticSearch) xav tau ntau yam kev pabcuam los khiav dua li qhov xav tau los khaws cov cav. ElasticSearch yog lub cav zoo yog tias koj xav tau cov ntawv sau tag nrho zoo tshawb nrhiav (thiab kuv tsis xav tias koj xav tau tiag tiag), tab sis kuv xav tsis thoob vim li cas nws tau dhau los ua tus qauv txiav cav. Nws qhov kev ua tau zoo ntawm kev noj, ua ke nrog Logstash, muab teeb meem rau peb txawm tias lub teeb ua haujlwm zoo thiab xav tau qhov sib ntxiv ntawm ntau thiab ntau RAM thiab qhov chaw disk. Raws li cov ntaub ntawv, Clickhouse zoo dua ElasticSearch rau cov laj thawj hauv qab no:
Kev them nyiaj yug rau Regex search es tsis txhob sau ntawv nyeem;
Txhim kho cov lus nug teem caij thiab kev ua tau zoo tag nrho.
Tam sim no, qhov teeb meem loj tshaj plaws uas tshwm sim thaum sib piv ClickHouse nrog ELK yog qhov tsis muaj kev daws teeb meem rau kev rub tawm cov cav, nrog rau qhov tsis muaj ntaub ntawv thiab cov lus qhia ntawm cov ncauj lus no. Nyob rau tib lub sijhawm, txhua tus neeg siv tuaj yeem teeb tsa ELK siv Digital Ocean phau ntawv, uas yog qhov tseem ceeb heev rau kev siv cov thev naus laus zis sai. Muaj lub cav database ntawm no, tab sis tsis muaj Filebeat rau ClickHouse tsis tau. Yog, muaj txawj thiab ib qho kev ua haujlwm nrog cov cav log tsev, muaj cuab yeej nyem tail nkag mus rau cov ntaub ntawv teev cia rau hauv ClickHouse, tab sis tag nrho cov no yuav siv sij hawm ntau dua. Txawm li cas los xij, ClickHouse tseem ua txoj hauv kev vim nws txoj kev yooj yim, yog li txawm tias cov pib tshiab tuaj yeem yooj yim nruab nws thiab pib siv tag nrho hauv 10 feeb xwb.
Nyiam cov kev daws teeb meem me me, kuv tau sim siv FluentBit, lub cim xeeb qis heev rub lub cuab yeej, nrog ClickHouse thaum sim kom tsis txhob siv Kafka. Txawm li cas los xij, me me incompatibilities yuav tsum tau hais, xws li hnub format teeb meemua ntej nws yuav ua tau yam tsis muaj lub npe txheej uas hloov cov ntaub ntawv los ntawm FluentBit rau ClickHouse.
Raws li lwm txoj hauv kev rau Kibana, koj tuaj yeem siv ClickHouse ua tus thaub qab ua grafana. Raws li kuv nkag siab, qhov no tuaj yeem ua rau muaj teeb meem kev ua haujlwm thaum ua cov ntaub ntawv ntau cov ntsiab lus, tshwj xeeb tshaj yog cov laus ntawm Grafana. Hauv Qwintry, peb tseem tsis tau sim qhov no, tab sis kev tsis txaus siab txog qhov no tshwm sim ib ntus ntawm ClickHouse kev txhawb nqa channel hauv Telegram.
Hloov ntawm Google Big Query thiab Amazon RedShift (kev daws teeb meem rau cov tuam txhab loj)
Cov ntaub ntawv siv zoo tshaj plaws rau BigQuery yog txhawm rau thauj 1TB ntawm JSON cov ntaub ntawv thiab khiav cov lus nug txheeb xyuas ntawm nws. Cov Lus Nug Loj yog cov khoom lag luam zoo uas nws qhov scalability nyuaj rau overestimate. Qhov no yog software ntau dua li ClickHouse khiav ntawm ib pawg sab hauv, tab sis los ntawm tus neeg siv lub ntsiab lus, nws muaj ntau yam nrog ClickHouse. BigQuery tuaj yeem "tus nqi nce" sai sai thaum koj pib them rau txhua qhov SELECT, yog li nws yog qhov kev daws teeb meem SaaS tiag tiag nrog txhua qhov zoo thiab qhov tsis zoo.
ClickHouse yog qhov kev xaiv zoo tshaj plaws thaum koj khiav ntau cov lus nug uas kim heev. Qhov ntau SELECT queries koj khiav txhua hnub, qhov taw tes ntau nws ua rau hloov Cov Lus Nug Loj nrog ClickHouse, vim tias qhov kev hloov pauv no yuav txuag koj ntau txhiab nyiaj thaum nws los txog rau ntau terabytes ntawm cov ntaub ntawv ua tiav. Qhov no tsis siv rau cov ntaub ntawv khaws cia, uas pheej yig heev los ua cov lus nug loj.
Druid thiab Pinot yog Apache incubator tej yaam num, uas muaj nyob rau hauv kev nthuav dav los ntawm Apache ntawm lawv cov nplooj ntawv GitHub project. Pinot tau tshwm sim nyob rau hauv lub incubator thaum Lub Kaum Hli 2018, thiab Druid yug 8 lub hlis ua ntej - thaum Lub Ob Hlis.
Qhov tsis muaj ntaub ntawv hais txog yuav ua li cas AFS ua haujlwm nce qee qhov, thiab tej zaum ruam, cov lus nug rau kuv. Kuv xav paub yog tias cov kws sau ntawv ntawm Pinot pom tias Apache Foundation muaj kev cuam tshuam ntau dua rau Druid, thiab puas yog tus cwj pwm ntawm tus neeg sib tw ua rau muaj kev khib? Puas yuav txoj kev loj hlob ntawm Druid qeeb thiab kev txhim kho ntawm Pinot nrawm yog tias cov neeg txhawb nqa txhawb nqa yav dhau los dheev txaus siab rau yav tom ntej?
Disadvantages ntawm ClickHouse
Immaturity: Obviously, qhov no tseem yog ib tug tho txawv technology, tab sis nyob rau hauv txhua rooj plaub, tsis muaj dab tsi zoo li no tau pom nyob rau hauv lwm cov columnar DBMS.
Cov ntxig me me tsis ua haujlwm zoo ntawm kev kub ceev: cov ntxig yuav tsum tau muab faib ua cov chunks loj vim tias qhov kev ua tau zoo ntawm cov ntxig me me degrades nyob rau hauv feem ntawm cov kab hauv txhua kab. Qhov no yog li cas ClickHouse khaws cov ntaub ntawv ntawm disk - txhua kab txhais tau tias 1 cov ntaub ntawv lossis ntau dua, yog li txhawm rau ntxig 1 kab uas muaj 100 kab, koj yuav tsum qhib thiab sau tsawg kawg 100 cov ntaub ntawv. Qhov no yog vim li cas ntxig buffering yuav tsum muaj tus neeg nruab nrab (tshwj tsis yog tus neeg siv khoom nws tus kheej muab buffering) - feem ntau Kafka lossis qee yam ntawm cov kab ke. Koj tuaj yeem siv Buffer lub cav tom qab luam cov ntaub ntawv loj rau hauv MergeTree ntxhuav.
Cov rooj koom nrog yog txwv los ntawm server RAM, tab sis tsawg kawg lawv nyob ntawd! Piv txwv li, Druid thiab Pinot tsis muaj kev sib txuas zoo li no, vim lawv nyuaj rau kev siv ncaj qha rau hauv cov kab ke uas tsis txhawb nqa cov ntaub ntawv loj ntawm cov nodes.
tshawb pom
Nyob rau hauv lub xyoo tom ntej, peb npaj yuav ua kom dav siv ClickHouse hauv Qwintry, raws li DBMS no muab kev sib npaug zoo ntawm kev ua tau zoo, tsis tshua muaj nyiaj siv ua haujlwm, scalability, thiab simplicity. Kuv paub tseeb tias nws yuav kis tau sai sai thaum lub zej zog ClickHouse tuaj nrog ntau txoj hauv kev siv nws hauv kev teeb tsa me me thiab nruab nrab.