ClickHouse pou itilizatè avanse nan kesyon ak repons

Nan mwa avril, enjenyè Avito te rasanble pou reyinyon sou entènèt ak prensipal devlopè ClickHouse Alexey Milovidov ak Kirill Shvakov, yon pwomotè Golang ki soti nan Integros. Nou te diskite sou fason nou itilize yon sistèm jesyon baz done ak ki difikilte nou rankontre.

Dapre reyinyon an, nou te konpile yon atik ak repons ekspè nan kesyon nou yo ak kesyon odyans lan sou sovgad, resharding done, diksyonè ekstèn, chofè Golang ak ajou vèsyon ClickHouse. Li ka itil devlopè ki deja travay aktivman ak Yandex DBMS epi ki enterese nan prezan ak avni li yo. Pa default, repons yo se pa Alexey Milovidov, sof si ekri yon lòt jan.

Fè atansyon, gen anpil tèks anba koupe a. Nou espere ke kontni an ak kesyon pral ede w navige.

ClickHouse pou itilizatè avanse nan kesyon ak repons

Content

Si ou pa vle li tèks la, ou ka gade anrejistreman rasanbleman yo sou chanèl YouTube nou an. Timecodes yo nan premye kòmantè anba videyo a.

ClickHouse toujou mete ajou, men done nou yo pa. Kisa pou fè sou li?

ClickHouse yo toujou ap mete ajou, epi done nou yo, ki te optimize finalman trete, yo pa mete ajou epi yo nan yon kopi backup.

Ann di nou te gen kèk pwoblèm ak done yo te pèdi. Nou te deside retabli, epi li te tounen soti ke patisyon yo fin vye granmoun, ki yo estoke sou sèvè yo backup, yo trè diferan de vèsyon an kounye a itilize nan ClickHouse. Ki sa ki fè nan yon sitiyasyon konsa, epi li posib?

Yon sitiyasyon kote ou retabli done ki sòti nan yon backup nan yon ansyen fòma, men li pa konekte ak nouvo vèsyon an, se enposib. Nou asire w ke fòma done nan ClickHouse toujou rete konpatib bak. Sa a se pi plis enpòtan pase konpatibilite bak nan fonksyonalite si konpòtman an nan kèk fonksyon raman te chanje. Nouvo vèsyon ClickHouse ta dwe toujou kapab li done ki estoke sou disk la. Sa a se lalwa.

Ki pi bon pratik aktyèl yo pou fè backup done ki soti nan ClickHouse?

Ki jan yo fè sovgad, pran an kont ke nou te optimize operasyon final yo, yon baz done gwo teraoctet, ak done ki mete ajou, di, pou twa dènye jou yo, ak Lè sa a, pa gen okenn pwosedi rive li?

Nou ka fè pwòp solisyon nou epi ekri sou bach la: kolekte kopi backup sa yo nan yon fason ak yon fason. Petèt pa gen okenn bezwen beki anyen, ak bisiklèt la te envante lontan de sa?

Ann kòmanse ak pi bon pratik yo. Kòlèg mwen yo toujou konseye, an repons a kesyon sou sovgad, raple yo sou sèvis Yandex.Cloud, kote pwoblèm sa a te deja rezoud. Se konsa, sèvi ak li si sa posib.

Pa gen okenn solisyon konplè pou sovgad, santèn pousan bati nan ClickHouse. Gen kèk espas vid ki ka itilize. Pou jwenn yon solisyon konplè, ou pral swa gen tinker yon ti kras manyèlman, oswa kreye anbalaj nan fòm lan nan scripts.

Mwen pral kòmanse ak solisyon ki pi senp yo epi fini ak sa yo ki pi sofistike, tou depann de volim nan done ak gwosè a nan gwoup la. Plis gwoup la pi gwo, solisyon an vin pi konplèks.

Si tab la ak done okipe sèlman kèk jigokte, backup ka fè tankou sa a:

  1. Sove definisyon tab sa vle di metadata - montre kreye tab la.
  2. Fè yon pil fatra lè l sèvi avèk kliyan ClickHouse - chwazi * soti nan tab la pou ranpli. Pa default ou pral resevwa yon fichye nan fòma TabSeparated. Si ou vle pi efikas, ou ka fè li nan fòma natif natal.

Si kantite done a pi gwo, Lè sa a, backup la pral pran plis tan ak anpil espas. Yo rele sa yon backup lojik li pa mare nan fòma done ClickHouse. Si li se, Lè sa a, kòm yon dènye rekou ou ka pran yon backup epi Upload li nan MySQL pou rekiperasyon.

Pou ka ki pi avanse, ClickHouse gen yon kapasite entegre pou kreye yon snapshot patisyon nan sistèm dosye lokal la. Karakteristik sa a disponib kòm yon demann chanje patisyon friz tab la. Oswa tou senpleman chanje tab friz - sa a se yon snapshot de tout tab la.

Yo pral kreye snapshot la toujou pou yon tab sou yon shard, sa vle di, li enposib pou kreye yon snapshot konsistan nan tout gwoup la nan fason sa a. Men, pou pifò travay pa gen okenn bezwen sa yo, epi li ase pou egzekite yon demann sou chak shard epi jwenn yon snapshot ki konsistan. Li se kreye nan fòm lan nan lyen difisil ak Se poutèt sa pa pran plis espas. Apre sa, ou kopye snapshot sa a sou sèvè backup la oswa nan depo ou itilize pou sovgad la.

Retabli yon backup konsa se byen fasil. Premyèman, kreye tab lè l sèvi avèk definisyon tab ki egziste deja. Apre sa, kopye snapshots ki sove yo nan patisyon yo nan Directory-Detached pou tab sa yo epi kouri rechèch la. tache patisyon. Solisyon sa a se byen apwopriye pou volim ki pi grav nan done.

Pafwa ou bezwen yon bagay menm pi fre - nan ka kote ou gen dè dizèn oswa menm dè santèn de teraocte sou chak sèvè ak dè santèn de serveurs. Gen yon solisyon isit la ke mwen te ranmase nan men kòlèg mwen yo nan Yandex.Metrica. Mwen pa ta rekòmande pou tout moun - li li epi deside pou tèt ou si li apwopriye oswa ou pa.

Premye ou bezwen kreye plizyè serveurs ak etajè ki gen kapasite gwo. Apre sa, sou sèvè sa yo, ogmante plizyè sèvè ClickHouse epi konfigirasyon yo pou yo travay kòm yon lòt kopi pou menm shards yo. Lè sa a, sèvi ak yon sistèm dosye oswa kèk zouti sou serveurs sa yo ki pèmèt ou kreye snapshots. Gen de opsyon isit la. Premye opsyon a se snapshots LVM, dezyèm opsyon a se ZFS sou Linux.

Apre sa, chak jou ou bezwen kreye yon snapshot, li pral kouche ak pran kèk espas. Natirèlman, si done yo chanje, kantite espas ap ogmante sou tan. Ka snapshot sa a dwe pran soti nan nenpòt ki lè ak done yo retabli, tankou yon solisyon etranj. Anplis, nou bezwen tou limite kopi sa yo nan konfigirasyon an pou yo pa eseye vin lidè.

Èske li pral posib yo òganize yon lag kontwole nan kopi nan arbr yo?

Ane sa a ou ap planifye fè arbr nan ClickHouse. Èske li pral posib yo òganize yon lag kontwole nan kopi nan yo? Nou ta renmen sèvi ak li pou pwoteje tèt nou kont senaryo negatif ak chanjman ak lòt chanjman.

Èske li posib fè kèk kalite woule tounen pou chanje? Pou egzanp, nan yon arbr ki egziste deja, pran epi di ke jiska moman sa a ou aplike chanjman yo, epi apati moman sa a ou sispann aplike chanjman yo?

Si yon kòmandman te vin nan gwoup nou an epi li te kraze l, Lè sa a, nou gen yon kopi kondisyonèl ki gen yon dekalaj èdtan, kote nou ka di ke ann sèvi ak li nan moman sa a, men nou pa pral aplike chanjman nan li pou dis minit ki sot pase yo?

Premyèman, sou lag nan kontwole nan kopi. Te gen yon demann konsa nan men itilizatè yo, epi nou te kreye yon pwoblèm sou Github ak demann lan: "Si yon moun bezwen sa a, tankou li, mete yon kè." Pèsonn pa te delivre, epi pwoblèm nan te fèmen. Sepandan, ou ka deja jwenn opòtinite sa a lè w mete ClickHouse. Se vre, sèlman kòmanse nan vèsyon 20.3.

ClickHouse toujou ap fè fusion done nan background nan. Lè yon fizyone fini, yon seri sèten moso done ranplase ak yon moso pi gwo. An menm tan an, moso done ki te la anvan kontinye rete sou disk la pou kèk tan.

Premyèman, yo kontinye estoke osi lontan ke gen rechèch chwazi ki sèvi ak yo, yo nan lòd yo bay operasyon ki pa bloke. Chwazi demann yo fasil li nan moso fin vye granmoun.

Dezyèmman, gen tou yon papòt tan - moso fin vye granmoun nan done kouche sou disk la pou uit minit. Uit minit sa yo ka Customized e menm tounen yon sèl jou. Sa a pral koute espas ki gen kapasite: depann sou koule nan done, li sanble ke nan dènye jou a done yo pral pa sèlman double, li ta ka vin senk fwa plis. Men, si gen yon pwoblèm grav, ou ka sispann sèvè ClickHouse la epi regle tout bagay.

Koulye a, kesyon an rive sou ki jan sa a pwoteje kont chanje. Li vo pran yon gade pi fon isit la, paske nan vèsyon ki pi gran nan ClickHouse, alter la te travay nan yon fason ke li tou senpleman chanje moso dirèkteman. Gen yon moso nan done ak kèk dosye, epi nou fè, pou egzanp, chanje kolòn gout. Lè sa a, kolòn sa a fizikman retire nan tout fragman.

Men, kòmanse ak vèsyon 20.3, mekanis nan chanje konplètman chanje, epi kounye a moso nan done yo toujou imuiabl. Yo pa chanje ditou - chanje kounye a travay nan anpil menm jan ak fusions. Olye pou yo ranplase yon moso sou plas la, nou kreye yon nouvo. Nan nouvo moso nan, fichye ki pa chanje yo vin di lyen, epi si nou efase yon kolòn, li pral tou senpleman manke nan nouvo moso nan. Pyès ansyen an pral efase pa default apre uit minit, epi isit la ou ka ajiste anviwònman yo mansyone pi wo a.

Menm bagay la tou aplike nan chanjman tankou mitasyon. Lè ou fè chanje efase oswa chanje aktyalizasyon, li pa chanje pyès la, men li kreye yon nouvo. Lè sa a, efase ansyen an.

E si estrikti tab la chanje?

Ki jan yo retabli yon backup ki te fèt ak konplo a fin vye granmoun? Ak dezyèm kesyon an se sou ka a ak snapshots ak zouti sistèm dosye. Èske Btrfs bon isit la olye pou yo ZFS sou Linux LVM?

Si ou fè sa tache patisyon partisyon ak yon estrikti diferan, Lè sa a, ClickHouse pral di w ke sa a pa posib. Sa a se solisyon an. Premye a se kreye yon tab tanporè nan kalite MergeTree ak ansyen estrikti a, tache done la lè l sèvi avèk atache, epi fè yon rechèch alter. Lè sa a, ou ka swa kopye oswa transfere done sa yo epi tache ankò, oswa itilize yon demann chanje tab deplase patisyon.

Koulye a, dezyèm kesyon an se si Btrfs ka itilize. Pou kòmanse, si ou gen LVM, Lè sa a, snapshots LVM yo ase, ak sistèm nan dosye ka ext4, li pa enpòtan. Avèk Btrts, tout bagay depann de eksperyans ou nan sèvi ak li. Sa a se yon sistèm dosye ki gen matirite, men gen toujou kèk sispèk sou ki jan tout bagay pral travay deyò nan pratik nan yon senaryo patikilye. Mwen pa ta rekòmande pou itilize sa a sof si ou gen Btrfs nan pwodiksyon.

Ki sa ki pi bon pratik aktyèl yo nan resharding done?

Pwoblèm resharding la se konplèks ak plizyè aspè. Gen plizyè repons posib isit la. Ou ka ale nan yon sèl bò epi di sa a - ClickHouse pa gen yon karakteristik re-sharding entegre. Men, mwen pè repons sa a pa pral kostim pèsonn. Se poutèt sa, ou ka ale soti nan lòt bò a epi di ke ClickHouse gen plizyè fason pou reshard done.

Si gwoup la fini nan espas oswa li pa ka okipe chaj la, ou ajoute nouvo serveurs. Men, serveurs sa yo vid pa default, pa gen okenn done sou yo, pa gen okenn chaj. Ou bezwen ordonne done yo pou yo ka gaye egalman atravè nouvo gwoup ki pi gwo a.

Premye fason sa a ka fè se kopye yon pati nan patisyon yo nan nouvo serveurs lè l sèvi avèk yon demann chanje tab chache patisyon. Pou egzanp, ou te gen patisyon pa mwa, epi ou pran premye mwa a nan 2017 epi kopye li nan yon nouvo sèvè, Lè sa a, kopye twazyèm mwa a nan kèk lòt nouvo sèvè. Epi ou fè sa jiskaske li vin plis oswa mwens menm.

Transfè ka fèt sèlman pou patisyon sa yo ki pa chanje pandan anrejistreman an. Pou patisyon fre, anrejistreman ap gen yo dwe enfim, paske transfè yo se pa atomik. Sinon, ou pral fini ak doublons oswa twou vid ki genyen nan done yo. Sepandan, metòd sa a se pratik ak travay byen efikas. Pare-fè patisyon konprese yo transmèt sou rezo a, se sa ki, done yo pa konprese oswa re-kode.

Metòd sa a gen yon sèl dezavantaj, epi li depann de konplo sharding la, si ou te pwomèt nan konplo sharding sa a, ki kle sharding ou te genyen. Nan egzanp ou a pou ka a ak mezi, kle a sharding se hash nan chemen an. Lè ou chwazi yon tab Distribiye, li ale nan tout shards nan gwoup la alafwa epi li pran done ki soti nan la.

Sa vle di ke li aktyèlman pa gen pwoblèm pou ou ki done te fini sou ki teson. Bagay pwensipal lan se ke done sou yon sèl chemen fini sou yon sèl shard, men ki youn pa enpòtan. Nan ka sa a, transfere patisyon pare yo se pafè, paske ak rechèch chwazi ou pral resevwa tou done konplè - si anvan resharding oswa apre, konplo a pa reyèlman gen pwoblèm.

Men, gen ka ki pi konplèks. Si nan nivo lojik aplikasyon an ou konte sou yon konplo espesyal sharding, ke kliyan sa a sitiye sou tankou yon shard, epi yo ka demann lan dwe voye dirèkteman la, epi yo pa sou tab la distribye. Oswa w ap itilize yon vèsyon ki jis nan ClickHouse epi w ap pèmèt anviwònman an optimize sote fragments ki pa itilize yo. Nan ka sa a, pandan rechèch la chwazi, ekspresyon ki nan seksyon an ki kote yo pral analize epi li pral kalkile ki shards bezwen yo dwe itilize dapre konplo a sharding. Sa a ap travay bay done yo patisyon egzakteman dapre konplo sharding sa a. Si ou rearanje yo manyèlman, korespondans lan ka chanje.

Se konsa, sa a se metòd nimewo en. Apre sa, mwen ap tann pou repons ou a, si metòd la apwopriye, oswa kite a deplase sou.

Vladimir Kolobaev, dirijan administratè sistèm nan Avito: Alexey, metòd ke ou mansyone a pa travay trè byen lè ou bezwen gaye chay la, enkli lekti. Nou ka pran yon patisyon ki se chak mwa epi yo ka pran mwa anvan an nan yon lòt ne, men lè yon demann vini pou done sa a, nou pral sèlman chaje li. Men, nou ta renmen chaje gwoup la tout antye, paske otreman, pandan kèk tan chaj la lekti tout antye pral trete pa de shards.

Alexey Milovidov: Repons isit la se etranj - wi, li nan move, men li ta ka travay. Mwen pral eksplike egzakteman ki jan. Li vo gade senaryo a chaj ki vini dèyè done ou yo. Si sa a se done siveyans, Lè sa a, nou ka prèske sètènman di ke vas majorite nan demann yo se pou done fre.

Ou enstale nouvo serveurs, te imigre ansyen patisyon yo, men tou ou chanje fason yo anrejistre done fre. Epi done fre yo pral gaye nan tout gwoup la. Kidonk, apre senk minit sèlman, demann pou senk dènye minit yo ap chaje grap la respire apre yon jou, demann pou 24 èdtan ap chaje grap la. Ak demann pou mwa anvan an, malerezman, pral sèlman ale nan yon pati nan sèvè gwoup yo.

Men, souvan ou pa pral gen demann espesyalman pou fevriye 2019. Gen plis chans, si demann ale nan 2019, Lè sa a, yo pral pou tout 2019 la - pou yon gwo peryòd de tan, epi yo pa pou kèk ti seri. Ak demann sa yo pral kapab tou chaje gwoup la respire. Men, an jeneral, remak ou a se absoliman kòrèk ke sa a se yon solisyon ad hoc ki pa gaye done yo konplètman respire.

Mwen gen kèk lòt pwen pou reponn kesyon an. Youn nan yo se sou kòman yo okòmansman konsepsyon yon konplo sharding pou re-sharding ta lakòz mwens doulè. Sa pa toujou posib.

Pou egzanp, ou gen done siveyans. Done siveyans ap grandi pou twa rezon. Premye a se akimilasyon done istorik. Dezyèm lan se kwasans trafik. E twazyèm lan se yon ogmantasyon nan kantite bagay ki sijè a siveyans. Gen nouvo mikwosèvis ak mezi ki bezwen sove.

Li posib ke nan sa yo, se ogmantasyon nan pi gwo ki asosye ak rezon ki fè twazyèm - ogmantasyon nan itilizasyon siveyans. Ak nan ka sa a, li vo gade nan nati a nan chaj la, ki sa yo se rechèch prensipal yo chwazi. Rekèt debaz seleksyone yo pral gen plis chans baze sou kèk sou-ansanm nan mezi.

Pou egzanp, itilizasyon CPU sou kèk serveurs pa kèk sèvis. Li sanble ke gen yon sèten pati nan kle kote ou jwenn done sa yo. Ak demann nan tèt li pou done sa a gen plis chans byen senp epi li konplete nan dè dizèn de milisgond. Itilize pou siveyans sèvis ak tablodbò. Mwen espere ke mwen konprann sa a kòrèkteman.

Vladimir Kolobaev: Reyalite a se ke nou trè souvan fè apèl kont done istorik, depi nou konpare sitiyasyon aktyèl la ak youn istorik la an tan reyèl. Epi li enpòtan pou nou gen aksè rapid nan yon gwo kantite done, ak ClickHouse fè yon travay ekselan ak sa a.

Ou gen rezon absoliman, nou fè eksperyans pi fò nan demann yo lekti nan dènye jou a, tankou nenpòt sistèm siveyans. Men, an menm tan an, chaj la sou done istorik tou se byen gwo. Fondamantalman li soti nan yon sistèm alèt ki ale alantou chak trant segonn epi li di ClickHouse: “Ban m done yo pou sis dènye semèn yo. Koulye a, fè m 'yon kalite mwayèn k ap deplase nan men yo, epi ann konpare valè aktyèl la ak valè istorik la."

Mwen ta renmen di ke pou demann sa yo trè resan nou gen yon lòt ti tab kote nou estoke sèlman de jou nan done, ak demann prensipal yo vole nan li. Nou sèlman voye gwo demann istorik nan tab la gwo sharded.

Alexey Milovidov: Malerezman, li sanble mal aplikab pou senaryo w la, men mwen pral di w yon deskripsyon de plan sharding move ak konplèks ki pa bezwen itilize, men ki itilize nan sèvis zanmi m yo.

Gen yon gwoup prensipal ak evènman Yandex.Metrica. Evènman yo se vize paj, klik, ak konvèsyon. Pifò demann ale nan yon sit entènèt espesifik. Ou louvri sèvis Yandex.Metrica, ou gen yon sit entènèt - avito.ru, ale nan rapò a, epi yo fè yon demann pou sit entènèt ou a.

Men, gen lòt demann - analitik ak mondyal - ke yo fè pa analis entèn yo. Jis nan ka, mwen sonje ke analis entèn yo fè demann sèlman pou sèvis Yandex. Men, sepandan, menm sèvis Yandex okipe yon pati enpòtan nan tout done yo. Sa yo se demann pa pou kontwa espesifik, men pou pi laj filtraj.

Ki jan yo òganize done yo nan yon fason ke tout bagay travay avèk efikasite pou yon kontwa, ak demann mondyal tou? Yon lòt difikilte se ke kantite demann nan ClickHouse pou gwoup la Metrics se plizyè mil pa segonn. An menm tan an, yon sèl sèvè ClickHouse pa ka okipe demann ki pa trivial, pou egzanp, plizyè milye pa segonn.

Gwosè gwoup la se sis san-yon bagay serveurs. Si ou tou senpleman rale yon tab Distribiye sou gwoup sa a epi voye plizyè milye demann la, li pral vin menm pi mal pase voye yo nan yon sèl sèvè. Nan lòt men an, opsyon a ke done yo gaye respire, epi nou ale epi mande soti nan tout serveurs, imedyatman ranvwaye.

Gen yon opsyon ki dyametralman opoze. Imajine si nou shard done yo atravè sit, epi yon demann pou yon sit ale nan yon sèl shard. Koulye a, gwoup la pral kapab okipe dimil (10.000) demann pou chak segonn, men sou yon sèl shard nenpòt demann ap travay twò dousman. Li p ap echèl ankò an tèm de debi. Espesyalman si sa a se sit la avito.ru. Mwen pa pral revele sekrè a si mwen di ke Avito se youn nan sit ki pi vizite nan RuNet. Ak trete li sou yon sèl ti moso ta pral bagay moun fou.

Se poutèt sa, konplo a sharding fèt nan yon fason ki pi atizan konn fè. Gwoup la tout antye divize an yon kantite grap, ke nou rele kouch. Chak gwoup gen yon douzèn ak plizyè douzèn shards. Gen trantnèf gwoup sa yo an total.

Ki jan sa a tout echèl? Nimewo a nan grap pa chanje - jan li te trant-nèf kèk ane de sa, li rete konsa. Men, nan chak nan yo, nou piti piti ogmante kantite shards kòm nou akimile done. Ak konplo a sharding kòm yon antye se tankou sa a: grap sa yo divize an sit entènèt, epi yo nan lòd yo konprann ki sit entènèt ki sou ki gwoup, yo itilize yon metabaz separe nan MySQL. Yon sit - sou yon sèl gwoup. Ak andedan li, sharding rive selon ID vizitè yo.

Lè anrejistreman, nou divize yo pa rès divizyon ID vizitè a. Men, lè w ajoute yon nouvo shard, konplo sharding la chanje, nou kontinye divize, men ak yon rès divizyon an pa yon lòt nimewo. Sa vle di ke yon vizitè deja sitiye sou plizyè serveurs, epi ou pa ka konte sou sa a. Sa a se fè sèlman asire ke done yo pi byen konprese. Epi lè w ap fè demann, nou ale nan tab la distribye, ki gade gwoup la ak aksè plizyè douzèn serveurs. Sa a se tankou yon konplo estipid.

Men, istwa mwen an pral enkonplè si mwen pa di ke nou abandone konplo sa a. Nan nouvo konplo a, nou chanje tout bagay epi kopye tout done yo lè l sèvi avèk clickhouse-copier.

Nan nouvo konplo a, tout sit yo divize an de kategori - gwo ak piti. Mwen pa konnen ki jan yo te chwazi papòt la, men rezilta a se te ke gwo sit yo anrejistre sou yon gwoup, kote gen 120 shards ak twa kopi chak - se sa ki, 360 sèvè. Ak konplo a sharding se konsa ke nenpòt demann ale nan tout shards an menm tan. Si ou kounye a louvri nenpòt paj rapò pou avito.ru nan Yandex.Metrica, demann lan pral ale nan 120 serveurs. Gen kèk gwo sit nan RuNet. Ak demann yo pa mil pou chak segonn, men menm mwens pase yon santèn. Tout bagay sa a se tou dousman moulen moute pa tab la distribye, ki chak nan yo trete ak 120 serveurs.

Epi dezyèm gwoup la se pou ti sit. Isit la se yon konplo sharding ki baze sou ID sit la, epi chak demann ale nan egzakteman yon shard.

ClickHouse gen yon sèvis piblik clickhouse-copieur. Èske ou ka pale nou sou li?

Mwen pral di touswit ke solisyon sa a se pi ankonbran ak yon ti jan mwens pwodiktif. Avantaj la se ke li smears done yo konplètman dapre modèl la ou presize. Men, dezavantaj nan sèvis piblik la se ke li pa reshard ditou. Li kopye done ki sòti nan yon chema grap nan yon lòt chema grap.

Sa vle di ke pou li travay ou dwe gen de grap. Yo ka lokalize sou menm sèvè yo, men, kanmenm, done yo pa pral deplase enkreman, men yo pral kopye.

Pou egzanp, te gen kat serveurs, kounye a gen uit. Ou kreye yon nouvo tab Distribiye sou tout serveurs, nouvo tab lokal yo ak lanse clickhouse-copier, ki endike nan li konplo travay ke li ta dwe li soti nan la, aksepte nouvo konplo sharding la epi transfere done yo la. Ak sou ansyen serveurs w ap bezwen yon fwa ak yon mwatye plis espas pase kounye a, paske ansyen done yo dwe rete sou yo, ak mwatye nan menm ansyen done yo ap rive sou tèt yo. Si ou te panse davans ke done yo bezwen yo dwe resharded epi gen espas, Lè sa a, metòd sa a se apwopriye.

Ki jan clickhouse-copier travay andedan? Li kraze tout travay la nan yon seri travay pou trete yon patisyon nan yon tab sou yon sèl ti moso. Tout travay sa yo ka egzekite nan paralèl, epi clickhouse-kopieur ka kouri sou diferan machin nan plizyè ka, men sa li fè pou yon patisyon se pa plis pase yon seleksyon insert. Done yo li, dekonprese, repartisyone, answit konprese ankò, ekri yon kote, epi re-triye. Sa a se yon desizyon ki pi di.

Ou te gen yon bagay pilòt ki rele resharding. Ki sa ak li?

Tounen nan 2017, ou te gen yon bagay pilòt yo rele resharding. Gen menm yon opsyon nan ClickHouse. Jan mwen konprann li, li pa t 'dekole. Èske w ka di m poukisa sa te rive? Li sanble trè enpòtan.

Pwoblèm nan antye se ke si li nesesè yo reshard done an plas, trè konplèks senkronizasyon yo mande yo nan lòd yo fè sa atomically. Lè nou te kòmanse gade ki jan senkronizasyon sa a fonksyone, li te vin klè ke te gen pwoblèm fondamantal. Ak pwoblèm fondamantal sa yo se pa sèlman teyorik, men imedyatman yo te kòmanse montre tèt yo nan pratik nan fòm lan nan yon bagay ki ka eksplike trè tou senpleman - pa gen anyen travay.

Èske li posib pou rantre tout moso nan done ansanm anvan ou deplase li nan ralanti disk?

Kesyon sou TTL ak opsyon mouvman pou ralanti disk nan yon kontèks fusions. Èske gen yon fason, lòt pase lè l sèvi avèk cron, rantre tout pati yo nan yon sèl anvan ou deplase yo nan ralanti disk?

Repons kesyon an se posib pou yon jan kanmenm otomatikman kole tout moso yo nan yon sèl anvan ou transfere yo - non. Mwen pa panse sa nesesè. Ou pa bezwen rantre tout pati yo nan yon sèl, men tou senpleman konte sou lefèt ke yo pral transfere nan disk ralanti otomatikman.

Nou gen de kritè pou règ transfè. Premye a se jan li ranpli. Si nivo depo aktyèl la gen mwens pase yon sèten pousantaj espas gratis, nou chwazi yon moso epi deplase li nan depo pi dousman. Oswa olye, pa pi dousman, men youn nan pwochen - jan ou konfigirasyon.

Dezyèm kritè a se gwosè. Li se sou deplase gwo moso. Ou ka ajiste papòt la selon espas lib la sou disk la vit, epi done yo pral transfere otomatikman.

Ki jan yo emigre nan nouvo vèsyon ClickHouse si pa gen okenn fason yo tcheke konpatibilite davans?

Sijè sa a diskite regilyèman nan ClickHouse telegram chat pran an kont diferan vèsyon, epi toujou. Ki jan li an sekirite pou ajou soti nan vèsyon 19.11 a 19.16 epi, pou egzanp, soti nan 19.16 a 20.3. Ki pi bon fason pou emigre nan nouvo vèsyon san yo pa kapab tcheke konpatibilite nan sandbox la davans?

Gen plizyè règ "an lò" isit la. Premye - li changelog la. Li se gwo, men gen paragraf separe sou bak chanjman enkonpatib. Pa trete pwen sa yo kòm yon drapo wouj. Sa yo se anjeneral enkonpatibilite minè ki enplike kèk fonksyonalite kwen ke ou trè chans pa itilize.

Dezyèmman, si pa gen okenn fason yo tcheke konpatibilite nan bwat sab la, epi ou vle mete ajou imedyatman nan pwodiksyon an, rekòmandasyon an se ke ou pa bezwen fè sa. Premye kreye yon bwat sab epi teste. Si pa gen okenn anviwònman tès, Lè sa a, ou gen plis chans pa gen yon konpayi trè gwo, ki vle di ou ka kopye kèk nan done yo sou laptop ou epi asire w ke tout bagay travay kòrèkteman sou li. Ou ka menm ogmante plizyè kopi lokalman sou machin ou. Oswa ou ka pran yon nouvo vèsyon yon kote ki tou pre epi telechaje kèk nan done yo la - se sa ki, kreye yon anviwònman tès enprovize.

Yon lòt règ se pa mete ajou pou yon semèn apre liberasyon an nan vèsyon an akòz pwan pinèz nan pwodiksyon ak koreksyon rapid ki vin apre. Ann kalkile nimero vèsyon ClickHouse pou nou pa konfonn.

Gen vèsyon 20.3.4. Nimewo a 20 endike ane a nan fabrikasyon - 2020. Soti nan pwen de vi nan sa ki andedan, sa a pa gen pwoblèm, kidonk nou pa pral peye atansyon sou li. Next - 20.3. Nou ogmante dezyèm nimewo a - nan ka sa a 3 - chak fwa nou lage yon lage ak kèk nouvo fonksyonalite. Si nou vle ajoute kèk karakteristik nan ClickHouse, nou dwe ogmante nimewo sa a. Sa vle di, nan vèsyon 20.4 ClickHouse ap travay menm pi byen. Twazyèm chif la se 20.3.4. Isit la 4 se kantite patch degaje kote nou pa t ajoute nouvo karakteristik, men nou te fikse kèk ensèk. Ak 4 vle di nou te fè li kat fwa.

Pa panse ke sa a se yon bagay terib. Anjeneral itilizatè a ka enstale vèsyon an dènye epi li pral travay san okenn pwoblèm ak uptime chak ane. Men, imajine ke nan kèk fonksyon pou trete bitmaps, ki te ajoute pa kamarad Chinwa nou yo, sèvè a aksidan lè yo pase agiman kòrèk. Nou gen yon responsablite pou ranje sa. Nou pral lage yon nouvo vèsyon patch ak ClickHouse ap vin pi estab.

Si ou genyen ClickHouse ap kouri nan pwodiksyon, epi yon nouvo vèsyon ClickHouse vini ak karakteristik adisyonèl - pou egzanp, 20.4.1 se youn nan trè premye, pa prese mete l nan pwodiksyon nan premye jou a. Poukisa li nesesè nan tout? Si ou pa deja itilize ClickHouse, Lè sa a, ou ka enstale li, epi gen plis chans tout bagay pral anfòm. Men, si ClickHouse deja ap travay estab, Lè sa a, kenbe yon je sou plak ak mizajou yo wè ki pwoblèm nou ap fikse.

Kirill Shvakov: Mwen ta renmen ajoute yon ti kras sou anviwònman tès yo. Tout moun pè anpil nan anviwònman tès yo ak pou kèk rezon yo kwè ke si ou gen yon gwoup ClickHouse trè gwo, Lè sa a, anviwònman tès la ta dwe pa mwens oswa omwen dis fwa pi piti. Se pa konsa ditou.

Mwen ka di ou nan pwòp egzanp mwen an. Mwen gen yon pwojè, e gen ClickHouse. Anviwònman tès nou an se jis pou li - sa a se yon ti machin vityèl nan Hetzner pou ven ero, kote absoliman tout bagay deplwaye. Pou fè sa, nou gen automatisation konplè nan Ansible, ak Se poutèt sa, nan prensip, li pa fè okenn diferans ki kote yo ale - nan serveurs pyès ki nan konpitè oswa jis deplwaye nan machin vityèl.

Kisa ki ka fè? Li ta bon pou bay yon egzanp nan dokiman ClickHouse sou fason pou deplwaye yon ti gwoup nan pwòp lakay ou - nan Docker, nan LXC, petèt kreye yon liv Ansible, paske diferan moun gen deplwaman diferan. Sa a pral senplifye anpil. Lè ou pran ak deplwaye yon gwoup nan senk minit, li pi fasil pou eseye kalkile yon bagay. Sa a se pi plis pratik, paske woule nan yon vèsyon pwodiksyon ke ou pa te teste se yon wout nan okenn kote. Pafwa li travay epi pafwa li pa fè sa. Se poutèt sa, espere siksè se move.

Maxim Kotyakov, ansyen enjenyè backend Avito: Mwen pral ajoute yon ti kras sou anviwònman tès soti nan yon seri de pwoblèm fè fas pa gwo konpayi yo. Nou gen yon gwoup akseptasyon ClickHouse konplè an tèm de konplo done ak anviwònman, li se yon kopi egzak sa ki nan pwodiksyon. Gwoup sa a deplwaye nan resipyan ki pa gen patipri ak yon minimòm de resous. Nou ekri yon sèten pousantaj nan done yo pwodiksyon la, erezman li se posib yo repwodui kouran an nan Kafka. Tout bagay la senkronize ak echèl - tou de an tèm de kapasite ak koule, epi, nan teyori, tout lòt bagay yo egal, li ta dwe konpòte tankou pwodiksyon an tèm de metrik. Tout bagay ki kapab eksplozif premye woule sou kanpe sa a epi kite la pandan plizyè jou jiskaske pare. Men, natirèlman, solisyon sa a se chè, difisil epi li gen depans sipò ki pa zewo.

Alexey Milovidov: Mwen pral di w ki jan anviwònman tès zanmi nou yo soti nan Yandex.Metrica ye. Yon gwoup te gen 600-enpè sèvè, yon lòt te gen 360, epi gen yon twazyèm ak plizyè grap. Anviwònman tès la pou youn nan yo se tou senpleman de shards ak de kopi nan chak. Poukisa de ti kal? Pou w pa poukont ou. Epi ta dwe gen kopi tou. Jis yon sèten kantite minimòm ke ou kapab peye.

Anviwònman tès sa a pèmèt ou tcheke si demann ou yo ap travay epi si gen yon bagay gwo kase. Men, souvan pwoblèm rive nan yon nati konplètman diferan, lè tout bagay ap travay, men gen kèk ti chanjman nan chaj la.

Kite m ba w yon egzanp. Nou deside enstale yon nouvo vèsyon ClickHouse. Li te afiche sou yon anviwònman tès, tès otomatik yo te konplete nan Yandex.Metrica tèt li, ki konpare done sou vèsyon an ansyen ak yon sèl nan nouvo, kouri tiyo a tout antye. Ak nan kou, tès vèt nan CI nou an. Sinon nou pa t ap menm pwopoze vèsyon sa a.

Tout bagay anfòm. Nou ap kòmanse avanse nan pwodiksyon an. Mwen resevwa yon mesaj ke chaj la sou graf yo te ogmante plizyè fwa. Nou ap woule tounen vèsyon an. Mwen gade nan graf la ak wè: chaj la aktyèlman ogmante plizyè fwa pandan deplwaye a, ak diminye tounen lè yo woule soti. Lè sa a, nou te kòmanse woule tounen vèsyon an. Ak chay la te ogmante menm jan an epi li te tonbe tounen nan menm fason an. Se konsa, konklizyon an se sa a: chaj la te ogmante akòz Layout a, pa gen anyen etone.

Lè sa a, li te difisil konvenk kòlèg yo enstale nouvo vèsyon an. Mwen di: "Se oke, woule. Kenbe dwèt ou kwaze, tout bagay ap mache. Koulye a, chaj la sou graf yo ogmante, men tout bagay anfòm. Kwoke la." An jeneral, nou te fè sa, e se li - vèsyon an te lage pou pwodiksyon an. Men, prèske ak tout layout pwoblèm menm jan an rive.

Kill query sipoze touye demann, men li pa fè sa. Poukisa?

Yon itilizatè, yon kalite analis, te vin jwenn mwen epi li te kreye yon demann ki mete gwoup ClickHouse mwen an. Gen kèk nod oswa tout gwoup, tou depann de ki kopi oswa shard demann lan te ale. Mwen wè ke tout resous CPU yo sou sèvè sa a yo nan yon etajè, tout bagay se wouj. An menm tan an, ClickHouse li menm reponn a demann yo. Apre sa, mwen ekri: "Tanpri, montre m ', lis pwosesis, ki demann ki te pwodwi foli sa a."

Mwen jwenn demann sa a epi ekri touye sou li. E mwen wè pa gen anyen k ap pase. Sèvè mwen an nan yon etajè, ClickHouse Lè sa a, ban m 'kèk kòmandman, montre ke sèvè a vivan, ak tout bagay se gwo. Men, mwen gen degradasyon nan tout demann itilizatè yo, degradasyon kòmanse ak dosye nan ClickHouse, ak demann touye mwen an pa travay. Poukisa? Mwen te panse touye demann te sipoze touye demann, men li pa fè sa.

Koulye a, pral gen yon repons olye etranj. Pwen an se ke kill query pa touye demann.

Kill query tcheke yon ti bwat ki rele "Mwen vle ke rechèch sa a dwe touye." Ak demann nan tèt li gade drapo sa a lè w ap trete chak blòk. Si li mete, demann lan sispann travay. Li sanble ke pa gen moun ki touye demann lan, li menm li dwe tcheke tout bagay epi sispann. Lè sa a ta dwe travay nan tout ka kote demann lan se nan eta a nan pwosesis blòk nan done. Li pral trete pwochen blòk done a, tcheke drapo a, epi sispann.

Sa a pa travay nan ka kote demann lan bloke sou kèk operasyon. Se vre, gen plis chans sa a se pa ka ou a, paske, dapre ou, li itilize yon tòn resous sèvè. Li posib ke sa a pa travay nan ka a nan klasman ekstèn ak nan kèk lòt detay. Men, an jeneral sa a pa ta dwe rive, li se yon ensèk. Ak sèl bagay mwen ka rekòmande se mete ajou ClickHouse.

Ki jan yo kalkile tan repons anba chay lekti?

Gen yon tab ki estoke total atik - kontwa divès kalite. Nimewo a nan liy se apeprè yon santèn milyon dola. Èske li posib pou konte sou yon tan repons previzib si ou vide 1K RPS pou 1K atik?

Jije pa kontèks la, nou ap pale de chay la lekti, paske pa gen okenn pwoblèm ak ekri - menm yon mil, menm yon santèn mil, epi pafwa plizyè milyon ranje ka mete.

Demann lekti yo trè diferan. Nan seleksyone 1, ClickHouse ka fè apeprè dè dizèn de milye demann pou chak segonn, kidonk menm demann pou yon kle pral deja mande kèk resous. Ak demann pwen sa yo pral pi difisil pase nan kèk baz done kle-valè, paske pou chak lekti li nesesè li yon blòk nan done pa endèks. Endèks nou an adrese pa chak dosye, men chak seri. Sa vle di, ou pral oblije li tout seri a - sa a se 8192 liy pa default. Epi w ap gen dekonprese blòk done konprese a soti nan 64 KB a 1 MB. Tipikman, demann sa yo vize pran kèk milisgond pou konplete. Men, sa a se opsyon ki pi senp.

Ann eseye kèk senp aritmetik. Si ou miltipliye kèk milisgond pa mil, ou jwenn kèk segonn. Se kòmsi li enposib kenbe ak yon mil demann pou chak segonn, men an reyalite li posib, paske nou gen plizyè nwayo processeur. Se konsa, nan prensip, ClickHouse ka pafwa kenbe 1000 RPS, men pou demann kout, espesyalman vize yo.

Si ou bezwen echèl yon gwoup ClickHouse pa kantite demann senp, Lè sa a, mwen rekòmande bagay ki pi senp la - ogmante kantite kopi epi voye demann nan yon kopi o aza. Si yon kopi kenbe senksan (500) demann pou chak segonn, ki se konplètman reyalis, Lè sa a, twa kopi pral okipe mil ak yon mwatye.

Pafwa, nan kou, ou ka configured ClickHouse pou kantite maksimòm lekti pwen. Ki sa ki nesesè pou sa a? Premye a se diminye granularite endèks la. Nan ka sa a, li pa ta dwe redwi a yon sèl, men sou baz ke kantite antre nan endèks la pral plizyè milyon oswa dè dizèn de milyon pou chak sèvè. Si tab la gen yon santèn milyon ranje, Lè sa a, granularite a ka mete sou 64.

Ou ka diminye gwosè a nan blòk la konprese. Gen paramèt pou sa min konpresyon gwosè blòk, gwosè blòk max konpresyon. Yo ka redwi, ranpli ak done, ak Lè sa a, demann vize yo pral pi vit. Men, toujou, ClickHouse se pa yon baz done kle-valè. Yon gwo kantite ti demann se yon antimodèl chaj.

Kirill Shvakov: Mwen pral bay konsèy nan ka gen kont òdinè la. Sa a se yon sitiyasyon jistis estanda lè ClickHouse magazen kèk kalite kontwa. Mwen gen yon itilizatè, li soti nan yon peyi tankou yon, ak kèk jaden twazyèm, epi mwen bezwen ogmante yon bagay incrémentielle. Pran MySQL, fè yon kle inik - nan MySQL li se yon kle kopi, ak nan PostgreSQL li se yon konfli - epi ajoute yon siy plis. Sa a pral travay pi byen.

Lè ou pa gen anpil done, pa gen anpil pwen nan itilize ClickHouse. Gen baz done regilye epi yo fè sa byen.

Kisa mwen ka ajiste nan ClickHouse pou gen plis done nan kachèt la?

Ann imajine yon sitiyasyon - serveurs yo gen 256 GB RAM, nan woutin chak jou ClickHouse pran apeprè 60-80 GB, nan pik - jiska 130. Ki sa ki ka pèmèt ak ajiste pou ke plis done se nan kachèt la, epi, kòmsadwa, gen mwens vwayaj nan disk la?

Tipikman, kachèt paj sistèm operasyon an fè yon bon travay nan sa a. Si ou jis louvri tèt la, gade la nan kachèt oswa gratis - li tou di konbyen lajan se kachèt - Lè sa a, ou pral remake ke tout memwa a gratis yo itilize pou kachèt la. Epi lè w ap li done sa yo, li pa pral li nan disk la, men nan RAM la. An menm tan an, mwen ka di ke kachèt la itilize efektivman paske li se done yo konprese ki se kachèt.

Sepandan, si ou vle akselere kèk demann senp menm plis, li posib pou pèmèt yon kachèt nan done yo dekonprese andedan ClickHouse. Li rele kachèt dekonprese. Nan fichye konfigirasyon config.xml la, mete gwosè kachèt dekonprese a nan valè ou bezwen an - mwen rekòmande pa plis pase mwatye nan RAM gratis la, paske rès la pral ale anba kachèt paj la.

Anplis de sa, gen de anviwònman nivo demann. Premye anviwònman - sèvi ak kachèt dekonprese - gen ladan itilizasyon li yo. Li rekòmande pou pèmèt li pou tout demann, eksepte sa ki lou, ki ka li tout done yo ak kole kachèt la. Ak dezyèm anviwònman an se yon bagay tankou kantite maksimòm liy yo sèvi ak kachèt la. Li otomatikman limite gwo demann pou yo kontoune kachèt la.

Kouman mwen ka konfigirasyon storage_configuration pou depo nan RAM?

Nan nouvo dokiman ClickHouse mwen li seksyon ki gen rapò ak depo done. Deskripsyon an gen yon egzanp ak SSD rapid.

Mwen mande ki jan menm bagay la ka configuré ak volim memwa cho. Ak yon lòt kesyon. Ki jan seleksyone travay ak òganizasyon done sa a, èske li pral li tout seri a oswa sèlman youn nan ki sou disk, epi èske done sa yo konprese nan memwa? Ak ki jan seksyon an prewhere travay ak yon òganizasyon done konsa?

Anviwònman sa a afekte depo moso done yo, epi fòma yo pa chanje nan okenn fason.
Ann pran yon gade pi pre.

Ou ka configured depo done nan RAM. Tout sa ki configuré pou disk la se chemen li yo. Ou kreye yon patisyon tmpfs ki monte nan kèk chemen nan sistèm dosye a. Ou presize chemen sa a kòm chemen pou estoke done pou patisyon ki pi cho a, moso done kòmanse rive epi yo ekri la, tout bagay anfòm.

Men, mwen pa rekòmande fè sa paske nan fyab ki ba, byenke si ou gen omwen twa kopi nan sant done diferan, Lè sa a, li posib. Si yon bagay rive, done yo pral retabli. Ann imajine ke sèvè a te toudenkou etenn ak vire tounen sou. Patisyon an te monte ankò, men pa te gen anyen la. Lè sèvè ClickHouse la kòmanse, li wè ke li pa gen moso sa yo, byenke, dapre metadata ZooKeeper, yo ta dwe la. Li gade ki kopi ki genyen yo, li mande yo epi telechaje yo. Nan fason sa a done yo pral retabli.

Nan sans sa a, estoke done nan RAM pa fondamantalman diferan de estoke yo sou disk, paske lè done yo ekri sou disk, li tou premye fini nan kachèt paj la epi yo ekri fizikman pita. Sa depann de opsyon aliye sistèm fichye a. Men, jis nan ka, mwen pral di ke ClickHouse pa fsync lè mete.

Nan ka sa a, done yo nan RAM la estoke nan egzakteman menm fòma ak sou disk la. Rekèt la chwazi nan menm fason an chwazi moso yo ki bezwen li, chwazi chenn done ki nesesè nan moso yo, epi li yo. Ak prewhere travay egzakteman menm jan an, kèlkeswa si done yo te nan RAM oswa sou disk.

Jiska ki kantite valè inik kadinalite ba efikas?

Kardinalite ba se malen fèt. Li konpile diksyonè done, men yo lokal yo. Premyèman, gen diksyonè diferan pou chak moso, epi dezyèmman, menm nan yon sèl pyès yo ka diferan pou chak seri. Lè kantite valè inik rive nan yon nimewo papòt - yon milyon, mwen panse - diksyonè a se tou senpleman etajè epi yo kreye yon nouvo.

Repons lan se an jeneral: pou chak seri lokal - di, pou chak jou - yon kote jiska yon milyon valè inik Kardinalite ki ba se efikas. Apre sa, pral gen tou senpleman yon remplacement, nan ki anpil diksyonè diferan yo pral itilize, epi yo pa sèlman youn. Li pral travay apeprè menm jan ak yon kolòn fisèl regilye, petèt yon ti kras mwens efikas, men pa pral gen okenn degradasyon pèfòmans grav.

Ki pi bon pratik pou chèche tèks konplè sou yon tablo ki gen senk milya ranje?

Gen repons diferan. Premye a se di ke ClickHouse se pa yon motè rechèch plen tèks. Gen sistèm espesyal pou sa, pou egzanp, Elasticsearch и sfenks. Sepandan, de pli zan pli mwen wè moun ki di yo ap chanje soti nan Elasticsearch pou ClickHouse.

Poukisa sa rive? Yo eksplike sa a pa lefèt ke Elasticsearch sispann fè fas ak chaj la nan kèk komèsan, kòmanse ak konstriksyon an nan endèks. Endèks yo vin twò ankonbran, epi si ou tou senpleman transfere done yo nan ClickHouse, li sanble ke yo estoke plizyè fwa pi efikas an tèm de volim. An menm tan an, rechèch rechèch yo te souvan pa tankou ke li te nesesè yo jwenn kèk fraz nan volim nan tout done, pran an kont mòfoloji, men yo konplètman diferan. Pou egzanp, jwenn kèk sekans nan bytes nan mòso bwa yo nan dènye èdtan yo.

Nan ka sa a, ou kreye yon endèks nan ClickHouse, premye jaden an ki pral dat ak lè. Ak pi gwo done koupe yo pral baze sou seri dat la. Nan seri dat yo chwazi a, kòm yon règ, li deja posib pou fè yon rechèch tèks konplè, menm lè l sèvi avèk metòd la fòs brital lè l sèvi avèk tankou. Operatè a tankou nan ClickHouse se pi efikas operatè a tankou ou ka jwenn. Si w jwenn yon bagay ki pi bon, di m.

Men, toujou, tankou se yon eskanè konplè. Ak eskanè konplè ka ralanti pa sèlman sou CPU a, men tou, sou disk la. Si toudenkou ou gen yon teraocte done pou chak jou, epi w ap chèche yon mo pandan jounen an, Lè sa a, w ap oblije eskane teraocte a. Epi li la pwobableman sou kondwi difisil regilye, epi nan fen a yo pral chaje nan yon fason ke ou pa yo pral kapab jwenn aksè nan sèvè sa a atravè SSH.

Nan ka sa a, mwen pare yo ofri yon lòt ti Trick. Li eksperimantal - li ta ka travay, li ta ka pa. ClickHouse gen endèks tèks konplè sou fòm filtè Bloom trigram yo. Kòlèg nou yo nan Arenadata te deja eseye endèks sa yo, epi yo souvan travay egzakteman jan yo gen entansyon.

Pou w ka itilize yo kòrèkteman, ou ta dwe gen yon bon konpreyansyon sou egzakteman ki jan yo travay: ki sa yon filtè Bloom trigram se ak ki jan yo chwazi gwosè li. Mwen ka di ke yo pral ede pou demann sou kèk fraz ki ra, substrings ki raman jwenn nan done yo. Nan ka sa a, yo pral chwazi subranges pa endèks epi mwens done yo pral li.

Dènyèman, ClickHouse te ajoute menm plis fonksyon avanse pou rechèch tèks konplè. Sa a se, premyèman, yon rechèch pou yon pakèt substrings nan yon fwa nan yon sèl pas, ki gen ladan opsyon ki ka-sansib, ka-sansib, ak sipò pou UTF-8 oswa sèlman pou ASCII. Chwazi youn ki pi efikas ou bezwen an.

Rechèch pou plizyè ekspresyon regilye nan yon sèl pas te parèt tou. Ou pa bezwen ekri X tankou yon sousstring oswa X tankou yon lòt substring. Ou ekri touswit, epi tout bagay fèt pi efikas ke posib.

Twazyèmman, gen kounye a yon rechèch apwoksimatif pou regexps ak yon rechèch apwoksimatif pou substrings. Si yon moun te mal òtograf yon mo, yo pral chèche l pou maksimòm matche ak.

Ki pi bon fason pou òganize aksè a ClickHouse pou yon gwo kantite itilizatè?

Di nou ki jan pi byen òganize aksè pou yon gwo kantite konsomatè ak analis. Ki jan yo fòme yon keu, priyorite demann max konkouran, ak ak ki zouti?

Si gwoup la se gwo ase, Lè sa a, yon solisyon bon ta dwe ogmante de lòt serveurs, ki pral vin yon pwen antre pou analis yo. Sa vle di, pa pèmèt analis jwenn aksè nan shards espesifik nan gwoup la, men tou senpleman kreye de sèvè vid, san done, ak konfigirasyon dwa aksè sou yo. Nan ka sa a, anviwònman itilizatè pou demann distribiye yo transfere nan sèvè aleka. Sa vle di, ou configured tout bagay sou de serveurs sa yo, ak paramèt yo gen yon efè sou tout gwoup la.

Nan prensip, sèvè sa yo pa gen okenn done, men kantite RAM sou yo trè enpòtan pou egzekite demann yo. Disk la ka itilize tou pou done tanporè si agrégation ekstèn oswa klasman ekstèn pèmèt.

Li enpòtan pou gade nan anviwònman yo ki asosye ak tout limit posib. Si mwen kounye a ale nan gwoup Yandex.Metrica kòm yon analis epi mande yon demann chwazi konte nan frape, Lè sa a, yo pral imedyatman ba mwen yon eksepsyon ke mwen pa kapab egzekite demann lan. Kantite maksimòm ranje ke mwen gen dwa eskane se yon santèn milya dola, ak nan total gen senkant billions nan yon sèl tablo sou gwoup la. Sa a se premye limit la.

Ann di mwen retire limit ranje a epi kouri rechèch la ankò. Lè sa a, mwen pral wè eksepsyon sa a - anviwònman pèmèt fòs endèks pa dat. Mwen pa ka ranpli rechèch la si mwen pa espesifye yon seri dat. Ou pa bezwen konte sou analis pou presize li manyèlman. Yon ka tipik se lè yon seri dat ekri kote dat evènman ant semèn. Lè sa a, yo tou senpleman espesifye yon bracket nan plas la mal, ak olye pou yo epi li te tounen soti yo dwe oswa - oswa URL matche ak. Si pa gen limit, li pral rale kolòn URL la epi jis gaspiye yon tòn resous.

Anplis de sa, ClickHouse gen de paramèt priyorite. Malerezman, yo trè primitif. Youn tou senpleman rele priyorite. Si priyorite ≠ 0, ak demann ki gen kèk priyorite yo ap egzekite, men yon demann ki gen yon valè priyorite ki mwens pase, ki vle di yon priyorite ki pi wo, yo ap egzekite, Lè sa a, yon demann ki gen yon valè priyorite ki pi gwo, ki vle di yon priyorite ki pi ba. , se tou senpleman sispann epi yo pa pral travay nan tout pandan tan sa a.

Sa a se yon anviwònman trè brit epi li pa apwopriye pou ka kote gwoup la gen yon chaj konstan. Men, si ou gen demann kout, eklatman ki enpòtan, epi gwoup la se sitou san fè anyen konsa, konfigirasyon sa a apwopriye.

Se pwochen anviwònman priyorite a rele OS fil priyorite. Li tou senpleman mete valè a bèl pou tout fil ekzekisyon demann pou orè Linux la. Li travay konsa-konsa, men li toujou ap travay. Si ou mete minimòm valè bèl - li se pi gwo nan valè, ak Se poutèt sa priyorite ki pi ba a - epi mete -19 pou demann ki gen gwo priyorite, Lè sa a, CPU a pral konsome demann ki ba priyorite apeprè kat fwa mwens pase sa ki gen gwo priyorite.

Ou bezwen tou configured tan an ekzekisyon demann maksimòm - di, senk minit. Vitès minimòm nan ekzekisyon demann se bagay ki pi fre. Anviwònman sa a te alantou pou yon tan long, epi li oblije non sèlman afime ke ClickHouse pa ralanti, men fòse li.

Imajine, ou konfigirasyon: si kèk pwosesis rechèch mwens pase yon milyon ranje pou chak segonn, ou pa ka fè sa. Sa wont bon non nou, bon baz done nou an. Ann jis entèdi sa. Gen aktyèlman de paramèt. Youn rele min vitès ekzekisyon - nan liy pou chak segonn, ak dezyèm lan rele timeout anvan tcheke min vitès ekzekisyon - kenz segonn pa default. Sa vle di, kenz segonn se posib, ak Lè sa a, si li dousman, Lè sa a, jis voye yon eksepsyon epi avòte demann lan.

Ou bezwen tou set up quota. ClickHouse gen yon karakteristik kota entegre ki konte konsomasyon resous yo. Men, malerezman, pa resous pyès ki nan konpitè tankou CPU, disk, men ki lojik - kantite demann trete, liy ak bytes li. Epi ou ka configured, pou egzanp, yon maksimòm de yon santèn demann nan senk minit ak yon mil demann pou chak èdtan.

Poukisa li enpòtan? Paske kèk rechèch analiz yo pral fè manyèlman dirèkteman nan kliyan ClickHouse la. Epi tout pral byen. Men, si ou gen analis avanse nan konpayi ou, yo pral ekri yon script, epi ka gen yon erè nan script la. Ak erè sa a pral lakòz demann lan dwe egzekite nan yon bouk enfini. Sa a se sa nou bezwen pwoteje tèt nou kont.

Èske li posib bay rezilta yo nan yon sèl rechèch bay dis kliyan?

Nou gen plizyè itilizatè ki renmen vini ak gwo demann nan menm moman an. Demann lan se gwo epi, an prensip, egzekite byen vit, men akòz lefèt ke gen anpil demann sa yo an menm tan, li vin trè douloure. Èske li posib pou egzekite demann lan menm, ki te rive dis fwa nan yon ranje, yon fwa, epi bay rezilta a dis kliyan?

Pwoblèm lan se ke nou pa gen rezilta yo nan kachèt la oswa kachèt nan done entèmedyè. Gen yon kachèt paj nan sistèm operasyon an, ki pral anpeche w li done ki soti nan disk la ankò, men, malerezman, done yo ap toujou dekonprese, deserialize ak retrete.

Mwen ta renmen yon jan kanmenm evite sa a, swa pa kachèt done entèmedyè, oswa pa liy moute demann menm jan an nan kèk kalite keu epi ajoute yon kachèt rezilta. Kounye a nou gen yon sèl demann rale nan devlopman ki ajoute yon kachèt demann, men sèlman pou subqueries nan seksyon yo ak rantre nan - se sa ki, solisyon an se enkonplè.

Sepandan, nou menm tou nou fè fas ak yon sitiyasyon konsa. Yon egzanp patikilyèman kanonik se demann paj. Gen yon rapò, li gen plizyè paj, epi gen yon demann pou limit 10. Lè sa a, menm bagay la, men limit 10,10. Lè sa a, yon lòt paj pwochen. Ak kesyon an se, poukisa nou konte tout sa a chak fwa? Men koulye a, pa gen okenn solisyon, epi pa gen okenn fason pou evite li.

Gen yon solisyon altènatif ki mete kòm yon sidecar akote ClickHouse - ClickHouse Proxy.

Kirill Shvakov: ClickHouse Proxy gen yon limiter to entegre ak yon kachèt rezilta entegre. Yon anpil nan anviwònman yo te fè la paske yon pwoblèm menm jan an te rezoud. Proxy pèmèt ou limite demann yo lè w mete yo nan keu epi configured konbyen tan kachèt demann lan ap viv. Si demann yo te reyèlman menm jan an, Proxy pral voye yo anpil fwa, men li pral ale nan ClickHouse yon sèl fwa.

Nginx tou gen yon kachèt nan vèsyon an gratis, e sa ap travay tou. Nginx menm gen anviwònman ke si demann yo rive an menm tan an, li pral ralanti lòt moun jiskaske youn fini. Men, se nan ClickHouse Proxy konfigirasyon an fè pi byen. Li te fèt espesyalman pou ClickHouse, espesyalman pou demann sa yo, kidonk li pi apwopriye. Oke, li fasil enstale.

Ki sa ki sou operasyon asynchrone ak opinyon materyalize?

Gen yon pwoblèm ke operasyon ak motè a reparèt yo asynchrone - premye done yo ekri, Lè sa a, li tonbe. Si yon tablèt materyalize ak kèk total viv anba siy la, Lè sa a, kopi yo pral ekri nan li. Men, si pa gen okenn lojik konplèks, Lè sa a, done yo pral kopi. Kisa ou ka fè sou li?

Gen yon solisyon evidan - aplike yon deklanche sou yon sèten klas matviews pandan yon operasyon efondreman asynchrone. Èske gen nenpòt bal an ajan oswa plan pou aplike fonksyonalite menm jan an?

Li vo konprann ki jan deduplication travay. Ki sa mwen pral di ou kounye a se pa enpòtan nan kesyon an, men jis nan ka li vo sonje.

Lè mete nan yon tab replike, gen deduplication nan tout blòk yo mete. Si ou reinsert menm blòk ki genyen menm kantite menm ranje yo nan menm lòd la, lè sa a done yo deduplike. Ou pral resevwa "Ok" an repons a insert, men an reyalite yon pake done yo pral ekri, epi li pa pral kopi.

Sa a se nesesè pou sètitid. Si ou resevwa "Ok" pandan ensèsyon, Lè sa a, done ou yo te antre. Si ou resevwa yon erè nan men ClickHouse, sa vle di yo pa te antre epi ou bezwen repete ensèsyon an. Men, si koneksyon an kase pandan ensèsyon, Lè sa a, ou pa konnen si done yo te eleman oswa ou pa. Sèl opsyon se repete ensèsyon an ankò. Si done yo te aktyèlman antre epi ou reinserte li, gen deduplication blòk. Sa nesesè pou evite doublons.

Epi li enpòtan tou ki jan li travay pou opinyon materyalize. Si done yo te deduplike lè yo mete nan tablo prensipal la, Lè sa a, li pa pral antre nan vi a konkretize tou.

Kounye a sou kesyon an. Sitiyasyon w la pi konplike paske w ap anrejistre kopi liy endividyèl yo. Sa vle di, se pa pake a tout antye ki kopi, men liy espesifik, epi yo tonbe nan background nan. Vreman vre, done yo pral tonbe nan tablo prensipal la, men done ki pa tonbe yo pral ale nan gade nan materyalize, ak pandan fizyon pa gen anyen ki pral rive nan opinyon yo materyalize. Paske yon vi materyalize pa gen anyen plis pase yon deklanche insert. Pandan lòt operasyon, pa gen anyen anplis k ap pase nan li.

Apre sa, mwen pa ka fè ou kontan isit la. Ou jis bezwen chèche yon solisyon espesifik pou ka sa a. Pou egzanp, èske li posib pou rejoue li nan yon vi materyalize, ak metòd deduplication la ta ka travay menm jan an. Men, malerezman, pa toujou. Si li rasanble, li p ap travay.

Kirill Shvakov: Nou te gen tou konstriksyon beki tounen nan jounen an. Te gen yon pwoblèm ke gen enpresyon piblisite, e gen kèk done ke nou ka montre an tan reyèl - sa yo se jis enpresyon. Yo raman kopi, men si sa rive, nou pral tonbe yo pita de tout fason. Apre sa, te gen bagay ki pa t 'kapab double - klik ak tout istwa sa a. Men, mwen te vle montre yo prèske imedyatman.

Ki jan opinyon yo te fèt? Te gen opinyon kote li te ekri dirèkteman - li te ekri nan done anvan tout koreksyon, epi li te ekri nan opinyon. Gen, nan kèk pwen done yo pa trè kòrèk, li se kopi, ak sou sa. Epi gen yon dezyèm pati nan tablo a, kote yo gade egzakteman menm jan ak opinyon materyalize, se sa ki, yo absoliman idantik nan estrikti. Yon fwa nan yon ti tan nou rekalkile done yo, konte done yo san doub, ekri nan tab sa yo.

Nou te ale nan API a - sa a pa pral travay nan ClickHouse manyèlman. Ak API a sanble: lè mwen gen dat la nan adisyon nan dènye tab la, kote li se garanti ke done ki kòrèk la te deja kalkile, epi li fè yon demann nan yon tab ak nan yon lòt tab. Soti nan youn demann lan chwazi jiska yon sèten kantite tan, ak nan lòt la li vin sa ki poko kalkile. Epi li travay, men se pa atravè ClickHouse pou kont li.

Si ou gen yon kalite API - pou analis, pou itilizatè - Lè sa a, nan prensip, sa a se yon opsyon. Ou toujou ap konte, toujou ap konte. Sa a ka fè yon fwa pa jou oswa nan yon lòt lè. Ou chwazi pou tèt ou yon seri ke ou pa bezwen epi ki pa kritik.

ClickHouse gen anpil mòso bwa. Kouman mwen ka wè tout bagay ki rive sèvè a yon ti koutje sou?

ClickHouse gen yon gwo kantite mòso bwa diferan, ak nimewo sa a ap ogmante. Nan nouvo vèsyon, kèk nan yo menm aktive pa default nan ansyen vèsyon yo dwe aktive lè yo mete ajou. Sepandan, gen plis ak plis nan yo. Finalman, mwen ta renmen wè sa k ap pase ak sèvè mwen an kounye a, petèt sou kèk kalite tablodbò rezime.

Èske ou genyen nan ekip ClickHouse ou, oswa nan ekip zanmi ou yo, ki sipòte kèk fonksyonalite nan tablodbò pare yo ki ta montre mòso bwa sa yo kòm yon pwodwi pare-fè? Alafen, jis gade mòso bwa nan ClickHouse se gwo. Men, li ta trè fre si li te deja prepare nan fòm lan nan yon tablodbò. Mwen ta jwenn yon kout pye soti nan sa a.

Gen tablodbò, byenke yo pa estanda. Nan konpayi nou an, apeprè 60 ekip itilize ClickHouse, ak bagay ki pi etranj la se ke anpil nan yo gen tablodbò yo te fè pou tèt yo, ak yon ti kras diferan. Gen kèk ekip ki itilize yon enstalasyon Yandex.Cloud entèn. Gen kèk rapò ki pare, byenke se pa tout sa ki nesesè yo. Gen lòt ki gen pwòp pa yo.

Kòlèg mwen yo ki soti nan Metrica gen pwòp tablodbò yo nan Grafana, epi mwen gen pwòp pa m 'pou gwoup yo. Mwen gade bagay tankou kachèt frape pou kachèt serif la. E menm pi difisil se ke nou itilize zouti diferan. Mwen te kreye tablodbò mwen an lè l sèvi avèk yon zouti trè ansyen ki rele Graphite-web. Li konplètman lèd. Apre sa, mwen toujou sèvi ak li nan fason sa a, byenke Grafana ta pwobableman pi pratik ak bèl.

Bagay debaz la nan tablodbò se menm bagay la. Sa yo se mezi sistèm pou gwoup la: CPU, memwa, disk, rezo. Lòt moun - kantite demann similtane, kantite fusions similtane, kantite demann pou chak segonn, kantite maksimòm fragman pou patisyon tab MergeTree, lag replikasyon, gwosè keu replikasyon, kantite ranje inséré pou chak segonn, kantite blòk inséré pou chak segonn. Sa a se tout sa ki jwenn pa soti nan mòso bwa, men nan mezi.

Vladimir Kolobaev: Alexey, mwen ta renmen korije li yon ti kras. Gen Grafana. Grafana gen yon sous done, ki se ClickHouse. Sa vle di, mwen ka fè demann nan men Grafana dirèkteman nan ClickHouse. ClickHouse gen yon tab ak mòso bwa, se menm bagay la pou tout moun. Kòm yon rezilta, mwen vle jwenn aksè nan tablo sa a boutèy demi lit nan Grafana epi wè demann yo ke sèvè mwen an fè. Li ta bon pou gen yon tablodbò tankou sa a.

Mwen te monte bisiklèt li tèt mwen. Men, mwen gen yon kesyon - si tout bagay estanda, epi tout moun itilize Grafana, poukisa Yandex pa gen yon tablodbò ofisyèl konsa?

Kirill Shvakov: An reyalite, sous done ki ale nan ClickHouse kounye a sipòte Altinity. Apre sa, mwen jis vle bay yon vektè ki kote yo fouye ak ki moun yo pouse. Ou ka mande yo, paske Yandex toujou fè ClickHouse, epi yo pa istwa a alantou li. Altinity se konpayi prensipal ki fè pwomosyon ClickHouse kounye a. Yo p'ap abandone l', men yo pral sipòte l'. Paske, nan prensip, yo telechaje yon tablodbò sou sit entènèt Grafana, ou sèlman bezwen enskri ak Upload li - pa gen okenn pwoblèm espesyal.

Alexey Milovidov: Pandan ane ki sot pase a, ClickHouse te ajoute anpil kapasite pwofil rechèch. Gen mezi pou chak demann sou itilizasyon resous yo. Epi jis dènyèman, nou te ajoute yon profiler rechèch menm pi ba nivo yo wè ki kote yon rechèch ap depanse chak milisgond. Men, pou sèvi ak fonksyonalite sa a, mwen dwe louvri kliyan an konsole epi tape yon demann, ki mwen toujou bliye. Mwen sove li yon kote epi kontinye bliye ki kote egzakteman.

Mwen swete ke te gen yon zouti ki jis di, isit la se demann lou ou yo, gwoupe pa klas rechèch. Mwen peze sou youn, epi yo ta di m ke se poutèt sa li lou. Pa gen okenn solisyon konsa kounye a. Epi li vrèman etranj ke lè moun mande m ': "Di m', èske gen nenpòt tablodbò pare pou Grafana?", Mwen di: "Ale sou sit entènèt Grafana, gen yon kominote "Dashboards", epi gen yon tablodbò. soti nan Dimka, gen yon tablodbò ki soti nan Kostyan. Mwen pa konnen ki sa li ye, mwen pa te itilize li tèt mwen."

Ki jan yo enfliyanse fusions pou sèvè a pa aksidan nan OOM?

Mwen gen yon tab, gen yon sèl patisyon nan tab la, se ReplaceingMergeTree. Mwen te ekri done nan li pou kat ane. Mwen te bezwen fè yon chanjman nan li epi efase kèk done.

Mwen te fè sa, epi pandan pwosesis demann sa a, tout memwa sou tout sèvè yo nan gwoup la te boule, ak tout sèvè yo nan gwoup la te antre nan OOM. Lè sa a, yo tout leve ansanm, yo te kòmanse rantre nan menm operasyon sa a, blòk done sa a, epi yo te tonbe nan OOM ankò. Apre sa, yo leve ankò, yo tonbe ankò. Epi bagay sa a pa t sispann.

Lè sa a, li te tounen soti ke sa a te aktyèlman yon ensèk ke mesye yo ranje. Sa a trè fre, mèsi anpil. Men, yon rezidi rete. Epi, koulye a, lè mwen panse sou fè kèk kalite fizyone nan tablo a, mwen gen yon kesyon - poukisa mwen pa ka yon jan kanmenm enfliyanse fizyon sa yo? Pou egzanp, limite yo pa kantite RAM ki nesesè, oswa, an prensip, pa kantite lajan an ki pral trete tab patikilye sa a.

Mwen gen yon tab ki rele "Metrics", tanpri trete li pou mwen an de fil. Pa gen okenn nesesite yo kreye dis oswa senk fusions nan paralèl, fè li an de. Mwen panse ke mwen gen ase memwa pou de, men li ka pa ase pou trete dis. Poukisa pè rete? Paske tab la ap grandi, epi yon jou mwen pral fè fas ak yon sitiyasyon ki, nan prensip, se pa akòz yon ensèk ankò, men paske done yo pral chanje nan yon gwo kantite ke mwen tou senpleman pa pral gen ase memwa sou la. sèvè. Lè sa a, sèvè a pral fè aksidan nan OOM lè fusion. Anplis, mwen ka anile mitasyon an, men Merji pa la ankò.

Ou konnen, lè fizyone, sèvè a pa pral tonbe nan OOM, paske lè fizyone, kantite RAM yo itilize sèlman pou yon ti seri done. Se konsa, tout bagay pral byen kèlkeswa kantite done yo.

Vladimir Kolobaev: Byen. Isit la moman sa a se tankou ke apre yo te fikse ensèk la, mwen telechaje yon nouvo vèsyon pou tèt mwen, ak sou yon lòt tab, yon sèl ki pi piti, kote gen anpil patisyon, mwen fè yon operasyon menm jan an. Ak pandan fizyon an, apeprè 100 GB RAM te boule sou sèvè a. Mwen te okipe 150, 100 manje, ak yon fenèt 50 GB kite, kidonk mwen pa t 'tonbe nan OOM.

Ki sa ki aktyèlman pwoteje m 'nan tonbe nan OOM si li aktyèlman konsome 100 GB RAM? Kisa pou w fè si toudenkou RAM sou fusion yo fini?

Alexey Milovidov: Gen yon pwoblèm konsa ke konsomasyon nan RAM espesyalman pou fusion pa limite. Ak dezyèm pwoblèm nan se ke si gen yon kalite fizyon yo te asiyen, Lè sa a, li dwe egzekite paske li se anrejistre nan replikasyon an. Jounal replikasyon an se aksyon ki nesesè pou pote kopi a nan yon eta ki konsistan. Si ou pa fè manipilasyon manyèl ki pral woule mòso replikasyon sa a, fizyon an ap gen pou fèt yon fason oswa yon lòt.

Natirèlman, li pa ta initil pou gen yon limit RAM ki "jis nan ka" pwoteje kont OOM. Li pa pral ede fizyon an fini, li pral kòmanse ankò, rive nan kèk papòt, jete yon eksepsyon, ak Lè sa a, kòmanse ankò - pa gen anyen ki bon ap soti nan sa a. Men, nan prensip, li ta itil yo prezante restriksyon sa a.

Ki jan yo pral devlope chofè Golang pou ClickHouse?

Chofè Golang la, ki te ekri pa Kirill Shvakov, se kounye a ofisyèlman sipòte pa ekip la ClickHouse. Li nan depo ClickHouse la, li se kounye a gwo ak reyèl.

Yon ti nòt. Gen yon depo bèl bagay ak renmen anpil nan fòm nòmal nan lòd enfini - sa a se Vertica. Yo menm tou yo gen pwòp chofè python ofisyèl yo, ki sipòte pa devlopè Vertica yo. Ak plizyè fwa li te rive ke vèsyon yo depo ak vèsyon chofè yo diverge byen dramatikman, ak chofè a nan kèk pwen sispann travay. Ak dezyèm pwen an. Sipò pou chofè ofisyèl sa a, mwen sanble, se te pote soti nan "tete tete" sistèm nan - ou ekri yo yon pwoblèm, epi li pandye pou tout tan.

Mwen gen de kesyon. Koulye a, chofè Golang Kirill a se prèske yon fason default pou kominike soti nan Golang ak ClickHouse. Sòf si yon moun toujou kominike atravè koòdone http la paske li renmen li konsa. Ki jan devlopman chofè sa a pral kontinye? Èske li pral senkronize ak nenpòt chanjman kraze nan depo tèt li? Ak ki pwosedi a pou konsidere yon pwoblèm?

Kirill Shvakov: Premye a se ki jan tout bagay òganize biwokratik. Pwen sa a pa te diskite, donk mwen pa gen anyen pou m reponn.

Pou reponn kesyon an sou pwoblèm nan, nou bezwen yon ti istwa nan chofè a. Mwen te travay pou yon konpayi ki te gen anpil done. Se te yon spinner piblisite ak yon gwo kantite evènman ki te bezwen yo dwe estoke yon kote. Ak nan kèk pwen ClickHouse parèt. Nou te ranpli li ak done, e okòmansman tout bagay te byen, men apre ClickHouse te fè aksidan. Nan moman sa a nou te deside ke nou pa t bezwen li.

Yon ane apre, nou te retounen nan lide pou itilize ClickHouse, epi nou te bezwen ekri done la yon jan kanmenm. Mesaj entwodiksyon an te sa a: pyès ki nan konpitè a trè fèb, gen kèk resous. Men, nou te toujou travay nan fason sa a, ak Se poutèt sa nou gade nan direksyon pou pwotokòl natif natal la.

Depi nou t ap travay nan Go, li te klè ke nou te bezwen yon chofè Go. Mwen te fè li prèske aplentan - li te travay travay mwen an. Nou te mennen li nan yon sèten pwen, ak nan prensip pèsonn pa sipoze ke nenpòt lòt moun pase nou ta sèvi ak li. Lè sa a, CloudFlare te vini ak egzakteman menm pwoblèm nan, epi pou kèk tan nou te travay avèk yo trè fèt san pwoblèm, paske yo te gen menm travay yo. Anplis, nou te fè sa tou de nan ClickHouse tèt nou ak nan chofè a.

Nan kèk pwen, mwen tou senpleman sispann fè li, paske aktivite mwen an tèm de ClickHouse ak travay chanje yon ti kras. Se poutèt sa pwoblèm yo pa fèmen. Tanzantan, moun ki bezwen yon bagay tèt yo komèt nan depo a. Lè sa a, mwen gade nan demann lan rale epi pafwa mwen menm edite yon bagay tèt mwen, men sa rive raman.

Mwen vle retounen nan chofè a. Plizyè ane de sa, lè tout bagay sa a te kòmanse, ClickHouse te diferan tou ak kapasite diferan. Koulye a, nou gen yon konpreyansyon sou ki jan yo refè chofè a pou ke li travay byen. Si sa rive, Lè sa a, vèsyon 2 yo pral enkonpatib nan nenpòt ka akòz beki yo akimile.

Mwen pa konnen ki jan yo òganize zafè sa a. Mwen pa gen anpil tan tèt mwen. Si kèk moun fini chofè a, mwen ka ede yo epi di yo sa pou yo fè. Men, patisipasyon aktif Yandex nan devlopman pwojè a poko te diskite.

Alexey Milovidov: An reyalite, pa gen okenn biwokrasi sou chofè sa yo ankò. Bagay la sèlman se ke yo soumèt nan yon òganizasyon ofisyèl, se sa ki, chofè sa a rekonèt kòm solisyon ofisyèl ofisyèl pou Go. Gen kèk lòt chofè, men yo vini separeman.

Nou pa gen okenn devlopman entèn pou chofè sa yo. Kesyon an se si nou ka anboche yon moun, pa pou chofè an patikilye sa a, men pou devlopman tout chofè kominote yo, oubyen èske nou ka jwenn yon moun deyò.

Diksyonè ekstèn lan pa chaje apre yon rdemare ak paramèt lazy_load la aktive. Kisa pou fe?

Nou gen paramèt lazy_load la aktive, epi apre sèvè a rekòmanse, diksyonè a pa chaje poukont li. Li leve sèlman apre itilizatè a jwenn aksè nan diksyonè sa a. Ak premye fwa mwen jwenn aksè nan li, li bay yon erè. Èske li posib pou yon jan kanmenm otomatikman chaje diksyonè lè l sèvi avèk ClickHouse, oswa ou bezwen toujou kontwole preparasyon yo tèt ou pou itilizatè yo pa resevwa erè?

Petèt nou gen yon ansyen vèsyon ClickHouse, kidonk diksyonè a pa t chaje otomatikman. Èske sa ta ka ka a?

Premyèman, diksyonè yo ka fòse chaje lè l sèvi avèk yon rechèch sistèm rechaje diksyonè. Dezyèmman, konsènan erè a - si diksyonè a deja chaje, Lè sa a, demann yo ap travay ki baze sou done yo ki te chaje. Si diksyonè a poko chaje, li pral chaje dirèkteman pandan demann lan.

Sa a pa trè pratik pou diksyonè lou. Pou egzanp, ou bezwen rale yon milyon ranje soti nan MySQL. Yon moun fè yon seleksyon senp, men seleksyon sa a ap tann menm milyon ranje yo. Gen de solisyon isit la. Premye a se fèmen lazy_load. Dezyèmman, lè sèvè a leve, anvan ou mete chay la sou li, fè diksyonè sistèm rechaje oswa jis fè yon rechèch ki sèvi ak yon diksyonè. Lè sa a, diksyonè a pral chaje. Ou bezwen kontwole disponiblite diksyonè yo ak paramèt lazy_load la aktive, paske ClickHouse pa chaje yo otomatikman.

Repons pou dènye kesyon an se swa vèsyon an fin vye granmoun oswa li bezwen debogaj.

Kisa pou w fè ak lefèt ke sistèm rechaje diksyonè yo pa chaje okenn nan anpil diksyonè yo si omwen youn nan yo fè aksidan ak yon erè?

Gen yon lòt kesyon sou diksyonè sistèm rechaje. Nou gen de diksyonè - youn pa chaje, dezyèm lan chaje. Nan ka sa a, Diksyonè rechajman Sistèm pa chaje okenn diksyonè, epi ou dwe chaje yon sèl espesifik pwen pa pwen pa non li lè l sèvi avèk diksyonè sistèm rechaje. Èske sa a tou gen rapò ak vèsyon an ClickHouse?

Mwen vle fè ou kontan. Konpòtman sa a te chanje. Sa vle di ke si ou mete ajou ClickHouse, li pral chanje tou. Si ou pa kontan ak konpòtman ou ye kounye a sistèm rechaje diksyonè, mete ajou, epi ann espere ke li chanje pou pi bon an.

Èske gen yon fason pou konfigirasyon detay nan ClickHouse konfigirasyon an, men pa montre yo nan ka ta gen erè?

Pwochen kesyon an se sou erè ki gen rapò ak diksyonè a, sètadi detay. Nou te espesifye detay koneksyon yo nan konfigirasyon ClickHouse pou diksyonè a, epi si gen yon erè, nou resevwa detay sa yo ak modpas an repons.

Nou rezoud erè sa a lè nou ajoute detay nan konfigirasyon chofè ODBC la. Èske gen nenpòt fason yo konfigirasyon detay yo nan konfigirasyon ClickHouse, men yo pa montre detay sa yo nan ka ta gen erè?

Solisyon reyèl la isit la se presize kalifikasyon sa yo nan odbc.ini, ak nan ClickHouse tèt li presize sèlman non sous done ODBC. Sa p ap rive pou lòt sous diksyonè - ni pou diksyonè a ak MySQL, ni pou lòt yo, ou pa ta dwe wè modpas la lè ou resevwa yon mesaj erè. Pou ODBC, mwen pral gade tou - si li egziste, ou jis bezwen retire li.

Bonis: orijin pou Zoom soti nan rasanbleman

Lè w klike sou foto a, orijin bonis nan rasanbleman yo ap louvri pou lektè ki pi pèsistan yo. Nou etenn dife a ansanm ak Maskot teknoloji Avito yo, nou pale ak kòlèg ki soti nan chanm administratè sistèm lan oswa klib òdinatè ansyen lekòl la, epi nou fè reyinyon chak jou anba pon an sou yon seri grafiti.

ClickHouse pou itilizatè avanse nan kesyon ak repons

Sous: www.habr.com

Add nouvo kòmantè