Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Peress li ClickHouse hija sistema speċjalizzata, meta tużaha huwa importanti li jitqiesu l-karatteristiċi tal-arkitettura tagħha. F'dan ir-rapport, Alexey se jitkellem dwar eżempji ta 'żbalji komuni meta tuża ClickHouse, li jistgħu jwasslu għal xogħol ineffettiv. Eżempji prattiċi se juru kif l-għażla ta' skema ta' pproċessar tad-dejta waħda jew oħra tista' tbiddel il-prestazzjoni b'ordnijiet ta' kobor.

Hi kollha! Jisimni Alexey, nagħmel ClickHouse.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

L-ewwelnett, nħaffef nogħġbok mill-ewwel, illum mhux se ngħidlek x'inhi ClickHouse. Biex inkun onest, jien għajjien minnu. Kull darba ngħidlek x’inhu. U probabbilment kulħadd diġà jaf.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Minflok, ngħidlek x'iżbalji possibbli hemm, jiġifieri, kif tista' tuża ClickHouse b'mod żbaljat. Fil-fatt, m'hemmx għalfejn nibżgħu, għax qed niżviluppaw ClickHouse bħala sistema li hija sempliċi, konvenjenti, u taħdem barra mill-kaxxa. Installajtha, l-ebda problemi.

Imma xorta trid tqis li din is-sistema hija speċjalizzata u faċilment tista’ tiltaqa’ ma’ każ ta’ użu mhux tas-soltu li se joħroġ din is-sistema barra miż-żona ta’ kumdità tagħha.

Allura, x'tip ta 'rake hemm? L-aktar se nitkellem dwar affarijiet ovvji. Kollox huwa ovvju għal kulħadd, kulħadd jifhem kollox u jista 'jkun ferħan li huma tant intelliġenti, u dawk li ma jifhmux se jitgħallmu xi ħaġa ġdida.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

L-ewwel u l-aktar eżempju sempliċi, li, sfortunatament, spiss iseħħ, huwa numru kbir ta 'inserzjonijiet b'lottijiet żgħar, jiġifieri numru kbir ta' inserzjonijiet żgħar.

Jekk nikkunsidraw kif ClickHouse twettaq inserzjoni, allura tista 'tibgħat mill-inqas terabyte ta' data f'talba waħda. Mhix problema.

U ejja naraw x'se tkun il-prestazzjoni tipika. Pereżempju, għandna tabella minn data Yandex.Metrica. Hits. 105 xi kolonni. 700 bytes mhux kompressat. U aħna se daħħal b'mod tajjeb f'lottijiet ta 'miljun ringiela.

Aħna daħħal MergeTree fit-tabella, jirriżulta nofs miljun ringiela kull sekonda. Kbir. F'tabella replikata se tkun ftit iżgħar, madwar 400 ringieli kull sekonda.

U jekk tippermetti l-inserzjoni tal-kworum, ikollok prestazzjoni ftit inqas, iżda xorta deċenti, 250 terminu kull sekonda. L-inserzjoni tal-kworum hija karatteristika mhux dokumentata fi ClickHouse*.

* mill-2020, diġà dokumentat.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

X'jiġri jekk tagħmel xi ħaġa ħażina? Aħna daħħal ringiela waħda fit-tabella MergeTree u nikseb 59 ringiela kull sekonda. Dan huwa 10 darba aktar bil-mod. F'ReplicatedMergeTree – 000 ringieli kull sekonda. U jekk il-kworum jinxtegħel, allura jirriżulta 6 linji kull sekonda. Fl-opinjoni tiegħi, dan huwa xi tip ta 'ħażin assolut. Kif tista’ tnaqqas il-mod hekk? Saħansitra għandiha miktuba fuq it-T-shirt tiegħi li ClickHouse m'għandhiex tnaqqas il-veloċità. Iżda madankollu jiġri kultant.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Fil-fatt, dan huwa n-nuqqas tagħna. Stajna faċilment għamilna kollox jaħdem tajjeb, imma le. U ma għamilniex għax l-iskrittura tagħna ma kinitx teħtieġha. Diġà kellna butches. Għadna kemm irċevejna lottijiet fid-daħla tagħna, u l-ebda problema. Aħna daħħalha u kollox jaħdem tajjeb. Iżda, ovvjament, kull xorta ta 'xenarji huma possibbli. Per eżempju, meta jkollok mazz ta 'servers li fuqhom tiġi ġġenerata d-dejta. U ma jdaħħlux data daqshekk spiss, iżda xorta jispiċċaw b'inserzjonijiet frekwenti. U għandna bżonn b'xi mod nevitaw dan.

Mil-lat tekniku, il-punt huwa li meta tagħmel inserzjoni f'ClickHouse, id-dejta ma tispiċċa fl-ebda memtable. Lanqas biss għandna struttura ta’ log MergeTree reali, iżda MergeTree biss, għax la hemm log u lanqas memTable. Aħna sempliċiment immedjatament niktbu d-dejta fis-sistema tal-fajls, diġà rranġati f'kolonni. U jekk għandek 100 kolonna, allura aktar minn 200 fajl jeħtieġ li jinkitbu f'direttorju separat. Dan kollu huwa diffiċli ħafna.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

U tqum il-mistoqsija: "Kif tagħmel dan it-tajjeb?" Jekk is-sitwazzjoni hija tali li għad trid tirrekordja b'xi mod id-dejta f'ClickHouse.

Metodu 1. Dan huwa l-eħfef mod. Uża xi tip ta 'kju distribwit. Per eżempju, Kafka. Sempliċement testrat id-dejta minn Kafka u tgħaqqadha darba kull sekonda. U kollox se jkun tajjeb, tirreġistra, kollox jaħdem tajjeb.

L-iżvantaġġi huma li Kafka hija sistema oħra mqassma goffa. Nifhem ukoll jekk diġà għandek Kafka fil-kumpanija tiegħek. Huwa tajjeb, huwa konvenjenti. Imma jekk ma teżistix, allura għandek taħseb tliet darbiet qabel ma tkaxkar sistema mqassma oħra fil-proġett tiegħek. U għalhekk ta 'min jikkunsidra alternattivi.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Metodu 2. Din hija alternattiva tal-iskola l-qadima u fl-istess ħin sempliċi ħafna. Għandek xi tip ta 'server li jiġġenera zkuk tiegħek. U jikteb biss zkuk tiegħek għal fajl. U darba kull sekonda, per eżempju, aħna inbiddlu isem dan il-fajl u tiċrita wieħed ġdid. U skript separat, jew permezz ta 'cron jew xi daemon, jieħu l-eqdem fajl u jikteb fuq ClickHouse. Jekk tirreġistra zkuk darba kull sekonda, allura kollox ikun tajjeb.

Iżda l-iżvantaġġ ta 'dan il-metodu huwa li jekk is-server tiegħek li fuqu huma ġġenerati z-zkuk jisparixxi x'imkien, allura d-dejta tisparixxi wkoll.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Metodu 3. Hemm metodu ieħor interessanti, li ma jeħtieġx fajls temporanji għal kollox. Per eżempju, għandek xi tip ta 'spinner tar-reklamar jew xi daemon interessanti ieħor li jiġġenera data. U tista 'takkumula mazz ta' data direttament fir-RAM, fil-buffer. U meta jkun għadda biżżejjed żmien, twarrab dan il-buffer, toħloq waħda ġdida, u f'ħajt separat, daħħal dak li diġà akkumula f'ClickHouse.

Min-naħa l-oħra, id-dejta tisparixxi wkoll b'qatla -9. Jekk is-server tiegħek jiġġarraf, titlef din id-dejta. U problema oħra hija li jekk ma kontx kapaċi tikteb fid-database, allura d-dejta tiegħek se takkumula fir-RAM. U jew ir-RAM se jispiċċaw, jew sempliċement titlef id-data.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Metodu 4. Metodu ieħor interessanti. Għandek xi tip ta 'proċess ta' server. U tista 'tibgħat data lil ClickHouse immedjatament, iżda tagħmel dan f'konnessjoni waħda. Per eżempju, bgħatt talba http b'kodifikazzjoni ta 'trasferiment: imqatta' b'daħħal. U jiġġenera biċċiet mhux rari wisq, tista 'tibgħat kull linja, għalkemm se jkun hemm overhead għat-tfassil ta' din id-dejta.

Madankollu, f'dan il-każ id-dejta tintbagħat lil ClickHouse immedjatament. U ClickHouse ser jibferhom innifsu.

Iżda jinqalgħu wkoll problemi. Issa titlef id-data, inkluż meta l-proċess tiegħek jinqatel u jekk jinqatel il-proċess ClickHouse, minħabba li se jkun inserzjoni mhux kompluta. U fl-inserzjonijiet ClickHouse huma atomiċi sa ċertu limitu speċifikat fid-daqs tar-ringieli. Fil-prinċipju, dan huwa mod interessanti. Jista 'jintuża wkoll.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Metodu 5. Hawn metodu ieħor interessanti. Dan huwa xi tip ta 'server żviluppat mill-komunità għall-lott tad-dejta. Jien ma ħaristx lejha, ​​għalhekk ma nista’ niggarantixxi xejn. Madankollu, l-ebda garanziji ma huma pprovduti għal ClickHouse innifsu. Dan huwa wkoll sors miftuħ, iżda min-naħa l-oħra, inti tista 'tintuża għal xi standard ta' kwalità li nippruvaw nipprovdu. Iżda għal din il-ħaġa - ma nafx, mur GitHub, ħares lejn il-kodiċi. Forsi kitbu xi ħaġa normali.

* mill-2020, għandhom jiżdiedu wkoll mal-konsiderazzjoni KittenHouse.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Metodu 6. Metodu ieħor huwa li tuża tabelli Buffer. Il-vantaġġ ta 'dan il-metodu huwa li huwa faċli ħafna li tibda tuża. Oħloq tabella Buffer u daħħalha fiha.

L-iżvantaġġ huwa li l-problema mhix solvuta kompletament. Jekk, f'rata bħal MergeTree, għandek tiġbor id-dejta b'lott wieħed kull sekonda, imbagħad f'rata f'tabella buffer, għandek bżonn tiġbor mill-inqas sa diversi eluf kull sekonda. Jekk ikun aktar minn 10 kull sekonda, xorta jkun ħażin. U jekk daħħalha f'lottijiet, allura rajt li jirriżulta li jkun mitt elf linja kull sekonda. U dan huwa diġà fuq data pjuttost tqila.

U wkoll buffer tables m'għandhomx log. U jekk ikun hemm xi ħaġa ħażina fis-server tiegħek, allura d-dejta tintilef.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

U bħala bonus, dan l-aħħar kellna l-opportunità f'ClickHouse biex inġibu dejta minn Kafka. Hemm magna tal-mejda - Kafka. Inti sempliċiment toħloq. U tista 'hang rappreżentazzjonijiet materjalizzati fuqha. F'dan il-każ, hija stess se tiġbed id-dejta minn Kafka u daħħalha fit-tabelli li għandek bżonn.

U dak li hu speċjalment pjaċir dwar din l-opportunità huwa li ma konniex aħna li għamilniha. Din hija karatteristika komunitarja. U meta ngħid "karatteristika tal-komunità," ngħid dan mingħajr ebda disprezz. Naqraw il-kodiċi, għamilna reviżjoni, għandu jaħdem tajjeb.

* mill-2020, deher appoġġ simili għalih Fenek MQ.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

X'iktar jista' jkun inkonvenjenti jew mhux mistenni meta ddaħħal data? Jekk tagħmel talba daħħal valuri u ikteb xi espressjonijiet ikkalkulati f'valuri. Pereżempju, issa () hija wkoll espressjoni kkalkulata. U f'dan il-każ, ClickHouse huwa sfurzat li jniedi l-interpretu ta 'dawn l-espressjonijiet fuq kull linja, u l-prestazzjoni se tonqos b'ordnijiet ta' kobor. Huwa aħjar li tevita dan.

* bħalissa, il-problema hija solvuta kompletament, m'għadx hemm rigressjoni tal-prestazzjoni meta tuża espressjonijiet f'VALURI.

Eżempju ieħor huwa meta jista 'jkun hemm xi problemi meta jkollok data fuq lott wieħed li jappartjeni għal mazz ta' diviżorji. B'mod awtomatiku, diviżorji ClickHouse huma fix-xahar. U jekk daħħal lott ta 'miljun ringiela, u hemm dejta għal diversi snin, allura jkollok diversi tużżani diviżorji hemmhekk. U dan huwa ekwivalenti għall-fatt li se jkun hemm lottijiet diversi għexieren ta 'darbiet iżgħar fid-daqs, għaliex ġewwa huma dejjem l-ewwel maqsuma f'ħitan.

* Riċentement, fil-modalità sperimentali, ClickHouse żiedet appoġġ għall-format kompatt ta 'biċċiet u biċċiet fir-RAM b'reġistru ta' write-ahead, li kważi kompletament issolvi l-problema.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Issa ejja nħarsu lejn it-tieni tip ta 'problema - ittajpjar tad-dejta.

It-tajpjar tad-dejta jista' jkun strett jew string. String huwa meta inti biss ħaditha u ddikjarat li l-oqsma kollha tiegħek huma tat-tip string. Dan sucks. M'hemmx għalfejn tagħmel dan.

Ejja insemmu kif tagħmel dan b'mod korrett f'dawk il-każijiet meta trid tgħid li għandna xi qasam, string, u ħalli ClickHouse insemmu waħedha, u jien ma niddejjaqx. Imma xorta ta’ min jagħmel xi sforz.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Pereżempju, għandna indirizz IP. F'każ wieħed, aħna salvati bħala spaga. Pereżempju, 192.168.1.1. U f'każ ieħor, se jkun numru ta 'tip UInt32*. 32 bit huwa biżżejjed għal indirizz IPv4.

L-ewwelnett, b'mod stramb, id-dejta se tkun ikkompressata bejn wieħed u ieħor b'mod ugwali. Se jkun hemm differenza, ovvjament, iżda mhux daqshekk kbira. Allura m'hemm l-ebda problemi speċjali bl-I/O tad-disk.

Iżda hemm differenza serja fil-ħin tal-proċessur u l-ħin tal-eżekuzzjoni tal-mistoqsija.

Ejja ngħoddu n-numru ta 'indirizzi IP uniċi jekk huma maħżuna bħala numri. Dan jaħdem għal 137 miljun linja kull sekonda. Jekk l-istess huwa fil-forma ta 'kordi, allura 37 miljun linja kull sekonda. Ma nafx għalfejn seħħet din il-kumbinazzjoni. Jien wettaqt dawn it-talbiet jien. Imma xorta madwar 4 darbiet aktar bil-mod.

U jekk tikkalkula d-differenza fl-ispazju tad-diska, allura hemm ukoll differenza. U d-differenza hija ta 'madwar kwart, minħabba li hemm ħafna indirizzi IP uniċi. U kieku kien hemm linji b'numru żgħir ta 'tifsiriet differenti, allura faċilment jiġu kkompressati skond id-dizzjunarju f'madwar l-istess volum.

U d-differenza ta’ erba’ darbiet ma tinsabx fit-triq. Forsi ma tagħtix qalbek, ovvjament, imma meta nara differenza bħal din, idejjaqni.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Ejja nħarsu lejn każijiet differenti.

1. Każ wieħed meta jkollok ftit valuri uniċi differenti. F'dan il-każ, nużaw prattika sempliċi li probabilment taf u tista' tuża għal kwalunkwe DBMS. Dan kollu jagħmel sens mhux biss għal ClickHouse. Ikteb biss identifikaturi numeriċi fid-database. U tista 'tikkonverti għal kordi u lura fuq in-naħa tal-applikazzjoni tiegħek.

Per eżempju, għandek reġjun. U qed tipprova ssalvaha bħala spaga. U se jkun miktub hemmhekk: Moska u Reġjun ta 'Moska. U meta nara li tgħid "Moska", m'hu xejn, imma meta jkun Moska, b'xi mod isir kompletament imdejjaq. Dan huwa kemm bytes.

Minflok, aħna sempliċement ikteb in-numru Ulnt32 u 250. Għandna 250 f'Yandex, iżda tiegħek jista 'jkun differenti. Fil-każ, jien ngħid li ClickHouse għandha kapaċità integrata li taħdem ma 'geobase. Sempliċement tikteb direttorju b'reġjuni, inkluż wieħed ġerarkiku, jiġifieri se jkun hemm Moska, Reġjun ta 'Moska, u dak kollu li għandek bżonn. U tista 'tikkonverti fil-livell tat-talba.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

It-tieni għażla hija bejn wieħed u ieħor l-istess, iżda b'appoġġ ġewwa ClickHouse. Dan huwa t-tip tad-dejta Enum. Sempliċement tikteb il-valuri kollha li għandek bżonn ġewwa l-Enum. Per eżempju, tip ta 'apparat u ikteb hemm: desktop, mobbli, tablet, TV. Hemm 4 għażliet b'kollox.

L-iżvantaġġ huwa li għandek bżonn tibdelha perjodikament. Għażla waħda biss miżjuda. Ejja nagħmlu tbiddel it-tabella. Fil-fatt, ibdel it-tabella f'ClickHouse huwa b'xejn. Speċjalment b'xejn għal Enum minħabba li d-data fuq id-diska ma tinbidilx. Iżda madankollu, alter jakkwista lock* fuq il-mejda u għandu jistenna sakemm l-għażla kollha jiġu esegwiti. U biss wara li dan l-alter jiġi esegwit, jiġifieri għad hemm xi inkonvenjenzi.

* fl-aħħar verżjonijiet ta' ClickHouse, ALTER isir kompletament mhux imblukkat.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Għażla oħra li hija pjuttost unika għal ClickHouse hija li tgħaqqad dizzjunarji esterni. Tista' tikteb in-numri fi ClickHouse, u żżomm id-direttorji tiegħek fi kwalunkwe sistema konvenjenti għalik. Per eżempju, tista 'tuża: MySQL, Mongo, Postgres. Tista' anki toħloq il-mikroservizz tiegħek stess li jibgħat din id-dejta permezz ta' http. U fil-livell ClickHouse, tikteb funzjoni li tikkonverti din id-dejta minn numri għal kordi.

Dan huwa mod speċjalizzat iżda effiċjenti ħafna biex twettaq tingħaqad fuq mejda esterna. U hemm żewġ għażliet. F'inkarnazzjoni waħda, din id-dejta tkun kompletament fil-cache, preżenti bis-sħiħ fir-RAM u aġġornata b'xi frekwenza. U f'għażla oħra, jekk din id-dejta ma tidħolx fir-RAM, allura tista 'taħkejha parzjalment fil-cache.

Hawn eżempju. Hemm Yandex.Direct. U hemm kumpanija tar-reklamar u banners. Probabbilment hemm madwar għexieren ta 'miljuni ta' kumpaniji tar-reklamar. U bejn wieħed u ieħor jidħlu fir-RAM. U hemm biljuni ta 'banners, ma jidħlux. U nużaw dizzjunarju fil-cache minn MySQL.

L-unika problema hija li d-dizzjunarju fil-cache jaħdem tajjeb jekk ir-rata tal-hit tkun qrib il-100%. Jekk tkun iżgħar, allura meta tipproċessa mistoqsijiet għal kull lott ta 'dejta, fil-fatt ikollok tieħu ċ-ċwievet neqsin u tmur tikseb id-dejta mill-MySQL. Dwar ClickHouse, xorta nista' niggarantixxi li - iva, ma jonqosx, mhux se nitkellem dwar sistemi oħra.

U bħala bonus, id-dizzjunarji huma mod faċli ħafna biex taġġorna b'mod retroattiv id-dejta fi ClickHouse. Jiġifieri, kellek rapport dwar kumpaniji tar-reklamar, l-utent sempliċement biddel il-kumpanija tar-reklamar u fid-dejta l-antika kollha, fir-rapporti kollha, din id-dejta nbidlet ukoll. Jekk tikteb ringieli direttament fuq it-tabella, ikun impossibbli li taġġornahom.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Mod ieħor meta ma tkunx taf fejn tikseb l-identifikaturi għall-kordi tiegħek. tista 'sempliċement hash it. Barra minn hekk, l-iktar għażla sempliċi hija li tieħu hash 64-bit.

L-unika problema hija li jekk il-hash huwa 64-bit, allura kważi ċertament ikollok ħabtiet. Għax jekk hemm biljun linja hemm, allura l-probabbiltà diġà ssir notevoli.

U ma jkunx tajjeb ħafna li l-ismijiet tal-kumpaniji tar-reklamar jitħaxxew b'dan il-mod. Jekk il-kampanji ta 'reklamar ta' kumpaniji differenti jitħalltu, allura jkun hemm xi ħaġa inkomprensibbli.

U hemm trick sempliċi. Veru, huwa wkoll mhux adattat ħafna għal data serja, imma jekk xi ħaġa mhix serja ħafna, imbagħad żid biss l-identifikatur tal-klijent maċ-ċavetta tad-dizzjunarju. U mbagħad ikollok ħabtiet, iżda biss fi ħdan klijent wieħed. U nużaw dan il-metodu għall-mapep tal-link f'Yandex.Metrica. Għandna URLs hemm, naħżnu l-hashes. U nafu li, ovvjament, hemm ħabtiet. Iżda meta l-paġna tintwera, il-probabbiltà li fuq paġna waħda ta 'utent wieħed xi URLs huma mwaħħla flimkien u dan jiġi nnutat tista' tiġi traskurata.

Bħala bonus, għal ħafna operazzjonijiet il-hashes waħedhom huma biżżejjed u l-kordi nfushom m'għandhomx għalfejn jinħażnu kullimkien.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Eżempju ieħor huwa jekk il-kordi huma qosra, pereżempju, dominji tal-websajt. Jistgħu jinħażnu kif inhuma. Jew, pereżempju, il-lingwa tal-browser ru – 2 bytes. Ovvjament, inħossni tassew sorry għall-bytes, imma tinkwetax, 2 bytes mhumiex ħasra. Jekk jogħġbok żommha kif inhu, tinkwetax.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Każ ieħor huwa meta, għall-kuntrarju, hemm ħafna linji u hemm ħafna uniċi fihom, u anke s-sett huwa potenzjalment illimitat. Eżempju tipiku huwa frażijiet ta' tfittxija jew URLs. Fittex frażijiet, inklużi typos. Ejja naraw kemm hemm frażijiet ta' tfittxija uniċi kuljum. U jirriżulta li huma kważi nofs l-avvenimenti kollha. U f'dan il-każ, tista 'taħseb li għandek bżonn tinnormalizza d-dejta, tgħodd l-identifikaturi, u poġġiha f'tabella separata. Imma m'għandekx bżonn tagħmel dan. Żomm biss dawn il-linji kif inhuma.

Huwa aħjar li ma tivvinta xejn, għax jekk taħżenha separatament, ikollok bżonn tagħmel a join. U dan jingħaqad huwa, fl-aħjar, aċċess każwali għall-memorja, jekk għadu joqgħod fil-memorja. Jekk ma jaqbilx, allura jkun hemm problemi.

U jekk id-dejta tinħażen fil-post, allura tinqara sempliċement fl-ordni meħtieġa mis-sistema tal-fajls u kollox huwa tajjeb.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Jekk għandek URLs jew xi sekwenza twila kumplessa oħra, allura ta 'min jikkunsidra li tista' tikkalkula xi tip ta 'estratt minn qabel u tiktebha f'kolonna separata.

Għall-URLs, pereżempju, tista 'taħżen id-dominju separatament. U jekk verament għandek bżonn ta 'dominju, allura uża din il-kolonna, u l-URLs ikunu hemm, u lanqas tmisshom.

Ejja naraw x'inhi d-differenza. ClickHouse għandha funzjoni speċjalizzata li tikkalkula d-dominju. Huwa mgħaġġel ħafna, aħna ottimizzajna. U, biex inkun onest, lanqas biss tikkonforma mal-RFC, iżda madankollu tqis dak kollu li għandna bżonn.

U f'każ wieħed sempliċement se nġibu l-URLs u nikkalkulaw id-dominju. Li jaħdem għal 166 millisekondi. U jekk tieħu dominju lest, allura jirriżulta li jkun biss 67 millisekondi, jiġifieri kważi tliet darbiet aktar mgħaġġel. U huwa aktar mgħaġġel mhux għax għandna bżonn nagħmlu xi kalkoli, iżda għax naqraw inqas dejta.

Huwa għalhekk li talba waħda, li hija aktar bil-mod, għandha veloċità ogħla ta 'gigabytes kull sekonda. Għax jaqra aktar gigabytes. Din hija data kompletament bla bżonn. It-talba tidher li taħdem aktar malajr, iżda tieħu aktar żmien biex titlesta.

U jekk tħares lejn l-ammont ta 'dejta fuq id-diska, jirriżulta li l-URL huwa 126 megabytes, u d-dominju huwa biss 5 megabytes. Jirriżulta 25 darba inqas. Iżda madankollu, it-talba titwettaq biss 4 darbiet aktar malajr. Iżda dan għaliex id-data hija sħuna. U kieku kien kiesaħ, probabbilment ikun 25 darba aktar mgħaġġel minħabba l-I/O tad-disk.

Mill-mod, jekk tistma kemm hu iżgħar dominju minn URL, jirriżulta li huwa madwar darbiet iżgħar 4. Iżda għal xi raġuni, id-dejta tieħu 25 darba inqas fuq id-diska. Għaliex? Minħabba l-kompressjoni. U l-URL huwa kkompressat, u d-dominju huwa kkompressat. Iżda ħafna drabi l-URL fih mazz ta 'żibel.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

U, ovvjament, huwa tajjeb li tuża t-tipi ta 'dejta t-tajbin li huma ddisinjati speċifikament għall-valuri mixtieqa jew li huma adattati. Jekk inti fl-IPv4, allura aħżen UInt32*. Jekk IPv6, allura FixedString(16), minħabba li l-indirizz IPv6 huwa 128 bit, jiġifieri maħżun direttament f'format binarju.

Imma x'jiġri jekk xi kultant ikollok indirizzi IPv4 u kultant IPv6? Iva, tista 'taħżen it-tnejn. Kolonna waħda għall-IPv4, oħra għall-IPv6. Naturalment, hemm għażla li jintwera IPv4 f'IPv6. Dan se jaħdem ukoll, imma jekk spiss ikollok bżonn indirizz IPv4 fit-talbiet, allura jkun sabiħ li tpoġġih f'kolonna separata.

* ClickHouse issa għandha tipi ta' dejta IPv4, IPv6 separati li jaħżnu d-dejta b'mod effiċjenti daqs in-numri, iżda jirrappreżentawhom b'mod konvenjenti daqs strings.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Huwa wkoll importanti li wieħed jinnota li ta 'min jipproċessa d-dejta minn qabel. Pereżempju, tirċievi xi zkuk mhux ipproċessati. U forsi m'għandekx tpoġġihom f'ClickHouse mill-ewwel, għalkemm huwa jitħajjar ħafna li ma tagħmel xejn u kollox jaħdem. Iżda xorta ta 'min iwettaq il-kalkoli li huma possibbli.

Per eżempju, verżjoni tal-brawżer. F'xi dipartiment fil-qrib, li ma rridx nippunta subgħajh lejh, il-verżjoni tal-browser hija maħżuna bħal din, jiġifieri, bħala string: 12.3. U mbagħad, biex jagħmlu rapport, jieħdu din is-sekwenza u jaqsmuha f'firxa, u mbagħad fl-ewwel element tal-firxa. Naturalment, kollox jonqos. Staqsejt għaliex jagħmlu dan. Huma qaluli li ma jħobbux l-ottimizzazzjoni prematura. U ma nħobbx il-pessimizzazzjoni prematura.

Allura f'dan il-każ ikun aktar korrett li taqsam f'4 kolonni. Tibżgħux hawn, għax dan huwa ClickHouse. ClickHouse hija database ta' kolonni. U l-kolonni żgħar aktar pulita, l-aħjar. Se jkun hemm 5 BrowserVersions, agħmel 5 kolonni. Dan tajjeb.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Issa ejja nħarsu lejn x'għandek tagħmel jekk għandek ħafna kordi twal ħafna, arrays twal ħafna. M'hemmx għalfejn jinħażnu fi ClickHouse xejn. Minflok, tista 'taħżen identifikatur biss fi ClickHouse. U poġġi dawn il-linji twal f'xi sistema oħra.

Pereżempju, wieħed mis-servizzi analitiċi tagħna għandu xi parametri tal-avveniment. U jekk hemm ħafna parametri għall-avvenimenti, aħna sempliċement insalvaw l-ewwel 512 li jiltaqgħu magħhom. Minħabba li 512 mhix ħasra.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

U jekk ma tistax tiddeċiedi dwar it-tipi ta 'dejta tiegħek, allura tista' wkoll tirreġistra d-dejta f'ClickHouse, iżda f'tabella temporanja tat-tip Log, speċjali għal dejta temporanja. Wara dan, tista 'tanalizza x'distribuzzjoni ta' valuri għandek hemmhekk, x'hemm b'mod ġenerali, u toħloq it-tipi korretti.

*ClickHouse issa għandha tip ta' dejta Kardinalità Baxxa li jippermettilek taħżen kordi b'mod effiċjenti b'inqas sforz.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Issa ejja nħarsu lejn każ ieħor interessanti. Xi drabi l-affarijiet jaħdmu stramba għan-nies. Jien nidħol u nara dan. U mill-ewwel jidher li dan sar minn xi amministratur intelliġenti u b'esperjenza kbira li għandu esperjenza estensiva fit-twaqqif tal-verżjoni MySQL 3.23.

Hawnhekk naraw elf tabella, li kull waħda minnhom tirreġistra l-bqija tad-diviżjoni ta 'min jaf xiex b'elf.

Fil-prinċipju, nirrispetta l-esperjenza ta’ nies oħrajn, inkluż il-fehim tat-tbatija li tista’ tinkiseb permezz ta’ din l-esperjenza.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

U r-raġunijiet huma xi ftit jew wisq ċari. Dawn huma sterjotipi antiki li setgħu akkumulaw waqt li kienu qed jaħdmu ma' sistemi oħra. Pereżempju, it-tabelli MyISAM m'għandhomx ċavetta primarja raggruppata. U dan il-mod ta 'diviżjoni tad-data jista' jkun tentattiv ddisprat biex tinkiseb l-istess funzjonalità.

Raġuni oħra hija li huwa diffiċli li tagħmel xi operazzjonijiet ta 'tibdil fuq imwejjed kbar. Kollox se jkun imblukkat. Għalkemm fil-verżjonijiet moderni tal-MySQL din il-problema m'għadhiex daqshekk serja.

Jew, pereżempju, microsharding, iżda aktar dwar dan aktar tard.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

M'hemmx għalfejn tagħmel dan f'ClickHouse, għaliex, l-ewwelnett, iċ-ċavetta primarja hija miġbura, id-data hija ordnata miċ-ċavetta primarja.

U kultant in-nies jistaqsuni: "Kif tvarja l-prestazzjoni tal-mistoqsijiet tal-firxa fi ClickHouse skont id-daqs tal-mejda?" Jien ngħid li ma tinbidel xejn. Pereżempju, għandek tabella b'biljun ringiela u taqra firxa ta 'miljun ringiela. Kollox sew. Jekk ikun hemm triljun ringiela f'tabella u taqra miljun ringiela, ikun kważi l-istess.

U, it-tieni, kull xorta ta 'affarijiet bħal diviżorji manwali mhumiex meħtieġa. Jekk tidħol u tħares lejn dak li hemm fuq is-sistema tal-fajls, tara li t-tabella hija ħaġa pjuttost kbira. U hemm xi ħaġa bħal diviżorji ġewwa. Jiġifieri, ClickHouse tagħmel kollox għalik u m'għandekx għalfejn tbati.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Ibdel f'ClickHouse huwa b'xejn jekk alter żid/waqqa' kolonna.

U m'għandekx tagħmel tabelli żgħar, għax jekk għandek 10 ringieli jew 10 ringieli f'tabella, allura ma jimpurtax xejn. ClickHouse hija sistema li tottimizza t-throughput, mhux latency, għalhekk ma jagħmilx sens li tipproċessa 000 linji.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Huwa korrett li tuża tabella waħda kbira. Neħles mill-isterjotipi qodma, kollox se jkun tajjeb.

U bħala bonus, fl-aħħar verżjoni issa għandna l-abbiltà li noħolqu ċavetta ta 'qsim arbitrarja sabiex twettaq kull xorta ta' operazzjonijiet ta 'manutenzjoni fuq diviżorji individwali.

Pereżempju, għandek bżonn ħafna tabelli żgħar, pereżempju, meta jkun hemm bżonn li tipproċessa xi dejta intermedja, tirċievi biċċiet u trid twettaq trasformazzjoni fuqhom qabel ma tikteb fit-tabella finali. Għal dan il-każ, hemm magna tal-mejda mill-isbaħ - StripeLog. Huwa tip ta 'TinyLog, biss aħjar.

* issa ClickHouse għandha wkoll input tal-funzjoni tal-mejda.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Antipattern ieħor huwa microsharding. Per eżempju, għandek bżonn shard data u għandek 5 servers, u għada se jkun hemm 6 servers. U taħseb dwar kif terġa 'tibbilanċja din id-dejta. U minflok tkisser mhux f'5 shards, iżda f'1 shards. U mbagħad timmappa kull wieħed minn dawn il-microshards għal server separat. U int se tikseb, pereżempju, 000 ClickHouses fuq server wieħed, pereżempju. Każijiet separati fuq portijiet separati jew databases separati.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Iżda dan mhux tajjeb ħafna fi ClickHouse. Minħabba li anke istanza waħda ta' ClickHouse tipprova tuża r-riżorsi kollha tas-server disponibbli biex tipproċessa talba waħda. Jiġifieri, għandek xi tip ta 'server u għandu, pereżempju, 56 proċessur core. Qed taħdem mistoqsija li tieħu sekonda u se tuża 56 core. U jekk poġġiet 200 ClickHouses hemm fuq server wieħed, allura jirriżulta li se jibdew 10 ħajt. B'mod ġenerali, kollox se jkun ħażin ħafna.

Raġuni oħra hija li d-distribuzzjoni tax-xogħol f'dawn l-istanzi se tkun irregolari. Xi wħud jispiċċaw qabel, xi wħud jispiċċaw aktar tard. Jekk dan kollu ġara f'każ wieħed, allura ClickHouse nnifisha tkun taf kif tqassam id-dejta b'mod korrett fost il-ħjut.

U raġuni oħra hija li jkollok komunikazzjoni bejn il-proċessuri permezz tat-TCP. Id-dejta se jkollha tiġi serializzata, deserialized, u dan huwa numru kbir ta 'microshards. Sempliċement mhux se jaħdem b'mod effettiv.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Antipattern ieħor, għalkemm ma tantx jista 'jissejjaħ antipattern. Dan huwa ammont kbir ta 'pre-aggregazzjoni.

B'mod ġenerali, pre-aggregazzjoni hija tajba. Kellek biljun ringiela, aggregajtu u saret 1 ringiela, u issa l-mistoqsija titwettaq istantanjament. Kollox huwa kbir. Tista' tagħmel dan. U għal dan, anke ClickHouse għandha tip ta 'tabella speċjali, AggregatingMergeTree, li twettaq aggregazzjoni inkrementali hekk kif id-dejta tiddaħħal.

Imma hemm drabi meta taħseb li se naggregaw data bħal din u naggregaw data bħal din. U f'xi dipartiment ġirien, ma rridx ngħid liema waħda, huma jużaw tabelli SummingMergeTree biex jiġbru fil-qosor mill-ċavetta primarja, u madwar 20 kolonna jintużaw bħala ċ-ċavetta primarja. Fil-każ, biddilt l-ismijiet ta 'xi kolonni għas-segretezza, iżda dan huwa pjuttost.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

U problemi bħal dawn jinqalgħu. L-ewwelnett, il-volum tad-dejta tiegħek ma jonqosx wisq. Pereżempju, jonqos bi tliet darbiet. Tliet darbiet ikun prezz tajjeb biex taffordja l-kapaċitajiet analitiċi illimitati li jinqalgħu jekk id-dejta tiegħek ma tkunx aggregata. Jekk id-dejta hija aggregata, allura minflok l-analitika ikollok biss statistika pitiful.

U x'hemm hekk speċjali dwar dan? Il-fatt hu li dawn in-nies mid-dipartiment ġirien kultant imorru u jitolbu biex iżidu kolonna oħra maċ-ċavetta primarja. Jiġifieri aggregajna d-dejta bħal din, iżda issa rridu ftit aktar. Iżda ClickHouse m'għandhiex ċavetta primarja ta' tibdil. Għalhekk, irridu niktbu xi skripts f'C++. U ma nħobbx l-iskripts, anke jekk ikunu f'C++.

U jekk tħares lejn għalxiex inħoloq ClickHouse, allura data mhux aggregata hija eżattament ix-xenarju li għalih twieldet. Jekk qed tuża ClickHouse għal data mhux aggregata, allura qed tagħmel dan sewwa. Jekk inti aggregat, dan huwa kultant maħfur.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Każ ieħor interessanti huwa mistoqsijiet f'linja infinita. Xi drabi mmur f'xi server tal-produzzjoni u nħares lejn il-lista tal-proċessi tal-ispettaklu hemmhekk. U kull darba niskopri li qed tiġri xi ħaġa terribbli.

Per eżempju, bħal dan. Mill-ewwel jidher ċar li kollox jista’ jsir f’talba waħda. Ikteb biss l-url u l-lista hemmhekk.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Għaliex ħafna mistoqsijiet bħal dawn f'linja bla tarf huma ħżiena? Jekk indiċi ma jintużax, allura jkollok ħafna passes fuq l-istess data. Imma jekk jintuża l-indiċi, pereżempju, għandek ċavetta primarja għal ru u tikteb url = xi ħaġa hemmhekk. U taħseb li jekk tinqara URL wieħed biss mit-tabella, kollox ikun tajjeb. Imma fil-fatt le. Minħabba li ClickHouse jagħmel kollox f'lottijiet.

Meta jkollu bżonn jaqra ċertu firxa ta 'dejta, jaqra ftit aktar, minħabba li l-indiċi f'ClickHouse huwa skars. Dan l-indiċi ma jippermettix li ssib ringiela individwali waħda fit-tabella, biss firxa ta 'xi tip. U d-dejta hija kkompressata fi blokki. Sabiex taqra linja waħda, trid tieħu l-blokka kollha u tħollha. U jekk qed tagħmel ħafna mistoqsijiet, ikollok ħafna koinċidenza, u jkollok ħafna xogħol x'tagħmel għal darb'oħra.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

U bħala bonus, tista 'tinnota li f'ClickHouse m'għandekx tibża' tittrasferixxi anke megabytes u anke mijiet ta 'megabytes għat-taqsima IN. Niftakar mill-prattika tagħna li jekk fil-MySQL nittrasferixxu mazz ta 'valuri għat-taqsima IN, pereżempju, nittrasferixxu 100 megabytes ta' xi numri hemmhekk, allura MySQL jiekol 10 gigabytes ta 'memorja u ma jiġrilu xejn aktar, kollox jaħdem ħażin.

U t-tieni hija li f'ClickHouse, jekk il-mistoqsijiet tiegħek jużaw indiċi, allura dejjem mhux aktar bil-mod minn skan sħiħ, jiġifieri jekk għandek bżonn taqra kważi t-tabella kollha, tmur sekwenzjali u taqra t-tabella kollha. B'mod ġenerali, hu se jsibha waħdu.

Iżda madankollu hemm xi diffikultajiet. Pereżempju, il-fatt li IN b'subquery ma jużax l-indiċi. Iżda din hija l-problema tagħna u rridu nirranġawha. M'hemm xejn fundamentali hawn. Aħna ser nirranġawha*.

U ħaġa oħra interessanti hija li jekk għandek talba twila ħafna u l-ipproċessar tat-talba mqassma jkun għaddej, allura din it-talba twila ħafna tintbagħat lil kull server mingħajr kompressjoni. Per eżempju, 100 megabytes u 500 servers. U, għalhekk, ser ikollok 50 gigabytes trasferiti fuq in-netwerk. Se tiġi trażmessa u mbagħad kollox jitlesta b'suċċess.

* diġà qed tuża; Kollox kien irranġat kif imwiegħed.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

U każ pjuttost komuni huwa meta t-talbiet jiġu mill-API. Per eżempju, inti ħloqt xi tip ta 'servizz tiegħek. U jekk xi ħadd ikollu bżonn is-servizz tiegħek, allura tiftaħ l-API u litteralment jumejn wara tara li qed tiġri xi ħaġa li ma tinftiehemx. Kollox huwa mgħobbi żżejjed u qed jidħlu xi talbiet terribbli li qatt ma kellhom iseħħu.

U hemm soluzzjoni waħda biss. Jekk ftaħt l-API, allura jkollok taqtagħha. Pereżempju, daħħal xi tip ta’ kwoti. M'hemm l-ebda għażliet normali oħra. Inkella, immedjatament jiktbu skript u jkun hemm problemi.

U ClickHouse għandha karatteristika speċjali - il-kalkolu tal-kwota. Barra minn hekk, tista 'tittrasferixxi ċ-ċavetta tal-kwota tiegħek. Dan huwa, pereżempju, l-ID tal-utent intern. U l-kwoti se jiġu kkalkulati b'mod indipendenti għal kull wieħed minnhom.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Issa ħaġa oħra interessanti. Din hija replikazzjoni manwali.

Naf b'ħafna każijiet fejn, minkejja li ClickHouse għandha appoġġ ta' replikazzjoni inkorporat, in-nies jirreplikaw ClickHouse manwalment.

X'inhu l-prinċipju? Għandek pipeline għall-ipproċessar tad-dejta. U jaħdem b'mod indipendenti, pereżempju, f'ċentri tad-dejta differenti. Tikteb l-istess data bl-istess mod fi ClickHouse. Veru, il-prattika turi li d-dejta xorta se tkun differenti minħabba xi karatteristiċi fil-kodiċi tiegħek. Nispera li jkun f'idejk.

U minn żmien għal żmien xorta jkollok tissinkronizza manwalment. Per eżempju, darba fix-xahar l-amministraturi jagħmlu rsync.

Fil-fatt, huwa ħafna aktar faċli li tuża r-replikazzjoni mibnija fi ClickHouse. Iżda jista 'jkun hemm xi kontra-indikazzjonijiet, għaliex għal dan għandek bżonn tuża ZooKeeper. Mhux se ngħid xejn ħażin dwar ZooKeeper, fil-prinċipju, is-sistema taħdem, iżda jiġri li n-nies ma jużawhiex minħabba java-phobia, għax ClickHouse hija sistema daqshekk tajba, miktuba f'C++, li tista' tużaha u kollox se jkun tajjeb. U ZooKeeper huwa java. U b'xi mod lanqas trid tfittex, imma mbagħad tista 'tuża replikazzjoni manwali.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

ClickHouse hija sistema prattika. Hija tqis il-bżonnijiet tiegħek. Jekk għandek replikazzjoni manwali, allura tista 'toħloq tabella Mqassma li tħares lejn ir-repliki manwali tiegħek u tagħmel failover bejniethom. U hemm anke għażla speċjali li tippermettilek tevita l-flops, anke jekk il-linji tiegħek jiddiverġu b'mod sistematiku.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Jistgħu jinqalgħu aktar problemi jekk tuża magni tal-mejda primittivi. ClickHouse huwa kostruttur li għandu mazz ta 'magni differenti tal-mejda. Għall-każijiet serji kollha, kif miktub fid-dokumentazzjoni, uża tabelli mill-familja MergeTree. U l-bqija kollha - dan huwa hekk, għal każijiet individwali jew għal testijiet.

F'tabella MergeTree, m'għandekx bżonn li jkollok data u ħin. Inti xorta tista 'tużah. Jekk ma jkunx hemm data u ħin, ikteb li l-inadempjenza hija 2000. Dan se jaħdem u mhux se jeħtieġ riżorsi.

U fil-verżjoni l-ġdida tas-server, tista 'saħansitra tispeċifika li għandek partizzjoni personalizzata mingħajr ċavetta tal-partizzjoni. Se jkun l-istess.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Min-naħa l-oħra, tista 'tuża magni tal-mejda primittivi. Per eżempju, imla d-data darba u ara, idawwar u ħassar. Tista' tuża Log.

Jew il-ħażna ta 'volumi żgħar għall-ipproċessar intermedju huwa StripeLog jew TinyLog.

Il-memorja tista 'tintuża jekk l-ammont ta' data huwa żgħir u tista 'sempliċement twiddle xi ħaġa fir-RAM.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

ClickHouse ma tantx tħobb id-dejta rinormalizzata.

Hawn eżempju tipiku. Dan huwa numru kbir ta 'URLs. Tpoġġihom fit-tabella li jmiss. U mbagħad iddeċidew li jagħmlu JOIN magħhom, iżda dan mhux se jaħdem, bħala regola, minħabba li ClickHouse jappoġġja biss Hash JOIN. Jekk ma jkunx hemm biżżejjed RAM għal ħafna dejta li trid tiġi konnessa, allura JOIN ma taħdimx*.

Jekk id-dejta hija ta 'kardinalità għolja, allura tinkwetax, aħżinha f'forma denormalizzata, l-URLs huma direttament f'posthom fit-tabella prinċipali.

* u issa ClickHouse għandha wkoll merge join, u taħdem f'kundizzjonijiet fejn id-dejta intermedja ma tidħolx fir-RAM. Iżda dan huwa ineffettiv u r-rakkomandazzjoni tibqa' fis-seħħ.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Ftit eżempji oħra, imma diġà niddubita jekk humiex kontra l-mudell jew le.

ClickHouse għandha difett wieħed magħruf. Ma jafx kif jaġġorna*. F'ċerti modi, dan huwa saħansitra tajjeb. Jekk għandek xi dejta importanti, pereżempju, il-kontabilità, allura ħadd ma jkun jista 'jibgħatha, minħabba li m'hemm l-ebda aġġornamenti.

* L-appoġġ għall-aġġornament u t-tħassir fil-modalità tal-lott ġie miżjud żmien twil ilu.

Iżda hemm xi modi speċjali li jippermettu aġġornamenti bħallikieku fl-isfond. Per eżempju, tabelli bħal ReplaceMergeTree. Huma jagħmlu aġġornamenti waqt amalgamazzjonijiet fl-isfond. Tista 'sfurzaw dan billi tuża ottimizza tabella. Imma m'għandekx tagħmel dan ta 'spiss wisq, għax se tikteb kompletament fuq il-partizzjoni.

Il-JOINs imqassma f'ClickHouse huma wkoll immaniġġjati ħażin mill-pjanifikatur tal-mistoqsijiet.

Ħażin, imma kultant Ok.

Uża ClickHouse biss biex taqra d-dejta lura billi tuża select*.

Ma nirrakkomandax li tuża ClickHouse għal kalkoli ingombranti. Iżda dan mhux għal kollox minnu, għax diġà qed nitbiegħdu minn din ir-rakkomandazzjoni. U dan l-aħħar żidna l-abbiltà li napplikaw mudelli ta’ tagħlim tal-magni fi ClickHouse - Catboost. U jdejjaqni għax naħseb, “X’orrur. Dan huwa kemm ċikli għal kull byte jirriżulta! Verament ddejjaqni naħli arloġġi fuq bytes.

Użu effettiv ta' ClickHouse. Alexey Milovidov (Yandex)

Imma tibżax, installa ClickHouse, kollox se jkun tajjeb. Jekk xejn, għandna komunità. Mill-mod, il-komunità int. U jekk għandek xi problemi, tista 'mill-inqas tmur iċ-chat tagħna, u nisperaw li jgħinuk.

mistoqsijiet

Grazzi tar-rapport! Fejn nista' nilmenta dwar il-ħabta ta' ClickHouse?

Tista' tilmenta miegħi personalment issa.

Dan l-aħħar bdejt nuża ClickHouse. I immedjatament niżel l-interface cli.

X'punteġġ.

Ftit wara ġġarraf is-server b'għażla żgħira.

Għandek talent.

Ftaħt bug GitHub, iżda ġie injorat.

Issa naraw.

Alexey qarraqni biex nattendi r-rapport, u wiegħed li jgħidli kif taċċessa d-dejta ġewwa.

Sempliċi ħafna.

Irrealizzajt dan ilbieraħ. Aktar ispeċifiċitajiet.

M'hemm l-ebda tricks terribbli hemmhekk. Hemm biss kompressjoni blokka b'blokka. In-nuqqas huwa LZ4, tista 'tippermetti ZSTD*. Blokki minn 64 kilobytes għal 1 megabyte.

* hemm ukoll appoġġ għal codecs ta 'kompressjoni speċjalizzati li jistgħu jintużaw f'katina ma' algoritmi oħra.

Il-blokki huma biss dejta mhux ipproċessata?

Mhux kompletament nej. Hemm arrays. Jekk għandek kolonna numerika, allura n-numri f'ringiela jitqiegħdu f'firxa.

Huwa ċar.

Alexey, eżempju li kien ma 'uniqExact over IPs, jiġifieri l-fatt li uniqExact jieħu aktar żmien biex jikkalkula bil-linji milli bin-numri, eċċ. X'jiġri jekk nużaw finta ma' widnejna u mitfugħa fil-ħin tal-qari tal-provi? Jiġifieri jidher li għedt li fuq id-diska tagħna mhix differenti ħafna. Jekk naqraw linji minn disk u mitfugħa, l-aggregati tagħna jkunu aktar mgħaġġla jew le? Jew xorta se nirbħu ftit hawn? Jidhirli li ttestjajt dan, iżda għal xi raġuni ma indikatx fil-benchmark.

Naħseb li se jkun aktar bil-mod milli mingħajr casting. F'dan il-każ, l-indirizz IP għandu jiġi parsed mis-sekwenza. Naturalment, fi ClickHouse, l-analiżi tal-indirizz IP tagħna hija wkoll ottimizzata. Ippruvajna ħafna, imma hemm għandek in-numri miktuba f'forma ta' għaxart elef. Skomdu ħafna. Min-naħa l-oħra, il-funzjoni uniqExact se taħdem aktar bil-mod fuq kordi, mhux biss minħabba li dawn huma kordi, iżda wkoll minħabba li tintgħażel speċjalizzazzjoni differenti tal-algoritmu. Il-kordi huma sempliċement ipproċessati b'mod differenti.

X'jiġri jekk nieħdu tip ta 'dejta aktar primittiv? Per eżempju, aħna ktibna l-id tal-utent, li għandna, ktibna bħala linja, u mbagħad scrambledha, se tkun aktar pjaċevoli jew le?

Niddubita. Naħseb li se jkun saħansitra aktar imdejjaq, għax wara kollox, l-analiżi tan-numri hija problema serja. Jidhirli li dan il-kollega saħansitra ta rapport dwar kemm hu diffiċli li jiġu analizzati n-numri f’forma ta’ għaxart elef, imma forsi le.

Alexey, grazzi ħafna għar-rapport! U grazzi ħafna għal ClickHouse! Għandi mistoqsija dwar il-pjanijiet. Hemm xi pjanijiet għal karatteristika biex taġġorna d-dizzjunarji b'mod mhux komplut?

Jiġifieri reboot parzjali?

Iva Iva. Bħall-abbiltà li tissettja qasam MySQL hemmhekk, jiġifieri taġġorna wara sabiex din id-dejta biss titgħabba jekk id-dizzjunarju huwa kbir ħafna.

Karatteristika interessanti ħafna. U naħseb li xi persuna ssuġġerietha fiċ-chat tagħna. Forsi kont anke int.

Ma naħsibx hekk.

Kbir, issa jirriżulta li hemm żewġ talbiet. U bil-mod tista 'tibda tagħmel dan. Imma rrid inwissik minnufih li din il-karatteristika hija pjuttost sempliċi biex timplimenta. Jiġifieri, fit-teorija, għandek bżonn biss li tikteb in-numru tal-verżjoni fit-tabella u mbagħad tikteb: verżjoni inqas minn tali u tali. Dan ifisser li, wisq probabbli, se noffru dan lid-dilettanti. Inti entużjast?

Iva, iżda, sfortunatament, mhux f'C++.

Il-kollegi tiegħek jafu kif jiktbu f'C++?

Insib lil xi ħadd.

Kbir*.

* il-karatteristika ġiet miżjuda xahrejn wara r-rapport - l-awtur tal-mistoqsija żviluppaha u bagħat tiegħu tiġbed it-talba.

Grazzi!

Bongu! Grazzi tar-rapport! Semmejt li ClickHouse hija tajba ħafna biex tikkonsma r-riżorsi kollha disponibbli għaliha. U l-kelliem ħdejn Luxoft tkellem dwar is-soluzzjoni tiegħu għal Russian Post. Qal li għoġobhom ħafna ClickHouse, iżda ma użawhx minflok il-kompetitur ewlieni tagħhom proprju għax kien qed jiekol is-CPU kollha. U ma setgħux idaħħluh fl-arkitettura tagħhom, fiż-ZooKeeper tagħhom ma 'dockers. Huwa possibbli li b'xi mod tillimita ClickHouse sabiex ma tikkonsmax dak kollu li jsir disponibbli għaliha?

Iva, huwa possibbli u faċli ħafna. Jekk trid tikkonsma inqas qlub, imbagħad ikteb biss set max_threads = 1. U dak hu, se jesegwixxi t-talba f'qalba waħda. Barra minn hekk, tista 'tispeċifika settings differenti għal utenti differenti. Allura l-ebda problema. U għid lill-kollegi tiegħek minn Luxoft li mhux tajjeb li ma sabux dan is-setting fid-dokumentazzjoni.

Alexey, bonjour! Nixtieq nistaqsi dwar din il-mistoqsija. Din mhix l-ewwel darba li smajt li ħafna nies qed jibdew jużaw ClickHouse bħala ħażna għal zkuk. Fir-rapport għidt li ma tagħmilx dan, jiġifieri m'għandekx bżonn taħżen kordi twal. X'taħseb dwarha?

L-ewwelnett, zkuk huma, bħala regola, mhux kordi twal. Hemm, ovvjament, eċċezzjonijiet. Per eżempju, xi servizz miktub fil-java throws eċċezzjoni, huwa logged. U l-bqija f'linja bla tarf, u l-ispazju fuq il-hard drive jispiċċa. Is-soluzzjoni hija sempliċi ħafna. Jekk il-linji huma twal ħafna, imbagħad aqtagħhom. Xi jfisser twil? Għexieren ta’ kilobytes huma ħżiena*.

* fl-aħħar verżjonijiet ta 'ClickHouse, hija attivata "granularità ta' indiċi adattiva", li telimina l-problema tal-ħażna ta 'ringieli twal fil-biċċa l-kbira.

Kilobyte huwa normali?

Huwa normali.

Bongu! Grazzi tar-rapport! Diġà staqsejt dwar dan fiċ-chat, imma ma niftakarx jekk irċevejtx tweġiba. Hemm pjanijiet biex b'xi mod tespandi s-sezzjoni WITH bil-mod ta 'CTE?

Mhux għal issa. Is-sezzjoni WITH tagħna hija kemmxejn frivola. Huwa bħal karatteristika żgħira għalina.

Fhimt. Grazzi!

Grazzi tar-rapport! Interessanti hafna! Mistoqsija globali. Hemm xi pjanijiet biex timmodifika t-tħassir tad-dejta, forsi fil-forma ta 'xi tip ta' stubs?

Neċessarjament. Dan huwa l-ewwel kompitu tagħna fil-kju tagħna. Issa qed naħsbu b'mod attiv dwar kif nagħmlu kollox b'mod korrett. U għandek tibda tagħfas it-tastiera*.

* ippressat il-buttuni fuq it-tastiera u għamel kollox.

Dan se jaffettwa b'xi mod il-prestazzjoni tas-sistema jew le? L-inserzjoni se tkun malajr daqs issa?

Forsi t-tħassir infushom u l-aġġornamenti nfushom se jkunu tqal ħafna, iżda dan mhux se jaffettwa l-prestazzjoni tal-jagħżel jew il-prestazzjoni tal-inserzjonijiet.

U mistoqsija żgħira oħra. Fil-preżentazzjoni tkellimt dwar iċ-ċavetta primarja. Għaldaqstant, għandna qsim, li huwa kull xahar awtomatikament, korrett? U meta nissettjaw firxa ta 'data li tidħol f'xahar, allura din il-partizzjoni tinqara biss, hux?

Iva.

Mistoqsija. Jekk ma nistgħux nagħżlu l-ebda ċavetta primarja, allura huwa korrett li nagħmluha speċifikament skont il-qasam "Data" sabiex fl-isfond ikun hemm inqas riarranġament ta 'din id-dejta sabiex taqbel b'mod aktar ordnat? Jekk m'għandekx mistoqsijiet tal-firxa u lanqas tista' tagħżel xi ċavetta primarja, ta' min ipoġġi data fiċ-ċavetta primarja?

Iva.

Forsi jagħmel sens li tpoġġi qasam fiċ-ċavetta primarja li tikkompressa d-dejta aħjar jekk tiġi magħżula minn dan il-qasam. Pereżempju, ID tal-utent. L-utent, pereżempju, imur fl-istess sit. F'dan il-każ, poġġi l-id tal-utent u l-ħin. U mbagħad id-dejta tiegħek tkun ikkompressata aħjar. Fir-rigward tad-data, jekk verament m'għandekx u qatt ma għandek mistoqsijiet dwar il-firxa tad-dati, allura m'għandekx għalfejn tpoġġi d-data fiċ-ċavetta primarja.

OK grazzi ħafna!

Sors: www.habr.com

Żid kumment