Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Kaha ClickHouse ke tsamaiso e khethehileng, ha u e sebelisa ke habohlokoa ho ela hloko likarolo tsa mohaho oa eona. Tlalehong ena, Alexey o tla bua ka mehlala ea liphoso tse tloaelehileng ha u sebelisa ClickHouse, e ka lebisang mosebetsing o sa sebetseng. Mehlala e sebetsang e tla bontša kamoo ho khetha sekema se le seng kapa se seng sa ts'ebetso ea data ho ka fetolang ts'ebetso ka litaelo tsa boholo.

Lumelang bohle! Lebitso la ka ke Alexey, ke etsa ClickHouse.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Ntlha ea pele, ke potlakela ho u khahlisa hang-hang, kajeno nke ke ka u bolella hore na ClickHouse ke eng. Ho bua 'nete, ke khathetse ke eona. Nako le nako ha ke le bolella hore na ke eng. 'Me mohlomong bohle ba se ba ntse ba tseba.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Ho e-na le hoo, ke tla u bolella hore na ho na le liphoso life, ke hore, u ka sebelisa ClickHouse joang ka mokhoa o fosahetseng. Ha e le hantle, ha ho hlokahale hore u tšohe, hobane re ntse re ntlafatsa ClickHouse e le mokhoa o bonolo, o bonolo, o sebetsang ka ntle ho lebokose. Ke e kentse, ha ho na mathata.

Empa u ntse u lokela ho ela hloko hore tsamaiso ena e khethehile 'me u ka fumana habonolo nyeoe e sa tloaelehang ea tšebeliso e tla tlosa tsamaiso ena sebakeng sa eona sa matšeliso.

Joale, ho na le rake ea mofuta ofe? Haholo-holo ke tla bua ka lintho tse hlakileng. Ntho e 'ngoe le e' ngoe e totobetse ho bohle, bohle ba utloisisa ntho e 'ngoe le e' ngoe 'me ba ka thabela hore ba bohlale haholo,' me ba sa utloisiseng ba tla ithuta ntho e ncha.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Mohlala oa pele le o bonolo ka ho fetisisa, oo, ka bomalimabe, o atisang ho etsahala, ke palo e kholo ea ho kenngoa ka lihlopha tse nyenyane, ke hore palo e kholo ea ho kenya lintho tse nyenyane.

Haeba re nahana ka tsela eo ClickHouse e kenyang ka eona, o ka romella bonyane terabyte ea data ka kopo e le 'ngoe. Ha se bothata.

Mme ha re boneng hore na ts'ebetso e tloaelehileng e ka ba efe. Ka mohlala, re na le tafole e tsoang ho Yandex.Metrica data. Hits. 105 litšiea tse ling. Li-byte tse 700 tse sa hatelletsoeng. 'Me re tla kenya ka mokhoa o motle ka lihlopha tsa mela e milione.

Re kenya MergeTree tafoleng, e hlahisa mela e halofo ea milione ka motsotsoana. E kholo. Tafoleng e kopilitsoeng e tla ba nyane hanyane, mela e ka bang 400 motsotsoana.

'Me haeba u nolofalletsa ho kenya quorum, u fumana ho fokotseha hanyenyane, empa ho ntse ho sebetsa hantle, mantsoe a 250 ka motsotsoana. Ho kenya quorum ke karolo e sa ngolisoang ka har'a ClickHouse*.

* ho tloha ka 2020, e seng e ngotsoe.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Ho etsahala'ng haeba u etsa ntho e mpe? Re kenya mola o le mong tafoleng ea MergeTree mme re fumana mela e 59 motsotsoana. Ke makhetlo a 10 butle. Ho ReplicatedMergeTree - mela e 000 motsotsoana. 'Me haeba quorum e buletsoe, joale e hlahisa mela e 6 motsotsoana. Ka maikutlo a ka, ena ke mofuta o mong oa bohlanya bo felletseng. U ka khoehlisa joang joalo? Ke bile ke e ngotse ho T-shirt ea ka hore ClickHouse ha ea lokela ho fokotsa lebelo. Empa leha ho le joalo ho etsahala ka linako tse ling.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Ha e le hantle, sena ke bofokoli ba rona. Re ka be re entse hore ntho e 'ngoe le e' ngoe e sebetse hantle habonolo, empa ha rea ​​ka ra etsa joalo. 'Me ha rea ​​e etsa hobane script ea rona e ne e sa e hloke. Re ne re se re e-na le libuche. Re sa tsoa fumana li-batches monyako oa rona, 'me ha ho na mathata. Re e kenya mme tsohle li sebetsa hantle. Empa, ha e le hantle, mefuta eohle ea maemo a ka khoneha. Mohlala, ha o na le sehlopha sa li-server tseo data e hlahisoang ho tsona. 'Me ha ba kenye data hangata, empa ba ntse ba qetella ba e-na le ho kenya khafetsa. Mme re lokela ho qoba sena ka tsela e itseng.

Ho latela pono ea tekheniki, ntlha ke hore ha o kenya ho ClickHouse, data ha e qetelle e le nthong efe kapa efe e hopolehang. Ha re na le mohaho oa sebele oa log MergeTree, empa ke MergeTree feela, hobane ha ho na log kapa memTable. Re ngola hang-hang data ho sistimi ea faele, e seng e hlophisitsoe ka likholomo. 'Me haeba u na le litšiea tse 100, joale lifaele tse fetang 200 li tla hloka ho ngolloa bukeng e fapaneng. Tsena tsohle li boima haholo.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

'Me potso e hlaha: "U ka e etsa joang hantle?" Haeba boemo bo le joalo hoo u ntseng u hloka ho rekota data ka tsela e itseng ho ClickHouse.

Mokhoa oa 1. Ena ke eona tsela e bonolo ka ho fetisisa. Sebelisa mofuta o itseng oa mokoloko o arotsoeng. Ka mohlala, Kafka. U ntša feela data ho Kafka ebe u e kopanya hang ka motsotsoana. 'Me tsohle li tla loka, u rekota, tsohle li sebetsa hantle.

Mefokolo ke hore Kafka ke sistimi e 'ngoe e ajoang ka bongata. Ke boetse ke utloisisa hore na u se u ntse u e-na le Kafka k'hamphaning ea hau. E ntle, e loketse. Empa haeba e le sieo, joale u lokela ho nahana ka makhetlo a mararo pele u hula tsamaiso e 'ngoe hape e ajoang morerong oa hau. 'Me kahoo ho bohlokoa ho nahana ka mekhoa e meng.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Mokhoa oa 2. Ena ke mokhoa o mong oa sekolo sa khale 'me ka nako e ts'oanang o bonolo haholo. Na u na le mofuta o mong oa seva o hlahisang li-log tsa hau. 'Me e ngola feela lintlha tsa hau ho faele. 'Me hang ka motsotsoana, mohlala, re reha faele ena hape ebe re tabola e ncha. Mme mongolo o arohaneng, ebang ke ka cron kapa daemon e 'ngoe, o nka faele ea khale ka ho fetisisa ebe o e ngolla ClickHouse. Haeba u rekota li-log hang ka motsotsoana, joale tsohle li tla loka.

Empa bothata ba mokhoa ona ke hore haeba seva sa hau seo li-logs li hlahisoang ho sona se nyamela kae-kae, joale data e tla boela e nyamele.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Mokhoa oa 3. Ho na le mokhoa o mong o thahasellisang, o sa hlokeng lifaele tsa nakoana ho hang. Mohlala, o na le mofuta o mong oa spinner ea papatso kapa daemon e 'ngoe e khahlisang e hlahisang data. Mme o ka bokella bongata ba data ka kotloloho ho RAM, ho buffer. 'Me ha nako e lekaneng e se e fetile, u behella buffer ena ka thōko, u thehe e ncha,' me ka khoele e arohaneng, kenya se seng se bokelletse ho ClickHouse.

Ka lehlakoreng le leng, data e boetse e nyamela ka ho bolaea -9. Haeba seva ea hau e senyeha, u tla lahleheloa ke data ena. 'Me bothata bo bong ke hore haeba u sa khone ho ngolla database, data ea hau e tla bokella RAM. Mme mohlomong RAM e tla fela, kapa o tla lahleheloa ke data feela.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Mokhoa oa 4. Mokhoa o mong o thahasellisang. Na u na le mofuta o itseng oa ts'ebetso ea seva. Mme e ka romella data ho ClickHouse hang-hang, empa e e etse ka khokahano e le 'ngoe. Ka mohlala, ke rometse kopo ea http ka ho fetisa-encoding: chunked ka kenya. 'Me e hlahisa likotoana eseng ka seoelo, o ka romella mohala o mong le o mong, leha ho tla ba le holimo bakeng sa ho theha data ena.

Leha ho le joalo, tabeng ena lintlha li tla romelloa ho ClickHouse hang-hang. 'Me ClickHouse e tla li thibela ka boeona.

Empa mathata a boetse a hlaha. Hona joale o tla lahleheloa ke data, ho kenyelletsa le ha ts'ebetso ea hau e bolaoa le haeba ts'ebetso ea ClickHouse e bolaoa, hobane e tla be e sa phethehe. Mme ho ClickHouse tse kentsoeng li atomic ho fihla moeling o itseng o boletsoeng ka boholo ba mela. Ha e le hantle, ena ke tsela e thahasellisang. E ka boela ea sebelisoa.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Mokhoa oa 5. Mona ke mokhoa o mong o thahasellisang. Ena ke mofuta o mong oa seva e ntlafalitsoeng ke sechaba bakeng sa ho bokella data. Ha ke e-s'o e shebe, kahoo nke ke ka tiisa letho. Leha ho le joalo, ha ho na litiiso tse fanoeng bakeng sa ClickHouse ka boeona. Hona hape ke mohloli o bulehileng, empa ka lehlakoreng le leng, o kanna oa sebelisoa ho latela maemo a mang a boleng ao re lekang ho fana ka ona. Empa bakeng sa ntho ena - ha ke tsebe, e-ea ho GitHub, sheba khoutu. Mohlomong ba ngotse ntho e tloaelehileng.

* ho tloha ka 2020, le eona e lokela ho ekeletsoa ho nahanoa KittenHouse.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Mokhoa oa 6. Mokhoa o mong ke oa ho sebelisa litafole tsa Buffer. Molemo oa mokhoa ona ke hore ho bonolo haholo ho qala ho o sebelisa. Theha tafole ea Buffer ebe u e kenya ho eona.

Bothata ke hore bothata ha bo rarolloe ka ho feletseng. Haeba, ka sekhahla se kang sa MergeTree, u tlameha ho hlophisa data ka betch e le 'ngoe motsotsoana, joale ka sekhahla tafoleng ea buffer, u hloka ho hlophisa bonyane ho isa ho likete tse' maloa motsotsoana. Haeba e feta 10 ka motsotsoana, e tla be e ntse e le mpe. 'Me haeba u e kenya ka lihlopha, joale u bone hore e fetoha mela e likete tse lekholo ka motsotsoana. 'Me sena se se se ntse se le ho data e boima haholo.

Hape, litafole tsa buffer ha li na log. 'Me haeba ho na le ho hong ho phoso ka seva sa hau, joale data e tla lahleha.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

'Me joalo ka bonase, re sa tsoa fumana monyetla ho ClickHouse ho khutlisa data ho tsoa Kafka. Ho na le enjene ea tafole - Kafka. U etsa feela. 'Me u ka fanyeha litšoantšiso tsa nama ho eona. Tabeng ena, e tla ntša data ho tloha Kafka ebe e kenya litafoleng tseo u li hlokang.

Mme se khahlisang haholo ka monyetla ona ke hore ha se rona ba o entseng. Ena ke tšobotsi ea sechaba. 'Me ha ke re "tšobotsi ea sechaba," ke e bolela ntle le nyatso. Re balile khoutu, re entse tlhahlobo, e lokela ho sebetsa hantle.

* ho tloha ka 2020, tšehetso e tšoanang e hlahile bakeng sa MmutlaMQ.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Ke eng hape e ka bang khathatso kapa e sa lebelloang ha u kenya data? Haeba o etsa kopo ea boleng ba ho kenya le ho ngola mantsoe a baloang ka boleng. Ka mohlala, hona joale () le eona ke polelo e baloang. 'Me tabeng ena, ClickHouse e qobelloa ho qala mofetoleli oa lipolelo tsena moleng o mong le o mong, 'me tshebetso e tla theoha ka litaelo tsa boholo. Ho molemo ho qoba sena.

* hajoale, bothata bo rarollotsoe ka botlalo, ha ho sa na ho fokotseha ha ts'ebetso ha ho sebelisoa lipolelo ho VALUES.

Mohlala o mong ke ha ho ka ba le mathata ha o na le data ho beche e le 'ngoe eo e leng ea sehlopha sa likarolo. Ka ho sa feleng, likarolo tsa ClickHouse li etsoa ka khoeli. 'Me haeba u kenya batch ea mela e milione,' me ho na le data bakeng sa lilemo tse 'maloa, joale u tla ba le likarolo tse' maloa moo. 'Me sena se lekana le taba ea hore ho tla ba le lihlopha tse nyenyane ka makhetlo a mashome a mabeli, hobane ka hare li lula li arotsoe ka likaroloana.

* Haufinyane tjena, ka mokhoa oa liteko, ClickHouse e kentse tšehetso bakeng sa sebopeho se kopaneng sa li-chunks le li-chunks ho RAM ka log-ahead log, e batlang e rarolla bothata ka botlalo.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Joale a re shebeng mofuta oa bobeli oa bothata - ho ngola data.

Ho ngola lintlha ho ka ba thata kapa ka khoele. String ke ha u qeta ho e nka 'me u phatlalatsa hore masimo ohle a hau ke a mofuta oa khoele. Sena sea nyahamisa. Ha ho hlokahale ho etsa sena.

Ha re boneng hore na re ka e etsa joang ka nepo maemong ao ha u batla ho re re na le tšimo e itseng, khoele, 'me ClickHouse e iketsetse eona,' me nke ke ka ikhathatsa. Empa ho ntse ho le molemo ho etsa boiteko bo itseng.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Ka mohlala, re na le aterese ea IP. Ketsahalong e 'ngoe, re e bolokile e le khoele. Ka mohlala, 192.168.1.1. 'Me tabeng e' ngoe, e tla ba palo ea mofuta oa UInt32 *. 32 bits e lekane aterese ea IPv4.

Taba ea pele, ka mokhoa o makatsang, data e tla hatelloa ka ho lekana. Ho tla ba le phapang, ehlile, empa e seng kholo hakaalo. Kahoo ha ho na mathata a khethehileng ka disk I / O.

Empa ho na le phapang e kholo nakong ea processor le nako ea ho etsa lipotso.

Ha re bale palo ea liaterese tse ikhethang tsa IP haeba li bolokiloe e le linomoro. Seo se sebetsa ho mela e limilione tse 137 motsotsoana. Haeba e tšoanang e le ka mokhoa oa likhoele, joale mela e limilione tse 37 ka motsotsoana. Ha ke tsebe hore na ke hobane'ng ha ketsahalo ena e etsahetse. Ke ile ka phethahatsa likōpo tsena ka bonna. Empa leha ho le joalo ka makhetlo a 4 butle.

'Me haeba u bala phapang sebakeng sa disk, joale ho boetse ho na le phapang. 'Me phapang e ka ba kotara, hobane ho na le liaterese tse ngata tse ikhethang tsa IP. ’Me haeba ho ne ho e-na le mela e nang le meelelo e fokolang ea meelelo e sa tšoaneng, joale e ne e tla hatelloa habonolo ho ea ka buka e hlalosang mantsoe hore e be moqolo o batlang o lekana.

Mme phapang ya nako e menahaneng hane ha e eme tseleng. Mohlomong ha u fane, ehlile, empa ha ke bona phapang e joalo, e nkutloisa bohloko.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Ha re shebeng linyeoe tse fapaneng.

1. Ketsahalo e le 'ngoe ha u na le litekanyetso tse fokolang tse fapaneng tse ikhethang. Tabeng ena, re sebelisa mokhoa o bonolo oo mohlomong u o tsebang 'me u ka o sebelisa bakeng sa DBMS leha e le efe. Sena sohle sea utloahala eseng bakeng sa ClickHouse feela. Ngola li-identifiers tsa linomoro ka har'a database. 'Me u ka fetolela ho likhoele le ho khutlela ka lehlakoreng la kopo ea hau.

Ka mohlala, u na le sebaka. 'Me u leka ho e boloka e le khoele. 'Me e tla ngoloa moo: Moscow le Moscow Region. 'Me ha ke bona hore e re "Moscow", ha ho letho, empa ha e le Moscow, ka tsela e itseng e ba masoabi ka ho feletseng. Ke li-byte tse kae.

Ho e-na le hoo, re ngola feela nomoro ea Ulnt32 le 250. Re na le 250 ho Yandex, empa ea hau e ka 'na ea fapana. Haeba ho ka etsahala, ke tla re ClickHouse e na le bokhoni bo hahelletsoeng ba ho sebetsa le geobase. U ngola feela bukana e nang le libaka, ho kenyelletsa le ea hierarchical, ke hore ho tla ba le Moscow, Setereke sa Moscow, le tsohle tseo u li hlokang. 'Me u ka fetola boemong ba kopo.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Khetho ea bobeli e batla e tšoana, empa ka tšehetso ka hare ho ClickHouse. Ena ke mofuta oa data oa Enum. U ngola feela litekanyetso tsohle tseo u li hlokang ka har'a Enum. Ka mohlala, mofuta oa sesebelisoa 'me u ngole moo: desktop, mobile, tablet, TV. Ho na le likhetho tse 4 ka kakaretso.

Bothata ke hore o hloka ho e fetola nako le nako. Khetho e le 'ngoe feela e ekelitsoeng. Ha re etseng alter table. Ebile, alter table ho ClickHouse ke mahala. Haholo-holo mahala bakeng sa Enum hobane data e ho disk ha e fetohe. Empa leha ho le joalo, alter e fumana senotlolo * tafoleng 'me e tlameha ho ema ho fihlela likhetho tsohle li phethiloe. 'Me feela ka mor'a hore phetoho ena e kenngoe, ke hore, ho ntse ho e-na le litšitiso tse itseng.

* liphetolelong tsa morao-rao tsa ClickHouse, ALTER e entsoe hore e se ke ea thibela ka ho feletseng.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Khetho e 'ngoe e ikhethang haholo bakeng sa ClickHouse ke ho hokahanya lidikishinari tsa kantle. U ka ngola linomoro ho ClickHouse, 'me u boloke li-directory tsa hau ho sistimi efe kapa efe e u loketseng. Ka mohlala, u ka sebelisa: MySQL, Mongo, Postgres. U ka iketsetsa microservice ea hau e tla romella data ena ka http. 'Me boemong ba ClickHouse, u ngola mosebetsi o tla fetola data ena ho tloha linomoro ho ea ho likhoele.

Ena ke mokhoa o ikhethileng empa o sebetsa hantle haholo oa ho etsa kopanelo tafoleng e kantle. 'Me ho na le likhetho tse peli. Ka mokhoa o le mong, data ena e tla bolokoa ka botlalo, e be teng ka botlalo ho RAM mme e ntlafatsoe ka makhetlo a mang. 'Me ka khetho e' ngoe, haeba data ena e sa lumellane le RAM, u ka e boloka ka mokhoa o itseng.

Mohlala ke ona. Ho na le Yandex.Direct. Mme ho na le k'hamphani ea papatso le lifolakha. Mohlomong ho na le lik'hamphani tsa papatso tse ka bang limilione tse mashome. 'Me li batla li lekana le RAM. 'Me ho na le libilione tsa lifolakha, ha li lumellane. Mme re sebelisa bukana e bolokiloeng ho tsoa ho MySQL.

Bothata feela ke hore bukana e bolokiloeng e tla sebetsa hantle haeba sekhahla sa ho otla se haufi le 100%. Haeba e le nyane, joale ha o sebetsana le lipotso bakeng sa sehlopha ka seng sa data, o tla tlameha ho nka linotlolo tse sieo ebe o ea fumana data ho MySQL. Mabapi le ClickHouse, ke ntse ke ka tiisa hore - e, ha e fokotsehe, nke ke ka bua ka litsamaiso tse ling.

'Me joalo ka bonase, lidikishinari ke mokhoa o bonolo haholo oa ho nchafatsa data ho ClickHouse. Ke hore, u ne u e-na le tlaleho ea lik'hamphani tsa papatso, mosebedisi o ile a fetola feela k'hamphani ea papatso le boitsebisong bohle ba khale, litlalehong tsohle, data ena e boetse e fetohile. Haeba u ngola mela ka ho toba tafoleng, ho ke ke ha khoneha ho e ntlafatsa.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Tsela e 'ngoe ha u sa tsebe moo u ka fumanang li-identifiers tsa likhoele tsa hau. u ka e etsa hang feela. Ho feta moo, khetho e bonolo ka ho fetisisa ke ho nka hash ea 64-bit.

Bothata feela ke hore haeba hashe e le 64-bit, joale ka sebele u tla ba le likhohlano. Hobane haeba ho na le mela e limilione tse likete moo, joale monyetla o se o ntse o bonahala.

'Me ho ke ke ha e-ba molemo haholo ho hash mabitso a lik'hamphani tsa papatso ka tsela ena. Haeba lipapatso tsa lipapatso tsa lik'hamphani tse fapaneng li kopane, joale ho tla ba le ntho e sa utloisiseheng.

Mme ho na le leqheka le bonolo. Ke 'nete, hape ha e tšoanelehe haholo bakeng sa data e tebileng, empa haeba ho na le ho hong ho seng boima haholo, eketsa feela sekhetho sa moreki ho senotlolo sa dikishinari. 'Me joale u tla ba le likhohlano, empa feela ka har'a moreki a le mong. 'Me re sebelisa mokhoa ona ho hokahanya limmapa tsa Yandex.Metrica. Re na le li-URL moo, re boloka li-hashes. 'Me rea tseba hore, ehlile, ho na le likhohlano. Empa ha leqephe le hlahisoa, monyetla oa hore leqepheng le le leng la mosebelisi a le mong li-URL li khomaretsoe 'me sena se tla hlokomeloa se ka hlokomolohuoa.

E le bonase, bakeng sa ts'ebetso e mengata, li-hashes feela li lekane 'me likhoele ka botsona ha li hloke ho bolokoa kae kapa kae.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Mohlala o mong ke haeba likhoele li le khuts'oane, mohlala, libaka tsa marang-rang. Li ka bolokoa kamoo li leng kateng. Kapa, ​​​​ka mohlala, puo ea sebatli ru ke 2 byte. Ha e le hantle, ke hlile ke utloela li-byte bohloko, empa u se ke ua tšoenyeha, li-byte tse 2 ha li utloele bohloko. Ke kopa u e boloke kamoo e leng kateng, u se ke ua tšoenyeha.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Nyeoe e 'ngoe ke ha, ho fapana le hoo, ho na le mela e mengata' me ho na le tse ngata tse ikhethang ho tsona, esita le sete e ka 'na ea e-ba le moeli. Mohlala o tloaelehileng ke mantsoe a ho batla kapa li-URL. Batla lipolelo, ho kenyeletsoa le typos. Ha re boneng hore na ho na le lipolelo tse kae tsa patlo tse ikhethang ka letsatsi. 'Me e fellang kateng le hore ba hoo e ka bang halofo ea liketsahalo tsohle. 'Me tabeng ena, u ka' na ua nahana hore u hloka ho etsa hore data e tloaelehe, u bale li-identifiers, 'me u e behe tafoleng e arohaneng. Empa ha ho hlokahale hore u etse joalo. Boloka mela ena kamoo e leng kateng.

Ho molemo hore u se ke ua qapa letho, hobane haeba u e boloka ka thoko, u tla hloka ho kopanya. 'Me kopano ena, ka ho fetisisa, ke phihlello e sa reroang ea mohopolo, haeba e ntse e lekana mohopolong. Haeba e sa lumellane, ho tla ba le mathata.

'Me haeba data e bolokiloe sebakeng, joale e baloa feela ka tatellano e hlokahalang ho tloha tsamaisong ea faele mme ntho e' ngoe le e 'ngoe e hantle.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Haeba u na le li-URL kapa khoele e 'ngoe e thata e telele, joale ho bohlokoa ho nahana hore u ka bala mofuta o itseng oa qotsulo esale pele ebe u e ngola kholeng e arohaneng.

Bakeng sa li-URL, mohlala, o ka boloka domain name ka thoko. 'Me haeba u hlile u hloka sebaka sa marang-rang, sebelisa feela kholomo ena,' me li-URL li tla robala moo, 'me u ke ke ua li ama.

A re bone hore na phapang ke efe. ClickHouse e na le ts'ebetso e ikhethileng e balang sebaka sa marang-rang. E potlakile haholo, re e ntlafalitse. 'Me, ho bua 'nete, ha e lumellane le RFC, empa leha ho le joalo e nahana ka ntho e' ngoe le e 'ngoe eo re e hlokang.

'Me ketsahalong e le' ngoe re tla fumana li-URL feela ebe re bala sebaka sa marang-rang. Seo se sebetsa ho 166 milliseconds. 'Me haeba u nka sebaka se lokiselitsoeng, joale se fetoha 67 milliseconds feela, ke hore hoo e ka bang ka makhetlo a mararo ka potlako. 'Me e potlakile eseng hobane re hloka ho etsa lipalo, empa hobane re bala lintlha tse fokolang.

Ke kahoo kopo e le 'ngoe, e liehang, e nang le lebelo le phahameng la li-gigabyte motsotsoana. Hobane e bala li-gigabyte tse ngata. Sena ke ka ho feletseng sa hlokahaleng ya data. Kopo e bonahala e sebetsa ka potlako, empa e nka nako e telele hore e phethoe.

'Me ha u sheba palo ea data ho disk, ho bonahala eka URL ke 126 megabytes,' me domain name ke 5 megabytes feela. E hlaha ka makhetlo a 25 ka tlase. Empa leha ho le joalo, kopo e etsoa ka makhetlo a 4 feela ka potlako. Empa ke hobane data e chesa. 'Me haeba ho ne ho bata, mohlomong e ka ba makhetlo a 25 ka potlako ka lebaka la disk I / O.

Ka tsela, haeba u hakanya hore na domain name e nyane hakae ho feta URL, e fetoha ka makhetlo a ka bang 4. Empa ka lebaka le itseng, data e nka makhetlo a 25 ka tlase ho disk. Hobaneng? Ka lebaka la khatello. 'Me URL e hatelloa,' me domain name e hatelloa. Empa hangata URL e na le sehlopha sa lithōle.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Mme, ehlile, ho a lefella ho sebelisa mefuta e nepahetseng ea data e etselitsoeng litekanyetso tse lakatsehang kapa tse loketseng. Haeba o ho IPv4, boloka UInt32*. Haeba IPv6, joale FixedString(16), hobane aterese ea IPv6 ke li-bits tse 128, ke hore, li bolokiloe ka ho toba ka mokhoa oa binary.

Empa ho thoe'ng haeba ka linako tse ling u na le liaterese tsa IPv4 'me ka linako tse ling IPv6? E, u ka boloka bobeli. Kholomo e le 'ngoe bakeng sa IPv4, e' ngoe bakeng sa IPv6. Ehlile, ho na le khetho ea ho bonts'a IPv4 ho IPv6. Sena le sona se tla sebetsa, empa haeba hangata o hloka aterese ea IPv4 likopo, ho ka ba molemo ho e beha ka har'a kholomo e arohaneng.

* ClickHouse joale e na le IPv4 e arohaneng, mefuta ea data ea IPv6 e bolokang data hantle joalo ka linomoro, empa e e emela habonolo joalo ka likhoele.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Hape ke habohlokoa ho hlokomela hore ho bohlokoa ho lokisa data esale pele. Ka mohlala, u fumana li-log tse tala. 'Me mohlomong ha ua lokela ho li kenya feela ho ClickHouse hang-hang, le hoja ho lekeha haholo hore u se ke ua etsa letho' me ntho e 'ngoe le e' ngoe e tla sebetsa. Empa ho ntse ho le molemo ho etsa lipalo tse ka khonehang.

Mohlala, mofuta oa sebatli. Lefapheng le leng le haufi, leo ke sa batleng ho le supa ka monoana, phetolelo ea sebatli e bolokiloe tjena, ke hore, e le khoele: 12.3. 'Me joale, ho etsa tlaleho, ba nka khoele ena' me ba e arole ka lihlopha, ebe ba kena karolong ea pele ea sehlopha. Ka tlhaho, ntho e 'ngoe le e' ngoe e lieha. Ke ile ka botsa hore na ke hobane'ng ha ba etsa sena. Ba ile ba mpolella hore ha ba rate ntlafatso ea pele ho nako. 'Me ha ke rate ho hloka tšepo pele ho nako.

Kahoo tabeng ena ho tla ba ho nepahetseng haholoanyane ho arola litšiea tse 4. Se ke oa tšoha mona, hobane ke ClickHouse. ClickHouse ke sebaka sa polokelo ea litaba. 'Me ha litšiea tse nyane li le makhethe, li tla ba betere. Ho tla ba le 5 BrowserVersions, etsa likholomo tse 5. Sena se lokile.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Joale a re shebeng seo u lokelang ho se etsa haeba u e-na le likhoele tse telele haholo, tse telele haholo. Ha li hloke ho bolokoa ho ClickHouse ho hang. Sebakeng seo, o ka boloka sesupo ho ClickHouse feela. Mme o kenye mela ena e melelele tsamaisong e nngwe.

Ka mohlala, e 'ngoe ea litšebeletso tsa rona tsa analytics e na le lintlha tse itseng tsa liketsahalo. 'Me haeba ho na le liparamente tse ngata tsa liketsahalo, re boloka feela 512 ea pele e hlahang.Hobane 512 ha se masoabi.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

'Me haeba u sa khone ho etsa qeto ka mefuta ea hau ea data, joale u ka boela ua rekota data ho ClickHouse, empa tafoleng ea nakoana ea mofuta oa Log, e khethehileng bakeng sa data ea nakoana. Kamora sena, o ka sekaseka hore na o na le kabo efe ea boleng moo, hore na ho na le eng ka kakaretso, 'me u thehe mefuta e nepahetseng.

*ClickHouse joale e na le mofuta oa data Low Cardinality e u lumellang hore u boloke likhoele hantle ka boiteko bo fokolang.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Joale a re shebeng nyeoe e 'ngoe e thahasellisang. Ka linako tse ling lintho li sebetsa ka mokhoa o makatsang ho batho. Ke kena mme ke bone sena. 'Me hang-hang ho bonahala eka sena se entsoe ke mookameli ea nang le phihlelo, ea bohlale ea nang le phihlelo e kholo ea ho theha MySQL version 3.23.

Mona re bona litafole tse sekete, e 'ngoe le e 'ngoe ea tsona e tlaleha karolo e setseng ea ho arola ea tsebang hore na ke eng ka sekete.

Ha e le hantle, ke hlompha phihlelo ea batho ba bang, ho kenyelletsa le kutloisiso ea mahlomola a ka fumanoang ka phihlelo ena.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

'Me mabaka a hlakile haholoanyane. Tsena ke li-stereotypes tsa khale tse ka 'nang tsa bokelloa ha li ntse li sebetsa le litsamaiso tse ling. Mohlala, litafole tsa MyISAM ha li na senotlolo sa mantlha se kopaneng. 'Me mokhoa ona oa ho arola data e ka ba teko e matla ea ho fumana ts'ebetso e ts'oanang.

Lebaka le leng ke hore ho thata ho etsa liphetoho life kapa life litafoleng tse kholo. Tsohle di tla thijwa. Le hoja liphetolelong tsa morao-rao tsa MySQL bothata bona ha bo sa teba hakaalo.

Kapa, ​​ka mohlala, microsharding, empa ho feta moo hamorao.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Ha ho na tlhoko ea ho etsa sena ho ClickHouse, hobane, pele, senotlolo sa mantlha se kopantsoe, data e laeloa ke senotlolo sa mantlha.

'Me ka linako tse ling batho ba mpotsa: "Ts'ebetso ea lipotso tse fapaneng ho ClickHouse e fapana joang ho latela boholo ba tafole?" Ke re ha e fetohe ho hang. Ka mohlala, u na le tafole e nang le mela e limilione tse likete 'me u bala mefuta e mengata ea mela e milione. Tsohle di lokile. Haeba ho na le mela ea litrilione tafoleng 'me u bala mela e milione, e tla batla e tšoana.

'Me, ea bobeli, mefuta eohle ea lintho tse kang likarolo tsa matsoho ha li hlokehe. Haeba u ka kena 'me u sheba se leng tsamaisong ea lifaele, u tla bona hore tafole ke ntho e kholo haholo. 'Me ho na le ntho e kang partitions ka hare. Ke hore, ClickHouse e u etsetsa ntho e 'ngoe le e' ngoe 'me ha ua tlameha ho utloa bohloko.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Alter in ClickHouse ke mahala haeba u fetola kholomo ea eketsa / theola.

'Me ha ua lokela ho etsa litafole tse nyenyane, hobane haeba u na le mela e 10 kapa mela e 10 000 tafoleng, joale ha ho tsotellehe ho hang. ClickHouse ke sistimi e ntlafatsang phallo, eseng latency, ka hona ha ho utloahale ho sebetsana le mela e 10.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Ho nepahetse ho sebelisa tafole e le 'ngoe e kholo. Lahla menahano ea khale, tsohle li tla loka.

'Me joalo ka bonase, phetolelong ea morao-rao re na le bokhoni ba ho theha senotlolo sa ho arola ka mokhoa o sa reroang e le hore re ka etsa mefuta eohle ea ts'ebetso ea tlhokomelo ho likarolo tsa motho ka mong.

Ka mohlala, o hloka litafole tse ngata tse nyenyane, mohlala, ha ho hlokahala hore u sebetsane le lintlha tse ling tsa bohareng, u fumana likotoana 'me u lokela ho etsa phetoho ho tsona pele u ngolla tafoleng ea ho qetela. Tabeng ena, ho na le enjene e ntle ea tafole - StripeLog. E tšoana le TinyLog, e betere feela.

* joale ClickHouse le eona e na le ho kenya tshebetsong ha tafole.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Antipattern e 'ngoe ke microsharding. Mohlala, o hloka ho shard data mme o na le li-server tse 5, mme hosane ho tla ba le li-server tse 6. 'Me u nahana ka mokhoa oa ho tsosolosa data ena. 'Me ho e-na le hoo, ha u robe li-shards tse 5, empa ka li-shards tse 1. Ebe u etsa 'mapa e' ngoe le e 'ngoe ea li-microshards tsena ho seva e arohaneng. 'Me u tla fumana, ka mohlala, 000 ClickHouses ho seva se le seng, mohlala. Mehato e arohaneng likoung tse fapaneng kapa li-database tse arohaneng.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Empa sena ha se hantle haholo ho ClickHouse. Hobane mohlala o le mong oa ClickHouse o leka ho sebelisa lisebelisoa tsohle tse teng tsa seva ho sebetsana le kopo e le 'ngoe. Ke hore, o na le mofuta o itseng oa seva mme e na le, mohlala, li-processor cores tse 56. U ntse u botsa potso e nkang motsotsoana 'me e tla sebelisa li-cores tse 56. 'Me haeba u behile 200 ClickHouses moo ho seva se le seng, joale ho tla etsahala hore likhoele tse 10 li tla qala. Ka kakaretso, ntho e 'ngoe le e' ngoe e tla ba mpe haholo.

Lebaka le leng ke hore kabo ea mosebetsi maemong ana e tla be e sa lekana. Ba bang ba tla qeta pejana, ba bang ba tla qeta hamorao. Haeba tsena tsohle li etsahetse ketsahalong e le 'ngoe, joale ClickHouse ka boeona e tla tseba mokhoa oa ho aba data ka nepo har'a likhoele.

'Me lebaka le leng ke hore u tla ba le puisano ea interprocessor ka TCP. Lintlha li tla tlameha ho hlophisoa, li fokotsoe, 'me ena ke palo e kholo ea li-microshards. E ke ke ea sebetsa ka katleho.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Antipattern e 'ngoe, le hoja e ke ke ea bitsoa antipattern. Ena ke palo e kholo ea ho bokella pele.

Ka kakaretso, ho kopanya pele ho molemo. U ne u e-na le mela e bilione, u e kopantse 'me ea fetoha mela e 1, 'me joale potso e etsoa hang-hang. Tsohle di ntle. U ka etsa sena. 'Me bakeng sa sena, esita le ClickHouse e na le mofuta o khethehileng oa litafole, AggregatingMergeTree, e etsang ho kopanya ka ho eketsehileng ha data e kenngoa.

Empa ho na le linako tseo u nahanang hore re tla kopanya lintlha tse kang tsena ebe re kopanya lintlha tse kang tsena. 'Me lefapheng le leng la boahelani, hape ha ke batle ho bolela hore na ke efe, ba sebelisa litafole tsa SummingMergeTree ho akaretsa ka senotlolo sa mantlha,' me litšiea tse ka bang 20 li sebelisoa e le senotlolo sa mantlha. Haeba ho ne ho ka etsahala, ke fetotse mabitso a litšiea tse ling bakeng sa lekunutu, empa ho joalo haholo.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

'Me mathata a joalo a hlaha. Taba ea pele, bophahamo ba data ea hau ha bo fokotsehe haholo. Ka mohlala, e fokotseha ka makhetlo a mararo. Ka makhetlo a mararo e ka ba theko e ntle ea ho lefella bokhoni bo sa lekanyetsoang ba analytics bo hlahang haeba data ea hau e sa kopanngoa. Haeba data e kopantsoe, joale ho e-na le li-analytics u fumana lipalo-palo tse utloisang bohloko feela.

Hona ke eng e ikhethang ka eona? Taba ke hore batho bana ba lekala la boahelani ka nako e ‘ngoe ba ee ba il’o kopa hore ba kenye karolo e ‘ngoe ho senotlolo sa mantlha. Ke hore, re ile ra kopanya data tjena, empa joale re batla ho feta. Empa ClickHouse ha e na senotlolo sa mantlha sa ho fetola. Ka hona, re tlameha ho ngola mangolo a mang ka C ++. 'Me ha ke rate lingoloa, leha li le ho C ++.

'Me haeba u sheba hore na ClickHouse e etselitsoe eng, joale data e sa kopanngoeng ke eona boemo boo e tsoaletsoeng eona. Haeba u sebelisa ClickHouse bakeng sa data e sa kopanngoeng, joale u e etsa hantle. Haeba u kopanya, ka linako tse ling sena se ka tšoareloa.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Taba e 'ngoe e khahlang ke lipotso tse sa feleng. Ka linako tse ling ke ea ho sebatli se seng sa tlhahiso ebe ke sheba lenane la tšebetso la show moo. Mme nako le nako ha ke fumana hore ho etsahala ntho e mpe.

Ka mohlala, joalo ka sena. Hang-hang ho hlakile hore ntho e 'ngoe le e' ngoe e ka etsoa ka kopo e le 'ngoe. Ngola feela url le lenane le teng.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Ke hobane'ng ha lipotso tse ngata tse joalo li le mpe ka ho sa feleng? Haeba index e sa sebelisoe, joale u tla ba le lipallo tse ngata holim'a data e tšoanang. Empa haeba index e sebelisoa, mohlala, u na le senotlolo sa mantlha sa ru mme u ngola url = ntho e teng moo. 'Me u nahana hore haeba ho baloa URL e le' ngoe feela tafoleng, tsohle li tla loka. Empa ha e le hantle ha ho joalo. Hobane ClickHouse e etsa tsohle ka lihlopha.

Ha a hloka ho bala letoto le itseng la data, o bala hanyane, hobane index ea ClickHouse e fokola. Lenane lena ha le u lumelle ho fumana mola o le mong ka har'a tafole, ho na le mofuta o itseng feela. Mme data e hatelloa ka li-blocks. E le hore u bale mola o le mong, u lokela ho nka boloko bohle ebe u e hlakola. 'Me haeba u etsa lipotso tse ngata, u tla ba le ho kopana ho hongata,' me u tla ba le mosebetsi o mongata oo u lokelang ho o etsa khafetsa.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

'Me joaloka bonase, u ka hlokomela hore ho ClickHouse ha ua lokela ho tšaba ho fetisetsa esita le megabyte esita le makholo a megabyte ho karolo ea IN. Ke hopola ho tloha ts'ebetsong ea rona hore haeba ho MySQL re fetisetsa sehlopha sa litekanyetso ho karolo ea IN, mohlala, re fetisetsa megabyte ea 100 ea linomoro tse ling moo, ebe MySQL e ja li-gigabytes tse 10 tsa mohopolo mme ha ho letho le leng le etsahalang ho eona, ntho e 'ngoe le e' ngoe. e sebetsa hampe.

'Me ea bobeli ke hore ho ClickHouse, haeba lipotso tsa hau li sebelisa index, joale ha e liehe ho feta scan e feletseng, ke hore, haeba u hloka ho bala hoo e batlang e le tafole eohle, e tla tsamaea ka tatellano ebe e bala tafole eohle. Ka kakaretso, o tla itlhalosa a le mong.

Empa leha ho le joalo ho na le mathata. Mohlala, taba ea hore IN ka subquery ha e sebelise index. Empa bona ke bothata ba rona mme re hloka ho bo lokisa. Ha ho letho la motheo mona. Re tla e lokisa*.

'Me ntho e' ngoe e thahasellisang ke hore haeba u na le kopo e telele haholo le ts'ebetso ea kopo e abuoang e ntse e tsoela pele, joale kopo ena e telele haholo e tla romelloa ho seva se seng le se seng ntle le khatello. Mohlala, li-megabyte tse 100 le li-server tse 500. 'Me, ka hona, u tla ba le li-gigabyte tse 50 tse fetisetsoang holim'a marang-rang. E tla fetisoa 'me joale tsohle li tla phethoa ka katleho.

* e se e ntse e sebelisoa; Lintho tsohle li ile tsa lokisoa joalokaha ho tšepisitsoe.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

'Me nyeoe e tloaelehileng ke ha likopo li tsoa ho API. Ka mohlala, u entse mofuta o itseng oa tšebeletso ea hau. 'Me haeba motho e mong a hloka tšebeletso ea hau, joale u bula API' me ha e le hantle matsatsi a mabeli hamorao u bona hore ho na le ntho e sa utloisiseheng e etsahalang. Ntho e 'ngoe le e' ngoe e imetsoe 'me ho tla likopo tse ling tse mpe tse neng li sa lokela ho etsahala.

Mme ho na le tharollo e le nngwe feela. Haeba u butse API, u tla tlameha ho e khaola. Ka mohlala, hlahisa mofuta o itseng oa quotas. Ha ho na likhetho tse ling tse tloaelehileng. Ho seng joalo, hang-hang ba tla ngola script mme ho tla ba le mathata.

'Me ClickHouse e na le tšobotsi e khethehileng - palo ea quota. Ho feta moo, o ka fetisetsa senotlolo sa hau sa quota. Sena ke, mohlala, ID ea mosebelisi ea ka hare. 'Me li-quotas li tla baloa ka boikemelo bakeng sa e' ngoe le e 'ngoe ea tsona.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Hona joale ntho e 'ngoe e thahasellisang. Ena ke boikatiso ka letsoho.

Ke tseba maemong a mangata moo, leha ClickHouse e na le ts'ehetso ea ho ikatisa e hahelletsoeng, batho ba etsisa ClickHouse ka letsoho.

Molao-motheo ke ofe? O na le mokhoa oa ho lokisa lintlha. 'Me e sebetsa ka boithaopo, ka mohlala, litsing tse fapaneng tsa data. U ngola lintlha tse tšoanang ka tsela e tšoanang ho ClickHouse. Ke 'nete, boikoetliso bo bontša hore data e ntse e tla fapana ka lebaka la likarolo tse ling tsa khoutu ea hau. Ke tšepa hore e ho hao.

'Me nako le nako u ntse u tla tlameha ho sync ka letsoho. Ka mohlala, hang ka khoeli batsamaisi ba etsa rsync.

Ebile, ho bonolo haholo ho sebelisa phetisetso e hahiloeng ho ClickHouse. Empa ho ka 'na ha e-ba le li-contraindications, hobane bakeng sa sena u hloka ho sebelisa ZooKeeper. Ha ke na ho bua letho le lebe ka ZooKeeper, ha e le hantle, tsamaiso e sebetsa, empa ho etsahala hore batho ba se ke ba e sebelisa ka lebaka la java-phobia, hobane ClickHouse ke tsamaiso e ntle joalo, e ngotsoeng ka C ++, eo u ka e sebelisang le tsohle di tla loka. Mme ZooKeeper e java. 'Me ka tsela e itseng ha u batle le ho shebahala, empa joale u ka sebelisa ho pheta-pheta ka letsoho.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

ClickHouse ke sistimi e sebetsang. O nahanela litlhoko tsa hau. Haeba u na le ho pheta-pheta ka letsoho, joale u ka etsa tafole ea Distributed e shebanang le likopi tsa hau tsa matsoho 'me e etsa phoso pakeng tsa tsona. Hape ho na le khetho e khethehileng e u lumellang ho qoba li-flops, le haeba mela ea hau e fapana ka mokhoa o hlophisitsoeng.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Mathata a mang a ka hlaha haeba u sebelisa lienjineri tsa tafole tsa khale. ClickHouse ke sehahi se nang le sehlopha sa lienjineri tse fapaneng tsa litafole. Bakeng sa linyeoe tsohle tse tebileng, joalokaha ho ngotsoe litokomaneng, sebelisa litafole tse tsoang ho lelapa la MergeTree. Le tse ling kaofela - sena se joalo, bakeng sa linyeoe tsa motho ka mong kapa bakeng sa liteko.

Tafoleng ea MergeTree, ha ho hlokahale hore u be le letsatsi le nako. U ntse u ka e sebelisa. Haeba ho se na letsatsi le nako, ngola hore kamehla ke 2000. Sena se tla sebetsa mme se ke ke sa hloka lisebelisoa.

Mme mofuteng o mocha oa seva, o ka hlakisa hore o na le karohano ea tloaelo ntle le senotlolo sa karohano. Ho tla ba jwalo.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Ka lehlakoreng le leng, o ka sebelisa lienjineri tsa tafole tsa khale. Ka mohlala, tlatsa data hang 'me u shebe, sotha le ho hlakola. U ka sebelisa Log.

Kapa ho boloka meqolo e nyane bakeng sa ts'ebetso ea mahareng ke StripeLog kapa TinyLog.

Memori e ka sebelisoa haeba palo ea data e le nyane mme o ka kopanya ntho e itseng ho RAM.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

ClickHouse ha e hlile ha e rate data e nchafalitsoeng.

Mohlala o tloaelehileng ke ona. Ena ke palo e kholo ea li-URL. U li beha tafoleng e latelang. Eaba ba etsa qeto ea ho etsa JOIN le bona, empa sena se ke ke sa sebetsa, e le molao, hobane ClickHouse e tšehetsa Hash JOIN feela. Haeba ho se na RAM e lekaneng bakeng sa data e ngata e hlokang ho hokeloa, joale JOIN e ke ke ea sebetsa*.

Haeba data e le ea mak'hadinale a phahameng, joale u se ke ua khathatseha, e boloke ka mokhoa o sa tloaelehang, li-URL li teng ka ho toba tafoleng e kholo.

* 'me joale ClickHouse e boetse e na le kopanyo ea ho kopanya,' me e sebetsa maemong ao data ea mahareng e sa keneleng ho RAM. Empa sena ha se sebetse mme khothaletso e ntse e sebetsa.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Mehlala e meng e 'maloa, empa ke se ke ntse ke belaela hore na ke anti-pattern kapa che.

ClickHouse e na le phoso e le 'ngoe e tsejoang. Ha e tsebe ho ntlafatsa*. Ka litsela tse ling, sena se molemo le ho feta. Haeba u na le lintlha tse ling tsa bohlokoa, mohlala, accounting, joale ha ho motho ea tla khona ho e romella, hobane ha ho na lisebelisoa.

* Ts'ehetso ea ntlafatso le ho hlakola ka mokhoa oa batch esale e eketsoa khale.

Empa ho na le mekhoa e ikhethileng e lumellang lintlafatso joalo ka ha eka li ka morao. Ka mohlala, litafole tse kang ReplaceMergeTree. Ba etsa lintlafatso nakong ea ho kopanya ka morao. U ka qobella sena ho sebelisa optimize table. Empa u se ke ua etsa sena hangata, hobane se tla hlakola karohano ka botlalo.

Li-JOIN tse ajoang ho ClickHouse le tsona ha li sebetsoe hampe ke moralo oa lipotso.

E mpe, empa ka linako tse ling ho lokile.

U sebelisa ClickHouse feela ho bala data morao u sebelisa khetha *.

Ke ne nke ke ka khothaletsa ho sebelisa ClickHouse bakeng sa lipalo tse boima. Empa sena ha se nnete ka botlalo, hobane re se re ntse re suthela hole le khothaletso ena. 'Me haufinyane re kentse bokhoni ba ho sebelisa mefuta ea ho ithuta ka mochini ho ClickHouse - Catboost. Mme e a ntshwenya hobane ke nahana, “Ke tshoso e kakang. Ena ke li-cycle tse kae tseo e hlahang ka tsona! Ke hlile ke hloile ho senya lioache ka li-byte.

Tšebeliso e sebetsang ea ClickHouse. Alexey Milovidov (Yandex)

Empa u seke oa tšoha, kenya ClickHouse, tsohle li tla loka. Haeba ho na le letho, re na le sechaba. Ka tsela, sechaba ke uena. 'Me haeba u na le mathata, bonyane u ka ea moqoqong oa rona,' me ka tšepo ba tla u thusa.

Lipotso

Re leboha tlaleho! Nka tletleba hokae ka ho senyeha ha ClickHouse?

O ka tletleba ho nna ka bonna hona jwale.

Haufinyane tjena ke qalile ho sebelisa ClickHouse. Hang-hang ke ile ka lahlela cli interface.

Ke lintlha tse kae.

Nakoana hamorao ke ile ka senya seva ka khetho e nyane.

O na le talenta.

Ke ile ka bula kokoanyana ea GitHub, empa ha ea ka ea hlokomolohuoa.

Ha re bone.

Alexey o ile a nqhekella hore ke be teng tlalehong eo, a tšepisa ho mpolella hore na u fumana boitsebiso bo ka hare joang.

E bonolo haholo.

Ke hlokometse sena maobane. Lintlha tse ling tse tobileng.

Ha ho na maqheka a tšabehang moo. Ho na le compression ea block-by-block feela. Ea kamehla ke LZ4, o ka nolofalletsa ZSTD*. E thibela ho tloha ho 64 kilobytes ho isa ho 1 megabyte.

* Ho boetse ho na le ts'ehetso bakeng sa li-codec tse khethehileng tsa compression tse ka sebelisoang ketane le li-algorithms tse ling.

Na li-block ke data feela e tala?

Eseng e tala ka botlalo. Ho na le lihlopha. Haeba u na le kholomo ea linomoro, joale linomoro ka tatellano li behiloe ka tatellano.

E hlakile.

Alexey, mohlala o neng o na le uniqExact over IPs, ke hore taba ea hore uniqExact e nka nako e telele ho bala ka mela ho feta ka linomoro, joalo-joalo. Ho thoe'ng haeba re sebelisa thipa ka litsebe 'me re kenya letsoho nakong ea ho hlahloba liphoso? Ke hore, ho bonahala u boletse hore disk ea rona ha e fapane haholo. Haeba re bala mela e tsoang ho disk le cast, na li-aggregates tsa rona li tla potlaka kapa che? Kapa na re ntse re tla rua hanyane mona? Ho 'na ho bonahala eka u lekile sena, empa ka lebaka le itseng ha ua ka ua se bontša benchmark.

Ke nahana hore e tla lieha ho feta ntle le ho lahlela. Tabeng ena, aterese ea IP e tlameha ho aroloa ho tloha khoeleng. Ehlile, ho ClickHouse, aterese ea rona ea IP le eona e ntlafalitsoe. Re lekile ka matla, empa mono u na le linomoro tse ngotsoeng ka mokhoa oa likete tse leshome. Hantle haholo. Ka lehlakoreng le leng, mosebetsi oa uniqExact o tla sebetsa butle holim'a likhoele, eseng feela hobane e le likhoele, empa hape hobane ho khethiloe tsebo e fapaneng ea algorithm. Likhoele li sebetsoa ka tsela e fapaneng.

Ho thoe'ng haeba re nka mofuta oa data oa khale? Mohlala, re ngotse id ea mosebelisi, eo re nang le eona, re e ngotse joalo ka mola, ebe re e qhekella, na e tla ba monate ho feta kapa che?

Ha ke kholoe. Ke nahana hore ho tla ba bohloko le ho feta, hobane ka mor'a tsohle, palo ea lipalo ke bothata bo tebileng. Ho 'na ke bona eka mosebetsi-'moho enoa o bile a fana ka tlaleho ea hore na ho thata hakae ho arola linomoro ka foromo ea likete tse leshome, empa mohlomong ha ho joalo.

Alexey, ke leboha haholo ka tlaleho! 'Me ke leboha haholo ka ClickHouse! Ke na le potso mabapi le merero. A na ho na le meralo ea karolo ea ho nchafatsa dikishinari ka mokhoa o sa fellang?

Ke hore, ho qala bocha ka karolo e itseng?

Ee E. Joalo ka bokhoni ba ho beha tšimo ea MySQL moo, ke hore, ntjhafatsa kamora hore data ena feela e jarollotsoe haeba dikishinari e le kholo haholo.

Tšobotsi e thahasellisang haholo. 'Me ke nahana hore motho e mong o e khothalelitse moqoqong oa rona. Mohlomong e ne e le uena.

Ha ke nahane joalo.

E kholo, joale ho hlaha hore ho na le likopo tse peli. 'Me u ka qala ho e etsa butle-butle. Empa ke batla ho u lemosa hang-hang hore tšobotsi ena e bonolo haholo ho e sebelisa. Ke hore, ka khopolo, u hloka feela ho ngola nomoro ea phetolelo tafoleng ebe u ngola: mofuta o ka tlaase ho joalo le joalo. Sena se bolela hore, mohlomong, re tla fana ka sena ho batho ba chesehang. A na u motho ea chesehang?

E, empa, ka bomalimabe, eseng ho C ++.

Na basebetsi-'moho le uena ba tseba ho ngola ka C++?

Ke tla fumana motho.

E kholo*.

* karolo e ile ea eketsoa likhoeli tse peli ka mor'a tlaleho - mongoli oa potso o ile a e hlahisa 'me a romela ea hae hula kopo.

Спасибо!

Lumela! Re leboha tlaleho! U boletse hore ClickHouse e ntle haholo ho sebelisa lisebelisoa tsohle tse fumanehang ho eona. 'Me sebui se haufi le Luxoft se buile ka tharollo ea hae bakeng sa Post ea Russia. O boletse hore ba hlile ba rata ClickHouse, empa ha ba e sebelise ho fapana le mohlolisani oa bona e moholo hobane e ne e ja CPU eohle. Mme ba ne ba sa khone ho e hokela moahong oa bona, ho ZooKeeper ea bona e nang le li-dockers. Na hoa khoneha ho fokotsa ClickHouse ka tsela e itseng hore e se ke ea sebelisa ntho e 'ngoe le e' ngoe e fumanehang ho eona?

E, hoa khoneha ebile ho bonolo haholo. Haeba u batla ho sebelisa li-cores tse fokolang, joale ngola feela set max_threads = 1. 'Me ke eona, e tla phethahatsa kopo ka mokhoa o le mong. Ho feta moo, o ka hlakisa litlhophiso tse fapaneng bakeng sa basebelisi ba fapaneng. Kahoo ha ho bothata. 'Me u bolelle basebetsi-'moho le uena ba Luxoft hore ha ho molemo hore ebe ha baa fumana boemo bona litokomaneng.

Alexey, hello! Ke kopa ho botsa ka potso ena. Ha se lekhetlo la pele ke utloa hore batho ba bangata ba qala ho sebelisa ClickHouse e le polokelo ea likutu. Tlalehong u itse u se ke ua etsa sena, ke hore, ha ho hlokahale hore u boloke likhoele tse telele. U nahana'ng ka eona?

Ntlha ea pele, li-logs, joalo ka molao, ha se likhoele tse telele. Ho hlakile hore ho na le mekhelo. Mohlala, ts'ebeletso e 'ngoe e ngotsoeng ho java e etsa mokhelo, e kentsoe. 'Me joalo-joalo ka loop e sa feleng,' me sebaka sa hard drive se fela. Tharollo e bonolo haholo. Haeba mela e le telele haholo, joale e khaole. Nako e telele e bolela'ng? Li-kilobyte tse mashome li mpe*.

* liphetolelong tsa morao-rao tsa ClickHouse, "adaptive index granularity" e lumelloa, e felisang bothata ba ho boloka mela e melelele ka bongata.

Na kilobyte e tloaelehile?

Ho tloaelehile.

Lumela! Re leboha tlaleho! Ke se ke ntse ke botsa ka sena moqoqong, empa ha ke hopole hore na ke fumane karabo. Na ho na le merero ea ho atolosa ka tsela e itseng karolo ea WITH ka mokhoa oa CTE?

Ha e so etsahale. Karolo ea rona ea WITH e batla e se na thuso. E tšoana le tšobotsi e nyenyane bakeng sa rona.

Kea utloisisa. Kea leboha!

Re leboha tlaleho! E khahla haholo! Potso ea lefats'e. Na ho na le merero ea ho fetola ho hlakoloa ha data, mohlomong ka mofuta o itseng oa li-stubs?

Ho hlokahala. Ona ke mosebetsi oa rona oa pele moleng oa rona. Hona joale re nahana ka mafolofolo mabapi le mokhoa oa ho etsa ntho e 'ngoe le e' ngoe ka nepo. 'Me u lokela ho qala ho tobetsa keyboard*.

* o tobetse likonopo keyboard mme a etsa tsohle.

Na see se tla ama ts'ebetso ea sistimi kapa che? Na ho kenya ho tla ba ka potlako joaloka hona joale?

Mohlomong ho hlakola ka bobona le lintlafatso ka botsona li tla ba boima haholo, empa sena se ke ke sa ama ts'ebetso ea likhetho kapa ts'ebetso ea ho kenya.

Le potso e 'ngoe hape e nyane. Puisanong u buile ka senotlolo sa mantlha. Ka hona, re na le karohano, e leng khoeli le khoeli ka ho sa feleng, e nepahetse? Mme ha re beha letsatsi la matsatsi a lekanang le khoeli, ebe ho baloa karohano ena feela, na ha ho joalo?

E.

Potso. Haeba re sa khone ho khetha senotlolo leha e le sefe sa mantlha, na ho nepahetse ho e etsa ka ho khetheha ho ea ka tšimo ea "Letsatsi" e le hore ka morao ho be le ho hlophisoa bocha ha data ee e le hore e lumellane ka mokhoa o hlophisehileng haholoanyane? Haeba u sena lipotso tse fapaneng 'me u sa khone ho khetha senotlolo leha e le sefe sa mantlha, na ho bohlokoa ho beha letsatsi senotlolo sa mantlha?

E.

Mohlomong hoa utloahala ho beha tšimo senotlolong sa mantlha se tla hatella data hantle haeba e hlophisitsoe ke sebaka sena. Ka mohlala, ID ea mosebedisi. Mosebelisi, mohlala, o ea sebakeng se le seng. Tabeng ena, beha id ea mosebedisi le nako. 'Me joale lintlha tsa hau li tla hatelloa hamolemo. Ha e le letsatsi, haeba u hlile ha u na 'me ha ho mohla u kileng ua ba le lipotso tse fapaneng ka matsatsi, ha ua tlameha ho beha letsatsi senotlolo sa mantlha.

Ho lokile ke leboha haholo!

Source: www.habr.com

Eketsa ka tlhaloso