HighLoad++ Maskava 2018, Kongresu nams. 9. novembrī 15:00
Abstrakti un prezentÄcija:
Jurijs Nasretdinovs (VKontakte): pÄrskatÄ tiks runÄts par ClickHouse ievieÅ”anas pieredzi mÅ«su uzÅÄmumÄ - kÄpÄc mums tas ir vajadzÄ«gs, cik daudz datu mÄs glabÄjam, kÄ tos rakstÄm utt.
Papildu materiÄli:
Jurijs Nasretdinovs: - Sveiki visiem! Mani sauc Jurijs Nasretdinovs, kÄ mani jau iepazÄ«stinÄja. Es strÄdÄju VKontakte. Es runÄÅ”u par to, kÄ mÄs ievietojam datus ClickHouse no mÅ«su serveru flotes (desmitiem tÅ«kstoÅ”u).
Kas ir apaļkoki un kÄpÄc tos vÄkt?
Ko mÄs jums pastÄstÄ«sim: ko mÄs darÄ«jÄm, kÄpÄc mums bija nepiecieÅ”ams āClickHouseā, attiecÄ«gi, kÄpÄc mÄs to izvÄlÄjÄmies, kÄdu veiktspÄju jÅ«s varat iegÅ«t, neko Ä«paÅ”i nekonfigurÄjot. Es jums pastÄstÄ«Å”u vairÄk par bufera tabulÄm, par problÄmÄm, kas mums radÄs ar tÄm, un par mÅ«su risinÄjumiem, ko izstrÄdÄjÄm no atvÄrtÄ koda ā KittenHouse un Lighthouse.
KÄpÄc mums vispÄr bija kaut kas jÄdara (VKontakte vienmÄr viss ir kÄrtÄ«bÄ, vai ne?). MÄs gribÄjÄm savÄkt atkļūdoÅ”anas žurnÄlus (un tur bija simtiem terabaitu datu), varbÅ«t kaut kÄ ÄrtÄk bÅ«tu aprÄÄ·inÄt statistiku; un mums ir desmitiem tÅ«kstoÅ”u serveru, no kuriem tas viss ir jÄdara.
KÄpÄc mÄs izlÄmÄm? DroÅ”i vien mums bija risinÄjumi baļķu uzglabÄÅ”anai. LÅ«k ā ir tÄds publisks āBackend VKā. Es ļoti iesaku to abonÄt.
Kas ir apaļkoki? Å is ir dzinÄjs, kas atgriež tukÅ”us masÄ«vus. DzinÄjus VK citi sauc par mikropakalpojumiem. Un Å”eit ir smaidoÅ”a uzlÄ«me (diezgan daudz atzÄ«mju patÄ«k). KÄ tÄ? Nu klausies tÄlÄk!
Ko var izmantot žurnÄlu uzglabÄÅ”anai? Nav iespÄjams nepieminÄt Hadupu. PÄc tam, piemÄram, Rsyslog (Å”o žurnÄlu saglabÄÅ”ana failos). LSD. Kas zina, kas ir LSD? NÄ, ne Å”is LSD. AttiecÄ«gi arÄ« saglabÄjiet failus. Nu, ClickHouse ir dÄ«vaina iespÄja.
Clickhouse un konkurenti: prasÄ«bas un iespÄjas
Ko mÄs gribam? MÄs vÄlamies nodroÅ”inÄt, ka mums nav pÄrÄk jÄuztraucas par darbÄ«bu, lai tÄ darbotos jau no kastes, vÄlams ar minimÄlu konfigurÄciju. MÄs vÄlamies rakstÄ«t daudz un Ätri. Un mÄs vÄlamies to saglabÄt visÄdus mÄneÅ”us, gadus, tas ir, ilgu laiku. MÄs, iespÄjams, vÄlÄsimies izprast kÄdu problÄmu, ar kuru viÅi pie mums vÄrsÄs un teica: āÅ eit kaut kas nedarbojasā, un tas notika pirms 3 mÄneÅ”iem), un mÄs vÄlamies redzÄt, kas notika pirms 3 mÄneÅ”iem. Datu saspieÅ”ana ā ir skaidrs, kÄpÄc tas bÅ«tu pluss ā jo tas samazina aizÅemto vietu.
Un mums ir tÄda interesanta prasÄ«ba: mÄs dažreiz rakstÄm dažu komandu izvadi (piemÄram, žurnÄlus), tas var bÅ«t lielÄks par 4 kilobaitiem diezgan viegli. Un, ja Ŕī lieta darbojas, izmantojot UDP, tad tai nav jÄtÄrÄ... tai nebÅ«s nekÄdu "pieskaitÄ«jumu" savienojumam, un lielam skaitam serveru tas bÅ«s plus.
ApskatÄ«sim, ko mums piedÄvÄ atvÄrtais avots. PirmkÄrt, mums ir Logs Engine ā tas ir mÅ«su dzinÄjs; PrincipÄ viÅÅ” var visu, var pat rakstÄ«t garas rindas. Nu, tas nepÄrskatÄmi nesaspiež datus - mÄs paÅ”i varam saspiest lielas kolonnas, ja vÄlamies... mÄs, protams, nevÄlamies (ja iespÄjams). VienÄ«gÄ problÄma ir tÄ, ka viÅÅ” var atdot tikai to, kas iederas viÅa atmiÅÄ; Lai lasÄ«tu pÄrÄjo, jums ir jÄiegÅ«st Ŕī dzinÄja binlogs, un attiecÄ«gi tas aizÅem diezgan ilgu laiku.
KÄdas vÄl ir iespÄjas? PiemÄram, "Hadup". VienkÄrÅ”a darbÄ«ba... KurÅ” domÄ, ka Hadup ir viegli iestatÄ«t? Protams, ar ierakstu nav nekÄdu problÄmu. Lasot, reizÄm rodas jautÄjumi. PrincipÄ es teiktu, ka droÅ”i vien nÄ, it Ä«paÅ”i attiecÄ«bÄ uz baļķiem. IlgtermiÅa glabÄÅ”ana - protams, jÄ, datu saspieÅ”ana - jÄ, garas virknes - ir skaidrs, ka varat ierakstÄ«t. Bet ierakstÄ«Å”ana no liela daudzuma serveriem... VÄl kaut kas jÄdara paÅ”am!
Rsyslog. Faktiski mÄs to izmantojÄm kÄ rezerves opciju, lai mÄs to varÄtu lasÄ«t, neizlaižot binlog, bet tas nevar rakstÄ«t garas rindas; principÄ tas nevar ierakstÄ«t vairÄk par 4 kilobaitiem. TÄdÄ paÅ”Ä veidÄ datu saspieÅ”ana jÄveic paÅ”am. LasÄ«Å”ana notiks no failiem.
Tad ir LSD ābadushkaā attÄ«stÄ«ba. BÅ«tÄ«bÄ tas pats, kas āRsyslogā: tas atbalsta garas virknes, taÄu tas nevar darboties, izmantojot UDP, un patiesÄ«bÄ tÄpÄc diemžÄl ir diezgan daudz lietu, kas ir jÄpÄrraksta. LSD ir jÄpÄrveido, lai varÄtu ierakstÄ«t no desmitiem tÅ«kstoÅ”u serveru.
Un Å”eit! SmieklÄ«ga iespÄja ir ElasticSearch. KÄ pateikt? ViÅam labi veicas ar lasÄ«Å”anu, proti, viÅÅ” lasa Ätri, bet ne pÄrÄk labi ar rakstÄ«Å”anu. PirmkÄrt, ja tas saspiež datus, tas ir ļoti vÄjÅ”. VisticamÄk, pilnÄ«gai meklÄÅ”anai ir nepiecieÅ”amas lielÄkas datu struktÅ«ras nekÄ sÄkotnÄjam apjomam. To ir grÅ«ti operÄt, un ar to bieži rodas problÄmas. Un, atkal, ieraksts Elastic - viss jÄdara paÅ”iem.
Å eit ClickHouse, protams, ir ideÄls risinÄjums. VienÄ«gÄ lieta ir tÄda, ka ierakstÄ«Å”ana no desmitiem tÅ«kstoÅ”u serveru ir problÄma. Bet vismaz ir viena problÄma, mÄs varam mÄÄ£inÄt to kaut kÄ atrisinÄt. Un pÄrÄjÄ ziÅojuma daļa ir par Å”o problÄmu. KÄdu sniegumu jÅ«s varat sagaidÄ«t no ClickHouse?
KÄ mÄs to ievietosim? MergeTree
KurÅ” no jums nav dzirdÄjis vai nezina par āClickHouseā? Man tev jÄsaka, vai ne? Ä»oti Ätri. Tur esoÅ”ais ievietojums - 1-2 gigabiti sekundÄ, sÄrijveidÄ lÄ«dz 10 gigabitiem sekundÄ faktiski var izturÄt Å”o konfigurÄciju - ir divi 6 kodolu Xeon (tas ir, pat ne jaudÄ«gÄkie), 256 gigabaiti RAM, 20 terabaiti RAID (nav konfigurÄts, noklusÄjuma iestatÄ«jumi). Aleksejs Milovidovs, ClickHouse izstrÄdÄtÄjs, iespÄjams, sÄž un raud, jo mÄs neko nekonfigurÄjÄm (mums viss tÄ strÄdÄja). AttiecÄ«gi, ja dati ir labi saspiesti, var iegÅ«t skenÄÅ”anas Ätrumu, piemÄram, apmÄram 6 miljardus lÄ«niju sekundÄ. Ja jums patÄ«k % teksta virknÄ - 100 miljoni rindiÅu sekundÄ, tas ir, tas Ŕķiet diezgan Ätri.
KÄ mÄs to ievietosim? Nu, jÅ«s zinÄt, ka VK izmanto PHP. MÄs ievietosim no katra PHP darbinieka, izmantojot HTTP, āClickHouseā, katra ieraksta MergeTree tabulÄ. KurÅ” saskata problÄmas Å”ajÄ shÄmÄ? Nez kÄpÄc ne visi pacÄla rokas. Ä»auj man tev pateikt.
PirmkÄrt, ir daudz serveru - attiecÄ«gi bÅ«s daudz savienojumu (slikti). Tad labÄk ir ievietot datus MergeTree ne biežÄk kÄ reizi sekundÄ. Un kas zina, kÄpÄc? Labi, labi. Es jums pastÄstÄ«Å”u mazliet vairÄk par Å”o. VÄl viens interesants jautÄjums ir tas, ka mÄs neveicam analÄ«zi, mums nav nepiecieÅ”ams bagÄtinÄt datus, mums nav vajadzÄ«gi starpposma serveri, mÄs vÄlamies ievietot tieÅ”i āClickHouseā (vÄlams - jo tieÅ”Äk, jo labÄk).
AttiecÄ«gi, kÄ ievietoÅ”ana tiek veikta programmÄ MergeTree? KÄpÄc labÄk tajÄ ievietot ne biežÄk kÄ reizi sekundÄ vai retÄk? Fakts ir tÄds, ka āClickHouseā ir kolonnu datu bÄze un sakÄrto datus augoÅ”Ä secÄ«bÄ pÄc primÄrÄs atslÄgas, un, veicot ievietoÅ”anu, tiek izveidots failu skaits, kas ir vismaz vienÄds ar kolonnu skaitu, kurÄs dati ir sakÄrtoti. primÄrÄs atslÄgas augoÅ”Ä secÄ«bÄ (tiek izveidots atseviŔķs direktorijs, failu kopa diskÄ katram ievietojumam). Tad nÄk nÄkamais ievietojums, un fonÄ tie tiek apvienoti lielÄkÄs āstarpsienÄsā. TÄ kÄ dati ir sakÄrtoti, ir iespÄjams āsapludinÄtā divus sakÄrtotus failus, nepatÄrÄjot daudz atmiÅas.
Bet, kÄ jÅ«s varÄtu nojaust, ja katram ievietojumam ierakstÄ«sit 10 failus, ClickHouse (vai jÅ«su serveris) Ätri beigsies, tÄpÄc ieteicams ievietot lielÄs partijÄs. AttiecÄ«gi mÄs nekad neieviesÄm pirmo shÄmu ražoÅ”anÄ. MÄs nekavÄjoties izlaidÄm vienu, kam Å”eit Nr. 2 ir:
Å eit iedomÄjieties, ka ir apmÄram tÅ«kstotis serveru, uz kuriem mÄs esam palaiduÅ”i, ir tikai PHP. Un katrÄ serverÄ« ir mÅ«su vietÄjais aÄ£ents, ko mÄs nosaucÄm par āKittenhouseā, kas uztur vienu savienojumu ar āClickHouseā un ievieto datus ik pÄc dažÄm sekundÄm. Ievieto datus nevis MergeTree, bet gan bufera tabulÄ, kas precÄ«zi kalpo, lai izvairÄ«tos no tÅ«lÄ«tÄjas ievietoÅ”anas MergeTree.
Darbs ar bufera tabulÄm
Kas tas ir? Bufera tabulas ir atmiÅas daļa, kas ir sadalÄ«ta (tas ir, to var tajÄ ievietot bieži). Tie sastÄv no vairÄkiem gabaliem, un katrs no tiem darbojas kÄ neatkarÄ«gs buferis, un tie tiek izskaloti neatkarÄ«gi (ja jums ir daudz gabalu buferÄ«, tad bÅ«s daudz ieliktÅu sekundÄ). No Ŕīm tabulÄm var lasÄ«t - tad jÅ«s lasÄt bufera un vecÄktabulas satura savienÄ«bu, bet Å”ajÄ brÄ«dÄ« rakstÄ«Å”ana ir bloÄ·Äta, tÄpÄc no turienes labÄk nelasÄ«t. Un bufera tabulas parÄda ļoti labu QPS, tas ir, lÄ«dz 3 tÅ«kstoÅ”iem QPS jums vispÄr nebÅ«s nekÄdu problÄmu ievietojot. Skaidrs, ka, ja serverim pazÅ«d strÄva, tad dati var pazust, jo tie tika saglabÄti tikai atmiÅÄ.
TajÄ paÅ”Ä laikÄ shÄma ar buferi apgrÅ«tina ALTER, jo vispirms ir jÄatmet vecÄ bufera tabula ar veco shÄmu (dati nekur nepazudÄ«s, jo tie tiks izskaloti pirms tabulas dzÄÅ”anas). PÄc tam jÅ«s "mainÄt" vajadzÄ«go tabulu un vÄlreiz izveidojat bufera tabulu. AttiecÄ«gi, kamÄr nav bufera tabulas, jÅ«su dati nekur neplÅ«st, bet tie var bÅ«t diskÄ vismaz lokÄli.
Kas ir Kittenhouse un kÄ tÄ darbojas?
Kas ir KittenHouse? Å is ir starpniekserveris. Uzmini kÄdÄ valodÄ? Es savÄ pÄrskatÄ apkopoju visvairÄk ažiotÄžu tÄmas - āClickhouseā, Aiziet, varbÅ«t atcerÄÅ”os vÄl kaut ko. JÄ, tas ir rakstÄ«ts Go, jo es Ä«sti nezinu, kÄ rakstÄ«t C valodÄ, es nevÄlos.
AttiecÄ«gi tas uztur savienojumu ar katru serveri un var rakstÄ«t atmiÅÄ. PiemÄram, ja mÄs ierakstÄm kļūdu žurnÄlus Clickhouse, tad, ja Clickhouse nav laika ievietot datus (galu galÄ, ja ir rakstÄ«ts pÄrÄk daudz), tad mÄs neuzpÅ«Å”am atmiÅu - mÄs vienkÄrÅ”i izmetam pÄrÄjo. Jo, ja mÄs ierakstÄm vairÄkus gigabitus sekundÄ kļūdas, tad mÄs droÅ”i vien varam izmest dažas. Kittenhouse to var izdarÄ«t. TurklÄt tas var veikt uzticamu piegÄdi, tas ir, rakstÄ«t uz diska vietÄjÄ datorÄ un vienu reizi (tur, reizi pÄris sekundÄs) mÄÄ£ina piegÄdÄt datus no Ŕī faila. Un sÄkumÄ mÄs izmantojÄm parasto vÄrtÄ«bu formÄtu - nevis kÄdu binÄro formÄtu, bet teksta formÄtu (kÄ parastajÄ SQL).
Bet tad tas notika. MÄs izmantojÄm uzticamu piegÄdi, rakstÄ«jÄm žurnÄlus, tad nolÄmÄm (tas bija nosacÄ«ta testa klasteris)... Tas tika izlikts uz vairÄkÄm stundÄm un atkal tika celts, un sÄkÄs ievietoÅ”ana no tÅ«kstoÅ” serveriem - izrÄdÄ«jÄs, ka Clickhouse joprojÄm bija āPavediens savienojumÄā - attiecÄ«gi tÅ«kstoÅ” savienojumu aktÄ«va ievietoÅ”ana noved pie servera vidÄjÄs slodzes aptuveni pusotra tÅ«kstoÅ”a. PÄrsteidzoÅ”i, serveris pieÅÄma pieprasÄ«jumus, bet dati joprojÄm tika ievietoti pÄc kÄda laika; bet serverim bija ļoti grÅ«ti to apkalpot...
Pievienojiet nginx
Å Äds Thread per savienojuma modeļa risinÄjums ir nginx. MÄs instalÄjÄm nginx pirms Clickhouse, tajÄ paÅ”Ä laikÄ iestatÄ«jÄm balansÄÅ”anu divÄm replikÄm (mÅ«su ievietoÅ”anas Ätrums palielinÄjÄs 2 reizes, lai gan tas nav fakts, ka tam vajadzÄtu bÅ«t) un ierobežojÄm savienojumu skaitu ar Clickhouse, lÄ«dz augÅ”tecÄ un attiecÄ«gi vairÄk , nekÄ 50 savienojumos, Ŕķiet, nav jÄgas ievietot.
Tad mÄs sapratÄm, ka Å”ai shÄmai kopumÄ ir trÅ«kumi, jo mums Å”eit ir tikai viens nginx. AttiecÄ«gi, ja Å”is nginx avarÄ, neskatoties uz kopiju klÄtbÅ«tni, mÄs zaudÄjam datus vai vismaz nekur nerakstÄm. TÄpÄc mÄs paÅ”i izveidojÄm slodzes lÄ«dzsvaroÅ”anu. MÄs arÄ« sapratÄm, ka āClickhouseā joprojÄm ir piemÄrots apaļkokiem, un ādÄmonsā arÄ« sÄka rakstÄ«t savus žurnÄlus āClickhouseā - godÄ«gi sakot, ļoti Ärti. MÄs joprojÄm to izmantojam citiem "dÄmoniem".
Tad mÄs atklÄjÄm Å”o interesanto problÄmu: ja izmantojat nestandarta ievietoÅ”anas metodi SQL režīmÄ, tas piespiež pilnvÄrtÄ«gu AST balstÄ«tu SQL parsÄtÄju, kas ir diezgan lÄns. AttiecÄ«gi mÄs esam pievienojuÅ”i iestatÄ«jumus, lai nodroÅ”inÄtu, ka tas nekad nenotiek. VeicÄm slodzes balansÄÅ”anu, veselÄ«bas pÄrbaudes, lai ja kÄds nomirst, tad tomÄr atstÄjam datus. Tagad mums ir diezgan daudz tabulu, kurÄm mums ir jÄbÅ«t dažÄdÄm Clickhouse klasteriem. Un mÄs arÄ« sÄkÄm domÄt par citiem lietojumiem - piemÄram, mÄs vÄlÄjÄmies rakstÄ«t žurnÄlus no nginx moduļiem, bet viÅi nezina, kÄ sazinÄties, izmantojot mÅ«su RPC. Labi, es gribÄtu iemÄcÄ«t viÅiem vismaz kaut kÄ sÅ«tÄ«t - piemÄram, saÅemt notikumus localhost caur UDP un pÄc tam pÄrsÅ«tÄ«t tos uz Clickhouse.
Viena soļa attÄlumÄ no risinÄjuma
GalÄ«gÄ shÄma sÄka izskatÄ«ties Å”Ädi (Ŕīs shÄmas ceturtÄ versija): katrÄ serverÄ« Clickhouse priekÅ”Ä ir nginx (uz tÄ paÅ”a servera), un tÄ vienkÄrÅ”i nosÅ«ta pieprasÄ«jumus vietÄjam resursdatoram ar ierobežojumu savienojumu skaitam 50. gabaliem. Un Ŕī shÄma jau darbojÄs diezgan labi, ar to viss bija diezgan labi.
MÄs Å”Ädi dzÄ«vojÄm apmÄram mÄnesi. Visi priecÄjÄs, pievienoja tabulas, pievienoja, pievienoja... KopumÄ izrÄdÄ«jÄs, ka veids, kÄ mÄs pievienojÄm bufera tabulas, nebija Ä«paÅ”i optimÄls (teiksim tÄ). MÄs izdarÄ«jÄm 16 gabalus katrÄ tabulÄ un pÄris sekunžu zibspuldzes intervÄlu; mums bija 20 galdi un katra tabula saÅÄma 8 ieliktÅus sekundÄ - un Å”ajÄ brÄ«dÄ« sÄkÄs āClickhouseā... ieraksti sÄka palÄninÄties. ViÅi pat netika cauri ... Nginx pÄc noklusÄjuma bija tik interesanta lieta, ka, ja savienojumi beidzÄs augÅ”pusÄ, tas vienkÄrÅ”i atgrieza "502" visiem jaunajiem pieprasÄ«jumiem.
Un Å”eit mÄs esam (es tikko paskatÄ«jos paÅ”Ä Clickhouse žurnÄlus) apmÄram puse procenta pieprasÄ«jumu neizdevÄs. AttiecÄ«gi diska noslodze bija augsta, bija daudz sapludinÄÅ”anas. Nu ko es izdarÄ«ju? Protams, es neuztraucos izdomÄt, kÄpÄc tieÅ”i savienojums un augÅ”tece beidzÄs.
Nginx aizstÄÅ”ana ar reverso starpniekserveri
Es nolÄmu, ka mums tas ir jÄpÄrvalda paÅ”iem, mums tas nav jÄatstÄj nginx ziÅÄ ā nginx nezina, kÄdas tabulas ir Clickhouse, un es aizstÄju nginx ar reverso starpniekserveri, ko arÄ« rakstÄ«ju pats.
Ko viÅÅ” dara? Tas darbojas, pamatojoties uz fasthttp bibliotÄku āgoshnoyā, tas ir, Ätri, gandrÄ«z tikpat Ätri kÄ nginx. Atvainojiet, Igor, ja esat Å”eit (piezÄ«me: Igors Sisojevs ir krievu programmÄtÄjs, kurÅ” izveidoja nginx tÄ«mekļa serveri). Tas var saprast, kÄda veida vaicÄjumi tie ir ā INSERT vai SELECT ā attiecÄ«gi tam ir dažÄdi savienojumu pÅ«li dažÄda veida vaicÄjumiem.
AttiecÄ«gi, pat ja mums nav laika izpildÄ«t ievietoÅ”anas pieprasÄ«jumus, āatlasÄ«tieā tiks izturÄti un otrÄdi. Un tas sagrupÄ datus bufera tabulÄs - ar nelielu buferi: ja ir kÄdas kļūdas, sintakses kļūdas un tÄ tÄlÄk - lai tie Ä«paÅ”i neietekmÄtu pÄrÄjos datus, jo, vienkÄrÅ”i ievietojot bufera tabulÄs, bija mazs "bachi", un visas sintakses kļūdas skÄra tikai Å”o mazo gabalu; un te jau tie ietekmÄs lielu buferi. Mazs ir 1 megabaits, tas ir, ne tik mazs.
SinhronizÄcijas ievietoÅ”ana un bÅ«tÄ«bÄ nginx aizstÄÅ”ana bÅ«tÄ«bÄ veic to paÅ”u, ko nginx darÄ«ja iepriekÅ” ā Å”im nolÅ«kam nav jÄmaina vietÄjÄ āKaÄ·Änu mÄjaā. Un, tÄ kÄ tas izmanto fasthttp, tas ir ļoti Ätrs - jÅ«s varat veikt vairÄk nekÄ 100 tÅ«kstoÅ”us pieprasÄ«jumu sekundÄ atseviŔķiem ieliktÅiem, izmantojot apgriezto starpniekserveri. TeorÄtiski kaÄ·Änu mÄjas reversajÄ starpniekserverÄ« varat ievietot vienu rindiÅu vienlaikus, taÄu mÄs, protams, to nedarÄm.
ShÄma sÄka izskatÄ«ties Å”Ädi: āKittenhouseā, reversais starpniekserveris sagrupÄ daudzus pieprasÄ«jumus tabulÄs un, savukÄrt, bufera tabulas ievieto tos galvenajÄs.
Killer ir pagaidu risinÄjums, kaÄ·Äns ir pastÄvÄ«gs
Å Ä« ir interesanta problÄma... Vai kÄds no jums ir izmantojis fasthttp? KurÅ” izmantoja fasthttp ar POST pieprasÄ«jumiem? IespÄjams, to tieÅ”Äm nevajadzÄja darÄ«t, jo tas pÄc noklusÄjuma buferÄ pieprasÄ«juma pamattekstu, un mÅ«su bufera lielums tika iestatÄ«ts uz 16 megabaiti. KÄdÄ brÄ«dÄ« ievietoÅ”ana pÄrstÄja sekot lÄ«dzi, un no visiem desmitiem tÅ«kstoÅ”u serveru sÄka pienÄkt 16 megabaitu gabali, un tie visi tika buferÄti atmiÅÄ pirms nosÅ«tÄ«Å”anas uz Clickhouse. AttiecÄ«gi atmiÅa beidzÄs, atnÄca Out-Of-Memory Killer un nogalinÄja reverso starpniekserveri (vai āClickhouseā, kas teorÄtiski varÄja āapÄstā vairÄk nekÄ reversais starpniekserveris). Cikls atkÄrtojÄs. Ne pÄrÄk patÄ«kama problÄma. Lai gan uz Å”o uzdÅ«rÄmies tikai pÄc vairÄku mÄneÅ”u darbÄ«bas.
Ko es esmu izdarÄ«jis? Man atkal ļoti nepatÄ«k saprast, kas Ä«sti notika. ManuprÄt, ir diezgan skaidrs, ka nevajadzÄtu buferizÄt atmiÅÄ. Es nevarÄju patch fasthttp, lai gan es mÄÄ£inÄju. Bet es atradu veidu, kÄ padarÄ«t to tÄ, lai nekas nebÅ«tu jÄlÄpÄ«, un es izdomÄju savu metodi HTTP - es to nosaucu KITTEN. Nu loÄ£iski - āVKā, āKaÄ·Änsā... Kas vÄl?...
Ja serverim pienÄk pieprasÄ«jums ar Kitten metodi, tad serverim ir jÄatbild āÅauā ā loÄ£iski. Ja viÅÅ” uz to reaÄ£Ä, tiek uzskatÄ«ts, ka viÅÅ” saprot Å”o protokolu, un tad es pÄrtveru savienojumu (fasthttp ir Å”Äda metode), un savienojums pÄriet āneapstrÄdÄtÄā režīmÄ. KÄpÄc man tas ir vajadzÄ«gs? Es vÄlos kontrolÄt, kÄ notiek lasÄ«Å”ana no TCP savienojumiem. TCP ir brÄ«niŔķīgs Ä«paÅ”ums: ja neviens nelasa no otras puses, tad rakstÄ«Å”ana sÄk gaidÄ«t, un atmiÅa tam netiek Ä«paÅ”i tÄrÄta.
Un tÄ es lasu no kÄdiem 50 klientiem vienÄ reizÄ (no piecdesmit jo piecdesmit noteikti vajadzÄtu pietikt, pat ja likme nÄk no cita DC)... PatÄriÅÅ” ar Å”o pieeju ir samazinÄjies vismaz 20 reizes, bet es, ja godÄ«gi , nevarÄju precÄ«zi izmÄrÄ«t cik laiku, jo tas jau ir bezjÄdzÄ«gi (jau ir sasniegts kļūdas lÄ«menis). Protokols ir binÄrs, tas ir, tajÄ ir tabulas nosaukums un dati; nav http galvenes, tÄpÄc es neizmantoju tÄ«mekļa ligzdu (man nav jÄsazinÄs ar pÄrlÅ«kprogrammÄm - es izveidoju protokolu, kas atbilst mÅ«su vajadzÄ«bÄm). Un ar viÅu viss kļuva kÄrtÄ«bÄ.
Bufera tabula ir skumja
Nesen mÄs saskÄrÄmies ar vÄl vienu interesantu bufera tabulu funkciju. Un Ŕī problÄma jau ir daudz sÄpÄ«gÄka par citÄm. IedomÄsimies Å”Ädu situÄciju: jÅ«s jau aktÄ«vi izmantojat Clickhouse, jums ir desmitiem Clickhouse serveru un jums ir daži pieprasÄ«jumi, kuru nolasÄ«Å”ana prasa ļoti ilgu laiku (teiksim, vairÄk nekÄ 60 sekundes); un jÅ«s nÄciet un izdariet Alter Å”ajÄ brÄ«dÄ«... TikmÄr āatlasÄ«tieā, kas sÄkÄs pirms āAlterā, netiks iekļauti Å”ajÄ tabulÄ, āAlterā nesÄksies ā iespÄjams, dažas funkcijas, kÄ āClickhouseā darbojas Ŕī vieta. VarbÅ«t Å”o var labot? Vai arÄ« tas ir neiespÄjami?
KopumÄ ir skaidrs, ka patiesÄ«bÄ tÄ nav tik liela problÄma, bet ar bufera tabulÄm kļūst sÄpÄ«gÄk. Jo, ja, teiksim, jÅ«su āAlterā taimauts (un tam var beigties taimauts citÄ resursdatorÄ - nevis jÅ«su, bet, piemÄram, replikÄ), tad... JÅ«s izdzÄsÄt bufera tabulu, savu āAlterā ( vai kÄdam citam resursdatoram) iestÄjÄs taimauts. tad ir radusies kļūda āAlterā) ā jums joprojÄm ir jÄnodroÅ”ina, lai dati turpinÄtu rakstÄ«t: jÅ«s izveidojat atpakaļ bufera tabulas (saskaÅÄ ar to paÅ”u shÄmu kÄ vecÄktabula), pÄc tam āAlterā iet cauri, galu galÄ beidzas, un tabulas buferis sÄk atŔķirties no vecÄkshÄmas. AtkarÄ«bÄ no tÄ, kas bija āAlterā, ieliktnis var vairs nenonÄkt Å”ajÄ bufera tabulÄ - tas ir ļoti skumji.
Ir arÄ« Å”Äda zÄ«me (varbÅ«t kÄds to pamanÄ«ja) - jaunajÄs Clickhouse versijÄs to sauc par query_thread_log. PÄc noklusÄjuma dažÄs versijÄs tÄda bija. Å eit pÄris mÄneÅ”u laikÄ esam uzkrÄjuÅ”i 840 miljonus ierakstu (100 gigabaitu). Tas ir saistÄ«ts ar faktu, ka tur bija rakstÄ«ti āieliktÅiā (varbÅ«t tagad, starp citu, tie nav rakstÄ«ti). KÄ jau teicu, mÅ«su āieliktÅiā ir mazi ā mums bija daudz āieliktÅuā bufera tabulÄs. Ir skaidrs, ka tas ir atspÄjots ā es tikai saku, ko redzÄju mÅ«su serverÄ«. KÄpÄc? Å is ir vÄl viens arguments pret bufera tabulu izmantoÅ”anu! Plankumains ir ļoti skumjÅ”.
KurÅ” zinÄja, ka Å”o puisi sauc Spotijs? VK darbinieki pacÄla rokas. LABI.
Par āKitttenHouseā plÄniem
PlÄni parasti netiek dalÄ«ti, vai ne? PÄkÅ”Åi jÅ«s tos neizpildÄ«sit un citu cilvÄku acÄ«s neizskatÄ«sieties Ä«paÅ”i labi. Bet es riskÄÅ”u! MÄs vÄlamies rÄ«koties Å”Ädi: bufera tabulas, man Ŕķiet, joprojÄm ir kruÄ·is, un mums paÅ”iem ir jÄbuferÄ ievietoÅ”ana. Bet mÄs joprojÄm nevÄlamies to buferizÄt diskÄ, tÄpÄc mÄs buferÄsim ievietoÅ”anu atmiÅÄ.
AttiecÄ«gi, kad tiks veikts āievietojumsā, tas vairs nebÅ«s sinhrons ā darbosies jau kÄ bufera tabula, ievietos vecÄktabulÄ (nu, kaut kad vÄlÄk) un pa atseviŔķu kanÄlu ziÅos, kuri ieliktÅi ir pagÄjuÅ”i un kuri nav.
KÄpÄc es nevaru atstÄt sinhrono ieliktni? Tas ir daudz ÄrtÄk. Fakts ir tÄds, ka ja ievieto no 10 tÅ«kstoÅ”iem saimnieku, tad viss ir kÄrtÄ«bÄ - no katra hosta saÅemsi pa druskai, ievieto tur reizi sekundÄ, viss ir kÄrtÄ«bÄ. Bet es gribÄtu, lai Ŕī shÄma darbotos, piemÄram, no divÄm maŔīnÄm, lai jÅ«s varÄtu lejupielÄdÄt lielÄ ÄtrumÄ - varbÅ«t ne iegÅ«t maksimumu no Clickhouse, bet rakstÄ«t vismaz 100 megabaitus sekundÄ no vienas maŔīnas caur reverso starpniekserveri - Å ajÄ gadÄ«jumÄ shÄmai ir jÄmÄro gan lieliem, gan maziem daudzumiem, tÄpÄc mÄs nevaram gaidÄ«t sekundi lÄ«dz katrai ievietoÅ”anai, tÄpÄc tai ir jÄbÅ«t asinhronai. Un tÄdÄ paÅ”Ä veidÄ asinhroniem apstiprinÄjumiem vajadzÄtu nÄkt pÄc ievietoÅ”anas pabeigÅ”anas. MÄs uzzinÄsim, vai tas ir pagÄjis vai nÄ.
VissvarÄ«gÄkais ir tas, ka Å”ajÄ shÄmÄ mÄs droÅ”i zinÄm, vai ievietoÅ”ana notika vai nÄ. IedomÄjieties Å”Ädu situÄciju: jums ir bufera tabula, jÅ«s tajÄ kaut ko ierakstÄ«jÄt, un tad, teiksim, tabula pÄrgÄja tikai lasÄ«Å”anas režīmÄ un mÄÄ£inÄja iztukÅ”ot buferi. Kur tiks dati? Tie paliks buferÄ«. Bet par to mÄs nevaram bÅ«t droÅ”i - ja nu ir kÄda cita kļūda, kuras dÄļ dati nepaliks buferÄ«... (UzrunÄ Aleksejs Milovidovs, Yandex, ClickHouse izstrÄdÄtÄjs) Vai arÄ« paliks? VienmÄr? Aleksejs mÅ«s pÄrliecina, ka viss bÅ«s labi. Mums nav iemesla viÅam neticÄt. Bet tas pats: ja mÄs neizmantosim bufera tabulas, tad ar tÄm nebÅ«s nekÄdu problÄmu. Divreiz vairÄk tabulu izveidoÅ”ana arÄ« ir neÄrta, lai gan principÄ lielu problÄmu nav. Å is ir plÄns.
ParunÄsim par lasÄ«Å”anu
Tagad parunÄsim par lasÄ«Å”anu. Å eit mÄs arÄ« rakstÄ«jÄm savu rÄ«ku. Å Ä·iet, nu, kÄpÄc te jÄraksta savs instruments?.. Un kurÅ” izmantoja Tabix? Kaut kÄ maz cilvÄku pacÄla rokas... Un kurÅ” ir apmierinÄts ar Tabix sniegumu? Nu, mÄs neesam apmierinÄti ar to, un tas nav Ä«paÅ”i Ärti datu apskatei. Tas ir piemÄrots analÄ«tikai, taÄu tikai skatÄ«Å”anai tas acÄ«mredzami nav optimizÄts. TÄpÄc es uzrakstÄ«ju savu, savu interfeisu.
Tas ir ļoti vienkÄrÅ”i - tas var tikai nolasÄ«t datus. ViÅÅ” nezina, kÄ parÄdÄ«t grafiku, viÅÅ” nezina, kÄ kaut ko darÄ«t. Bet tas var parÄdÄ«t, kas mums ir nepiecieÅ”ams: piemÄram, cik rindu ir tabulÄ, cik daudz vietas tÄ aizÅem (nesadalot to kolonnÄs), tas ir, mums ir nepiecieÅ”ams ļoti vienkÄrÅ”s interfeiss.
Un tas izskatÄs ļoti lÄ«dzÄ«gs Sequel Pro, taÄu izveidots tikai vietnÄ Twitter Bootstrap un otrajÄ versijÄ. JÅ«s jautÄjat: "Juri, kÄpÄc otrajÄ versijÄ?" KurÄ gadÄ? 2018. gads? KopumÄ es to izdarÄ«ju diezgan sen pirms āMuscleā (MySQL) un tikai mainÄ«ju dažas rindiÅas tur esoÅ”ajos vaicÄjumos, un tas sÄka darboties āClickhouseā, par ko Ä«paÅ”s paldies! Jo parsÄtÄjs ir ļoti lÄ«dzÄ«gs āmuskuļuā parsÄtÄjam, un vaicÄjumi ir ļoti lÄ«dzÄ«gi - ļoti Ärti, it Ä«paÅ”i sÄkumÄ.
TÄ var filtrÄt tabulas, var parÄdÄ«t tabulas struktÅ«ru un saturu, ļauj kÄrtot, filtrÄt pÄc kolonnÄm, parÄda vaicÄjumu, kura rezultÄtÄ tika iegÅ«ts rezultÄts, ietekmÄtÄs rindas (cik daudz rezultÄtÄ), tas ir, pamata lietas datu apskatei. Diezgan Ätri.
Ir arÄ« redaktors. GodÄ«gi sakot, es mÄÄ£inÄju nozagt visu redaktoru no Tabix, bet es nevarÄju. Bet kaut kÄ tas darbojas. PrincipÄ tas arÄ« viss.
"Clickhouse" ir piemÄrots midzeÅiem
Es vÄlos jums pateikt, ka Clickhouse, neskatoties uz visÄm aprakstÄ«tajÄm problÄmÄm, ir ļoti labi piemÄrots apaļkokiem. Pats galvenais, tas atrisina mÅ«su problÄmu ā tas ir ļoti Ätrs un ļauj filtrÄt žurnÄlus pÄc kolonnÄm. PrincipÄ bufera tabulas nav snieguÅ”as labu sniegumu, bet parasti neviens nezina, kÄpÄc... VarbÅ«t tagad jÅ«s labÄk zinÄt, kur jums bÅ«s problÄmas.
TCP? KopumÄ VK ir ierasts izmantot UDP. Un kad es lietoju TCP... Man, protams, neviens neteica: āJuri, ko tu runÄ! JÅ«s nevarat, jums ir nepiecieÅ”ams UDP. IzrÄdÄ«jÄs, ka TCP nav tik biedÄjoÅ”s. VienÄ«gais, ja jums ir desmitiem tÅ«kstoÅ”u aktÄ«vo savienojumu, ko jÅ«s rakstÄt, jums tas ir jÄsagatavo nedaudz rÅ«pÄ«gÄk; bet tas ir iespÄjams un diezgan vienkÄrÅ”i.
Es apsolÄ«ju HighLoad Siberia ievietot āKittenhouseā un āLighthouseā, ja visi abonÄs mÅ«su publisko āVK backendā... Un ziniet, ne visi abonÄja... Protams, es nepieprasÄ«Å”u, lai jÅ«s abonÄtu mÅ«su publiski. JÅ«su joprojÄm ir pÄrÄk daudz, kÄds var pat apvainoties, bet tomÄr, lÅ«dzu, abonÄjiet (un te man jÄtaisa acis kÄ kaÄ·im). Tas ir
VadoÅ”ais: - Draugi, tagad uz jautÄjumiem. TÅ«lÄ«t pÄc tam, kad esam uzrÄdÄ«juÅ”i atzinÄ«bas sertifikÄtu un jÅ«su ziÅojumu par VHS.
Jurijs Nasretdinovs (turpmÄk tekstÄ YN): ā KÄ jÅ«s varÄjÄt ierakstÄ«t manu ziÅojumu VHS, ja tas tikko beidzÄs?
VadoÅ”ais: ā JÅ«s arÄ« nevarat pilnÄ«bÄ noteikt, kÄ āClickhouseā darbosies vai nÄ! Draugi, 5 minÅ«tes jautÄjumiem!
jautÄjumi
KlausÄ«tÄju jautÄjums (turpmÄk tekstÄ Q): - Labdien. Liels paldies par ziÅojumu. Man ir divi jautÄjumi. SÄkÅ”u ar kaut ko vieglprÄtÄ«gu: vai t burtu skaits nosaukumÄ "KaÄ·Änu mÄja" diagrammÄs (3, 4, 7...) ietekmÄ kaÄ·u apmierinÄtÄ«bu?
YN: - Cik daudz?
Z: ā Burts t. Ir trÄ«s t, kaut kur ap trÄ«s t.
YN: - Vai es to neizlaboju? Nu, protams, ka dara! Tie ir dažÄdi produkti ā visu Å”o laiku es jÅ«s vienkÄrÅ”i maldinÄju. Labi, es jokoju ā tas nav svarÄ«gi. Ak, tieÅ”i Å”eit! NÄ, tas ir tas pats, es pieļÄvu drukas kļūdu.
Z: - Paldies. Otrs jautÄjums ir nopietns. Cik es saprotu, Clickhouse bufera tabulas dzÄ«vo tikai atmiÅÄ, nav buferÄtas diskÄ un attiecÄ«gi nav noturÄ«gas.
YN: - JÄ.
Z: ā Un tajÄ paÅ”Ä laikÄ jÅ«su klients buferÄ diskÄ, kas nozÄ«mÄ zinÄmu garantiju Å”o paÅ”u žurnÄlu piegÄdei. Bet Clickhouse tas nekÄdÄ gadÄ«jumÄ netiek garantÄts. Paskaidrojiet, kÄ tiek veikta garantija, sakarÄ ar ko?.. Å eit ir Å”is mehÄnisms sÄ«kÄk
YN: ā JÄ, teorÄtiski Å”eit nav nekÄdu pretrunu, jo tad, kad Clickhouse krÄ«t, to faktiski var noteikt miljons dažÄdos veidos. Ja Clickhouse avarÄ (ja tas beidzas nepareizi), varat, rupji sakot, nedaudz attÄ«t no jÅ«su pierakstÄ«tÄ Å¾urnÄla un sÄkt no brīža, kad viss bija precÄ«zi. PieÅemsim, ka attÄ«siet minÅ«ti atpakaļ, tas ir, tiek uzskatÄ«ts, ka esat visu izskalojis minÅ«tes laikÄ.
Z: ā Proti, āKittenhouseā logu notur ilgÄk un kritiena gadÄ«jumÄ var atpazÄ«t un attÄ«t atpakaļ?
YN: ā Bet tas ir teorÄtiski. PraksÄ mÄs to nedarÄm, un uzticama piegÄde ir no nulles lÄ«dz bezgalÄ«bai. Bet vidÄji viens. MÄs esam apmierinÄti, ka, ja Clickhouse kÄda iemesla dÄļ avarÄ vai serveri "pÄrstartÄjas", mÄs zaudÄjam nedaudz. Visos citos gadÄ«jumos nekas nenotiks.
Z: - Sveiki. No paÅ”a sÄkuma man Ŕķita, ka jÅ«s patieÅ”Äm izmantosit UDP jau no paÅ”a ziÅojuma sÄkuma. Jums ir http, viss tas... Un lielÄkÄ daļa no jÅ«su aprakstÄ«tajÄm problÄmÄm, kÄ es saprotu, radÄs tieÅ”i Ŕī risinÄjuma dÄļ...
YN: - Ko mÄs izmantojam TCP?
Z: - BÅ«tÄ«bÄ jÄ.
YN: - NÄ.
Z: ā Ar fasthttp jums bija problÄmas, ar savienojumu jums bija problÄmas. Ja jÅ«s tikko bÅ«tu izmantojis UDP, jÅ«s bÅ«tu ietaupÄ«jis sev kÄdu laiku. Nu bÅ«tu problÄmas ar garÄm ziÅÄm vai ko citu...
YN: - Ar ko?
Z: ā Ar gariem ziÅojumiem, jo āātas var neiederÄties MTU, kaut kas cits... Nu, var bÅ«t savas problÄmas. JautÄjums ir: kÄpÄc ne UDP?
YN: ā Uzskatu, ka autori, kas izstrÄdÄja TCP/IP, ir daudz gudrÄki par mani un labÄk par mani zina, kÄ serializÄt paketes (lai tÄs iet), tajÄ paÅ”Ä laikÄ pielÄgot sÅ«tÄ«Å”anas logu, nepÄrslogot tÄ«klu, sniegt atsauksmes par to, ko netiek lasÄ«ts, neskaitot otru pusi... Visas Ŕīs problÄmas, manuprÄt, pastÄvÄtu UDP, tikai man bÅ«tu jÄuzraksta vÄl vairÄk koda nekÄ jau uzrakstÄ«ju, lai pats ieviestu to paÅ”u un visticamÄk slikti. Man pat ļoti nepatÄ«k rakstÄ«t C valodÄ, kur nu vÄl...
Z: - VienkÄrÅ”i Ärti! NosÅ«tÄ«ja labi un neko negaidiet - tas ir pilnÄ«gi asinhroni. AtnÄca paziÅojums, ka viss ir kÄrtÄ«bÄ - tas nozÄ«mÄ, ka tas ir pienÄcis; Ja tas nenÄk, tas nozÄ«mÄ, ka tas ir slikti.
YN: ā Man vajag abus ā jÄvar nosÅ«tÄ«t gan ar piegÄdes garantiju, gan bez piegÄdes garantijas. Å ie ir divi dažÄdi scenÄriji. Man ir nepiecieÅ”ams nepazaudÄt dažus žurnÄlus vai tos nepazaudÄt saprÄta robežÄs.
Z: ā Es netÄrÄÅ”u laiku. Par to ir jÄrunÄ vairÄk. Paldies.
VadoÅ”ais: ā Kam ir jautÄjumi ā rokas pret debesÄ«m!
Z: - Sveiki, es esmu SaÅ”a. Kaut kur ziÅojuma vidÅ« parÄdÄ«jÄs sajÅ«ta, ka papildus TCP var izmantot jau gatavu risinÄjumu - kaut kÄdu Kafku.
YN: ā Nu... es tev teicu, ka nevÄlos izmantot starpserverus, jo... KafkÄ izrÄdÄs, ka mums ir desmit tÅ«kstoÅ”i saimnieku; patiesÄ«bÄ mums ir vairÄk - desmitiem tÅ«kstoÅ”u saimnieku. Var bÅ«t sÄpÄ«gi darÄ«t ar Kafku bez starpniekiem. TurklÄt, pats galvenais, tas joprojÄm nodroÅ”ina ālatenciā, tas dod papildu saimniekdatorus, kas jums ir nepiecieÅ”ami. Bet es nevÄlos tos iegÅ«t - es gribu...
Z: "Bet galu galÄ tas tik un tÄ izrÄdÄ«jÄs."
YN: ā NÄ, saimnieku nav! Tas viss darbojas Clickhouse saimniekiem.
Z: - Nu un āKaÄ·Änu mÄjaā, kas ir otrÄdi - kur viÅÅ” dzÄ«vo?
YN: - Clickhouse resursdatorÄ tas neko neieraksta diskÄ.
Z: - PieÅemsim.
VadoÅ”ais: - Vai esi apmierinÄts? Vai mÄs varam jums iedot algu?
Z: - JÄ tu vari. PatiesÄ«bÄ ir daudz kruÄ·u, lai dabÅ«tu vienu un to paÅ”u, un tagad - iepriekÅ”ÄjÄ atbilde par tÄmu TCP ir pretrunÄ, manuprÄt, Å”ai situÄcijai. TÄ vien Ŕķiet, ka visu varÄja izdarÄ«t uz ceļiem daudz Ä«sÄkÄ laikÄ.
YN: ā Un arÄ« kÄpÄc es negribÄju izmantot Kafku, jo Clickhouse Telegram tÄrzÄÅ”anÄ bija diezgan daudz sÅ«dzÄ«bu, ka, piemÄram, pazaudÄtas ziÅas no Kafkas. Nevis no paÅ”as Kafkas, bet Kafkas un Clickhaus integrÄcijÄ; vai kaut kas tur nesaslÄgÄs. Rupji runÄjot, tad bÅ«tu nepiecieÅ”ams Kafkai uzrakstÄ«t klientu. Es nedomÄju, ka varÄtu bÅ«t vienkÄrÅ”Äks vai uzticamÄks risinÄjums.
Z: ā Sakiet, kÄpÄc jÅ«s neizmÄÄ£inÄjÄt rindas vai kÄdu kopÄ«gu autobusu? TÄ kÄ jÅ«s sakÄt, ka ar asinhroniju jÅ«s varÄtu sÅ«tÄ«t paÅ”us žurnÄlus caur rindu un saÅemt atbildi asinhroni caur rindu?
YN: ā LÅ«dzu, iesakiet, kÄdas rindas varÄtu izmantot?
Z: ā Jebkuras, pat bez garantijas, ka tÄs ir kÄrtÄ«bÄ. Kaut kÄds Redis, RMQ...
YN: ā Man ir sajÅ«ta, ka Redis, visticamÄk, nespÄs izvilkt tÄdu ievietoÅ”anas apjomu pat vienÄ hostÄ (vairÄku serveru izpratnÄ), kas izvelk Clickhouse. Es nevaru to pamatot ar pierÄdÄ«jumiem (es neesmu to salÄ«dzinÄjis), bet man Ŕķiet, ka Redis Å”eit nav labÄkais risinÄjums. PrincipÄ Å”o sistÄmu var uzskatÄ«t par improvizÄtu ziÅojumu rindu, bet kas ir pielÄgota tikai āClickhouseā
VadoÅ”ais: ā Jurij, liels paldies. Ierosinu Å”eit beigt jautÄjumus un atbildes un pateikt, kuram no jautÄjuma uzdevÄjiem grÄmatu atdosim.
YN: ā Es gribÄtu uzdÄvinÄt grÄmatu pirmajam, kurÅ” uzdeva jautÄjumu.
VadoŔais: - BrīniŔķīgi! Lieliski! BrīniŔķīgi! Liels paldies!
Dažas reklÄmas š
Paldies, ka palikÄt kopÄ ar mums. Vai jums patÄ«k mÅ«su raksti? Vai vÄlaties redzÄt interesantÄku saturu? Atbalsti mÅ«s, pasÅ«tot vai iesakot draugiem,
Dell R730xd 2x lÄtÄk Equinix Tier IV datu centrÄ AmsterdamÄ? Tikai Å”eit
Avots: www.habr.com