ClickHouse don masu amfani masu ci gaba a cikin tambayoyi da amsoshi

A watan Afrilu, injiniyoyin Avito sun taru don tarurrukan kan layi tare da babban mai haɓaka ClickHouse Alexey Milovidov da Kirill Shvakov, mai haɓaka Golang daga Integros. Mun tattauna yadda muke amfani da tsarin sarrafa bayanai da irin matsalolin da muke fuskanta.

Dangane da taron, mun tattara labarin tare da amsoshin masana game da tambayoyinmu da masu sauraro game da madadin, sake tsara bayanai, ƙamus na waje, direban Golang da sabunta sigogin ClickHouse. Yana iya zama da amfani ga masu haɓakawa waɗanda tuni suke aiki tare da Yandex DBMS kuma suna sha'awar halin yanzu da nan gaba. Ta hanyar tsoho, amsoshin su ne ta Alexey Milovidov, sai dai in an rubuta.

Yi hankali, akwai rubutu da yawa a ƙarƙashin yanke. Muna fatan abun ciki tare da tambayoyi zai taimaka muku kewayawa.

ClickHouse don masu amfani masu ci gaba a cikin tambayoyi da amsoshi

Abubuwa

Idan ba ku son karanta rubutun, kuna iya kallon rikodin taron a tashar mu ta YouTube. Lambobin lokaci suna cikin sharhi na farko a ƙarƙashin bidiyon.

Ana sabunta ClickHouse akai-akai, amma bayananmu ba su wanzu. Me za a yi game da shi?

Ana sabunta ClickHouse akai-akai, kuma bayananmu, waɗanda aka inganta aikin ƙarshe, ba a sabunta su kuma suna cikin kwafin madadin.

Bari mu ce mun sami matsala kuma bayanan sun ɓace. Mun yanke shawarar mayar da shi, kuma ya zama cewa tsofaffin ɓangarori, waɗanda aka adana a kan sabobin ajiya, sun bambanta da sigar ClickHouse da ake amfani da su a halin yanzu. Me za a yi a irin wannan yanayin, kuma yana yiwuwa?

Halin da kuka maido da bayanai daga wariyar ajiya a cikin tsohon tsari, amma ba ya haɗa zuwa sabon sigar, ba zai yiwu ba. Muna tabbatar da cewa tsarin bayanai a cikin ClickHouse koyaushe yana kasancewa mai dacewa da baya. Wannan yana da mahimmanci fiye da dacewa da baya a cikin ayyuka idan yanayin wasu ayyukan da ba kasafai ake amfani da su ba ya canza. Sabuwar sigar ClickHouse yakamata ta kasance koyaushe tana iya karanta bayanan da aka adana akan faifai. Wannan ita ce doka.

Menene mafi kyawun ayyuka na yanzu don tallafawa bayanai daga ClickHouse?

Yadda za a yi backups, la'akari da cewa mun inganta karshe ayyuka, da babbar database na terabytes, da kuma bayanai da aka updated, ka ce, na karshe kwana uku, sa'an nan kuma babu hanyoyin faruwa da shi?

Za mu iya yin namu bayani kuma mu rubuta a kan bash: tattara waɗannan kwafin madadin ta irin wannan hanyar. Wataƙila babu buƙatar ƙulla wani abu, kuma an ƙirƙira keken tuntuni?

Bari mu fara da mafi kyawun ayyuka. Abokan aiki na koyaushe suna ba da shawara, don amsa tambayoyin game da madadin, don tunatar da su game da sabis na Yandex.Cloud, inda aka riga an warware wannan matsala. Don haka amfani da shi idan zai yiwu.

Babu cikakken bayani don madadin, kashi ɗari wanda aka gina a cikin ClickHouse. Akwai wasu blanks da za a iya amfani da su. Don samun cikakkiyar bayani, ko dai dole ne ku ɗan yi tinker da hannu, ko kuma ku ƙirƙiri wrappers ta hanyar rubutun.

Zan fara da mafita mafi sauƙi kuma in ƙare tare da mafi mahimmanci, dangane da ƙarar bayanai da girman gungu. Girman tari, mafi rikitarwa mafita ya zama.

Idan tebur tare da bayanai ya mamaye 'yan gigabytes kawai, ana iya yin madadin kamar haka:

  1. Ajiye ma'anar tebur watau metadata - nuna ƙirƙira tebur.
  2. Yi juji ta amfani da abokin ciniki ClickHouse - zaži * daga tebur da fayil. Ta tsohuwa za ku karɓi fayil a tsarin TabSeparated. Idan kuna son zama mafi inganci, kuna iya yin shi a cikin Tsarin Ƙasar.

Idan adadin bayanai ya fi girma, to madadin zai ɗauki ƙarin lokaci da sarari mai yawa. Ana kiran wannan maajiyar ma'ana; ba a haɗa shi da tsarin bayanan ClickHouse ba. Idan haka ne, to a matsayin makoma ta ƙarshe za ku iya ɗaukar madadin ku loda shi zuwa MySQL don dawowa.

Don ƙarin shari'o'in ci gaba, ClickHouse yana da ginanniyar ikon ƙirƙirar hoto na ɓangarori a cikin tsarin fayil na gida. Ana samun wannan fasalin azaman buƙata canza tebur daskare bangare. Ko kuma a sauƙaƙe canza tebur daskare - wannan hoto ne na dukan tebur.

Za a ƙirƙiri hoton hoto akai-akai don tebur ɗaya akan shard ɗaya, wato, ba zai yuwu a ƙirƙiri daidaitaccen hoton tari na gaba ɗaya ta wannan hanya ba. Amma ga yawancin ayyuka babu irin wannan buƙatar, kuma ya isa a aiwatar da buƙatu akan kowane shard kuma samun daidaitaccen hoto. An ƙirƙira shi a cikin hanyar haɗin yanar gizo don haka baya ɗaukar ƙarin sarari. Bayan haka, za ku kwafi wannan hoton zuwa uwar garken madadin ko zuwa ma'ajiyar da kuke amfani da ita don adanawa.

Maido da irin wannan madadin abu ne mai sauƙi. Da farko, ƙirƙiri teburi ta amfani da ma'anar tebur da ke akwai. Bayan haka, kwafi faifan hotuna da aka adana na ɓangarori zuwa ga Mai Rarraba-Detached don waɗannan teburan kuma gudanar da tambayar. haɗa bangare. Wannan bayani ya dace da mafi girman kundin bayanai.

Wani lokaci kuna buƙatar wani abu har ma mai sanyaya - a cikin yanayin da kuke da dubun ko ma ɗaruruwan terabyte akan kowace uwar garken da ɗaruruwan sabobin. Akwai mafita anan da na dauko daga abokan aiki na daga Yandex.Metrica. Ba zan ba da shawarar shi ga kowa ba - karanta shi kuma ku yanke shawara da kanku ko ya dace ko a'a.

Da farko kana buƙatar ƙirƙirar sabobin da yawa tare da manyan ɗakunan diski. Bayan haka, akan waɗannan sabobin, ɗaga sabar ClickHouse da yawa kuma saita su don suyi aiki azaman wani kwafi na shards iri ɗaya. Sannan yi amfani da tsarin fayil ko wasu kayan aiki akan waɗannan sabobin waɗanda ke ba ku damar ƙirƙirar hotuna. Akwai zaɓuɓɓuka biyu a nan. Zaɓin farko shine hotunan LVM, zaɓi na biyu shine ZFS akan Linux.

Bayan haka, kowace rana kuna buƙatar ƙirƙirar hoto, zai kwanta kuma ya ɗauki ɗan sarari. A zahiri, idan bayanan sun canza, adadin sarari zai karu akan lokaci. Ana iya ɗaukar wannan hoton a kowane lokaci kuma a dawo da bayanan, irin wannan bakon bayani. Bugu da kari, muna kuma buƙatar iyakance waɗannan kwafin a cikin tsarin don kada su yi ƙoƙarin zama shugabanni.

Shin zai yiwu a tsara laka mai sarrafawa na kwafi a cikin shafts?

A wannan shekara kuna shirin yin shafts a ClickHouse. Shin zai yiwu a tsara laka mai sarrafawa a cikin su? Muna so mu yi amfani da shi don kare kanmu daga mummunan yanayi tare da canje-canje da sauran canje-canje.

Shin zai yiwu a yi wani nau'in jujjuya baya don canzawa? Misali, a cikin ramin da ake da shi, ɗauka ka faɗi cewa har zuwa wannan lokacin za ka yi amfani da canje-canje, kuma daga wannan lokacin ka daina amfani da canje-canje?

Idan umarni ya zo ga gungu na mu kuma ya karya shi, to muna da kwafi na sharaɗi tare da jinkirin sa'a guda, inda za mu iya cewa bari mu yi amfani da shi a yanzu, amma ba za mu yi amfani da canje-canje a cikinsa ba na minti goma na ƙarshe?

Na farko, game da lag da aka sarrafa na kwafi. Akwai irin wannan buƙatar daga masu amfani, kuma mun ƙirƙiri wani batu akan Github tare da buƙatar: "Idan wani yana buƙatar wannan, kamar shi, sanya zuciya." Babu wanda ya kawo, kuma an rufe batun. Koyaya, zaku iya samun wannan damar ta hanyar saita ClickHouse. Gaskiya, kawai farawa daga sigar 20.3.

ClickHouse koyaushe yana aiwatar da haɗa bayanai a bango. Lokacin da aka gama haɗawa, ana maye gurbin wasu saitin bayanai da babban yanki. A lokaci guda, ɓangarorin bayanan da suke can kafin su ci gaba da kasancewa a kan faifan na ɗan lokaci.

Na farko, ana ci gaba da adana su muddin akwai zaɓaɓɓun tambayoyin da suke amfani da su, don samar da ayyukan da ba a toshe su ba. Zaɓan tambayoyin ana sauƙin karantawa daga tsoffin gungu.

Abu na biyu, akwai kuma madaidaicin lokaci - tsofaffin bayanan bayanan suna kwance akan faifai na mintuna takwas. Wadannan mintuna takwas za a iya keɓance su har ma sun zama rana ɗaya. Wannan zai kashe sararin diski: dangane da kwararar bayanai, ya bayyana cewa a cikin rana ta ƙarshe bayanan ba za su ninki biyu kawai ba, zai iya zama sau biyar. Amma idan akwai matsala mai tsanani, za ku iya dakatar da uwar garken ClickHouse kuma ku warware komai.

Yanzu tambaya ta taso kan yadda hakan ke karewa daga canje-canje. Yana da kyau a zurfafa bincike a nan, domin a cikin tsoffin juzu'in ClickHouse, canjin ya yi aiki ta yadda kawai ya canza guda kai tsaye. Akwai wani yanki na bayanai tare da wasu fayiloli, kuma muna yin, misali, canza ginshiƙi mai jujjuyawa. Sa'an nan kuma an cire wannan ginshiƙi a jiki daga duk guntu.

Amma farawa da sigar 20.3, tsarin canji ya canza gaba ɗaya, kuma yanzu sassan bayanan koyaushe ba su canzawa. Ba sa canzawa kwata-kwata - masu canzawa yanzu suna aiki da yawa kamar yadda ake haɗawa. Maimakon maye gurbin yanki a wurin, muna ƙirƙirar sabon. A cikin sabon chunk, fayilolin da ba su canza ba sun zama masu haɗin gwiwa, kuma idan muka share shafi, kawai za a ɓace a cikin sabon chunk. Za a share tsohon yanki ta tsohuwa bayan mintuna takwas, kuma a nan zaku iya daidaita saitunan da aka ambata a sama.

Hakanan ya shafi canje-canje kamar maye gurbi. Lokacin da kuka yi canza sharewa ko canza sabuntawa, ba ya canza yanki, amma yana haifar da sabon abu. Sannan ya goge tsohon.

Idan tsarin tebur ya canza fa?

Yadda za a mayar da madadin da aka yi tare da tsohon makirci? Kuma tambaya ta biyu ita ce game da lamarin tare da hotuna da kayan aikin tsarin fayil. Shin Btrfs yana da kyau a nan maimakon ZFS akan Linux LVM?

Idan kun yi haɗa bangare partitions tare da tsarin daban, to ClickHouse zai gaya muku cewa wannan ba zai yiwu ba. Wannan ita ce mafita. Na farko shine ƙirƙirar tebur na wucin gadi na nau'in MergeTree tare da tsohon tsari, haɗa bayanai a wurin ta amfani da haɗe-haɗe, da yin tambaya ta canza. Sannan zaku iya kwafi ko canja wurin wannan bayanan kuma ku sake haɗawa, ko amfani da buƙata canza tebur motsi bangare.

Yanzu tambaya ta biyu ita ce ko za a iya amfani da Btrfs. Da farko, idan kana da LVM, to, hotunan LVM sun isa, kuma tsarin fayil na iya zama ext4, ba kome ba. Tare da Btrts, komai ya dogara da ƙwarewar ku ta amfani da shi. Wannan babban tsarin fayil ne, amma har yanzu akwai wasu zato game da yadda komai zai gudana a aikace a cikin wani yanayi na musamman. Ba zan ba da shawarar amfani da wannan ba sai dai idan kuna da Btrfs a samarwa.

Menene mafi kyawun ayyuka na yanzu a cikin sake yin musayar bayanai?

Batun sake rabawa yana da sarkakiya kuma mai fuskoki da yawa. Akwai yuwuwar amsoshi anan. Kuna iya zuwa daga gefe ɗaya kuma ku faɗi wannan - ClickHouse ba shi da fasalin sake fasalin da aka gina a ciki. Amma ina tsoron wannan amsar ba za ta dace da kowa ba. Don haka, zaku iya zuwa daga wancan gefe ku ce ClickHouse yana da hanyoyi da yawa don sake dawo da bayanai.

Idan gungu ya ƙare da sarari ko kuma ba zai iya ɗaukar nauyin ba, kuna ƙara sabbin sabobin. Amma waɗannan sabobin ba su da komai ta hanyar tsoho, babu bayanai akan su, babu kaya. Kuna buƙatar sake tsara bayanan ta yadda za ta yadu daidai gwargwado a cikin sabon babban tari.

Hanya ta farko da za a iya yin haka ita ce kwafi wani ɓangare na ɓangarori zuwa sabbin sabobin ta amfani da buƙata canza tebur debo bangare. Misali, kuna da partitions a wata, kuma kuna ɗaukar watan farko na 2017 ku kwafa shi zuwa sabon uwar garken, sannan ku kwafi wata na uku zuwa wani sabon uwar garken. Kuma kuna yin haka har sai ya zama maɗaukaki ko žasa.

Ana iya aiwatar da canja wuri don ɓangarorin waɗanda ba sa canzawa yayin rikodi. Don sabbin ɓangarori, za a kashe rikodi, saboda canja wurin su ba atomic ba ne. In ba haka ba, za ku ƙare tare da kwafi ko giɓi a cikin bayanan. Koyaya, wannan hanyar tana da amfani kuma tana aiki sosai yadda ya kamata. Shirye-shiryen matsawa ana watsa su akan hanyar sadarwa, wato, bayanan ba a matsawa ko sake shigar da su ba.

Wannan hanyar tana da koma baya ɗaya, kuma ya dogara da tsarin sharding, ko kun yi alƙawarin wannan tsarin sharding, wane maɓalli na sharding kuke da shi. A cikin misalin ku na shari'ar tare da ma'auni, maɓallin sharding shine hash na hanya. Lokacin da ka zaɓi Tebu mai Rarraba, yana zuwa duk shards a cikin gungu lokaci ɗaya kuma yana ɗaukar bayanai daga can.

Wannan yana nufin cewa a zahiri ba shi da mahimmanci a gare ku menene bayanan da suka ƙare akan wane shard. Babban abu shi ne cewa bayanai a kan hanya daya ya ƙare a kan shard ɗaya, amma wanda ba shi da mahimmanci. A wannan yanayin, canja wurin ɓangarorin da aka yi shirye-shirye cikakke ne, saboda tare da zaɓin tambayoyin za ku kuma sami cikakkun bayanai - ko kafin sake tsarawa ko bayan, tsarin ba shi da mahimmanci.

Amma akwai lokuta da suka fi rikitarwa. Idan a matakin dabaru na aikace-aikacen kun dogara da tsarin sharding na musamman, cewa wannan abokin ciniki yana kan irin wannan shard ɗin, kuma ana iya aika buƙatar kai tsaye a can, kuma ba zuwa teburin Rarraba ba. Ko kuna amfani da sigar ClickHouse ta kwanan nan kuma kun kunna saitin inganta tsallake shards mara amfani. A wannan yanayin, yayin zaɓen tambaya, za a bincika bayanin da ke cikin sashen kuma za a ƙididdige abin da ya kamata a yi amfani da shi daidai da tsarin shading. Wannan yana aiki muddin an raba bayanan daidai gwargwadon wannan tsarin sharding. Idan kun sake shirya su da hannu, wasiƙun na iya canzawa.

To wannan ita ce hanya ta daya. Kuma ina jiran amsar ku, ko hanyar ta dace, ko kuma mu ci gaba.

Vladimir Kolobaev, jagoran tsarin gudanarwa a Avito: Alexey, hanyar da ka ambata ba ta aiki sosai lokacin da kake buƙatar yada kaya, ciki har da karatu. Za mu iya ɗaukar bangare wanda yake kowane wata kuma yana iya ɗaukar watan da ya gabata zuwa wani kumburi, amma idan buƙatar ta zo don wannan bayanan, za mu loda shi kawai. Amma muna so mu ɗora dukkan cluster, saboda in ba haka ba, na ɗan lokaci za a sarrafa dukkan nauyin karatun ta hanyar shards biyu.

Alexei Milovidov: Amsar anan baƙon abu ce - eh, yana da kyau, amma yana iya aiki. Zan yi bayani daidai yadda. Yana da daraja duba yanayin lodin da ke zuwa bayan bayanan ku. Idan wannan bayanan sa ido ne, to kusan tabbas zamu iya cewa yawancin buƙatun don sabbin bayanai ne.

Kun shigar da sabbin sabobin, ƙaura tsoffin ɓangarori, amma kuma kun canza yadda sabbin bayanai ke rikodin. Kuma za a yada sabbin bayanai a ko'ina cikin gungu. Don haka, bayan mintuna biyar kacal, buƙatun na mintuna biyar na ƙarshe za su yi lodin gungu ko da yaushe; bayan kwana ɗaya, buƙatun na sa'o'i XNUMX za su ɗora tari daidai gwargwado. Kuma buƙatun na watan da ya gabata, da rashin alheri, za su je ɓangaren sabar tari ne kawai.

Amma sau da yawa ba za ku sami buƙatun musamman don Fabrairu 2019 ba. Mafi mahimmanci, idan buƙatun sun shiga cikin 2019, to, za su kasance na duka 2019 - na dogon lokaci, kuma ba don wasu ƙananan kewayo ba. Kuma irin waɗannan buƙatun kuma za su iya ɗaukar gungu daidai gwargwado. Amma gabaɗaya, bayanin ku ya yi daidai cewa wannan maganin ad hoc ne wanda baya yada bayanan gaba ɗaya daidai.

Ina da wasu ƴan abubuwan da zan amsa tambayar. Ɗaya daga cikinsu shine game da yadda za a fara tsara tsarin shading don sake sakewa zai haifar da ƙananan ciwo. Wannan ba koyaushe yana yiwuwa ba.

Misali, kuna da bayanan sa ido. Bayanan kulawa yana girma don dalilai uku. Na farko shine tarin bayanan tarihi. Na biyu shine haɓakar zirga-zirga. Na uku kuma shi ne karuwar abubuwan da ake sa ido a kai. Akwai sababbin microservices da ma'auni waɗanda ke buƙatar adanawa.

Yana yiwuwa daga cikin waɗannan, karuwa mafi girma yana hade da dalili na uku - karuwa a cikin amfani da kulawa. Kuma a wannan yanayin, yana da daraja duban yanayin nauyin kaya, menene ainihin zaɓaɓɓun tambayoyin. Ƙimar zaɓaɓɓun tambayoyin za su dogara ne akan wasu juzu'in ma'auni.

Misali, amfani da CPU akan wasu sabar ta wasu sabis. Sai ya zama cewa akwai wani yanki na maɓalli wanda ta hanyarsa kuke samun wannan bayanan. Kuma buƙatar da kanta don wannan bayanan abu ne mai sauƙi mai sauƙi kuma an kammala shi a cikin dubban millise seconds. An yi amfani da shi don ayyukan sa ido da dashboards. Ina fatan na fahimci wannan daidai.

Vladimir Kolobaev: Gaskiyar ita ce, sau da yawa muna yin kira ga bayanan tarihi, tun da mun kwatanta halin da ake ciki yanzu da na tarihi a ainihin lokaci. Kuma yana da mahimmanci a gare mu mu sami damar yin amfani da sauri zuwa babban adadin bayanai, kuma ClickHouse yana yin kyakkyawan aiki tare da wannan.

Kuna da gaskiya, muna fuskantar yawancin buƙatun karantawa a ranar ƙarshe, kamar kowane tsarin sa ido. Amma a lokaci guda, nauyin da ke kan bayanan tarihi ma yana da yawa sosai. Yana da asali daga tsarin faɗakarwa wanda ke kewaya kowane daƙiƙa talatin kuma ya ce wa ClickHouse: “Ba ni bayanan makonni shida na ƙarshe. Yanzu gina mini wani nau'i na matsakaita mai motsi daga gare su, kuma bari mu kwatanta darajar yanzu da ta tarihi."

Ina so in faɗi cewa don irin waɗannan buƙatun kwanan nan muna da wani ƙaramin tebur wanda muke adana bayanan kwana biyu kawai, kuma manyan buƙatun sun tashi a ciki. Mu kawai muna aika manyan tambayoyin tarihi zuwa babban tebur mai shaded.

Alexei Milovidov: Abin takaici, ya zama rashin dacewa ga yanayin ku, amma zan gaya muku bayanin munanan tsare-tsaren sharding guda biyu waɗanda ba sa buƙatar amfani da su, amma waɗanda ake amfani da su a cikin sabis na abokai na.

Akwai babban gungu tare da abubuwan Yandex.Metrica. Abubuwan da suka faru sune ra'ayoyin shafi, dannawa, da juyawa. Yawancin buƙatun suna zuwa takamaiman gidan yanar gizo. Kuna buɗe sabis na Yandex.Metrica, kuna da gidan yanar gizon - avito.ru, je zuwa rahoton, kuma ana buƙatar buƙatar gidan yanar gizon ku.

Amma akwai wasu buƙatu - na nazari da na duniya - waɗanda manazarta cikin gida ke yi. Kawai a yanayin, na lura cewa manazarta na ciki suna yin buƙatu don ayyukan Yandex kawai. Amma duk da haka, ko da sabis na Yandex sun mamaye babban kaso na duk bayanan. Waɗannan buƙatun ba don takamaiman ƙididdiga ba ne, amma don faɗin tacewa.

Yadda za a tsara bayanai ta hanyar da komai yayi aiki da kyau don counter guda ɗaya, da kuma tambayoyin duniya kuma? Wani wahala shine adadin buƙatun a ClickHouse don gungun ma'auni shine dubu da yawa a cikin daƙiƙa guda. A lokaci guda, uwar garken ClickHouse ɗaya ba zai iya ɗaukar buƙatun marasa mahimmanci ba, misali, dubu da yawa a cikin daƙiƙa guda.

Girman gungu sabobin ɗari shida ne. Idan kawai ka ja Tebu mai Rarraba akan wannan tari kuma ka aika buƙatun dubu da yawa a wurin, zai zama ma fi muni da aika su zuwa uwar garken guda ɗaya. A gefe guda, zaɓin cewa an baje bayanan daidai gwargwado, kuma mun je kuma muna buƙatar duk sabobin, nan da nan an yi watsi da su.

Akwai wani zaɓi wanda ke da kishiyar kishiyar. Ka yi tunanin idan muka karkatar da bayanan a cikin rukunin yanar gizon, kuma buƙatar rukunin yanar gizon yana zuwa shard ɗaya. Yanzu gungu zai iya ɗaukar buƙatun dubu goma a cikin daƙiƙa guda, amma akan shard ɗaya kowane buƙata ɗaya zai yi aiki a hankali. Ba za ta ƙara yin ƙima ba dangane da abin da ake samarwa. Musamman idan wannan shine shafin avito.ru. Ba zan bayyana asirin ba idan na ce Avito yana ɗaya daga cikin wuraren da aka fi ziyarta a RuNet. Kuma sarrafa shi a kan ɓangarorin guda ɗaya zai zama hauka.

Sabili da haka, an tsara makircin sharding a hanya mafi wayo. An raba gaba dayan gungu zuwa gungu masu yawa, waɗanda muke kira Layers. Kowane gungu ya ƙunshi daga dozin zuwa shards da yawa. Akwai irin wannan gungu guda talatin da tara gabaɗaya.

Ta yaya wannan duka yake auna? Adadin gungu ba ya canzawa - kamar yadda ya kasance shekaru talatin da tara da suka wuce, ya kasance haka. Amma a cikin kowannensu, sannu a hankali muna ƙara yawan shards yayin da muke tara bayanai. Kuma tsarin sharding gaba daya yana kamar haka: an raba wadannan gungu zuwa gidajen yanar gizo, kuma don fahimtar wane gidan yanar gizon da yake kan wane gungu, ana amfani da wani yanki na musamman na MySQL. Shafi ɗaya - akan gungu ɗaya. Kuma a ciki, sharding yana faruwa ne bisa ga ID na baƙi.

Lokacin yin rikodi, muna raba su da ragowar rabon ID na baƙo. Amma lokacin ƙara sabon shard, tsarin sharding yana canzawa; muna ci gaba da rarrabuwa, amma tare da ragowar rabo ta wata lamba. Wannan yana nufin cewa baƙo ɗaya ya riga ya kasance akan sabar da yawa, kuma ba za ku iya dogara da wannan ba. Ana yin wannan ne kawai don tabbatar da cewa bayanan sun fi matsewa. Kuma lokacin yin buƙatu, muna zuwa Teburin Rarraba, wanda ke kallon gungu kuma yana samun dama ga sabar. Wannan shi ne irin wannan wawa makirci.

Amma labarina ba zai cika ba idan ban ce mun yi watsi da wannan makirci ba. A cikin sabon tsarin, mun canza komai kuma mun kwafi duk bayanan ta amfani da danna-kwafi.

A cikin sabon tsarin, duk rukunin yanar gizon sun kasu kashi biyu - babba da ƙanana. Ban san yadda aka zaɓi bakin kofa ba, amma sakamakon shi ne cewa an rubuta manyan shafuka akan gungu ɗaya, inda akwai shards 120 tare da kwafi uku kowanne - wato, sabobin 360. Kuma tsarin sharding shi ne irin yadda duk wata bukata ta tafi duk shards lokaci guda. Idan yanzu ka buɗe kowane shafi na rahoto don avito.ru a cikin Yandex.Metrica, buƙatar za ta je zuwa sabobin 120. Akwai ƴan manyan shafuka a RuNet. Kuma buƙatun ba dubu ba ne a cikin daƙiƙa guda, amma ko da ƙasa da ɗari. Duk wannan ana taunawa a hankali ta hanyar Distributed table, wanda kowannen su yana aiwatar da sabobin 120.

Kuma gungu na biyu don ƙananan shafuka ne. Anan akwai tsarin sharding dangane da ID na rukunin yanar gizon, kuma kowane buƙatu yana zuwa daidai shard ɗaya.

ClickHouse yana da kayan aikin danna-copier. Za ka iya gaya mana game da ita?

Zan ce nan da nan cewa wannan maganin ya fi wahala kuma ba shi da amfani. Amfanin shi ne cewa yana lalata bayanan gaba ɗaya bisa ga tsarin da kuka ƙayyade. Amma koma baya na mai amfani shi ne cewa ba ya reshard kwata-kwata. Yana kwafin bayanai daga tsari guda ɗaya zuwa wani tsarin gungu.

Wannan yana nufin cewa don yin aiki dole ne ku sami gungu biyu. Ana iya kasancewa a kan sabar guda ɗaya, amma, duk da haka, bayanan ba za a ƙara ƙara ba, amma za a kwafi.

Misali, akwai sabobin guda hudu, yanzu akwai takwas. Kuna ƙirƙiri sabon Tebur Rarraba akan duk sabobin, sabon tebur na gida da ƙaddamar da dannawa-copier, yana nuna a cikinsa tsarin aikin da yakamata ya karanta daga can, karɓi sabon tsarin sharding kuma canza wurin bayanai a can. Kuma a kan tsofaffin sabar za ku buƙaci sarari sau ɗaya da rabi fiye da yadda ake da su a yanzu, saboda tsofaffin bayanan dole ne su kasance a kansu, kuma rabin tsohuwar bayanai za su zo a kansu. Idan kun yi tunani a gaba cewa bayanan yana buƙatar sake daidaitawa kuma akwai sarari, to wannan hanyar ta dace.

Ta yaya clickhouse-copier ke aiki a ciki? Yana karya duk aikin zuwa jerin ayyuka don sarrafa bangare ɗaya na tebur ɗaya akan shard ɗaya. Duk waɗannan ayyuka ana iya aiwatar da su a layi daya, kuma ana iya aiwatar da danna-kwafi akan na'urori daban-daban a lokuta da yawa, amma abin da yake yi na bangare ɗaya ba komai bane illa saka zaɓi. Ana karanta bayanan, an murƙushe su, ana raba su, sannan a sake matsawa, a rubuta wani wuri, a sake tsara su. Wannan hukunci ne mai tsauri.

Kuna da wani matukin jirgi mai suna resharding. Me da ita?

Komawa cikin 2017, kuna da abin matukin jirgi mai suna resharding. Akwai ma zaɓi a ClickHouse. Kamar yadda na fahimta, bai tashi ba. Za a iya gaya mani dalilin da ya sa hakan ya faru? Da alama ya dace sosai.

Matsalar gaba ɗaya ita ce idan ya zama dole don sake daidaita bayanai a wurin, ana buƙatar haɗaɗɗiyar aiki tare sosai don yin wannan ta atomatik. Lokacin da muka fara duba yadda wannan aiki tare ke aiki, ya bayyana a fili cewa akwai matsaloli na asali. Kuma waɗannan matsalolin asali ba kawai ka'idar ba ne, amma nan da nan sun fara nuna kansu a aikace a cikin nau'i na wani abu wanda za'a iya bayyana shi kawai - babu abin da ke aiki.

Shin yana yiwuwa a haɗa dukkan sassan bayanan tare kafin a motsa su zuwa rage faifai?

Tambaya game da TTL tare da motsi don jinkirin zaɓin diski a cikin mahallin haɗaka. Shin akwai wata hanya, ban da ta cron, don haɗa dukkan sassan zuwa ɗaya kafin motsa su don rage faifai?

Amsar tambayar yana yiwuwa a ko ta yaya ta atomatik manna dukkan sassan guda ɗaya kafin canja wurin su - a'a. Ina ganin wannan bai zama dole ba. Ba dole ba ne ka haɗa dukkan sassan zuwa ɗaya, amma kawai ka ƙidaya gaskiyar cewa za a canza su zuwa faifai ta atomatik.

Muna da sharuɗɗa biyu don ƙa'idodin canja wuri. Na farko shi ne kamar yadda aka cika. Idan matakin ma'aji na yanzu yana da ƙasa da ƙayyadaddun kaso na sarari kyauta, za mu zaɓi gungu guda ɗaya kuma mu matsar da shi zuwa ajiyar hankali. Ko kuma wajen, ba a hankali ba, amma na gaba - kamar yadda kuke tsarawa.

Ma'auni na biyu shine girman. Yana da game da motsi manyan guda. Kuna iya daidaita bakin kofa bisa ga sarari kyauta akan faifai mai sauri, kuma za a canja wurin bayanan ta atomatik.

Yadda ake ƙaura zuwa sabbin juzu'in ClickHouse idan babu wata hanyar bincika dacewa a gaba?

Ana tattauna wannan batu akai-akai a cikin ClickHouse telegram chat la'akari daban-daban iri, kuma har yanzu. Yaya lafiya yake haɓaka daga sigar 19.11 zuwa 19.16 kuma, alal misali, daga 19.16 zuwa 20.3. Wace hanya ce mafi kyau don ƙaura zuwa sababbin juzu'ai ba tare da samun damar bincika dacewa a cikin akwatin yashi a gaba ba?

Akwai dokoki da yawa na "zinariya" anan. Na farko - karanta canji. Yana da girma, amma akwai sakin layi daban-daban game da canje-canje marasa jituwa a baya. Kar ku ɗauki waɗannan maki a matsayin jan tuta. Waɗannan yawanci ƙananan rashin daidaituwa ne waɗanda ke ƙunshe da wasu ayyukan gefen da wataƙila ba za ku yi amfani da su ba.

Abu na biyu, idan babu wata hanyar da za a bincika dacewa a cikin akwatin yashi, kuma kuna son sabuntawa nan da nan a cikin samarwa, shawarar ita ce ba kwa buƙatar yin wannan. Da farko ƙirƙirar akwatin yashi kuma gwada. Idan babu muhallin gwaji, to da alama ba ku da babban kamfani, wanda ke nufin za ku iya kwafi wasu bayanan zuwa kwamfutar tafi-da-gidanka kuma ku tabbata cewa komai yana aiki daidai a kansa. Hakanan kuna iya ɗaga kwafi da yawa a cikin gida akan injin ku. Ko kuma za ku iya ɗaukar sabon sigar wani wuri kusa da ku loda wasu bayanan a wurin - wato, ƙirƙirar ingantaccen yanayin gwaji.

Wani ka'ida ba shine sabuntawa na mako guda bayan sakin sigar ba saboda kama kwari a cikin samarwa da gyare-gyare mai sauri na gaba. Bari mu gano adadin nau'ikan ClickHouse don kada mu rikice.

Akwai sigar 20.3.4. Lambar 20 tana nuna shekarar da aka yi - 2020. Daga ra'ayi na abin da ke ciki, wannan ba kome ba ne, don haka ba za mu kula da shi ba. Na gaba - 20.3. Muna ƙara lamba ta biyu - a wannan yanayin 3 - duk lokacin da muka saki saki tare da wasu sabbin ayyuka. Idan muna son ƙara wasu fasali zuwa ClickHouse, dole ne mu ƙara wannan lambar. Wato, a cikin sigar 20.4 ClickHouse zai yi aiki mafi kyau. Lambobi na uku shine 20.3.4. Anan 4 shine adadin sakin faci wanda ba mu ƙara sabbin abubuwa ba, amma gyara wasu kwari. Kuma 4 yana nufin mun yi shi sau hudu.

Kar ku yi tunanin wannan wani abu ne mai muni. Yawancin lokaci mai amfani zai iya shigar da sabon sigar kuma zai yi aiki ba tare da wata matsala ba tare da lokacin aiki a kowace shekara. Amma yi tunanin cewa a cikin wasu ayyuka na sarrafa bitmaps, wanda abokan aikinmu na kasar Sin suka kara, uwar garken yana yin karo yayin da yake gabatar da hujjojin da ba daidai ba. Muna da alhakin gyara wannan. Za mu saki sabon sigar faci kuma ClickHouse zai zama mafi karko.

Idan kuna da ClickHouse yana gudana a samarwa, kuma sabon sigar ClickHouse yana fitowa tare da ƙarin fasali - alal misali, 20.4.1 shine farkon wanda, kada kuyi gaggawar sanya shi cikin samarwa a ranar farko ta farko. Me yasa ma ake bukata? Idan baku riga kun yi amfani da ClickHouse ba, to zaku iya shigar da shi, kuma wataƙila komai zai yi kyau. Amma idan ClickHouse ya riga ya yi aiki a tsaye, to, ku sa ido kan faci da sabuntawa don ganin irin matsalolin da muke gyarawa.

Kirill Shvakov: Ina so in ƙara kaɗan game da mahallin gwaji. Kowane mutum yana jin tsoron yanayin gwaji kuma saboda wasu dalilai sun yi imanin cewa idan kuna da babban gungu na ClickHouse, to, yanayin gwajin ya kamata ya zama ƙasa da ƙasa ko aƙalla sau goma. Ba haka bane kwata-kwata.

Zan iya gaya muku daga misalina. Ina da aikin, kuma akwai ClickHouse. Yanayin gwajin mu shine kawai a gare shi - wannan ƙaramin injin kama-da-wane ne a cikin Hetzner na Yuro ashirin, inda aka tura komai. Don yin wannan, muna da cikakken aiki da kai a cikin Mai yiwuwa, sabili da haka, a ka'ida, ba shi da bambanci inda za a je - zuwa sabar kayan masarufi ko kawai tura a cikin injunan kama-da-wane.

Me za a iya yi? Zai yi kyau a ba da misali a cikin takardun ClickHouse kan yadda ake tura ƙaramin gungu a cikin gidan ku - a Docker, a cikin LXC, ƙila ƙirƙiri littafin wasan kwaikwayo mai yiwuwa, saboda mutane daban-daban suna da turawa daban-daban. Wannan zai sauƙaƙa da yawa. Lokacin da kuka ɗauka da tura gungu a cikin mintuna biyar, yana da sauƙin ƙoƙarin gano wani abu. Wannan ya fi dacewa, saboda mirgina cikin sigar samarwa da ba ku gwada ba hanya ce ta babu inda. Wani lokaci yana aiki kuma wani lokacin ba ya aiki. Sabili da haka, fatan samun nasara ba shi da kyau.

Maxim Kotyakov, babban injiniyan goyon baya Avito: Zan ƙara kadan game da yanayin gwaji daga jerin matsalolin da manyan kamfanoni ke fuskanta. Muna da cikakken gungu na karɓar ClickHouse; dangane da tsare-tsaren bayanai da saituna, ainihin kwafin abin da ke samarwa. Ana tura wannan tari a cikin kwantena masu ɗumbin yawa tare da ƙarancin albarkatu. Mun rubuta wani kaso na bayanan samarwa a can, an yi sa'a yana yiwuwa a sake maimaita rafi a cikin Kafka. Duk abin da ke wurin yana aiki tare kuma an daidaita shi - duka dangane da iyawa da gudana, kuma, a ka'idar, duk sauran abubuwa daidai suke, yakamata ya kasance kamar samarwa cikin ma'auni. Duk wani abu mai yuwuwar fashewa ana fara birgima akan wannan tsayawar kuma a bar shi a can na kwanaki da yawa har sai an shirya. Amma a zahiri, wannan maganin yana da tsada, mai wahala kuma yana da farashin tallafi mara sifili.

Alexei Milovidov: Zan gaya muku yadda yanayin gwajin abokanmu daga Yandex.Metrica yake. Ɗayan gungu yana da sabobin 600, wani yana da 360, kuma akwai ta uku da tari da yawa. Yanayin gwaji na ɗaya daga cikinsu shine kawai shards biyu tare da kwafi biyu a kowane. Me yasa shards biyu? Don kada ku kadai. Kuma ya kamata a sami kwafi ma. Kawai ƙayyadaddun ƙaramin adadin da za ku iya bayarwa.

Wannan yanayin gwajin yana ba ku damar bincika idan tambayoyinku suna aiki kuma idan wani abu babba ya karye. Amma sau da yawa matsaloli suna tasowa na yanayi daban-daban, lokacin da duk abin ke aiki, amma akwai wasu ƙananan canje-canje a cikin nauyin.

Bari in ba ku misali. Mun yanke shawarar shigar da sabon sigar ClickHouse. An buga shi a kan yanayin gwaji, an kammala gwaje-gwaje na atomatik a cikin Yandex.Metrica kanta, wanda ke kwatanta bayanai akan tsohuwar sigar da sabon, yana tafiyar da dukan bututun. Kuma ba shakka, gwajin kore na CI mu. In ba haka ba, da ba ma ba da shawarar wannan sigar ba.

Komai yana lafiya. Mun fara matsawa zuwa samarwa. Ina karɓar saƙo cewa nauyin da ke kan jadawali ya karu sau da yawa. Muna mirgina sigar baya. Na kalli jadawali kuma in ga: a zahiri kaya ya ƙaru sau da yawa a lokacin fiddawa, kuma ya ragu baya lokacin da suka yi birgima. Sai muka fara jujjuya sigar baya. Haka kuma kaya ya karu, ya fadi haka. Don haka ƙarshe shine wannan: kaya ya karu saboda shimfidawa, babu abin mamaki.

Sannan yana da wuya a shawo kan abokan aiki don shigar da sabon sigar. Na ce: “Babu laifi, mirgine. Ci gaba da yatsa, komai zai yi aiki. Yanzu nauyin da ke kan jadawali ya karu, amma komai yana da kyau. Tsaya a ciki." Gabaɗaya, mun yi wannan, kuma shi ke nan - an fitar da sigar don samarwa. Amma kusan tare da kowane shimfidar wuri akwai matsaloli iri ɗaya.

Tambayar kisan ya kamata ta kashe tambayoyin, amma ba haka ba. Me yasa?

Wani mai amfani, wani nau'i na manazarci, ya zo wurina ya ƙirƙiri buƙatun da ya sanya gungu na ClickHouse. Wasu kumburi ko gabaɗayan tari, ya danganta da wanne kwafi ko shard buƙatun ya tafi. Na ga cewa duk albarkatun CPU akan wannan uwar garken suna cikin shiryayye, komai ja ne. A lokaci guda, ClickHouse kanta yana amsa buƙatun. Kuma na rubuta: "Don Allah a nuna mani, lissafin tsari, menene buƙata ta haifar da wannan hauka."

Na sami wannan buƙatar na rubuta kisa zuwa gare ta. Kuma ina ganin babu abin da ke faruwa. Sabar na yana cikin faifai, ClickHouse sannan ya ba ni wasu umarni, yana nuna cewa uwar garken yana raye, kuma komai yana da kyau. Amma ina da lalacewa a cikin duk buƙatun mai amfani, lalata yana farawa da bayanai a ClickHouse, kuma tambayar kisa ba ta aiki. Me yasa? Na yi tunanin kashe tambaya ya kamata ya kashe tambayoyin, amma ba haka ba.

Yanzu za a sami wani wajen m amsar. Maganar ita ce tambaya ta kashe ba ta kashe tambayoyin.

Kill question yana duba ƙaramin akwati mai suna "Ina son a kashe wannan tambayar." Kuma buƙatar da kanta tana kallon wannan tuta lokacin sarrafa kowane shinge. Idan an saita, buƙatar ta daina aiki. Ya zama cewa babu wanda ya kashe bukatar, shi da kansa dole ne ya duba komai kuma ya tsaya. Kuma wannan ya kamata ya yi aiki a duk lokuta inda buƙatar ke cikin yanayin sarrafa tubalan bayanai. Zai aiwatar da toshe na gaba na bayanai, duba tuta, kuma ya tsaya.

Wannan baya aiki a lokuta da aka katange buƙatar akan wani aiki. Gaskiya ne, mai yiwuwa wannan ba shine batun ku ba, saboda, a cewar ku, yana amfani da ton na albarkatun uwar garke. Yana yiwuwa wannan baya aiki a yanayin rarrabuwa na waje da kuma wasu cikakkun bayanai. Amma a gaba ɗaya wannan bai kamata ya faru ba, kwaro ne. Kuma kawai abin da zan iya ba da shawara shine sabunta ClickHouse.

Yadda za a lissafta lokacin amsawa a ƙarƙashin nauyin karatu?

Akwai tebur wanda ke adana tarin abubuwa - ƙira iri-iri. Adadin layukan sun kai kusan miliyan ɗari. Shin yana yiwuwa a ƙidaya lokacin amsawar da ake iya faɗi idan kun zuba 1K RPS don abubuwan 1K?

Yin la'akari da mahallin, muna magana ne game da nauyin karatun, saboda babu matsaloli tare da rubutu - ko da dubu, ko da dubu ɗari, kuma wani lokacin ana iya shigar da layuka miliyan da yawa.

Buƙatun karatu sun bambanta sosai. A cikin zaɓi 1, ClickHouse na iya yin kusan dubunnan buƙatun a sakan daya, don haka ko da buƙatun maɓalli ɗaya zai riga ya buƙaci wasu albarkatu. Kuma irin waɗannan tambayoyin za su kasance da wahala fiye da wasu maɓallan bayanai masu mahimmanci, saboda kowane karantawa yana da mahimmanci don karanta block of data ta index. Fihirisar mu ba kowane rikodin ba ce, amma kowane kewayon. Wato, dole ne ku karanta gaba dayan zangon - wannan layin 8192 ne ta tsohuwa. Kuma dole ne ku rage matse bayanan da aka matse daga 64 KB zuwa 1 MB. Yawanci, irin waɗannan tambayoyin da aka yi niyya suna ɗaukar ƴan milli seconds don kammalawa. Amma wannan shine zaɓi mafi sauƙi.

Mu gwada wasu saukin lissafi. Idan ka ninka ƴan millise seconds da dubu, za ka sami ƴan daƙiƙa guda. Yana da kamar ba zai yiwu a ci gaba da buƙatun dubu ɗaya a cikin daƙiƙa ɗaya ba, amma a zahiri yana yiwuwa, saboda muna da nau'ikan sarrafawa da yawa. Don haka, bisa ka'ida, ClickHouse na iya ɗaukar 1000 RPS wani lokaci, amma ga gajerun buƙatun, musamman waɗanda aka yi niyya.

Idan kuna buƙatar haɓaka gungu na ClickHouse ta adadin buƙatun masu sauƙi, to ina ba da shawarar abu mafi sauƙi - ƙara adadin kwafi kuma aika buƙatun zuwa kwafin bazuwar. Idan kwafi ɗaya yana riƙe buƙatun ɗari biyar a cikin daƙiƙa ɗaya, wanda yake da gaske gabaɗaya, to kwafi uku zasu rike dubu ɗaya da rabi.

Wani lokaci, ba shakka, kuna iya saita ClickHouse don matsakaicin adadin karatun maki. Menene ake buƙata don wannan? Na farko shi ne don rage granularity na index. A wannan yanayin, bai kamata a rage shi zuwa ɗaya ba, amma bisa ga cewa adadin abubuwan da aka shigar a cikin index zai zama miliyoyin da yawa ko dubban miliyoyin kowace uwar garken. Idan tebur yana da layuka miliyan ɗari, to ana iya saita granularity zuwa 64.

Kuna iya rage girman toshe da aka matsa. Akwai saituna don wannan min damfara girman block, max compress block size. Ana iya rage su, cika su da bayanai, sannan tambayoyin da aka yi niyya za su yi sauri. Amma duk da haka, ClickHouse ba mahimmin ƙima ba ne. Babban adadin ƙananan buƙatun shine kayan rigakafin lodi.

Kirill Shvakov: Zan ba da shawara idan akwai asusun ajiya na yau da kullun a wurin. Wannan yanayin daidaitaccen daidaitaccen yanayi ne lokacin da ClickHouse ke adana wani nau'in ƙira. Ina da mai amfani, ya fito daga irin wannan ƙasa, da kuma wani fili na uku, kuma ina buƙatar ƙara wani abu a hankali. Ɗauki MySQL, yi maɓalli na musamman - a cikin MySQL maɓalli ne mai kwafi, kuma a cikin PostgreSQL rikici ne - kuma ƙara alamar ƙari. Wannan zai yi aiki mafi kyau.

Lokacin da ba ku da bayanai da yawa, babu ma'ana sosai a amfani da ClickHouse. Akwai bayanai na yau da kullun kuma suna yin wannan da kyau.

Me zan iya tweak a ClickHouse don ƙarin bayanai suna cikin cache?

Bari mu yi la'akari da halin da ake ciki - sabobin suna da 256 GB na RAM, a cikin aikin yau da kullum ClickHouse yana ɗaukar kimanin 60-80 GB, a mafi girma - har zuwa 130. Abin da za'a iya kunnawa da tweaked don ƙarin bayanai yana cikin cache kuma, daidai da haka, akwai ƙarancin tafiye-tafiye zuwa faifai?

Yawanci, ma'ajin shafi na tsarin aiki yana yin kyakkyawan aiki na wannan. Idan kawai ka buɗe saman, duba wurin cache ko kyauta - kuma yana faɗi nawa aka adana - to za ku lura cewa ana amfani da duk ƙwaƙwalwar ajiyar kyauta don cache. Kuma lokacin karanta waɗannan bayanan, za a karanta ba daga faifai ba, amma daga RAM. Hakazalika, zan iya cewa ana amfani da cache yadda ya kamata saboda matsewar bayanai ne aka adana.

Koyaya, idan kuna son haɓaka wasu ƙananan tambayoyin har ma da ƙari, yana yiwuwa a kunna cache a cikin bayanan da aka lalata a cikin ClickHouse. Ana kiranta uncompressed cache. A cikin fayil ɗin daidaitawa na config.xml, saita girman cache mara nauyi zuwa ƙimar da kuke buƙata - Ina ba da shawarar ba fiye da rabin RAM ɗin kyauta ba, saboda sauran za su shiga ƙarƙashin cache ɗin shafi.

Bugu da kari, akwai saitunan matakin buƙata guda biyu. Saitin farko - yi amfani da cache mara nauyi - ya hada da amfani da shi. Ana ba da shawarar don kunna shi don duk buƙatun, sai dai masu nauyi, waɗanda zasu iya karanta duk bayanan kuma su watsar da cache. Kuma saitin na biyu wani abu ne kamar matsakaicin adadin layi don amfani da cache. Yana iyakance manyan tambayoyi ta atomatik don su ketare cache.

Ta yaya zan iya saita storage_configuration don ajiya a RAM?

A cikin sabon takardun ClickHouse na karanta sashin da ya shafi tare da ajiyar bayanai. Bayanin ya ƙunshi misali tare da SSD mai sauri.

Ina mamakin yadda za'a iya daidaita wannan abu tare da ƙwaƙwalwar zafi mai zafi. Da kuma wata tambaya. Ta yaya zaži aiki tare da wannan data kungiyar, za ta karanta dukan saitin ko kuma kawai wanda yake a kan faifai, kuma wannan data manne a memory? Kuma ta yaya sashin prewhere ke aiki da irin wannan ƙungiyar bayanai?

Wannan saitin yana rinjayar ma'ajin bayanai, kuma tsarin su baya canzawa ta kowace hanya.
Mu duba a tsanake.

Kuna iya saita ajiyar bayanai a cikin RAM. Duk abin da aka saita don faifan shine hanyarsa. Kuna ƙirƙirar ɓangaren tmpfs wanda aka ɗora zuwa wata hanya a cikin tsarin fayil. Ka sanya wannan hanyar a matsayin hanyar adana bayanai don mafi kyawun bangare, guntuwar bayanai sun fara isa kuma a rubuta su a can, komai yana da kyau.

Amma ba na ba da shawarar yin wannan ba saboda ƙarancin aminci, kodayake idan kuna da aƙalla kwafi uku a cikin cibiyoyin bayanai daban-daban, to yana yiwuwa. Idan wani abu ya faru, za a dawo da bayanan. Bari mu yi tunanin cewa an kashe uwar garken ba zato ba tsammani kuma an kunna baya. An sake saka bangare, amma babu komai a wurin. Lokacin da uwar garken ClickHouse ya fara, yana ganin cewa ba shi da waɗannan sassa, kodayake, bisa ga metadata na ZooKeeper, ya kamata su kasance a wurin. Yana duban wane irin kwafi ne suke da su, ya buƙace su kuma ya zazzage su. Ta wannan hanyar za a dawo da bayanan.

A wannan ma’ana, adana bayanai a cikin RAM bai bambanta da yadda ake adana su a faifai ba, domin idan aka rubuta bayanai zuwa faifai, shi ma yana farawa ne a cikin cache na shafi kuma a rubuta shi a zahiri daga baya. Wannan ya dogara da zaɓin hawan tsarin fayil. Amma kawai a yanayin, zan ce ClickHouse baya fsync lokacin sakawa.

A wannan yanayin, ana adana bayanan da ke cikin RAM a cikin tsari iri ɗaya kamar na faifai. Hakanan zaɓin tambayar yana zaɓar guntun da ake buƙatar karantawa, ya zaɓi jeri na bayanan da ake buƙata a cikin guda, sannan ya karanta su. Kuma prewhere yana aiki daidai iri ɗaya, ba tare da la'akari da ko bayanan yana cikin RAM ko diski ba.

Har zuwa wane adadin ƙima na musamman ke da tasiri ga Low Cardinality?

Low Cardinality an tsara shi da wayo. Yana tattara ƙamus ɗin bayanai, amma na gida ne. Na farko, akwai ƙamus daban-daban ga kowane yanki, na biyu kuma, ko da a cikin yanki ɗaya suna iya bambanta ga kowane yanki. Lokacin da adadin mabambantan dabi'u ya kai ga lamba - miliyan ɗaya, ina tsammanin - an adana ƙamus ɗin kuma an ƙirƙiri wani sabo.

Amsar ita ce gabaɗaya: ga kowane yanki na gida - ka ce, ga kowace rana - wani wuri har zuwa miliyon na musamman dabi'u Low Cardinality yana da tasiri. Bayan haka kawai za a sami koma baya, wanda za a yi amfani da ƙamus daban-daban, ba ɗaya kaɗai ba. Zai yi aiki kusan iri ɗaya da ginshiƙin kirtani na yau da kullun, wataƙila ba shi da inganci kaɗan, amma ba za a sami ɓarna mai tsanani ba.

Menene mafi kyawun ayyuka don neman cikakken rubutu akan tebur mai layuka biliyan biyar?

Akwai amsoshi daban-daban. Na farko shine a ce ClickHouse ba injin binciken cikakken rubutu bane. Akwai tsarin na musamman don wannan, alal misali, Elasticsearch и Sphinx. Koyaya, Ina ƙara ganin mutane suna cewa suna canzawa daga Elasticsearch zuwa ClickHouse.

Me yasa hakan ke faruwa? Suna bayyana wannan ta gaskiyar cewa Elasticsearch ya daina jure wa nauyin nauyi a wasu kundin, yana farawa da gina ma'auni. Fihirisar sun zama masu wahala sosai, kuma idan kawai kun canza wurin bayanan zuwa ClickHouse, ya zama cewa ana adana su sau da yawa cikin inganci dangane da girma. A lokaci guda, tambayoyin bincike ba sau da yawa ba ne don haka ya zama dole don nemo wasu jumla a cikin duka juzu'in bayanai, la'akari da ilimin halittar jiki, amma gaba ɗaya daban-daban. Misali, nemo wasu bayanan bytes a cikin rajistan ayyukan cikin 'yan sa'o'i da suka gabata.

A wannan yanayin, kun ƙirƙiri fihirisar a ClickHouse, filin farko wanda zai zama kwanan wata da lokaci. Kuma mafi girman yanke bayanai zai dogara ne akan iyakar kwanan wata. A cikin kewayon kwanan wata da aka zaɓa, a matsayin mai mulkin, an riga an riga an yi yuwuwar aiwatar da cikakken bincike na rubutu, har ma da amfani da hanyar ƙarfi ta amfani da kamar. Mai aiki irin wannan a ClickHouse shine mafi inganci kamar mai aiki da zaku iya samu. Idan kun sami wani abu mafi kyau, gaya mani.

Amma duk da haka, kamar cikakken scan ne. Kuma cikakken scan na iya zama jinkiri ba kawai akan CPU ba, har ma akan faifai. Idan ba zato ba tsammani kuna da terabyte ɗaya na bayanai a kowace rana, kuma kuna neman kalma yayin rana, to lallai ne ku bincika terabyte. Kuma yana yiwuwa a kan rumbun kwamfyuta na yau da kullun, kuma a ƙarshe za a ɗora su ta hanyar da ba za ku sami damar shiga wannan uwar garken ta hanyar SSH ba.

A wannan yanayin, a shirye nake in ba da ƙarin dabara guda ɗaya. Gwaji ne - yana iya aiki, mai yiwuwa ba zai yi ba. ClickHouse yana da cikakkun bayanan rubutu a cikin nau'in filtar Bloom na trigram. Abokan aikinmu a Arenadata sun riga sun gwada waɗannan fihirisa, kuma galibi suna aiki daidai yadda aka yi niyya.

Don amfani da su daidai, ya kamata ku fahimci ainihin yadda suke aiki: menene tace trigram Bloom da yadda ake zaɓar girmansa. Zan iya cewa za su taimaka don tambayoyi kan wasu ƙananan kalmomi, ƙananan kalmomi waɗanda ba a cika samun su a cikin bayanan ba. A wannan yanayin, za a zaɓi ƙananan ƙididdiga ta fihirisa kuma za a karanta ƙasa da bayanai.

Kwanan nan, ClickHouse ya ƙara ƙarin ayyuka na ci gaba don binciken cikakken rubutu. Wannan shi ne, da farko, binciken gungun ƙananan igiyoyi a lokaci ɗaya a cikin hanyar wucewa ɗaya, ciki har da zaɓuɓɓuka waɗanda suke da hankali, rashin fahimta, tare da goyon baya ga UTF-8 ko kawai don ASCII. Zaɓi mafi inganci wanda kuke buƙata.

Neman maganganu na yau da kullun a cikin fasfo ɗaya shima ya bayyana. Ba kwa buƙatar rubuta X kamar ƙaramin igiya ɗaya ko X kamar wani ƙaramin igiya. Kuna rubuta nan da nan, kuma duk abin da aka yi shi ne yadda ya kamata.

Na uku, yanzu akwai kimanin bincike na regexps da kimanin bincike na ƙananan igiyoyi. Idan wani ya yi kuskuren rubuta kalma, za a nemo mafi girman wasa.

Menene hanya mafi kyau don tsara damar shiga ClickHouse don yawan masu amfani?

Faɗa mana yadda mafi kyawun tsara hanyar shiga ga ɗimbin masu amfani da manazarta. Yadda za a samar da jerin gwano, ba da fifiko ga manyan tambayoyin lokaci guda, kuma da waɗanne kayan aikin?

Idan gungu ya isa girma, to, mafita mai kyau ita ce haɓaka ƙarin sabobin biyu, wanda zai zama wurin shiga ga manazarta. Wato, kar a ƙyale manazarta su sami dama ga takamaiman shards a cikin gungu, amma kawai ƙirƙirar sabobin fanko guda biyu, ba tare da bayanai ba, da daidaita haƙƙin samun dama akan su. A wannan yanayin, ana canza saitunan mai amfani don buƙatun da aka rarraba zuwa sabar nesa. Wato, kuna saita komai akan waɗannan sabobin biyu, kuma saitunan suna da tasiri akan duka cluster.

A ka'ida, waɗannan sabobin ba su da bayanai, amma adadin RAM akan su yana da mahimmanci don aiwatar da buƙatun. Hakanan za'a iya amfani da faifan don bayanan wucin gadi idan an kunna tarawar waje ko rarrabawar waje.

Yana da mahimmanci a kalli saitunan da ke da alaƙa da duk iyakoki mai yuwuwa. Idan yanzu na je gungu na Yandex.Metrica a matsayin manazarci kuma in nemi buƙatu zaɓi ƙidaya daga hits, to nan da nan za a ba ni keɓe wanda ba zan iya aiwatar da buƙatar ba. Matsakaicin adadin layuka da aka ba ni izinin dubawa shine biliyan ɗari, kuma a cikin duka akwai tiriliyan hamsin a cikin tebur ɗaya akan gungu. Wannan shine iyakancewar farko.

Bari mu ce na cire iyakar layin kuma in sake gudanar da tambayar. Sa'an nan zan ga ban da haka - saitin kunna tilasta index ta kwanan wata. Ba zan iya kammala tambayar ba idan ban ayyana kewayon kwanan wata ba. Ba dole ba ne ka dogara ga manazarta don tantance shi da hannu. Halin al'ada shine lokacin da aka rubuta kewayon kwanan wata inda kwanan wata aukuwa tsakanin mako. Sannan kawai sun ayyana wani sashi a wurin da bai dace ba, kuma a maimakon haka ya zama ko - ko URL daidai. Idan babu iyaka, zai ja rarrafe ginshiƙin URL kuma kawai ya ɓata tarin albarkatu.

Bugu da kari, ClickHouse yana da saitunan fifiko guda biyu. Abin takaici, sun kasance na farko sosai. Ana kiran ɗaya kawai fifiko. Idan ana aiwatar da fifiko ≠ 0, kuma ana aiwatar da buƙatun tare da wasu fifiko, amma ana aiwatar da buƙatar da ƙimar fifikon ƙasa da ƙasa, wanda ke nufin fifiko mafi girma, to ana aiwatar da buƙatun tare da ƙimar fifiko mafi girma, wanda ke nufin ƙaramin fifiko. , an dakatar da shi kawai kuma ba zai yi aiki da komai ba a wannan lokacin.

Wannan saitin danyen ne sosai kuma bai dace da lamuran da gungu ke da nauyi akai-akai ba. Amma idan kuna da gajerun buƙatun buƙatun fashe masu mahimmanci, kuma tarin galibi ba shi da aiki, wannan saitin ya dace.

Ana kiran saitin fifiko na gaba fifikon zaren OS. Kawai saita ƙima mai kyau ga duk zaren aiwatar da buƙatun don mai tsara Linux. Yana aiki haka-haka, amma har yanzu yana aiki. Idan kun saita mafi ƙarancin ƙima mai kyau - ita ce mafi girma a cikin ƙima, sabili da haka mafi ƙarancin fifiko - kuma saita -19 don buƙatun tare da babban fifiko, to CPU za ta cinye buƙatun ƙananan fifiko kusan sau huɗu ƙasa da waɗanda aka fi fifiko.

Hakanan kuna buƙatar saita matsakaicin lokacin aiwatar da buƙatun - faɗi, mintuna biyar. Matsakaicin saurin aiwatar da tambaya shine abu mafi sanyi. Wannan saitin ya kasance na dogon lokaci, kuma ana buƙatar ba kawai don tabbatar da cewa ClickHouse baya raguwa ba, amma don tilasta shi.

Ka yi tunanin, kun saita: idan wasu hanyoyin bincike ƙasa da layuka miliyan ɗaya a sakan daya, ba za ku iya yin hakan ba. Wannan ya wulakanta sunan mu mai kyau, kyakkyawan bayanan mu. Bari kawai mu hana wannan. A zahiri akwai saituna guda biyu. Daya ake kira min gudun kisa - a cikin layi daya a sakan daya, kuma na biyu ana kiran lokaci-lokaci kafin a duba saurin aiwatar da min - dakika goma sha biyar ta tsohuwa. Wato, daƙiƙa goma sha biyar yana yiwuwa, sannan, idan yana jinkirin, to kawai jefa banda kuma a soke buƙatar.

Hakanan kuna buƙatar saita adadin kuɗi. ClickHouse yana da ginanniyar fasalin keɓaɓɓen keɓaɓɓen abin ƙidayar amfani da albarkatu. Amma, abin takaici, ba kayan aikin hardware kamar CPU, diski ba, amma masu ma'ana - adadin buƙatun da aka sarrafa, layi da bytes da aka karanta. Kuma zaku iya saita, misali, matsakaicin buƙatun ɗari a cikin mintuna biyar da buƙatun dubu a cikin awa ɗaya.

Me yasa yake da mahimmanci? Domin wasu tambayoyin bincike za a yi su da hannu kai tsaye daga abokin ciniki ClickHouse. Kuma duk za su yi kyau. Amma idan kuna da manyan manazarta a cikin kamfanin ku, za su rubuta rubutun, kuma za a iya samun kuskure a cikin rubutun. Kuma wannan kuskuren zai sa a aiwatar da buƙatar a cikin madauki marar iyaka. Wannan shi ne abin da ya kamata mu kare kanmu.

Shin zai yiwu a ba da sakamakon tambaya ɗaya ga abokan ciniki goma?

Muna da masu amfani da yawa waɗanda ke son shigo da manyan buƙatun a lokaci guda. Buƙatun yana da girma kuma, bisa ka'ida, an kashe shi da sauri, amma saboda gaskiyar cewa akwai irin waɗannan buƙatun a lokaci guda, ya zama mai zafi sosai. Shin zai yiwu a aiwatar da wannan buƙatar, wanda ya zo sau goma a jere, sau ɗaya, kuma ya ba da sakamakon ga abokan ciniki goma?

Matsalar ita ce, ba mu da sakamakon cache ko cache na matsakaicin bayanai. Akwai cache shafi na tsarin aiki, wanda zai hana ku sake karanta bayanai daga faifan, amma, da rashin alheri, bayanan za su kasance a narkar da su, lalata su da sake sarrafa su.

Ina so in guje wa wannan ko ta yaya, ko dai ta hanyar adana matsakaiciyar bayanai, ko ta jera tambayoyi iri ɗaya a cikin wani nau'in layi da ƙara cache na sakamako. A halin yanzu muna da buƙatun ja guda ɗaya a cikin haɓakawa wanda ke ƙara cache buƙatun, amma kawai don abubuwan da ke cikin ciki da haɗa sassan - wato, maganin bai cika ba.

Duk da haka, mu ma muna fuskantar irin wannan yanayin. Misali na musamman na canonical shine tambayoyin rugujewa. Akwai rahoto, yana da shafuka da yawa, kuma akwai buƙatar iyakance 10. Sannan abu ɗaya, amma iyakance 10,10. Sai wani shafi na gaba. Kuma abin tambaya a nan shi ne, me ya sa muke kirga duk wannan a kowane lokaci? Amma yanzu babu mafita, kuma babu yadda za a yi a kauce masa.

Akwai madadin mafita wanda aka sanya azaman motar gefe kusa da ClickHouse - ClickHouse Proxy.

Kirill Shvakov: ClickHouse Proxy yana da ginanniyar iyakance ƙimar ƙima da ginanniyar ma'ajin sakamako. An yi saitunan da yawa a wurin saboda ana magance irin wannan matsala. Wakili yana ba ku damar iyakance buƙatun ta hanyar yin layi da kuma saita tsawon lokacin cache ɗin buƙatun. Idan buƙatun sun kasance da gaske iri ɗaya, Proxy zai aika su sau da yawa, amma zai je ClickHouse sau ɗaya kawai.

Nginx shima yana da cache a cikin sigar kyauta, kuma wannan shima zaiyi aiki. Nginx ma yana da saitunan da idan buƙatun sun zo a lokaci guda, zai rage wasu har sai an kammala. Amma yana cikin ClickHouse Proxy cewa saitin ya yi kyau sosai. An yi shi musamman don ClickHouse, musamman don waɗannan buƙatun, don haka ya fi dacewa. To, yana da sauƙin shigarwa.

Me game da ayyukan asynchronous da ra'ayoyin zahiri?

Akwai matsala cewa ayyukan da injin sake kunnawa ba su daidaita ba - da farko an rubuta bayanan, sannan kuma ya rushe. Idan kwamfutar hannu ta zahiri tare da wasu tarin abubuwa suna rayuwa ƙarƙashin alamar, to za a rubuta kwafi zuwa gare shi. Idan kuma babu hadaddun dabaru, to za a kwafi bayanan. Me za ku iya yi game da shi?

Akwai bayyanannen bayani - don aiwatar da tsokana a kan wani nau'in ma'auni yayin aikin rugujewar asynchronous. Shin akwai harsashi na azurfa ko tsare-tsaren aiwatar da irin wannan aiki?

Yana da kyau a fahimci yadda ƙaddamarwa ke aiki. Abin da zan gaya muku yanzu bai dace da tambayar ba, amma kawai idan yana da daraja tunawa.

Lokacin sakawa cikin tebur da aka kwafi, ana cire duk tubalan da aka saka. Idan kun sake shigar da toshe ɗaya mai ɗauke da adadin adadin layuka iri ɗaya a cikin tsari iri ɗaya, sannan an cire bayanan. Za ku karɓi “Ok” don amsawa don sakawa, amma a zahiri za a rubuta fakiti ɗaya na bayanai, kuma ba za a kwafi su ba.

Wannan ya zama dole don tabbas. Idan kun karɓi “Ok” yayin sakawa, to an saka bayanan ku. Idan kun sami kuskure daga ClickHouse, yana nufin ba a shigar da su ba kuma kuna buƙatar maimaita shigar. Amma idan haɗin ya karye yayin sakawa, to ba ku sani ba ko an saka bayanan ko a'a. Zaɓin kawai shine sake maimaita abin da aka saka. Idan da gaske an saka bayanan kuma kun sake shigar da su, akwai cirewa toshewa. Ana buƙatar wannan don guje wa kwafi.

Kuma yana da mahimmanci yadda yake aiki don ra'ayi na zahiri. Idan an cire bayanan lokacin da aka shigar da su cikin babban tebur, to, ba za ta shiga cikin yanayin da aka sanya a zahiri ba.

Yanzu game da tambaya. Halin ku ya fi rikitarwa saboda kuna yin rikodin kwafi na layi ɗaya. Wato ba duka fakitin ne aka kwafi ba, amma takamaiman layukan, kuma suna rugujewa a bango. Lalle ne, bayanan za su rushe a cikin babban tebur, amma bayanan da ba a rushe ba za su je ga ra'ayi na kayan aiki, kuma a lokacin haɗuwa babu abin da zai faru da ra'ayoyin da aka yi. Domin kallon abin duniya ba komai bane illa abin sakawa. Yayin sauran ayyuka, babu wani ƙarin abin da ke faruwa da shi.

Kuma ba zan iya faranta muku rai a nan ba. Kuna buƙatar kawai neman takamaiman bayani don wannan harka. Misali, shin zai yiwu a sake kunna shi a zahiri, kuma hanyar cirewa na iya aiki iri ɗaya. Amma abin takaici, ba koyaushe ba. Idan ana tarawa, ba zai yi aiki ba.

Kirill Shvakov: Mun kuma yi crutch gini a baya. Akwai matsala cewa akwai abubuwan talla, kuma akwai wasu bayanan da za mu iya nunawa a ainihin lokacin - waɗannan kawai abubuwan gani ne. Ba kasafai ake kwafi su ba, amma idan hakan ta faru, za mu rushe su daga baya ko ta yaya. Kuma akwai abubuwan da ba za a iya kwafin su ba - dannawa da wannan duka labarin. Amma kuma na so in nuna musu nan da nan.

Ta yaya aka yi ra'ayi na zahiri? Akwai ra'ayoyi inda aka rubuta shi kai tsaye - an rubuta shi zuwa cikakkun bayanai, kuma an rubuta shi zuwa ra'ayoyi. A can, a wani lokaci bayanan ba daidai ba ne, ana kwafi su, da sauransu. Kuma akwai kashi na biyu na teburin, inda suka yi kama da ra'ayi na zahiri, wato, sun yi kama da juna a cikin tsari. Sau ɗaya a wani lokaci muna sake ƙididdige bayanan, ƙidaya bayanan ba tare da kwafi ba, rubuta zuwa waɗannan tebur.

Mun shiga cikin API - wannan ba zai yi aiki a ClickHouse da hannu ba. Kuma API yana kallon: lokacin da nake da ranar ƙarshe na ƙarshe zuwa tebur, inda aka tabbatar da cewa an riga an ƙididdige bayanan daidai, kuma yana yin buƙatu zuwa tebur ɗaya da wani tebur. Daga ɗaya buƙatun yana zaɓar har zuwa takamaiman adadin lokaci, kuma daga ɗayan yana samun abin da ba a ƙididdige shi ba tukuna. Kuma yana aiki, amma ba ta hanyar ClickHouse kadai ba.

Idan kuna da wani nau'in API - don manazarta, don masu amfani - to, bisa ƙa'ida, wannan zaɓi ne. Kullum kuna kirgawa, koyaushe kuna ƙirgawa. Ana iya yin hakan sau ɗaya a rana ko kuma a wani lokaci dabam. Kuna zabar wa kanku kewayon da ba ku buƙata kuma ba shi da mahimmanci.

ClickHouse yana da rajistan ayyukan da yawa. Ta yaya zan iya ganin duk abin da ya faru da uwar garken a kallo?

ClickHouse yana da adadi mai yawa na rajistan ayyukan daban-daban, kuma wannan lambar tana ƙaruwa. A cikin sababbin nau'ikan, wasun su ma ana kunna su ta tsohuwa; a cikin tsofaffin nau'ikan dole ne a kunna su lokacin da ake ɗaukakawa. Duk da haka, akwai kuma da yawa daga cikinsu. A ƙarshe, Ina so in ga abin da ke faruwa da uwar garken nawa a yanzu, watakila a kan wani nau'in dashboard na taƙaitaccen bayani.

Kuna da ƙungiyar ClickHouse, ko ƙungiyoyin abokan ku, waɗanda ke goyan bayan wasu ayyuka na shirye-shiryen dashboards waɗanda zasu nuna waɗannan rajistan ayyukan a matsayin ƙãre samfurin? Daga ƙarshe, kawai kallon rajistan ayyukan cikin ClickHouse yana da kyau. Amma zai yi kyau sosai idan an riga an shirya shi ta hanyar dashboard. Zan samu bugun daga ciki.

Akwai dashboards, kodayake ba a daidaita su ba. A cikin kamfaninmu, kusan ƙungiyoyi 60 suna amfani da ClickHouse, kuma abin ban mamaki shine yawancin su suna da dashboards waɗanda suka yi wa kansu, kuma waɗanda suka ɗan bambanta. Wasu ƙungiyoyi suna amfani da shigarwar Yandex.Cloud na ciki. Akwai wasu rahotannin da aka shirya, kodayake ba duk waɗanda suka dace ba. Wasu kuma suna da nasu.

Abokan aiki na daga Metrica suna da nasu dashboard a Grafana, kuma ina da nawa na gungu. Ina kallon abubuwa kamar buga cache don ma'ajiyar serif. Kuma mafi wahala shine mu yi amfani da kayan aiki daban-daban. Na ƙirƙiri dashboard dina ta amfani da wani tsohon kayan aiki mai suna Graphite-web. Shi gaba daya mummuna ne. Kuma har yanzu ina amfani da shi ta wannan hanya, kodayake Grafana zai iya zama mafi dacewa da kyau.

Babban abu a cikin dashboards iri ɗaya ne. Waɗannan su ne ma'aunin tsarin don tari: CPU, memory, disk, network. Wasu - adadin buƙatun lokaci guda, adadin haɗaɗɗen lokaci guda, adadin buƙatun daƙiƙa guda, matsakaicin adadin chunks don ɓangaren tebur na MergeTree, lag na maimaitawa, girman layin kwafi, adadin layuka da aka saka a sakan daya, adadin tubalan da aka saka a sakan daya. Wannan shi ne duk abin da aka samu ba daga gundumomi ba, amma daga ma'auni.

Vladimir Kolobaev: Alexey, Ina so in gyara shi kadan. Akwai Grafana. Grafana yana da tushen bayanai, wanda shine ClickHouse. Wato, Zan iya yin buƙatu daga Grafana kai tsaye zuwa ClickHouse. ClickHouse yana da tebur tare da rajistan ayyukan, iri ɗaya ne ga kowa da kowa. Sakamakon haka, ina so in shiga wannan tebur ɗin log a Grafana kuma in ga buƙatun da uwar garken nawa ke yi. Zai yi kyau a sami dashboard kamar wannan.

Na tuka shi da kaina. Amma ina da tambaya - idan an daidaita shi, kuma kowa yana amfani da Grafana, me yasa Yandex ba ya da irin wannan dashboard na hukuma?

Kirill Shvakov: A zahiri, tushen bayanan da ke zuwa ClickHouse yanzu yana goyan bayan Altinity. Kuma ina so kawai in ba vector na inda zan tono da wanda zan tura. Kuna iya tambayar su, saboda Yandex har yanzu yana yin ClickHouse, kuma ba labarin da ke kewaye da shi ba. Altinity shine babban kamfani a halin yanzu yana haɓaka ClickHouse. Ba za su yashe shi ba, amma za su goyi bayansa. Domin, a ka'ida, don loda dashboard zuwa gidan yanar gizon Grafana, kawai kuna buƙatar yin rajista da loda shi - babu matsaloli na musamman.

Alexei Milovidov: A cikin shekarar da ta gabata, ClickHouse ya kara yawan iyawar bayanin tambaya. Akwai ma'auni don kowane buƙatu akan amfani da albarkatu. Kuma kwanan nan, mun ƙara wani madaidaicin bayanin bayanin tambaya don ganin inda tambaya ke kashewa kowane millisecond. Amma don amfani da wannan aikin, dole ne in buɗe abokin aikin wasan bidiyo kuma in buga buƙatun, wanda koyaushe nake mantawa. Na ajiye shi a wani wuri kuma na ci gaba da manta inda daidai.

Ina fata akwai wani kayan aiki da ya ce yanzu, ga manyan tambayoyinku, an haɗa su ta hanyar ajin tambaya. Na danna daya, kuma za su gaya mani cewa shi ya sa yana da nauyi. Babu irin wannan mafita a yanzu. Kuma hakika yana da ban mamaki cewa lokacin da mutane suka tambaye ni: "Ku gaya mani, akwai wasu shirye-shiryen dashboards don Grafana?", Na ce: "Je zuwa gidan yanar gizon Grafana, akwai jama'ar"Dashboards", kuma akwai dashboard. daga Dimka, akwai dashboard daga Kostyan. Ban san abin da yake ba, ban yi amfani da shi da kaina ba. "

Yadda za a rinjayi haɗuwa don kada uwar garken ya fadi cikin OOM?

Ina da tebur, akwai bangare ɗaya kawai a cikin tebur, shine SauyawaMergeTree. Na yi shekaru hudu ina rubuta bayanai a ciki. Ina bukatan yin canji a ciki in goge wasu bayanai.

Na yi wannan, kuma yayin aiwatar da wannan buƙatar, duk ƙwaƙwalwar ajiya akan duk sabobin da ke cikin cluster ya cinye, kuma duk sabobin da ke cikin cluster sun shiga OOM. Daga nan suka tashi gaba dayansu, suka fara hada wannan aiki guda, wannan block din data, suka sake fadawa cikin OOM. Nan suka sake tashi suka sake faduwa. Kuma wannan abu bai tsaya ba.

Daga nan sai ya zama lallai wannan kwaro ne da samarin suka gyara. Wannan yana da kyau sosai, na gode sosai. Amma saura ya rage. Kuma yanzu, lokacin da na yi tunani game da yin wani irin hade a cikin tebur, Ina da tambaya - me ya sa ba zan iya ko ta yaya rinjayar wadannan merges? Misali, iyakance su da adadin RAM da ake buƙata, ko, bisa ƙa'ida, ta adadin da zai sarrafa wannan tebur na musamman.

Ina da tebur mai suna "Metrics", da fatan za a sarrafa mani shi cikin zaren guda biyu. Babu buƙatar ƙirƙirar haɗin kai goma ko biyar a layi daya, yi shi biyu. Ina tsammanin cewa ina da isasshen ƙwaƙwalwar ajiya na biyu, amma yana iya zama bai isa aiwatar da goma ba. Me yasa tsoro ya kasance? Saboda tebur yana girma, kuma wata rana zan fuskanci yanayin da, bisa ga ka'ida, ba saboda kwaro ba ne, amma saboda bayanan za su canza a cikin adadi mai yawa wanda kawai ba zan sami isasshen ƙwaƙwalwar ajiya ba. uwar garken. Sannan uwar garken zata fadi cikin OOM lokacin hadewa. Haka kuma, zan iya soke maye gurbin, amma Merji ba ya nan.

Ka sani, lokacin haɗawa, uwar garken ba zai fada cikin OOM ba, saboda lokacin haɗuwa, ana amfani da adadin RAM don ƙananan kewayon bayanai. Don haka komai zai yi kyau ba tare da la’akari da adadin bayanai ba.

Vladimir Kolobaev: Lafiya. Anan wannan lokacin shine bayan an gyara kwaro, na zazzage sabon sigar don kaina, kuma akan wani tebur, ƙaramin ƙaramin, inda akwai ɓangarorin da yawa, na yi irin wannan aikin. Kuma yayin haɗuwa, an kona kusan 100 GB na RAM akan uwar garken. Ina da 150 shagaltar, 100 ci, da kuma 50 GB taga bar, don haka ban fada cikin OOM.

Menene a halin yanzu yake kare ni daga faɗuwa cikin OOM idan da gaske yana cinye 100 GB na RAM? Abin da za a yi idan ba zato ba tsammani RAM a kan haɗuwa ya ƙare?

Alexei Milovidov: Akwai irin wannan matsalar cewa amfani da RAM musamman don haɗawa bai iyakance ba. Matsala ta biyu kuma ita ce, idan aka sanya wani nau’in hadewa, to dole ne a aiwatar da shi saboda an rubuta shi a cikin littafin kwafi. Rubutun kwafi shine ayyukan da ake buƙata don kawo kwafin cikin daidaitaccen yanayi. Idan ba ku yi gyare-gyaren da hannu ba wanda zai sake jujjuya wannan littafin kwafi, dole ne a yi haɗin gwiwa ta wata hanya ko wata.

Tabbas, ba zai zama abin mamaki ba don samun iyakancewar RAM wanda "kawai idan" ke kare OOM. Ba zai taimaka haɗuwa don kammala ba, zai sake farawa, ya isa wani kofa, jefa banda, sa'an nan kuma sake farawa - babu wani abu mai kyau da zai zo daga wannan. Amma bisa ka'ida, zai zama da amfani gabatar da wannan ƙuntatawa.

Ta yaya za a haɓaka direban Golang don ClickHouse?

Direbobin Golang, wanda Kirill Shvakov ya rubuta, yanzu ƙungiyar ClickHouse ta sami goyan bayan hukuma. Shi a cikin ma'ajiyar ClickHouse, yanzu ya zama babba kuma na gaske.

Karamin rubutu. Akwai ma'ajiyar ban mamaki da ƙaunataccen nau'i na al'ada na tsari mara iyaka - wannan shine Vertica. Hakanan suna da nasu direban python na hukuma, wanda masu haɓaka Vertica ke tallafawa. Kuma sau da yawa ya faru cewa nau'ikan ajiya da nau'ikan direbobi sun bambanta sosai, kuma direban ya daina aiki a wani lokaci. Da kuma batu na biyu. Taimako ga wannan direba na hukuma, ga alama ni, ana aiwatar da shi ta tsarin “nono” - kuna rubuta musu batun, kuma yana rataye har abada.

Ina da tambayoyi guda biyu. Yanzu direban Golang na Kirill shine kusan hanyar da aka saba don sadarwa daga Golang tare da ClickHouse. Sai dai idan har yanzu wani yana sadarwa ta hanyar http interface saboda yana son hakan. Ta yaya ci gaban wannan direban zai ci gaba? Shin za a daidaita shi tare da kowane canje-canje masu karyawa a cikin ma'ajiyar kanta? Kuma menene hanya don yin la'akari da batu?

Kirill Shvakov: Na farko shi ne yadda aka tsara komai bisa tsarin hukuma. Ba a tattauna wannan batu ba, don haka babu abin da zan amsa.

Don amsa tambaya game da batun, muna buƙatar ɗan tarihin direba. Na yi aiki da kamfani mai tarin bayanai. Ya kasance mai tallan talla tare da adadi mai yawa na abubuwan da ke buƙatar adanawa a wani wuri. Kuma a wani lokaci ClickHouse ya bayyana. Mun cika shi da bayanai, kuma da farko komai ya yi kyau, amma sai ClickHouse ya fadi. A wannan lokacin mun yanke shawarar cewa ba mu bukata.

Bayan shekara guda, mun koma kan ra'ayin yin amfani da ClickHouse, kuma muna buƙatar rubuta bayanai a can ko ta yaya. Saƙon gabatarwa shine wannan: na'urar tana da rauni sosai, akwai 'yan albarkatu. Amma koyaushe muna aiki ta wannan hanyar, don haka muna duban ƙa'idar ƙa'idar ta asali.

Tun muna aiki a Go, a bayyane yake cewa muna buƙatar direban Go. Na yi shi kusan cikakken lokaci - aikina ne. Mun kawo shi ga wani batu, kuma a ka'ida babu wanda ya zaci cewa wanin mu zai yi amfani da shi. Sa'an nan CloudFlare ya zo da daidai wannan matsala, kuma na ɗan lokaci muna aiki tare da su sosai, saboda suna da ayyuka iri ɗaya. Bugu da ƙari, mun yi wannan duka a cikin ClickHouse kanmu da kuma a cikin direba.

A wani lokaci, kawai na daina yin shi, saboda ayyukana game da ClickHouse da aiki sun canza kaɗan. Don haka ba a rufe batutuwa. Lokaci-lokaci, mutanen da suke buƙatar wani abu da kansu suna ƙaddamar da ma'ajin. Sannan ina duba buƙatar ja kuma wani lokacin ma nakan gyara wani abu da kaina, amma wannan yana faruwa da wuya.

Ina so in koma wurin direba. Shekaru da yawa da suka gabata, lokacin da wannan duka ya fara, ClickHouse shima ya bambanta kuma yana da iyakoki daban-daban. Yanzu mun fahimci yadda za a sake yin direban don ya yi aiki da kyau. Idan wannan ya faru, to, sigar 2 ba za ta dace ba a kowace harka saboda tarin da aka tara.

Ban san yadda zan tsara wannan lamarin ba. Ba ni da lokaci mai yawa da kaina. Idan wasu sun gama direban, zan iya taimaka musu in gaya musu abin da za su yi. Amma aiki na Yandex a cikin ci gaban aikin bai riga ya tattauna ba.

Alexei Milovidov: Hasali ma, babu wata hukuma game da waɗannan direbobi tukuna. Abinda kawai shine an ƙaddamar da su ga ƙungiyar hukuma, wato, an gane wannan direban azaman hanyar da ta dace don Go. Akwai wasu direbobi, amma suna zuwa daban.

Ba mu da wani ci gaba na ciki ga waɗannan direbobi. Tambayar ita ce, shin za mu iya daukar mutum ɗaiɗai, ba don wannan direba na musamman ba, amma don ci gaban duk direbobin al'umma, ko kuma za mu iya samun wani daga waje.

Kamus na waje baya yin lodi bayan sake kunnawa tare da kunna saitin lazy_load. Me za a yi?

Muna kunna saitin lazy_load, kuma bayan an sake kunna uwar garken, ƙamus ɗin baya ɗauka da kansa. Yana tasowa ne kawai bayan mai amfani ya sami damar shiga wannan ƙamus. Kuma a karon farko da na isa gare shi, yana ba da kuskure. Shin zai yiwu ta wata hanya ta atomatik loda ƙamus ta amfani da ClickHouse, ko kuna buƙatar koyaushe sarrafa shirye-shiryen su da kanku don kada masu amfani su sami kurakurai?

Wataƙila muna da tsohon sigar ClickHouse, don haka ƙamus ɗin bai yi lodi ta atomatik ba. Shin hakan zai iya kasancewa?

Da fari dai, ana iya tilasta wa ɗora ƙamus ta amfani da tambaya tsarin sake shigar da ƙamus. Abu na biyu, game da kuskuren - idan an riga an ɗora ƙamus, to, tambayoyin za su yi aiki bisa bayanan da aka ɗora. Idan har yanzu ba a loda ƙamus ba, za a loda shi kai tsaye yayin buƙatar.

Wannan bai dace sosai ga ƙamus masu nauyi ba. Misali, kuna buƙatar cire layuka miliyan daga MySQL. Wani yana yin zaɓi mai sauƙi, amma wannan zaɓin zai jira layuka miliyan ɗaya. Akwai mafita guda biyu anan. Na farko shine kashe lazy_load. Na biyu, idan uwar garken ta tashi, kafin a sanya kaya a kai, yi tsarin sake shigar da ƙamus ko kawai yi tambaya mai amfani da ƙamus. Sannan za a loda ƙamus. Kuna buƙatar sarrafa wadatar ƙamus tare da kunna saitin lazy_load, saboda ClickHouse baya loda su kai tsaye.

Amsar tambaya ta ƙarshe ita ce ko dai sigar ta tsufa ko kuma tana buƙatar gyara.

Me za a yi tare da gaskiyar cewa tsarin sake shigar da ƙamus ba ya ɗora kowane ƙamus ɗin da yawa idan aƙalla ɗaya daga cikinsu ya faɗi da kuskure?

Akwai wata tambaya game da sake loda ƙamus. Muna da ƙamus guda biyu - ɗaya ba a loda shi, na biyu yana lodawa. A wannan yanayin, ƙamus na sake shigar da tsarin ba ya ɗora kowane ƙamus, kuma dole ne ka ɗora kowane ƙamus na nuni-by-point ta takamaiman suna ta amfani da ƙamus na sake loda tsarin. Shin wannan kuma yana da alaƙa da sigar ClickHouse?

Ina so in faranta muku rai. Wannan halin yana canzawa. Wannan yana nufin cewa idan kun sabunta ClickHouse, shima zai canza. Idan baku gamsu da halayenku na yanzu ba tsarin sake shigar da ƙamus, sabunta, kuma bari mu yi fatan ya canza don mafi kyau.

Shin akwai wata hanya don saita cikakkun bayanai a cikin saitin ClickHouse, amma ba nuna su ba idan akwai kurakurai?

Tambaya ta gaba game da kurakurai masu alaƙa da ƙamus, wato cikakkun bayanai. Mun ƙayyadad da bayanan haɗin kai a cikin saitin ClickHouse don ƙamus, kuma idan akwai kuskure, muna karɓar waɗannan cikakkun bayanai da kalmar sirri don amsawa.

Mun warware wannan kuskure ta ƙara cikakkun bayanai zuwa saitin direban ODBC. Shin akwai wata hanya don daidaita cikakkun bayanai a cikin saitin ClickHouse, amma ba nuna waɗannan cikakkun bayanai ba idan akwai kurakurai?

Ainihin bayani anan shine a ƙayyade waɗannan takaddun shaida a cikin odbc.ini, kuma a cikin ClickHouse da kansa ya saka sunan tushen bayanan ODBC kawai. Wannan ba zai faru don wasu tushen ƙamus - ba don ƙamus ɗin tare da MySQL ba, ko ga sauran, bai kamata ku ga kalmar wucewa ba lokacin da kuka karɓi saƙon kuskure. Don ODBC, zan kuma duba - idan akwai, kawai kuna buƙatar cire shi.

Bonus: baya don Zuƙowa daga taro

Ta danna kan hoton, bayanan kari daga taron za su buɗe ga mafi yawan masu karatu. Mun kashe gobarar tare da mascots na fasaha na Avito, muna tattaunawa da abokan aiki daga dakin mai kula da tsarin ko kulob din kwamfuta na tsohuwar makaranta, kuma muna gudanar da tarurrukan yau da kullun a ƙarƙashin gada a kan bangon rubutun.

ClickHouse don masu amfani masu ci gaba a cikin tambayoyi da amsoshi

source: www.habr.com

Add a comment