ClickHouse барои корбарони пешрафта дар саволҳо ва ҷавобҳо

Моҳи апрел муҳандисони Avito барои вохӯриҳои онлайн бо таҳиягари асосии ClickHouse Алексей Миловидов ва Кирилл Шваков, таҳиягари Голанг аз Integros ҷамъ омаданд. Мо муҳокима кардем, ки чӣ тавр мо системаи идоракунии пойгоҳи додаҳоро истифода мебарем ва бо кадом мушкилот дучор мешавем.

Дар асоси вохӯрӣ, мо мақолаеро тартиб додем, ки бо посухҳои коршиносон ба саволҳои мо ва шунавандагон дар бораи нусхабардорӣ, дубора тақсим кардани маълумот, луғатҳои беруна, драйвери Голанг ва навсозии версияҳои ClickHouse. Ин метавонад барои таҳиягароне муфид бошад, ки аллакай бо DBMS-и Яндекс фаъолона кор мекунанд ва ба ҳозира ва ояндаи он таваҷҷӯҳ доранд. Бо нобаёнӣ, ҷавобҳо аз ҷониби Алексей Миловидов мебошанд, агар тартиби дигаре навишта нашуда бошад.

Эҳтиёт бошед, дар зери буриш матни зиёде мавҷуд аст. Мо умедворем, ки мундариҷа бо саволҳо ба шумо дар паймоиш кӯмак мекунад.

ClickHouse барои корбарони пешрафта дар саволҳо ва ҷавобҳо

Мундариҷа

Агар шумо матнро хондан нахоҳед, шумо метавонед сабти ҷамъомадҳоро тамошо кунед дар канали YouTube мо. Рамзҳои вақт дар шарҳи аввал дар зери видео ҳастанд.

ClickHouse пайваста нав карда мешавад, аммо маълумоти мо нест. Дар ин бора чӣ бояд кард?

ClickHouse пайваста нав карда мешавад ва маълумоти мо, ки коркарди ниҳоӣ оптимизатсия шудааст, нав карда намешавад ва дар нусхаи эҳтиётӣ аст.

Фарз мекунем, ки мо ягон мушкилот доштем ва маълумот гум шуд. Мо тасмим гирифтем, ки барқарор кунем ва маълум шуд, ки қисмҳои кӯҳна, ки дар серверҳои эҳтиётӣ нигоҳ дошта мешаванд, аз версияи феълии ClickHouse хеле фарқ мекунанд. Дар чунин вазъият чӣ бояд кард ва оё ин имконпазир аст?

Ҳолате, ки шумо маълумотро аз нусхабардорӣ дар формати кӯҳна барқарор кардаед, аммо он ба версияи нав пайваст намешавад, имконнопазир аст. Мо боварӣ ҳосил мекунем, ки формати маълумот дар ClickHouse ҳамеша ба ақиб мувофиқ мемонад. Ин аз мутобиқати ақиб дар функсионалӣ хеле муҳимтар аст, агар рафтори баъзе функсияҳои кам истифодашаванда тағир ёбад. Версияи нави ClickHouse бояд ҳамеша маълумотеро, ки дар диск нигоҳ дошта мешавад, хонд. Ин қонун аст.

Таҷрибаҳои беҳтарин барои нусхабардории маълумот аз ClickHouse кадомҳоянд?

Бо дарназардошти он, ки мо амалиёти ниҳоиро оптимизатсия кардаем, базаи бузурги терабайтҳо ва маълумоте, ки, масалан, дар се рӯзи охир нав карда мешаванд ва пас аз он ҳеҷ гуна расмиёт рӯй намедиҳад, чӣ гуна бояд нусхабардорӣ кард?

Мо метавонем ҳалли худро созем ва дар bash нависем: ин нусхаҳои эҳтиётиро бо чунин ва чунин роҳ ҷамъ кунед. Шояд ба асобағол кардан лозим набошад ва велосипед кайҳо ихтироъ шуда бошад?

Биёед аз таҷрибаи беҳтарин оғоз кунем. Ҳамкасбони ман ҳамеша дар посух ба саволҳо дар бораи нусхабардорӣ маслиҳат медиҳанд, ки ба онҳо дар бораи хидмати Yandex.Cloud, ки ин мушкилот аллакай ҳал шудааст, хотиррасон кунанд. Пас, агар имконпазир бошад, онро истифода баред.

Ягон ҳалли пурраи нусхабардорӣ вуҷуд надорад, ки сад дарсад дар ClickHouse сохта шудааст. Баъзе варақаҳо мавҷуданд, ки онҳоро истифода бурдан мумкин аст. Барои ба даст овардани ҳалли мукаммал, ба шумо лозим меояд, ки каме дастӣ кор кунед ё дар шакли скриптҳо бастабандӣ созед.

Ман бо ҳалли соддатарин оғоз мекунам ва вобаста ба ҳаҷми маълумот ва андозаи кластер бо ҳалли мураккабтарин ба итмом мерасам. Чӣ қадаре ки кластер калон бошад, ҳалли мушкилот ҳамон қадар мураккабтар мешавад.

Агар ҷадвали дорои маълумот ҳамагӣ чанд гигабайтро ишғол кунад, нусхабардориро метавон чунин анҷом дод:

  1. Таърифи ҷадвалро захира кунед, яъне метамаълумот - Ҷадвали сохтани ҷадвалро нишон диҳед.
  2. Бо истифода аз муштарии ClickHouse партов созед - интихоб кунед * аз миз файл кардан. Бо нобаёнӣ шумо файлро дар формати TabSeparated қабул мекунед. Агар шумо хоҳед, ки самараноктар бошед, шумо метавонед онро дар формати Native иҷро кунед.

Агар миқдори маълумот калонтар бошад, пас нусхабардорӣ вақти бештар ва фазои зиёдро мегирад. Ин нусхаи мантиқӣ номида мешавад; он ба формати маълумоти ClickHouse алоқаманд нест. Агар ин тавр бошад, пас шумо метавонед ҳамчун чораи охирин нусхабардорӣ кунед ва онро ба MySQL барои барқарорсозӣ бор кунед.

Барои ҳолатҳои пешрафта, ClickHouse дорои қобилияти дарунсохташуда барои сохтани тасвири қисмҳо дар системаи файлии маҳаллӣ мебошад. Ин хусусият ҳамчун дархост дастрас аст қисмати яхкунии ҷадвалро тағир диҳед. Ё оддӣ тағир додани яхбандии ҷадвал - ин як акси тамоми ҷадвал аст.

Намоиш барои як ҷадвал дар як пора пайваста сохта мешавад, яъне бо ин роҳ тасвири пайгиронаи тамоми кластерро эҷод кардан ғайриимкон аст. Аммо барои аксари вазифаҳо чунин эҳтиёҷ вуҷуд надорад ва иҷрои дархост дар ҳар як пора ва гирифтани акси пайваста кофӣ аст. Он дар шакли пайвандҳои сахт сохта шудааст ва аз ин рӯ фазои иловагиро ишғол намекунад. Баъдан, шумо ин аксро ба сервери эҳтиётӣ ё ба анборе, ки барои нусхабардорӣ истифода мебаред, нусхабардорӣ мекунед.

Барқарор кардани чунин нусха хеле осон аст. Аввалан, бо истифода аз таърифҳои мавҷудаи ҷадвал ҷадвалҳо созед. Баъдан, аксҳои захирашудаи қисмҳоро ба директория-алоҳида барои ин ҷадвалҳо нусхабардорӣ кунед ва дархостро иҷро кунед қисматро замима кунед. Ин ҳалли барои ҳаҷми ҷиддии маълумот хеле мувофиқ аст.

Баъзан ба шумо чизи сардтар лозим аст - дар ҳолатҳое, ки шумо дар ҳар як сервер ва садҳо сервер даҳҳо ва ҳатто садҳо терабайтҳо доред. Дар ин ҷо як роҳи ҳалли он ҳаст, ки ман аз ҳамкорони худ аз Yandex.Metrica гирифтам. Ман онро ба ҳама тавсия намедиҳам - онро хонед ва худатон қарор кунед, ки он мувофиқ аст ё не.

Аввалан шумо бояд якчанд серверҳоро бо рафҳои дискҳои калон эҷод кунед. Минбаъд, дар ин серверҳо якчанд серверҳои ClickHouse-ро баланд кунед ва онҳоро танзим кунед, то онҳо ҳамчун нусхаи дигар барои ҳамон пораҳо кор кунанд. Ва он гоҳ дар ин серверҳо системаи файлӣ ё ягон асбоберо истифода баред, ки ба шумо имкон медиҳад, ки аксҳоро эҷод кунед. Дар ин ҷо ду вариант вуҷуд дорад. Варианти аввал аксҳои LVM аст, варианти дуюм ZFS дар Linux мебошад.

Пас аз он, ҳар рӯз ба шумо лозим аст, ки аксбардорӣ созед, он дурӯғ хоҳад кард ва каме ҷойро ишғол мекунад. Табиист, ки агар маълумот тағир ёбад, миқдори ҷой бо мурури замон зиёд мешавад. Ин аксро дар ҳар вақт гирифтан мумкин аст ва маълумот барқарор карда мешавад, чунин ҳалли аҷиб. Ғайр аз он, мо инчунин бояд ин репликаҳоро дар конфигуратсия маҳдуд кунем, то онҳо барои пешво шудан кӯшиш накунанд.

Оё имкон дорад, ки қафомонии назоратшавандаи репликаҳоро дар чоҳҳо ташкил кард?

Имсол шумо нақша доред, ки дар ClickHouse чоҳ созед. Оё дар онҳо як таъхири назоратшавандаи репликаҳоро ташкил кардан мумкин аст? Мо мехоҳем онро истифода барем, то худро аз сенарияҳои манфӣ бо тағирот ва дигар тағйирот муҳофизат кунем.

Оё имкон дорад, ки ягон намуди бозгашт барои тағиротро анҷом дод? Масалан, дар як чоҳи мавҷуда, бигиред ва бигӯед, ки шумо то ин лаҳза тағиротро татбиқ мекунед ва аз ин лаҳза татбиқи тағиротро қатъ мекунед?

Агар ба кластери мо фармон омада, онро шикаста бошад, пас мо як нусхаи шартӣ дорем, ки як соат танаффус дорад, дар он ҷо гуфта метавонем, ки биёед дар айни замон онро истифода барем, аммо мо дар даҳ дақиқаи охир ба он тағирот ворид намекунем?

Аввалан, дар бораи таъхири назоратшавандаи репликаҳо. Чунин дархост аз корбарон буд ва мо дар Github бо дархост як масъала эҷод кардем: "Агар ба касе ин лозим бошад, лайк монед." Ҳеҷ кас нарасонид ва масъала баста шуд. Аммо, шумо метавонед ин имкониятро тавассути насб кардани ClickHouse ба даст оред. Дуруст, танҳо аз версияи 20.3.

ClickHouse пайваста якҷоякунии маълумотро дар замина иҷро мекунад. Вақте ки якҷоякунӣ ба итмом мерасад, маҷмӯи муайяни қисмҳои маълумот бо як пораи калонтар иваз карда мешаванд. Дар айни замон, пораҳои маълумоте, ки қаблан вуҷуд доштанд, дар диск муддате боқӣ мемонанд.

Аввалан, онҳо то он даме, ки дархостҳои интихобшуда мавҷуданд, ки онҳоро истифода мебаранд, нигоҳ дошта мешаванд, то амалиёти ғайрибандӣ таъмин карда шаванд. Дархостҳои интихобшуда аз қисмҳои кӯҳна ба осонӣ хонда мешаванд.

Сониян, хадди вақт низ вуҷуд дорад - қисмҳои кӯҳнаи маълумот дар диск ҳашт дақиқа хобидаанд. Ин ҳашт дақиқаро метавон танзим кард ва ҳатто ба як рӯз табдил дод. Ин арзиши фазои дискро талаб мекунад: вобаста ба ҷараёни додаҳо маълум мешавад, ки дар рӯзи охир маълумот на танҳо ду баробар, балки панҷ маротиба зиёд мешавад. Аммо агар мушкилоти ҷиддӣ вуҷуд дошта бошад, шумо метавонед сервери ClickHouse-ро қатъ кунед ва ҳама чизро ҷудо кунед.

Ҳоло саволе ба миён меояд, ки ин чӣ гуна аз тағирот муҳофизат мекунад. Дар ин ҷо ба таври амиқтар назар кардан лозим аст, зеро дар версияҳои кӯҳнаи ClickHouse, тағирот тавре кор мекард, ки он танҳо қисмҳоро мустақиман иваз мекунад. Як пораи маълумот бо баъзе файлҳо мавҷуд аст ва мо, масалан, тағйир додани сутуни тарк. Он гоҳ ин сутун аз ҳама қисмҳои ҷисмонӣ хориҷ карда мешавад.

Аммо аз версияи 20.3 сар карда, механизми тағирёбанда комилан тағир ёфт ва ҳоло қисмҳои маълумот ҳамеша тағирнопазиранд. Онҳо умуман тағир намеёбанд - тағиротҳо ҳоло ҳамон тавре ки якҷоякунӣ кор мекунанд. Ба ҷои он ки як порчаро дар ҷои худ иваз кунем, мо як чизи навро эҷод мекунем. Дар порчаи нав, файлҳое, ки тағир наёфтаанд, истинодҳои сахт мешаванд ва агар мо сутунро нест кунем, он танҳо дар порчаи нав нест мешавад. Порчаи кӯҳна пас аз ҳашт дақиқа бо нобаёнӣ нест карда мешавад ва дар ин ҷо шумо метавонед танзимоти дар боло зикршударо тағир диҳед.

Ин ба тағиротҳо ба монанди мутатсияҳо дахл дорад. Вақте ки шумо мекунед тағир диҳед нест кунед ё тағир додани навсозӣ, он порчаро тагьир намедихад, балки порчаи навро ба вучуд меоварад. Ва он гоҳ кӯҳнаро нест мекунад.

Чӣ мешавад, агар сохтори ҷадвал тағир ёбад?

Нусхаи эҳтиётиро, ки бо нақшаи кӯҳна сохта шудааст, чӣ гуна барқарор кардан мумкин аст? Ва саволи дуюм дар бораи парванда бо аксҳо ва асбобҳои системаи файлӣ мебошад. Оё Btrfs дар ин ҷо ба ҷои ZFS дар Linux LVM хуб аст?

Агар шумо қисматро замима кунед қисмҳои дорои сохтори дигар, пас ClickHouse ба шумо мегӯяд, ки ин имконнопазир аст. Ин роҳи ҳал аст. Якум ин аст, ки ҷадвали муваққатии навъи MergeTree бо сохтори кӯҳна эҷод кунед, маълумотро бо истифода аз замима ба он ҷо зам кунед ва дархости тағир диҳед. Пас шумо метавонед ин маълумотро нусхабардорӣ ё интиқол диҳед ва дубора замима кунед ё дархостро истифода баред қисмати ҳаракати ҷадвалро тағир диҳед.

Ҳоло саволи дуюм ин аст, ки оё Btrf-ро метавон истифода бурд. Барои оғоз кардан, агар шумо LVM дошта бошед, пас аксҳои LVM кифояанд ва системаи файлӣ метавонад ext4 бошад, муҳим нест. Бо Btrts, ҳама чиз аз таҷрибаи шумо дар истифодаи он вобаста аст. Ин як системаи файлии баркамол аст, аммо ҳанӯз ҳам баъзе шубҳаҳо дар бораи он, ки ҳама чиз дар як сенарияи мушаххас чӣ гуна кор хоҳад кард. Ман тавсия намедиҳам, ки аз ин истифода баред, агар шумо Btrfs дар истеҳсолот надошта бошед.

Таҷрибаҳои беҳтарини ҷорӣ дар тақсимоти маълумот кадомҳоянд?

Масъалаи аз нав тақсим кардан мураккаб ва гуногунҷабҳа аст. Дар ин ҷо якчанд ҷавобҳои имконпазир мавҷуданд. Шумо метавонед аз як тараф рафта, инро бигӯед - ClickHouse хусусияти дарунсохт аз нав тақсимкуниро надорад. Аммо метарсам, ки ин ҷавоб ба касе мувофиқат намекунад. Аз ин рӯ, шумо метавонед аз тарафи дигар биравед ва бигӯед, ки ClickHouse роҳҳои зиёде барои тағир додани маълумот дорад.

Агар кластер аз ҷой тамом шавад ё он сарбориро аз ӯҳдаи худ набарад, шумо серверҳои нав илова мекунед. Аммо ин серверҳо ба таври нобаёнӣ холӣ ҳастанд, дар бораи онҳо маълумот нест, сарборӣ нест. Шумо бояд маълумотро аз нав танзим кунед, то он дар саросари кластери нав ва калонтар баробар паҳн шавад.

Роҳи аввалини ин кор ин нусхабардории қисмҳои қисмҳо ба серверҳои нав бо истифода аз дархост мебошад тағир додани қисмати гирифтани ҷадвал. Масалан, шумо қисмҳои моҳона доштед ва шумо моҳи аввали соли 2017-ро гирифта, онро ба сервери нав нусхабардорӣ мекунед, сипас моҳи сеюмро ба ягон сервери нави дигар нусхабардорӣ мекунед. Ва шумо ин корро мекунед, то он даме ки он камтар ё камтар шавад.

Интиқолро танҳо барои он қисмҳо, ки ҳангоми сабт тағир намеёбанд, анҷом додан мумкин аст. Барои қисмҳои нав, сабт бояд хомӯш карда шавад, зеро интиқоли онҳо атомӣ нест. Дар акси ҳол, шумо бо такрорӣ ё холигии додаҳо хотима хоҳед ёфт. Бо вуҷуди ин, ин усул амалӣ аст ва хеле самаранок кор мекунад. Қисмҳои фишурдашудаи тайёр тавассути шабака интиқол дода мешаванд, яъне маълумот фишурда намешавад ё дубора рамзгузорӣ карда намешавад.

Ин усул як нуқсон дорад ва он аз схемаи sharding вобаста аст, ки оё шумо ба ин схемаи sharding гарав додаед, кадом калиди sharding шумо доштед. Дар мисоли шумо дар мавриди метрика, калиди sharding хэши роҳ аст. Вақте, ки шумо ҷадвали Тақсимшударо интихоб мекунед, он якбора ба ҳамаи қисмҳои кластер меравад ва аз он ҷо маълумот мегирад.

Ин маънои онро дорад, ки барои шумо муҳим нест, ки кадом маълумот дар кадом порча ба охир расид. Муҳим он аст, ки маълумот дар як роҳ дар як пора ба охир мерасад, аммо кадоме аз онҳо муҳим нест. Дар ин ҳолат, интиқоли қисмҳои тайёр комил аст, зеро бо дархостҳои интихобшуда шумо инчунин маълумоти мукаммалро хоҳед гирифт - хоҳ пеш аз дубора тақсим кардан ё пас аз он, схема воқеан муҳим нест.

Аммо ҳолатҳое ҳастанд, ки мураккабтаранд. Агар дар сатҳи мантиқии барнома шумо ба нақшаи махсуси sharding такя кунед, ки ин муштарӣ дар фалон пора ҷойгир аст ва дархостро мустақиман ба он ҷо фиристодан мумкин аст, на ба ҷадвали Тақсимшуда. Ё шумо версияи хеле охирини ClickHouse-ро истифода мебаред ва танзимотро фаъол кардаед оптимизатсия кардани пораҳои истифоданашуда. Дар ин ҳолат, ҳангоми дархости интихоб, ифода дар қисмати куҷо таҳлил карда мешавад ва ҳисоб карда мешавад, ки кадом қисмҳоро мувофиқи нақшаи sharding истифода бурдан лозим аст. Ин ба шарте кор мекунад, ки маълумот маҳз мувофиқи ин схемаи тақсимкунӣ тақсим карда шавад. Агар шумо онҳоро дастӣ аз нав тартиб дода бошед, мукотиба метавонад тағир ёбад.

Пас, ин усули рақами як аст. Ва ман интизори ҷавоби шумо ҳастам, оё ин усул мувофиқ аст ё биёед идома диҳем.

Владимир Колобаев, мудири асосии система дар Avito: Алексей, усуле, ки шумо зикр кардед, дар вацти пахн кардани бор, аз он чумла хондан лозим меояд, чандон хуб кор намекунад. Мо метавонем қисмеро, ки ҳармоҳа аст, гирем ва моҳи гузаштаро ба гиреҳи дигар барем, аммо вақте ки дархост барои ин маълумот меояд, мо онро танҳо бор мекунем. Аммо мо мехоҳем тамоми кластерро бор кунем, зеро дар акси ҳол, барои чанд вақт тамоми бори хониш аз ҷониби ду пора коркард карда мешавад.

Алексей Миловидов: Ҷавоб дар ин ҷо аҷиб аст - бале, ин бад аст, аммо он метавонад кор кунад. Ман аниқ мефаҳмонам, ки чӣ тавр. Ба сенарияи сарборӣ, ки паси маълумоти шумо меояд, назар кардан лозим аст. Агар ин маълумоти мониторинг бошад, пас мо қариб албатта гуфта метавонем, ки аксарияти дархостҳо барои маълумоти тоза мебошанд.

Шумо серверҳои нав насб кардед, қисмҳои кӯҳнаро интиқол додед, аммо инчунин тарзи сабти маълумоти тозаро тағир додед. Ва маълумоти тоза дар тамоми кластер паҳн карда мешавад. Ҳамин тариқ, пас аз панҷ дақиқа, дархостҳо барои панҷ дақиқаи охир кластерро баробар бор мекунанд; пас аз як рӯз, дархостҳо барои XNUMX соат кластерро баробар бор мекунанд. Ва дархостҳо барои моҳи гузашта, мутаассифона, танҳо ба як қисми серверҳои кластерҳо хоҳанд рафт.

Аммо аксар вақт шумо барои моҳи феврали соли 2019 дархост нахоҳед дошт. Эҳтимол, агар дархостҳо ба соли 2019 ворид шаванд, он гоҳ онҳо барои тамоми соли 2019 - барои як давраи калон хоҳад буд, на барои баъзе доираи хурд. Ва чунин дархостҳо инчунин метавонанд кластерро баробар бор кунанд. Аммо дар маҷмӯъ, изҳороти шумо комилан дуруст аст, ки ин як ҳалли махсус аст, ки маълумотро комилан яксон паҳн намекунад.

Ман чанд нуктаи дигар дорам, ки ба савол ҷавоб диҳам. Яке аз онҳо дар бораи он аст, ки чӣ гуна дар аввал тарҳрезии нақшаи ҷудогонаро тарҳрезӣ кард, то дубора тақсим кардан дарди камтар дошта бошад. Ин на ҳамеша имконпазир аст.

Масалан, шумо маълумоти мониторинг доред. Маълумоти мониторинг бо се сабаб афзоиш меёбад. Якум — чамъоварии маълумоти таърихй. Дуюм афзоиши трафик аст. Ва саввум, афзоиши шумори чизҳое, ки таҳти назорат қарор доранд. Микросервисҳо ва ченакҳои нав мавҷуданд, ки онҳоро захира кардан лозим аст.

Мумкин аст, ки дар байни инҳо афзоиши калонтарин бо сабаби сеюм – афзоиши истифодаи мониторинг алоқаманд бошад. Ва дар ин ҳолат, ба хусусияти сарборӣ назар кардан лозим аст, ки пурсишҳои асосии интихоб кадомҳоянд. Дархостҳои асосии интихобшуда эҳтимолан ба баъзе зермаҷмӯи метрикҳо асос ёфтаанд.

Масалан, истифодаи CPU дар баъзе серверҳо аз ҷониби баъзе хидматҳо. Маълум мешавад, ки як маҷмӯи муайяни калидҳо мавҷуданд, ки шумо ин маълумотро мегиред. Ва худи дархост барои ин маълумот эҳтимолан хеле содда аст ва дар даҳҳо миллисония анҷом дода мешавад. Барои мониторинги хидматҳо ва панелҳо истифода мешавад. Ман умедворам, ки ман инро дуруст мефаҳмам.

Владимир Колобаев: Гап дар сари он аст, ки мо бисёр вақт ба маълумотҳои таърихӣ муроҷиат мекунем, зеро мо вазъияти кунуниро бо ҳолати таърихӣ дар вақти воқеӣ муқоиса мекунем. Ва барои мо муҳим аст, ки дастрасии зуд ба миқдори зиёди маълумот дошта бошем ва ClickHouse бо ин кори хубе мекунад.

Шумо комилан дуруст ҳастед, мо аксари дархостҳои хонданро дар рӯзи охир эҳсос мекунем, ба монанди ҳама гуна системаи мониторинг. Аммо дар баробари ин, бори маълумотҳои таърихӣ низ хеле калон аст. Он асосан аз системаи огоҳкунанда аст, ки дар ҳар сӣ сония давр мезанад ва ба ClickHouse мегӯяд: "Маълумотро дар шаш ҳафтаи охир ба ман диҳед. Акнун ба ман як навъ миёнаи ҳаракатро аз онҳо созед ва биёед арзиши кунуниро бо арзиши таърихӣ муқоиса кунем."

Мехоҳам бигӯям, ки барои чунин дархостҳои хеле охирин мо ҷадвали хурди дигаре дорем, ки дар он мо танҳо ду рӯз маълумотро нигоҳ медорем ва дархостҳои асосӣ ба он парвоз мекунанд. Мо танҳо дархостҳои таърихии калонро ба ҷадвали калон фиристем.

Алексей Миловидов: Мутаассифона, он барои сенарияи шумо чандон қобили татбиқ нест, аммо ман ба шумо тавсифи ду схемаи бад ва мураккаби шардингиро мегӯям, ки ба истифода ниёз надоранд, аммо дар хидмати дӯстони ман истифода мешаванд.

Як кластери асосӣ бо рӯйдодҳои Yandex.Metrica мавҷуд аст. Ҳодисаҳо дидани саҳифаҳо, кликҳо ва табдилҳо мебошанд. Аксарияти дархостҳо ба вебсайти мушаххас мераванд. Шумо хидмати Yandex.Metrica-ро мекушоед, шумо вебсайт доред - avito.ru, ба гузориш равед ва барои вебсайти шумо дархост дода мешавад.

Аммо дархостҳои дигаре ҳастанд - таҳлилӣ ва глобалӣ - ки аз ҷониби таҳлилгарони дохилӣ пешниҳод карда мешаванд. Дар ҳар сурат, ман қайд мекунам, ки таҳлилгарони дохилӣ танҳо барои хидматҳои Яндекс дархост мекунанд. Бо вуҷуди ин, ҳатто хидматҳои Яндекс ҳиссаи назарраси тамоми маълумотро ишғол мекунанд. Ин дархостҳо на барои ҳисобкунакҳои мушаххас, балки барои филтркунии васеътар мебошанд.

Чӣ тавр маълумотро тавре ташкил кардан мумкин аст, ки ҳама чиз барои як ҳисобкунак ва инчунин дархостҳои глобалӣ самаранок кор кунад? Мушкилоти дигар дар он аст, ки шумораи дархостҳо дар ClickHouse барои кластери Metrics дар як сония чанд ҳазор аст. Дар айни замон, як сервери ClickHouse наметавонад дархостҳои ночизро иҷро кунад, масалан, якчанд ҳазор дар як сония.

Андозаи кластер ба шашсад серверҳо баробар аст. Агар шумо танҳо ҷадвали Тақсимшударо аз болои ин кластер кашед ва ба он ҷо якчанд ҳазор дархост фиристед, он аз фиристодани онҳо ба як сервер ҳатто бадтар мешавад. Аз тарафи дигар, варианте, ки маълумот баробар паҳн мешавад ва мо рафта аз ҳама серверҳо дархост мекунем, фавран рад карда мешавад.

Варианте вуҷуд дорад, ки комилан муқобил аст. Тасаввур кунед, ки агар мо маълумотро дар саросари сайтҳо тақсим кунем ва дархост барои як сайт ба як пора меравад. Акнун кластер метавонад даҳ ҳазор дархостро дар як сония иҷро кунад, аммо дар як порча ҳар як дархост хеле суст кор мекунад. Он дигар аз нуқтаи назари интиқол васеъ нахоҳад шуд. Хусусан, агар ин сайти avito.ru бошад. Агар бигӯям, ки Avito яке аз сайтҳои сердаромадтарин дар RuNet аст, сирро ошкор намекунам. Ва коркарди он дар як пора девонагӣ хоҳад буд.

Аз ин рӯ, схемаи sharding ба таври маккоронатар тарҳрезӣ шудааст. Тамоми кластер ба якчанд кластерҳо тақсим мешавад, ки мо онҳоро қабатҳо меномем. Ҳар як кластер аз даҳҳо то якчанд даҳҳо пораҳоро дар бар мегирад. Ҳамагӣ сию нӯҳ чунин кластерҳо мавҷуданд.

Ин ҳама чӣ гуна миқёс дорад? Шумораи кластерхо тагьир намеёбад — чунон ки чанд сол пеш сию нух буд, хамин тавр мемонад. Аммо дар дохили ҳар яки онҳо, мо бо ҷамъоварии маълумот тадриҷан шумораи пораҳоро зиёд мекунем. Ва схемаи sharding дар маҷмӯъ чунин аст: ин кластерҳо ба вебсайтҳо тақсим мешаванд ва барои фаҳмидани он, ки кадом вебсайт дар кадом кластер ҷойгир аст, метабазаи алоҳида дар MySQL истифода мешавад. Як сайт - дар як кластер. Ва дар дохили он, sharding мувофиқи ID-и меҳмонон рух медиҳад.

Ҳангоми сабт, мо онҳоро ба қисми боқимондаи тақсимоти ID-и меҳмон тақсим мекунем. Аммо ҳангоми илова кардани порчаи нав, схемаи тақсимкунӣ тағир меёбад; мо тақсим карданро идома медиҳем, аммо боқимондаи тақсимот ба рақами дигар. Ин маънои онро дорад, ки як меҳмон аллакай дар якчанд сервер ҷойгир аст ва шумо наметавонед ба ин такя кунед. Ин танҳо барои таъмини беҳтар фишурда шудани маълумот анҷом дода мешавад. Ва ҳангоми пешниҳоди дархост, мо ба ҷадвали тақсимшуда меравем, ки ба кластер назар мекунад ва ба даҳҳо серверҳо дастрасӣ дорад. Ин як нақшаи беақл аст.

Аммо достони ман нопурра хоҳад буд, агар нагӯям, ки мо аз ин нақша даст кашидаем. Дар нақшаи нав, мо ҳама чизро тағир додем ва ҳама маълумотро бо истифода аз clickhouse-copier нусхабардорӣ кардем.

Дар схемаи нав хамаи сайтхо ба ду категория — калон ва хурд таксим мешаванд. Ман намедонам, ки ҳадди аққал чӣ гуна интихоб шудааст, аммо натиҷа ин буд, ки сайтҳои калон дар як кластер сабт карда мешаванд, ки дар он 120 порча бо се реплика мавҷуд аст - яъне 360 сервер. Ва схемаи sharding чунин аст, ки ҳама гуна дархост якбора ба ҳама пораҳо меравад. Агар шумо ҳоло дар Yandex.Metrica ягон саҳифаи ҳисоботро барои avito.ru кушоед, дархост ба 120 сервер меравад. Дар RuNet сайтҳои калон мавҷуданд. Ва дархостҳо дар як сония ҳазор нест, балки ҳатто камтар аз сад аст. Ҳамаи ин аз ҷониби ҷадвали тақсимшуда, ки ҳар яки онҳо бо 120 сервер коркард мекунанд, оромона хоидан мешавад.

Ва кластери дуюм барои сайтҳои хурд аст. Дар ин ҷо як схемаи sharding дар асоси ID сайт аст ва ҳар як дархост маҳз ба як порча меравад.

ClickHouse дорои як утилитаи клик-копировка мебошад. Метавонед дар бораи вай ба мо нақл кунед?

Ман дарҳол мегӯям, ки ин ҳалли мушкилтар ва то андозае камтар самаранок аст. Бартарии он дар он аст, ки он маълумотро мувофиқи намунае, ки шумо нишон додаед, пурра мепӯшонад. Аммо нуқсони хидматрасонӣ дар он аст, ки он тамоман аз нав кор намекунад. Он маълумотро аз як схемаи кластер ба схемаи кластери дигар нусхабардорӣ мекунад.

Ин маънои онро дорад, ки барои кор кардани он шумо бояд ду кластер дошта бошед. Онҳо метавонанд дар як серверҳо ҷойгир шаванд, аммо ба ҳар ҳол, маълумот ба таври тадриҷан интиқол дода намешавад, балки нусхабардорӣ карда мешавад.

Масалан, чор сервер вуҷуд дошт, ҳоло ҳашт. Шумо дар ҳама серверҳо ҷадвали нави Тақсимшуда, ҷадвалҳои нави маҳаллӣ эҷод мекунед ва кликхаус-копиро ба кор меоред, ки дар он нақшаи кориро нишон медиҳад, ки он бояд аз он ҷо хонда шавад, схемаи нави sharding-ро қабул кунад ва маълумотро ба он ҷо интиқол диҳад. Ва дар серверҳои кӯҳна ба шумо нисбат ба ҳозира якуним маротиба бештар ҷой лозим мешавад, зеро маълумотҳои кӯҳна бояд дар онҳо боқӣ монанд ва нисфи ҳамон маълумоти кӯҳна ба болои онҳо меоянд. Агар шумо пешакӣ фикр мекардед, ки маълумотро дубора тақсим кардан лозим аст ва ҷой вуҷуд дорад, пас ин усул мувофиқ аст.

Чӣ тавр clickhouse-copier дар дохили он кор мекунад? Он тамоми корҳоро ба маҷмӯи вазифаҳо барои коркарди як қисми як ҷадвал дар як пора тақсим мекунад. Ҳамаи ин вазифаҳоро дар баробари иҷро кардан мумкин аст ва клик-копиерро дар мошинҳои гуногун дар якчанд мавридҳо иҷро кардан мумкин аст, аммо он чизе, ки он барои як қисм анҷом медиҳад, ҷуз интихоби дохилкунӣ чизи дигаре нест. Маълумот хонда мешавад, кушода мешавад, аз нав тақсим карда мешавад, сипас дубора фишурда мешавад, дар ҷое навишта мешавад ва аз нав мураттаб карда мешавад. Ин қарори сахттар аст.

Шумо як чизи пилотӣ доштед, ки бо номи reshading. Бо вай чӣ?

Ҳанӯз дар соли 2017, шумо як чизи озмоишӣ доштед, ки бо номи reshading. Дар ClickHouse ҳатто як вариант вуҷуд дорад. Тавре ки ман фаҳмидам, он набаромад. Метавонед ба ман бигӯед, ки чаро ин ҳодиса рӯй дод? Чунин ба назар мерасад, ки хеле мувофиқ аст.

Тамоми мушкилот дар он аст, ки агар маълумотро дар ҷои худ иваз кардан лозим бошад, синхронизатсияи хеле мураккаб барои ин ба таври атомӣ анҷом дода мешавад. Вақте ки мо ба бубинем, ки ин синхронизатсия чӣ гуна кор мекунад, маълум шуд, ки мушкилоти асосӣ вуҷуд доранд. Ва ин проблемахои фундаменталй на танхо назариявй мебошанд, балки дархол худро дар амал дар шакли чизе нишон додан гирифтанд, ки онро хеле содда шарх додан мумкин аст — хеч чиз кор намекунад.

Оё пеш аз интиқол додани он ба дискҳои суст ҳамаи қисмҳои маълумотро якҷоя кардан мумкин аст?

Савол дар бораи TTL бо гузариш ба опсияи сусти диск дар заминаи якҷояшавӣ. Оё роҳи ба ғайр аз тавассути cron, якҷоя кардани ҳамаи қисмҳо ба як пеш аз интиқол додани онҳо ба дискҳои суст вуҷуд дорад?

Ҷавоб ба савол ин аст, ки пеш аз интиқол ҳамаи қисмҳоро ба таври худкор ба як часпак кардан мумкин аст - не. Ман фикр намекунам, ки ин зарур аст. Ба шумо лозим нест, ки ҳамаи қисмҳоро ба як муттаҳид кунед, аммо танҳо ба он боварӣ ҳосил кунед, ки онҳо ба таври худкор ба дискҳои суст интиқол дода мешаванд.

Мо барои қоидаҳои интиқол ду меъёр дорем. Якум ҳамон тавре ки пур карда мешавад. Агар сатҳи нигаҳдории ҷорӣ камтар аз фоизи муайяни фазои холӣ дошта бошад, мо як порчаро интихоб мекунем ва онро ба нигаҳдории сусттар мегузорем. Ё ин ки, на сусттар, балки навбатӣ - тавре ки шумо танзим мекунед.

Меъёри дуюм андоза аст. Ин дар бораи ҳаракат додани қисмҳои калон аст. Шумо метавонед ҳадди ниҳоиро мувофиқи фазои холӣ дар диски зуд танзим кунед ва маълумот ба таври худкор интиқол дода мешавад.

Чӣ гуна бояд ба версияҳои нави ClickHouse гузаред, агар ягон роҳи пешакӣ тафтиш кардани мутобиқат мавҷуд набошад?

Ин мавзуъ мунтазам мухокима карда мешавад дар чати телеграммаи ClickHouse бо назардошти версияҳои гуногун, ва ҳол. Навсозӣ аз версияи 19.11 ба 19.16 ва масалан, аз 19.16 то 20.3 то чӣ андоза бехатар аст. Беҳтарин роҳи гузариш ба версияҳои нав бидуни тафтиши мутобиқат дар қуттии қуттии пешакӣ кадом аст?

Дар ин ҷо якчанд қоидаҳои "тиллоӣ" мавҷуданд. Аввал - гузориши тағиротро хонед. Ин калон аст, аммо параграфҳои алоҳида дар бораи тағироти ба ақиб номувофиқ мавҷуданд. Ба ин нуқтаҳо ҳамчун парчами сурх муносибат накунед. Инҳо одатан номувофиқатии ночиз мебошанд, ки баъзе функсияҳои канориро дар бар мегиранд, ки шумо эҳтимол онро истифода намебаред.

Дуюм, агар ягон роҳи санҷиши мутобиқат дар қуттии қум мавҷуд набошад ва шумо хоҳед, ки фавран дар истеҳсолот навсозӣ кунед, тавсия ин аст, ки ба шумо ин кор лозим нест. Аввал қуттии қумро эҷод кунед ва санҷед. Агар муҳити санҷиш вуҷуд надошта бошад, пас шумо эҳтимолан як ширкати хеле калон надоред, яъне шумо метавонед баъзе маълумотро ба ноутбуки худ нусхабардорӣ кунед ва боварӣ ҳосил кунед, ки ҳама чиз дар он дуруст кор мекунад. Шумо ҳатто метавонед якчанд нусхаҳоро ба таври маҳаллӣ дар мошини худ эҷод кунед. Ё шумо метавонед як версияи навро дар ҷои наздик интихоб кунед ва баъзе маълумотро дар он ҷо бор кунед - яъне муҳити импровизатсияшудаи санҷишро эҷод кунед.

Қоидаи дигар ин аст, ки дар давоми як ҳафта пас аз нашри версия навсозӣ накунад, аз сабаби дарёфти хатогиҳо дар истеҳсолот ва ислоҳи фаврии минбаъда. Биёед рақамгузории версияҳои ClickHouse-ро муайян кунем, то ошуфта нашавем.

Версияи 20.3.4 вуҷуд дорад. Рақами 20 соли истеҳсол - 2020-ро нишон медиҳад. Аз нуқтаи назари он, ки дар дохили он аст, ин муҳим нест, бинобар ин мо ба он аҳамият намедиҳем. Оянда — 20.3. Мо рақами дуюмро зиёд мекунем - дар ин ҳолат 3 - ҳар дафъае, ки мо як релизро бо баъзе функсияҳои нав мебарорем. Агар мо хоҳем, ки ба ClickHouse ягон хусусият илова кунем, мо бояд ин рақамро зиёд кунем. Яъне дар версияи 20.4 ClickHouse боз ҳам беҳтар кор хоҳад кард. Рақами сеюм 20.3.4. Дар ин ҷо 4 шумораи релизҳои часпакҳост, ки дар онҳо мо хусусиятҳои нав илова накардаем, аммо баъзе хатогиҳоро ислоҳ кардем. Ва 4 маънои онро дорад, ки мо онро чор маротиба кардем.

Фикр накунед, ки ин чизи даҳшатнок аст. Одатан, корбар метавонад версияи охиринро насб кунад ва он бе ягон мушкилот бо вақти корӣ дар як сол кор хоҳад кард. Аммо тасаввур кунед, ки дар баъзе функсияҳо барои коркарди битмапҳо, ки аз ҷониби рафиқони чинии мо илова карда шудаанд, сервер ҳангоми интиқоли далелҳои нодуруст вайрон мешавад. Мо вазифадорем, ки инро ислоҳ кунем. Мо версияи навро мебарорем ва ClickHouse устувортар мешавад.

Агар шумо ClickHouse-ро дар истеҳсолот кор карда бошед ва версияи нави ClickHouse бо хусусиятҳои иловагӣ мебарояд - масалан, 20.4.1 аввалин аст, дар рӯзи аввал барои ба кор андохтани он шитоб накунед. Чаро он ҳатто лозим аст? Агар шумо аллакай ClickHouse-ро истифода набаред, шумо метавонед онро насб кунед ва эҳтимолан ҳама чиз хуб мешавад. Аммо агар ClickHouse аллакай мӯътадил кор кунад, пас ба часбҳо ва навсозиҳо диққат диҳед, то бубинед, ки кадом мушкилотро мо ҳал мекунем.

Кирилл Шваков: Ман мехоҳам каме дар бораи муҳити санҷиш илова кунам. Ҳама аз муҳити санҷишӣ хеле метарсанд ва бо баъзе сабабҳо онҳо боварӣ доранд, ки агар шумо кластери хеле калони ClickHouse дошта бошед, пас муҳити санҷиш набояд камтар ё ҳадди аққал даҳ маротиба хурдтар бошад. Ин тамоман чунин нест.

Ман аз мисоли худам гуфта метавонам. Ман як лоиҳа дорам ва ClickHouse вуҷуд дорад. Муҳити санҷишии мо танҳо барои ӯ аст - ин як мошини хурди виртуалӣ дар Ҳетзнер барои бист евро аст, ки дар он комилан ҳама чиз ҷойгир карда шудааст. Барои ин, мо дар Ansible автоматикунонии пурра дорем ва аз ин рӯ, аслан, ба куҷо рафтан фарқ надорад - ба серверҳои сахтафзор ё танҳо дар мошинҳои виртуалӣ ҷойгир кардан.

Чӣ кор кардан мумкин аст? Хуб мебуд, ки дар ҳуҷҷатҳои ClickHouse як мисол дар бораи чӣ гуна ҷойгир кардани кластери хурд дар хонаи худ - дар Docker, дар LXC, шояд як китоби бозикунии Ansible эҷод кунед, зеро одамони гуногун ҷойгиркунии гуногун доранд. Ин хеле содда хоҳад кард. Вақте ки шумо кластерро дар панҷ дақиқа гирифта ва ҷойгир мекунед, кӯшиш кардан барои фаҳмидани чизе осонтар мешавад. Ин хеле қулайтар аст, зеро ворид шудан ба версияи истеҳсолие, ки шумо насанҷидаед, роҳ ба ҳеҷ ҷое нест. Баъзан он кор мекунад ва баъзан он нест. Аз ин рӯ, умед ба муваффақият бад аст.

Максим Котяков, муҳандиси калон Авито: Ман каме дар бораи муҳити санҷишӣ аз як қатор мушкилоте, ки ширкатҳои бузург дучор меоянд, илова мекунам. Мо кластери пурраи қабули ClickHouse дорем; аз нуқтаи назари схемаҳо ва танзимоти додаҳо, он нусхаи дақиқи он чизест, ки дар истеҳсолот аст. Ин кластер дар контейнерҳои хеле харобшуда бо ҳадди ақали захираҳо ҷойгир карда шудааст. Мо фоизи муайяни маълумоти истеҳсолиро дар он ҷо менависем, хушбахтона ҷараёнро дар Кафка такрор кардан мумкин аст. Ҳама чиз дар он ҷо ҳамоҳанг ва миқёс аст - ҳам аз ҷиҳати иқтидор ва ҷараён, ва ҳам аз ҷиҳати назария, ҳама чизҳои дигар баробаранд, он бояд аз ҷиҳати метрика мисли истеҳсолот рафтор кунад. Ҳама чиз, ки эҳтимолан таркиш дошта бошад, аввал ба ин стенд печонида мешавад ва дар он ҷо барои чанд рӯз то омода шудан мемонанд. Аммо табиист, ки ин ҳалли гарон, душвор аст ва хароҷоти дастгирии сифр надорад.

Алексей Миловидов: Ман ба шумо мегӯям, ки муҳити озмоишии дӯстони мо аз Yandex.Metrica чӣ гуна аст. Як кластер 600-то сервер дошт, дигаре 360-то дошт ва кластерҳои сеюм ва чанде вуҷуд доранд. Муҳити санҷиш барои яке аз онҳо танҳо ду пора бо ду нусха дар ҳар як аст. Чаро ду пора? То ки шумо танҳо набошед. Ва бояд репликаҳо низ бошанд. Танҳо маблағи муайяни ҳадди ақал, ки шумо метавонед онро пардохт кунед.

Ин муҳити санҷиш ба шумо имкон медиҳад, ки тафтиш кунед, ки оё дархостҳои шумо кор мекунанд ва оё ягон чизи асосӣ вайрон шудааст. Аммо аксар вақт мушкилот бо табиати тамоман дигар ба миён меоянд, вақте ки ҳама чиз кор мекунад, аммо дар сарборӣ баъзе тағиротҳои хурд вуҷуд доранд.

Биёед ба шумо як мисол орам. Мо тасмим гирифтем, ки версияи нави ClickHouse-ро насб кунем. Он дар муҳити санҷишӣ ҷойгир карда шудааст, дар худи Yandex.Metrica санҷишҳои автоматӣ анҷом дода шудаанд, ки маълумотро дар бораи версияи кӯҳна ва нав муқоиса мекунанд, ки тамоми лӯларо идора мекунанд. Ва албатта, санҷишҳои сабзи CI мо. Дар акси ҳол, мо ҳатто ин вариантро пешниҳод намекардем.

Ҳама чиз хуб аст. Мо ба истехсолот гузашта истодаем. Ман паём мегирам, ки сарбории графикҳо якчанд маротиба зиёд шудааст. Мо версияро бозмегардонем. Ман ба график нигоҳ мекунам ва мебинам: сарборӣ воқеан дар вақти паҳнкунӣ якчанд маротиба зиёд шуд ва ҳангоми баромадан онҳо кам шуд. Сипас мо ба баргардонидани версия шурӯъ кардем. Ва бор њам њамин тавр зиёд шуду боз њам фурў рафт. Ҳамин тавр, хулоса ин аст: сарборӣ аз ҳисоби тарҳ зиёд шудааст, ҳеҷ чизи тааҷҷубовар нест.

Пас аз он бовар кунондани ҳамкорон ба насби версияи нав душвор буд. Ман мегӯям: "Хуб аст, берун рав. Ангуштони худро дароз кунед, ҳама чиз кор хоҳад кард. Ҳоло бори графикҳо зиёд шудааст, аммо ҳама чиз хуб аст. Дар он ҷо истед." Умуман, мо ин корро кардем ва ин аст - версия барои истеҳсол бароварда шуд. Аммо қариб бо ҳар як тарҳ мушкилоти шабеҳ ба миён меояд.

Дархости куштор бояд дархостҳоро кушад, аммо ин тавр нест. Чаро?

Як корбар, як навъ таҳлилгар, ба назди ман омад ва дархосте эҷод кард, ки кластери маро ClickHouse гузоштааст. Баъзе гиреҳ ё тамоми кластер, вобаста аз он, ки дархост ба кадом реплика ё порча рафт. Ман мебинам, ки тамоми захираҳои CPU дар ин сервер дар раф ҳастанд, ҳама чиз сурх аст. Дар айни замон, худи ClickHouse ба дархостҳо ҷавоб медиҳад. Ва ман менависам: "Лутфан ба ман нишон диҳед, рӯйхатро коркард кунед, ки чӣ дархост ин девонаро ба вуҷуд овард."

Ман ин дархостро ёфтам ва ба он кушта менависам. Ва ман мебинам, ки ҳеҷ чиз рӯй намедиҳад. Сервери ман дар раф аст, ClickHouse ба ман чанд фармон медиҳад, нишон медиҳад, ки сервер зинда аст ва ҳама чиз олӣ аст. Аммо ман дар ҳама дархостҳои корбар таназзул дорам, таназзул аз сабтҳо дар ClickHouse оғоз мешавад ва дархости куштори ман кор намекунад. Чаро? Ман фикр мекардам, ки дархости куштор бояд дархостҳоро кушад, аммо ин тавр нест.

Акнун ҷавоби хеле аҷиб хоҳад буд. Гап дар он аст, ки дархости куштан дархостҳоро намекушад.

Дархости куштор қуттии хурдеро бо номи "Ман мехоҳам, ки ин дархост кушта шавад" тафтиш мекунад. Ва худи дархост ҳангоми коркарди ҳар як блок ба ин парчам назар мекунад. Агар он муқаррар карда шуда бошад, дархост кор намекунад. Маълум мешавад, ки дархостро касе намекушад, худаш бояд ҳама чизро тафтиш кунад ва бас кунад. Ва ин бояд дар ҳама ҳолатҳое кор кунад, ки дархост дар ҳолати коркарди блокҳои додаҳо қарор дорад. Он блоки навбатии маълумотро коркард мекунад, парчамро тафтиш мекунад ва қатъ мекунад.

Ин дар ҳолатҳое кор намекунад, ки дархост дар баъзе амалиёт баста шудааст. Дуруст аст, ки эҳтимол ин ҳолат шумо нест, зеро ба гуфтаи шумо, он як тонна захираҳои серверро истифода мебарад. Мумкин аст, ки ин дар сурати ба навъбандии беруна ва дар баъзе тафсилоти дигар кор накунад. Аммо дар маҷмӯъ ин набояд рӯй диҳад, ин хато аст. Ва ягона чизе, ки ман тавсия дода метавонам, ин навсозии ClickHouse аст.

Чӣ тавр вақти ҷавобро дар зери сарбории хониш ҳисоб кардан мумкин аст?

Ҷадвале мавҷуд аст, ки агрегатҳои ашё - ҳисобкунакҳои гуногунро нигоҳ медорад. Шумораи сатрҳо тақрибан сад миллион аст. Оё имкон дорад, ки ба вақти вокуниши пешбинишаванда ҳисоб кард, агар шумо барои 1K ашё 1K RPS рехтед?

Аз рӯи контекст сухан дар бораи сарбории хониш меравад, зеро дар навиштан ҳеҷ мушкиле вуҷуд надорад – ҳатто ҳазор, сад ҳазор ва баъзан чанд миллион сатр ворид кардан мумкин аст.

Дархостҳои хониш хеле гуногунанд. Дар интихоби 1, ClickHouse метавонад тақрибан даҳҳо ҳазор дархостҳоро дар як сония иҷро кунад, аз ин рӯ ҳатто дархостҳо барои як калид аллакай баъзе захираҳоро талаб мекунанд. Ва чунин пурсишҳои нуқтаҳо нисбат ба баъзе пойгоҳи додаҳои калидӣ мушкилтар хоҳанд буд, зеро барои ҳар як хондан блоки маълумотро аз рӯи индекс хондан лозим аст. Индекси мо на ба ҳар як сабт, балки ба ҳар як диапазон муроҷиат мекунад. Яъне, шумо бояд тамоми диапазонро хонед - ин ба таври нобаёнӣ 8192 сатр аст. Ва шумо бояд блоки фишурдашудаи маълумотро аз 64 КБ то 1 МБ кушоед. Одатан, чунин дархостҳои мақсаднок барои анҷом додани якчанд миллисония вақт лозим аст. Аммо ин соддатарин вариант аст.

Биёед як арифметикаи оддиро санҷем. Агар шумо чанд миллисонияро ба ҳазор зарб кунед, шумо чанд сония мегиред. Чунин аст, ки гӯё бо ҳазор дархост дар як сония нигоҳ доштан ғайриимкон аст, аммо дар асл ин имконпазир аст, зеро мо якчанд ядрои протсессор дорем. Ҳамин тавр, дар асл, ClickHouse баъзан метавонад 1000 RPS дошта бошад, аммо барои дархостҳои кӯтоҳ, махсусан ҳадафмандона.

Агар ба шумо лозим ояд, ки кластери ClickHouse-ро аз рӯи шумораи дархостҳои оддӣ миқёс кунед, пас ман чизи оддиро тавсия медиҳам - шумораи репликаҳоро зиёд кунед ва дархостҳоро ба репликаи тасодуфӣ фиристед. Агар як реплика дар як сония панҷсад дархост дошта бошад, ки ин комилан воқеӣ аст, пас се реплика якуним ҳазорро иҷро мекунад.

Баъзан, албатта, шумо метавонед ClickHouse-ро барои шумораи максималии хониши нуқтаҳо танзим кунед. Барои ин чй лозим? Якум ин кам кардани гранулияти индекс аст. Дар ин ҳолат, он набояд ба як кам карда шавад, балки дар асоси он, ки шумораи сабтҳо дар индекс чанд миллион ё даҳҳо миллион дар як сервер хоҳад буд. Агар ҷадвал сад миллион сатр дошта бошад, он гоҳ гранулятсияро ба 64 муқаррар кардан мумкин аст.

Шумо метавонед андозаи блоки фишурдашударо кам кунед. Барои ин танзимот мавҷуданд ҳадди ақали андозаи блоки фишурда, андозаи максималии блоки компресс. Онҳоро метавон кам кард, бо маълумот пур кард ва сипас дархостҳои мақсаднок зудтар хоҳанд шуд. Аммо ба ҳар ҳол, ClickHouse пойгоҳи додаҳои калидӣ нест. Шумораи зиёди дархостҳои хурд як antipattern сарборӣ аст.

Кирилл Шваков: Ман маслиҳат медиҳам, агар дар он ҷо ҳисобҳои оддӣ вуҷуд дошта бошанд. Ин як ҳолати хеле стандартӣ аст, вақте ки ClickHouse як намуди ҳисобкунакро нигоҳ медорад. Ман корбар дорам, ӯ аз фалон кишвар аст ва ягон соҳаи сеюм аст ва ман бояд чизеро тадриҷан зиёд кунам. MySQL-ро гиред, калиди беназир созед - дар MySQL он калиди такрорӣ аст ва дар PostgreSQL ин ихтилоф аст - ва аломати плюс илова кунед. Ин хеле беҳтар кор хоҳад кард.

Вақте ки шумо маълумоти зиёд надоред, истифодаи ClickHouse аҳамияти зиёд надорад. Пойгоҳҳои мунтазам вуҷуд доранд ва онҳо ин корро хуб мекунанд.

Дар ClickHouse чиро тағир дода метавонам, то маълумоти бештар дар кэш бошад?

Биёед вазъиятро тасаввур кунем - серверҳо 256 ГБ хотираи оперативӣ доранд, дар реҷаи ҳаррӯзаи ClickHouse тақрибан 60-80 ГБ, дар авҷи авҷи худ - то 130. Чиро метавон фаъол кард ва танзим кард, то маълумоти бештар дар кэш бошад ва мувофиқан, сафарҳо ба диск камтар ҳастанд?

Одатан, кэши саҳифаи системаи оператсионӣ ин корро хуб мекунад. Агар шумо танҳо болоро кушоед, дар он ҷо кэшшуда ё озод нигоҳ кунед - он инчунин мегӯяд, ки чӣ қадар кэш шудааст - пас шумо хоҳед дид, ки тамоми хотираи озод барои кэш истифода мешавад. Ва ҳангоми хондани ин маълумот, он на аз диск, балки аз RAM хонда мешавад. Дар айни замон, ман гуфта метавонам, ки кэш самаранок истифода мешавад, зеро он маълумоти фишурдашудаест, ки кэш карда мешавад.

Аммо, агар шумо хоҳед, ки баъзе дархостҳои оддиро боз ҳам бештар суръат бахшед, имкон дорад кэшро дар маълумоти фишурдашуда дар дохили ClickHouse фаъол созед. Он ном дорад кэши фишурданашуда. Дар файли конфигуратсияи config.xml, андозаи кэши фишурданашударо ба арзише, ки ба шумо лозим аст, таъин кунед - ман на бештар аз нисфи RAM-и ройгонро тавсия медиҳам, зеро қисми боқимонда зери кэши саҳифа хоҳанд рафт.

Илова бар ин, ду танзимоти сатҳи дархост вуҷуд доранд. Танзимоти аввал - кэши фишурданашударо истифода баред - истифодаи онро дар бар мегирад. Тавсия дода мешавад, ки онро барои ҳама дархостҳо фаъол созед, ба истиснои дархостҳои вазнин, ки метавонанд ҳама маълумотро хонанд ва кэшро тоза кунанд. Ва танзимоти дуюм чизе ба монанди шумораи ҳадди аксар сатрҳо барои истифодаи кэш аст. Он ба таври худкор дархостҳои калонро маҳдуд мекунад, то онҳо кэшро гузаранд.

Чӣ тавр ман метавонам storage_configuration-ро барои нигоҳдорӣ дар RAM танзим кунам?

Дар ҳуҷҷатҳои нави ClickHouse ман қисмати марбутро хондам бо нигоҳдории маълумот. Тавсифи дорои як мисол бо SSD зуд.

Ман ҳайронам, ки чӣ тавр ҳамин чизро бо хотираи гарми ҳаҷми танзим кардан мумкин аст. Ва боз як савол. Интихоб бо ин ташкилоти додаҳо чӣ гуна кор мекунад, оё он тамоми маҷмӯаро мехонад ё танҳо онеро, ки дар диск аст ва оё ин маълумот дар хотира фишурда шудааст? Ва чӣ гуна бахши пеш аз куҷо бо чунин ташкилоти додаҳо кор мекунад?

Ин танзимот ба нигоҳдории қисмҳои додаҳо таъсир мерасонад ва формати онҳо ба ҳеҷ ваҷҳ тағир намеёбад.
Биёед муфассалтар дида бароем.

Шумо метавонед нигоҳдории маълумотро дар RAM танзим кунед. Ҳамаи он чизе, ки барои диск танзим шудааст, роҳи он аст. Шумо як қисми tmpfs эҷод мекунед, ки ба ягон роҳ дар системаи файлӣ васл шудааст. Шумо ин роҳро ҳамчун роҳи нигоҳдории маълумот барои қисмати гармтарин нишон медиҳед, қисмҳои маълумот ба он ҷо ворид мешаванд ва навишта мешаванд, ҳама чиз хуб аст.

Аммо ман ин корро аз сабаби эътимоднокии паст тавсия намедиҳам, гарчанде ки агар шумо дар марказҳои гуногуни додаҳо ҳадди аққал се нусха дошта бошед, ин имконпазир аст. Агар чизе рӯй диҳад, маълумот барқарор карда мешавад. Биёед тасаввур кунем, ки сервер ногаҳон хомӯш карда шуд ва дубора фаъол шуд. Қисм аз нав васл карда шуд, аммо дар он ҷо чизе набуд. Вақте ки сервери ClickHouse оғоз меёбад, он мебинад, ки он ин қисмҳоро надорад, гарчанде ки тибқи метамаълумоти ZooKeeper, онҳо бояд дар он ҷо бошанд. Вай ба он назар мекунад, ки кадом нусхаҳо онҳоро доранд, дархост мекунад ва онҳоро зеркашӣ мекунад. Бо ин роҳ маълумот барқарор карда мешавад.

Ба ин маънӣ нигоҳ доштани маълумот дар хотираи оперативӣ аз нигоҳ доштани он дар диск аслан фарқ надорад, зеро вақте ки маълумот ба диск навишта мешавад, он ҳам аввал дар кэши саҳифа ҷамъ мешавад ва аз ҷиҳати физикӣ дертар навишта мешавад. Ин аз имконоти насби системаи файлӣ вобаста аст. Аммо дар ҳар сурат, ман мегӯям, ки ClickHouse ҳангоми воридкунӣ fsync намекунад.

Дар ин ҳолат, маълумот дар хотираи оперативӣ маҳз ҳамон формате, ки дар диск аст, нигоҳ дошта мешавад. Дархости интихоб ба ҳамин тариқ қисмҳоеро, ки бояд хонда шаванд, интихоб мекунад, диапазони зарурии маълумотро дар қисмҳо интихоб мекунад ва онҳоро мехонад. Ва prewhere маҳз ҳамон кор мекунад, новобаста аз он ки маълумот дар RAM ё дар диск буд.

То кадом андоза арзишҳои беназир самаранок аст Кардиналии паст?

Кардиналии паст моҳирона тарҳрезӣ шудааст. Он луғатҳои маълумотро тартиб медиҳад, аммо онҳо маҳаллӣ мебошанд. Аввалан, барои ҳар як порча луғатҳои гуногун мавҷуданд ва дуюм, ҳатто дар дохили як порча онҳо метавонанд барои ҳар як диапазон гуногун бошанд. Вақте ки шумораи арзишҳои беназир ба рақами ҳадди аққал мерасад - ба як миллион, ман фикр мекунам - луғат ба таври оддӣ нигоҳ дошта мешавад ва луғати нав сохта мешавад.

Ҷавоб дар маҷмӯъ: барои ҳар як диапазони маҳаллӣ - масалан, барои ҳар рӯз - дар ҷое то як миллион арзишҳои беназир самаранок аст. Пас аз он танҳо як бозгашт ба вуҷуд меояд, ки дар он луғатҳои зиёди гуногун истифода мешаванд, на танҳо як. Он тақрибан ба мисли сутуни сатри муқаррарӣ кор хоҳад кард, шояд каме самараноктар бошад, аммо таназзули ҷиддии кор нахоҳад буд.

Таҷрибаҳои беҳтарин барои ҷустуҷӯи матни пурраи ҷадвал бо панҷ миллиард сатр кадомҳоянд?

Ҷавобҳои гуногун мавҷуданд. Аввалан гуфтан аст, ки ClickHouse системаи ҷустуҷӯии пурраи матн нест. Барои ин системаҳои махсус вуҷуд доранд, масалан, Ҷустуҷӯи Elastics и SPHINX. Аммо, ман бештар одамонро мебинам, ки мегӯянд, ки онҳо аз Elasticsearch ба ClickHouse мегузаранд.

Чаро ин рӯй медиҳад? Онҳо инро бо он шарҳ медиҳанд, ки Elasticsearch аз сохтани индексҳо сар карда, дар баъзе ҳаҷмҳо сарборӣ карданро қатъ мекунад. Индексҳо хеле вазнин мешаванд ва агар шумо танҳо маълумотро ба ClickHouse интиқол диҳед, маълум мешавад, ки онҳо аз ҷиҳати ҳаҷм чанд маротиба самараноктар нигоҳ дошта мешаванд. Дар айни замон, дархостҳои ҷустуҷӯ аксар вақт чунин набуданд, ки дар тамоми ҳаҷми маълумот бо назардошти морфология, вале тамоман дигар ибораҳоро ёфтан лозим буд. Масалан, дар гузоришҳо дар тӯли чанд соати охир чанд пайдарпаии байтҳоро пайдо кунед.

Дар ин ҳолат, шумо дар ClickHouse индекс эҷод мекунед, ки майдони аввали он сана ва вақт хоҳад буд. Ва бузургтарин ихтисори маълумот ба диапазони сана асос меёбад. Дар доираи санаи интихобшуда, чун қоида, аллакай имконпазир аст, ки ҷустуҷӯи пурраи матн, ҳатто бо истифода аз усули қувваи бераҳмона бо истифода аз лайк. Оператори монанд дар ClickHouse оператори аз ҳама самаранокест, ки шумо метавонед онро пайдо кунед. Агар шумо чизи беҳтаре пайдо кунед, ба ман бигӯед.

Аммо ба ҳар ҳол, мисли скан пурра аст. Ва сканкунии пурра метавонад на танҳо дар CPU, балки дар диск низ суст бошад. Агар ногаҳон шумо дар як рӯз як терабайт маълумот дошта бошед ва дар давоми рӯз калимаро ҷустуҷӯ кунед, пас шумо бояд терабайтро скан кунед. Ва он шояд дар дискҳои сахти муқаррарӣ бошад ва дар ниҳоят онҳо тавре бор карда мешаванд, ки шумо тавассути SSH ба ин сервер дастрасӣ нахоҳед дошт.

Дар ин сурат ман омодаам боз як ҳиллаи хурде пешниҳод кунам. Ин таҷрибавӣ аст - он метавонад кор кунад, шояд не. ClickHouse дорои индексҳои пурраи матн дар шакли филтрҳои триграммаи Блум мебошад. Ҳамкорони мо дар Arenadata аллакай ин нишондиҳандаҳоро санҷидаанд ва онҳо аксар вақт мувофиқи пешбинишуда кор мекунанд.

Барои дуруст истифода бурдани онҳо, шумо бояд дақиқ дарк кунед, ки онҳо чӣ гуна кор мекунанд: филтри триграммаи Блум чист ва андозаи онро чӣ гуна интихоб кардан лозим аст. Ман гуфта метавонам, ки онҳо барои пурсишҳо оид ба баъзе ибораҳои нодир, зерсатриҳо, ки дар маълумот хеле кам пайдо мешаванд, кӯмак хоҳанд кард. Дар ин ҳолат, зергурӯҳҳо аз рӯи индексҳо интихоб карда мешаванд ва маълумоти камтар хонда мешаванд.

Ба наздикӣ, ClickHouse вазифаҳои боз ҳам пешрафтаро барои ҷустуҷӯи пурраи матн илова кардааст. Ин, аввалан, ҷустуҷӯи як қатор зерсатрҳо дар як вақт аст, аз ҷумла вариантҳое, ки ба ҳарфҳо ҳассосанд, ба ҳарфҳо ҳассосанд, бо дастгирии UTF-8 ё танҳо барои ASCII. Яке аз самараноктаринеро, ки ба шумо лозим аст, интихоб кунед.

Ҷустуҷӯи якчанд ибораҳои муқаррарӣ дар як гузариш низ пайдо шуд. Ба шумо лозим нест, ки X-ро мисли як зерсатр ё X-ро мисли зерсатри дигар нависед. Шумо фавран менависед ва ҳама чиз то ҳадди имкон самаранок иҷро карда мешавад.

Сеюм, ҳоло ҷустуҷӯи тахминии regexps ва ҷустуҷӯи тахминии зерсатрҳо вуҷуд дорад. Агар касе калимаро хато навишта бошад, он барои мувофиқати максималӣ ҷустуҷӯ карда мешавад.

Беҳтарин роҳи ташкили дастрасӣ ба ClickHouse барои шумораи зиёди корбарон кадом аст?

Ба мо бигӯед, ки чӣ гуна дастрасиро барои шумораи зиёди истеъмолкунандагон ва таҳлилгарон беҳтар ташкил кардан мумкин аст. Навбатро чӣ гуна бояд ташкил кард, ба ҳадди аксар дархостҳои ҳамзамон афзалият дод ва бо кадом асбобҳо?

Агар кластер ба қадри кофӣ калон бошад, пас ҳалли хуб ин баланд бардоштани ду сервери дигар хоҳад буд, ки нуқтаи вуруд барои таҳлилгарон мегардад. Яъне, ба таҳлилгарон иҷозат надиҳед, ки ба қисмҳои мушаххас дар кластер дастрасӣ пайдо кунанд, балки танҳо ду сервери холӣ бидуни маълумот эҷод кунед ва ҳуқуқи дастрасӣ ба онҳо танзим кунед. Дар ин ҳолат, танзимоти корбар барои дархостҳои тақсимшуда ба серверҳои дурдаст интиқол дода мешаванд. Яъне шумо ҳама чизро дар ин ду сервер танзим мекунед ва танзимот ба тамоми кластер таъсир мерасонанд.

Аслан, ин серверҳо маълумот надоранд, аммо миқдори RAM дар онҳо барои иҷрои дархостҳо хеле муҳим аст. Дискро инчунин барои маълумоти муваққатӣ истифода бурдан мумкин аст, агар ҷамъкунии беруна ё ҷудокунии беруна фаъол бошад.

Муҳим аст, ки ба танзимотҳое, ки бо ҳама маҳдудиятҳои имконпазир алоқаманданд, назар кунед. Агар ман ҳоло ба кластери Yandex.Metrica ҳамчун таҳлилгар равам ва дархост пурсам аз хитҳо ҳисобро интихоб кунед, он гоҳ ба ман фавран истисно дода мешавад, ки ман дархостро иҷро карда наметавонам. Шумораи максималии сатрҳое, ки ман онҳоро скан кардан мумкин аст, сад миллиард аст ва дар маҷмӯъ панҷоҳ триллион онҳо дар як ҷадвали кластер мавҷуданд. Ин маҳдудияти аввал аст.

Фарз мекунем, ки ман маҳдудияти сатрро хориҷ мекунам ва дархостро дубора иҷро мекунам. Он гоҳ ман истиснои зеринро мебинам - танзимот фаъол аст индекси қувва аз рӯи сана. Агар ман диапазони санаро муайян накарда бошам, ман дархостро анҷом дода наметавонам. Ба шумо лозим нест, ки ба таҳлилгарон такя кунед, то онро дастӣ муайян кунед. Ҳолати маъмулӣ он аст, ки диапазони сана навишта мешавад, ки дар он санаи рӯйдод байни ҳафта навишта мешавад. Ва он гоҳ онҳо танҳо як қавсро дар ҷои нодуруст нишон доданд ва ба ҷои ва он мувофиқати ё - ё URL буд. Агар маҳдудият вуҷуд надошта бошад, он сутуни URL-ро паймоиш мекунад ва танҳо як тонна захираҳоро барбод медиҳад.

Илова бар ин, ClickHouse ду танзимоти афзалиятнок дорад. Мутаассифона, онҳо хеле ибтидоӣ мебошанд. Яке ба таври оддӣ номида мешавад афзалиятнок. Агар афзалият ≠ 0 ва дархостҳои дорои баъзе афзалиятҳо иҷро шуда бошанд, аммо дархост бо арзиши афзалиятнок аз камтар, ки маънои афзалияти баланд дорад, иҷро карда мешавад, он гоҳ дархост бо арзиши афзалияти калонтар, яъне афзалияти пасттар. , ба таври оддӣ боздошта шудааст ва дар давоми ин муддат тамоман кор намекунад.

Ин як танзимоти хеле хом аст ва барои ҳолатҳое, ки кластер бори доимӣ дорад, мувофиқ нест. Аммо агар шумо дархостҳои кӯтоҳ ва пуршиддат дошта бошед, ки муҳиманд ва кластер асосан бекор аст, ин насб мувофиқ аст.

Танзимоти навбатии афзалият номида мешавад Афзалияти риштаи OS. Он танҳо арзиши хубро барои ҳама риштаҳои иҷрои дархост барои ҷадвали Linux муқаррар мекунад. Ҳамин тавр кор мекунад, аммо он то ҳол кор мекунад. Агар шумо арзиши ҳадди ақали хубро муқаррар кунед - он аз ҷиҳати арзиш калонтарин аст ва аз ин рӯ авлавияти пасттарин - ва барои дархостҳои дорои афзалияти баланд -19 муқаррар кунед, пас CPU дархостҳои афзалиятноки пастро тақрибан чаҳор маротиба камтар аз афзалиятҳои баланд истеъмол мекунад.

Шумо инчунин бояд вақти максималии иҷрои дархостро танзим кунед - масалан, панҷ дақиқа. Суръати ҳадди ақали иҷрои дархост чизи олӣ аст. Ин танзимот муддати тӯлонӣ вуҷуд дорад ва на танҳо тасдиқ кардан лозим аст, ки ClickHouse суст намекунад, балки маҷбур кардан лозим аст.

Тасаввур кунед, ки шумо насб мекунед: агар баъзе дархостҳо дар як сония камтар аз як миллион сатрро коркард кунанд, шумо ин корро карда наметавонед. Ин номи неки мо, базаи хуби моро расво мекунад. Биёед инро манъ кунем. Дар асл ду танзимот мавҷуданд. Яке ном дорад суръати иҷрои min - дар сатрҳо дар як сония, ва дуюм пеш аз тафтиши суръати иҷроиши дақиқа - понздаҳ сония ба таври нобаёнӣ номида мешавад. Яъне, понздаҳ сония имконпазир аст ва он гоҳ, агар он суст бошад, танҳо истисноро партоед ва дархостро қатъ кунед.

Шумо инчунин бояд квотаҳоро муқаррар кунед. ClickHouse дорои хусусияти квота дарунсохт, ки истеъмоли захираҳоро ҳисоб мекунад. Аммо, мутаассифона, на захираҳои сахтафзор ба монанди CPU, дискҳо, балки мантиқӣ - шумораи дархостҳои коркардшуда, сатрҳо ва байтҳои хондашуда. Ва шумо метавонед, масалан, ҳадди аксар сад дархостро дар тӯли панҷ дақиқа ва ҳазор дархост дар як соат танзим кунед.

Чаро муҳим аст? Зеро баъзе дархостҳои таҳлилӣ мустақиман аз муштарии ClickHouse дастӣ иҷро карда мешаванд. Ва ҳамааш хуб мешавад. Аммо агар шумо дар ширкати шумо таҳлилгарони пешрафта дошта бошед, онҳо скрипт менависанд ва шояд дар скрипт хатогӣ бошад. Ва ин хато боиси он мегардад, ки дархост дар як даври беохир иҷро шавад. Ин аст он чизе ки мо бояд худро аз он муҳофизат кунем.

Оё имкон дорад, ки натиҷаи як дархостро ба даҳ муштарӣ диҳад?

Мо якчанд корбар дорем, ки мехоҳанд дар як вақт бо дархостҳои хеле калон ворид шаванд. Дархост калон аст ва аслан, зуд иҷро мешавад, вале аз сабаби он, ки дар як вақт чунин дархостҳо зиёданд, он хеле дардовар мешавад. Магар як дархостеро, ки дах маротиба пай дар пай омада буд, як маротиба ичро карда, натичаашро ба дах муштарй додан мумкин аст?

Масъала дар он аст, ки мо натиҷаҳои кэш ё кэши маълумоти мобайнӣ надорем. Кэши саҳифаи системаи оператсионӣ мавҷуд аст, ки ба шумо имкон намедиҳад, ки маълумотро аз диск боз хонед, аммо мутаассифона, маълумот то ҳол кушода, сериализатсия ва аз нав коркард карда мешавад.

Ман мехостам бо роҳи кэшкунии маълумоти мобайнӣ, ё бо гузоштани дархостҳои шабеҳ дар як навъ навбат ва илова кардани кэши натиҷаҳо аз ин пешгирӣ кунам. Дар айни замон мо як дархости ҷалбкунанда дар таҳия дорем, ки кэши дархостро илова мекунад, аммо танҳо барои зерпурсишҳо дар бахшҳои дохилшавӣ ва ҳамроҳ - яъне ҳалли нопурра аст.

Вале мо хам ба чунин вазъият дучор меоем. Намунаи махсусан каноникӣ ин дархостҳои саҳифабандишуда мебошад. Ҳисобот мавҷуд аст, он дорои якчанд саҳифа аст ва дархост барои лимити 10 вуҷуд дорад. Сипас ҳамон чизест, аммо маҳдудияти 10,10. Сипас саҳифаи навбатии дигар. Ва саволе ба миён меояд, ки чаро мо ҳама вақт ин ҳамаро ҳисоб мекунем? Аммо холо илоче нест ва илоче хам нест.

Як ҳалли алтернативӣ вуҷуд дорад, ки дар паҳлӯи ClickHouse ҳамчун паҳлӯ ҷойгир карда шудааст - Прокси ClickHouse.

Кирилл Шваков: ClickHouse Proxy дорои маҳдудияти дарунсохт ва кэши дарунсохташудаи натиҷаҳо мебошад. Дар он ҷо бисёр танзимотҳо сохта шуданд, зеро мушкилоти шабеҳ ҳал карда мешуд. Прокси ба шумо имкон медиҳад, ки дархостҳоро тавассути навбат гузоштан маҳдуд кунед ва то чӣ андоза умри кэши дархостро танзим кунед. Агар дархостҳо воқеан якхела бошанд, прокси онҳоро борҳо мефиристад, аммо танҳо як маротиба ба ClickHouse меравад.

Nginx инчунин дар версияи ройгон кэш дорад ва ин ҳам кор хоҳад кард. Nginx ҳатто танзимоте дорад, ки агар дархостҳо дар як вақт ворид шаванд, он то анҷоми як дархост дигаронро суст мекунад. Аммо маҳз дар ClickHouse Proxy насбкунӣ хеле беҳтар анҷом дода мешавад. Он махсус барои ClickHouse сохта шудааст, махсусан барои ин дархостҳо, аз ин рӯ мувофиқтар аст. Хуб, насб кардан осон аст.

Дар бораи амалҳои асинхронӣ ва назари моддӣ чӣ гуфтан мумкин аст?

Мушкилоте вуҷуд дорад, ки амалиёт бо муҳаррики такрорӣ асинхронӣ аст - аввал маълумот навишта мешавад, баъд он фурӯ меравад. Агар планшети моддӣ бо баъзе агрегатҳо дар зери аломат зиндагӣ кунад, ба он нусхаҳои такрорӣ навишта мешаванд. Ва агар мантиқи мураккаб вуҷуд надошта бошад, пас маълумот такрор карда мешавад. Шумо дар ин бора чӣ кор карда метавонед?

Як роҳи ҳалли аён вуҷуд дорад - татбиқи триггер дар як синфи муайяни матвишҳо ҳангоми амалиёти вайроншавии асинхронӣ. Оё ягон тирҳои нуқра вуҷуд доранд ё нақшаи татбиқи чунин функсияҳо вуҷуд доранд?

Фаҳмидани он ки чӣ тавр нусхабардорӣ кор мекунад, меарзад. Он чизе, ки ман ҳоло ба шумо мегӯям, ба савол дахл надорад, аммо ба шарте ки он ба ёдоварист.

Ҳангоми ворид кардан ба ҷадвали такрорӣ, нусхабардории тамоми блокҳои воридшуда вуҷуд дорад. Агар шумо ҳамон блоки дорои шумораи якхелаи сатрҳои якхеларо бо ҳамон тартиб дубора ворид кунед, он гоҳ маълумот нусхабардорӣ карда мешавад. Шумо дар ҷавоб ба воридкунӣ "Хуб" мегиред, аммо дар асл як бастаи маълумот навишта мешавад ва он такрор намешавад.

Ин барои итминон зарур аст. Агар шумо ҳангоми воридкунӣ "Хуб" гиред, пас маълумоти шумо ворид карда шудааст. Агар шумо аз ClickHouse хато қабул кунед, ин маънои онро дорад, ки онҳо ворид карда нашудаанд ва шумо бояд воридкуниро такрор кунед. Аммо агар пайвастшавӣ ҳангоми воридкунӣ канда шавад, пас шумо намедонед, ки маълумот ворид карда шудааст ё не. Ягона вариант ин аст, ки такрори воридотро дубора такрор кунед. Агар маълумот воқеан ворид карда шуда бошад ва шумо онро дубора ворид карда бошед, нусхабардории блок вуҷуд дорад. Ин барои пешгирӣ кардани такрорӣ зарур аст.

Ва инчунин муҳим аст, ки он барои назари моддӣ чӣ гуна кор мекунад. Агар ҳангоми ворид шудан ба ҷадвали асосӣ маълумот нусхабардорӣ карда шуда бошад, он гоҳ ба намуди моддӣ низ дохил намешавад.

Акнун дар бораи савол. Вазъияти шумо мураккабтар аст, зеро шумо такрори сатрҳои алоҳидаро сабт карда истодаед. Яъне на тамоми маҷмӯа такрор карда мешавад, балки хатҳои мушаххас ва онҳо дар замина меафтанд. Воқеан, маълумот дар ҷадвали асосӣ фурӯ хоҳад рафт, аммо маълумоти нопадидшуда ба намуди моддӣ мегузаранд ва дар вақти якҷоякунӣ ба назари моддӣ чизе рӯй намедиҳад. Зеро назари моддӣ чизе ҷуз триггери воридкунӣ нест. Ҳангоми дигар амалиётҳо ба он ҳеҷ чизи иловагӣ рӯй намедиҳад.

Ва ман туро дар ин ҷо хушбахт карда наметавонам. Шумо бояд танҳо як роҳи ҳалли мушаххасро барои ин ҳолат ҷустуҷӯ кунед. Масалан, оё онро дар намуди моддӣ такрор кардан мумкин аст ва усули нусхабардорӣ метавонад ҳамин тавр кор кунад. Аммо, мутаассифона, на ҳамеша. Агар он ҷамъоварӣ карда шавад, он кор намекунад.

Кирилл Шваков: Дар он замон мо низ сохтмони асобакаш доштем. Мушкилоте вуҷуд дошт, ки таассуроти таблиғотӣ вуҷуд дорад ва баъзе маълумоте вуҷуд дорад, ки мо метавонем дар вақти воқеӣ нишон диҳем - ин танҳо таассурот аст. Онҳо хеле кам такрор мешаванд, аммо агар ин рӯй диҳад, мо ба ҳар ҳол баъдтар онҳоро вайрон мекунем. Ва чизҳое буданд, ки онҳоро такрор кардан ғайриимкон аст - кликҳо ва тамоми ин ҳикоя. Аммо ман ҳам мехостам онҳоро қариб фавран нишон диҳам.

Андешаҳои моддӣ чӣ гуна ба вуҷуд омадаанд? Нигоҳҳое буданд, ки дар он бевосита навишта шуда буд - он ба маълумоти хом навишта шуда буд ва ба назарҳо навишта шудааст. Дар он ҷо, дар баъзе мавридҳо маълумот чандон дуруст нест, такрор карда мешавад ва ғайра. Ва қисми дуюми ҷадвал мавҷуд аст, ки дар он онҳо комилан ба назари моддӣ монанданд, яъне онҳо аз ҷиҳати сохтор комилан якхелаанд. Як бор мо маълумотро аз нав ҳисоб мекунем, маълумотро бе такрор ҳисоб мекунем, ба он ҷадвалҳо менависем.

Мо аз API гузаштем - ин дар ClickHouse дастӣ кор намекунад. Ва API назар мекунад: вақте ки ман санаи иловаи охирин ба ҷадвал дорам, ки дар он кафолат дода мешавад, ки маълумоти дуруст аллакай ҳисоб карда шудааст ва он ба як ҷадвал ва ба ҷадвали дигар дархост мекунад. Дархост аз яке то вақти муайянро интихоб мекунад ва аз дигараш он чизеро мегирад, ки ҳанӯз ҳисоб карда нашудааст. Ва он кор мекунад, аммо на танҳо тавассути ClickHouse.

Агар шумо як намуди API дошта бошед - барои таҳлилгарон, барои корбарон - пас, дар асл, ин интихоб аст. Шумо ҳамеша ҳисоб мекунед, ҳамеша ҳисоб мекунед. Ин метавонад як маротиба дар як рӯз ё дар вақти дигар анҷом дода шавад. Шумо барои худ як қатореро интихоб мекунед, ки ба шумо лозим нест ва муҳим нест.

ClickHouse гузоришҳои зиёде дорад. Чӣ тавр ман метавонам ҳама чизеро, ки бо сервер рӯй медиҳад, дар як нигоҳ бубинам?

ClickHouse шумораи хеле зиёди гузоришҳои гуногун дорад ва ин рақам афзоиш меёбад. Дар версияҳои нав, баъзеи онҳо ҳатто бо нобаёнӣ фаъол карда мешаванд; дар версияҳои кӯҳна онҳо бояд ҳангоми навсозӣ фаъол карда шаванд. Бо вуҷуди ин, шумораи онҳо бештар ва бештар аст. Дар ниҳоят, ман мехоҳам бубинам, ки ҳоло бо сервери ман чӣ рӯй дода истодааст, шояд дар ягон панели ҷамъбастӣ.

Оё шумо як дастаи ClickHouse ё дастаҳои дӯстони шумо доред, ки баъзе функсияҳои панелҳои тайёрро дастгирӣ мекунанд, ки ин гузоришҳоро ҳамчун маҳсулоти тайёр намоиш медиҳанд? Дар ниҳоят, танҳо дидан ба гузоришҳо дар ClickHouse олиҷаноб аст. Аммо он хеле хуб мебуд, агар он аллакай дар шакли панел омода карда мешуд. Ман аз он як зарба мегирифтам.

Панелҳои идоракунӣ мавҷуданд, гарчанде ки онҳо стандартизатсия нашудаанд. Дар ширкати мо, тақрибан 60 даста ClickHouse-ро истифода мебаранд ва аҷибтаринаш ин аст, ки бисёре аз онҳо панелҳои идоракуниро барои худ сохтаанд ва каме фарқ мекунанд. Баъзе дастаҳо насби дохилии Yandex.Cloud истифода мебаранд. Якчанд хисоботхои тайёр мавчуданд, гарчанде на хамаи хисоботи зарурй. Дигарон худашон доранд.

Ҳамкорони ман аз Metrica дар Графана панели идоракунии худро доранд ва ман барои кластери онҳо панели шахсии худро дорам. Ман ба чизҳое назар мекунам, ба монанди кэш барои кэши serif. Ва боз ҳам мушкилтар он аст, ки мо асбобҳои гуногунро истифода мебарем. Ман панели асбоби худро бо истифода аз асбоби хеле кӯҳна бо номи Graphite-web сохтам. Вай комилан зишт аст. Ва ман то ҳол онро ҳамин тавр истифода мебарам, гарчанде ки Grafana шояд қулайтар ва зеботар бошад.

Чизи асосӣ дар панелҳои идоракунӣ ҳамон аст. Инҳо нишондиҳандаҳои системавӣ барои кластер мебошанд: CPU, хотира, диск, шабака. Дигарон - шумораи дархостҳои ҳамзамон, шумораи якҷоякунии ҳамзамон, шумораи дархостҳо дар як сония, шумораи максималии қисмҳо барои қисмҳои ҷадвали MergeTree, таъхири такрорӣ, андозаи навбати такрорӣ, шумораи сатрҳои воридшуда дар як сония, шумораи блокҳои воридшуда дар як сония. Ин ҳама чизест, ки на аз гузоришҳо, балки аз метрика ба даст меояд.

Владимир Колобаев: Алексей, ман мехоҳам онро каме ислоҳ кунам. Графана вуҷуд дорад. Grafana дорои манбаи маълумот аст, ки ClickHouse аст. Яъне ман метавонам аз Grafana мустақиман ба ClickHouse дархост пешниҳод кунам. ClickHouse дорои ҷадвали дорои гузоришҳо мебошад, он барои ҳама якхела аст. Дар натиҷа, ман мехоҳам ба ин ҷадвали гузоришҳо дар Grafana дастрасӣ пайдо кунам ва дархостҳоеро, ки сервери ман медиҳад, бубинам. Хеле хуб мебуд, ки чунин панели идоракунӣ дошта бошед.

Ман худам велосипед рондам. Аммо ман як савол дорам - агар ҳамааш стандартизатсия шуда бошад ва Grafana аз ҷониби ҳама истифода шавад, чаро Яндекс чунин панели расмӣ надорад?

Кирилл Шваков: Дар асл, манбаи маълумоте, ки ба ClickHouse меравад, ҳоло Altinity -ро дастгирӣ мекунад. Ва ман танҳо мехоҳам як векторе диҳам, ки дар куҷо кофтан ва кӣ тела додан лозим аст. Шумо метавонед аз онҳо пурсед, зеро Яндекс то ҳол ClickHouse месозад, на ҳикояи атрофи он. Altinity як ширкати асосии таблиғи ClickHouse мебошад. Уро напартофта, тарафдорй мекунанд. Зеро, аслан, барои бор кардани панели идоракунӣ ба вебсайти Grafana, шумо танҳо бояд сабти ном кунед ва онро бор кунед - ҳеҷ мушкилии махсус вуҷуд надорад.

Алексей Миловидов: Дар тӯли як соли охир, ClickHouse бисёр қобилиятҳои профилсозии дархостҳоро илова кардааст. Барои ҳар як дархост оид ба истифодаи захираҳо нишондиҳандаҳо мавҷуданд. Ва ба наздикӣ, мо як профилгари дархости сатҳи поёнтарро илова кардем, то бубинем, ки дархост ҳар миллисонияро дар куҷо сарф мекунад. Аммо барои истифодаи ин функсия, ман бояд муштарии консолро кушоям ва дархостеро нависед, ки ҳамеша фаромӯш мекунам. Ман онро дар ҷое нигоҳ доштам ва дар куҷо фаромӯш мекунам.

Кош асбобе мебуд, ки танҳо гуфта буд, ки инҷо дархостҳои вазнини шумо аз рӯи синфи дархост гурӯҳбандӣ шудаанд. Ман якеро пахш кардам ва онҳо ба ман мегуфтанд, ки барои ҳамин вазнин аст. Ҳоло чунин ҳалли масъала вуҷуд надорад. Ва дар ҳақиқат аҷиб аст, ки вақте одамон аз ман мепурсанд: "Ба ман бигӯед, оё ягон панели идоракунӣ барои Grafana вуҷуд дорад?", ман мегӯям: "Ба вебсайти Grafana равед, дар он ҷо ҷомеаи "Панелҳо" вуҷуд дорад ва панели идоракунӣ мавҷуд аст. аз Димка, аз Костян панели асбобхо мавчуд аст. Ман намедонам, ки ин чӣ аст, ман худам онро истифода накардаам. ”

Чӣ тавр ба муттаҳидшавӣ таъсир расонидан мумкин аст, то сервер ба OOM наафтад?

Ман ҷадвал дорам, дар ҷадвал танҳо як қисм мавҷуд аст, он ReplacingMergeTree аст. Ман чор сол боз ба он маълумот менависам. Ба ман лозим буд, ки дар он тағирот ворид кунам ва баъзе маълумотҳоро нест кунам.

Ман ин корро кардам ва ҳангоми коркарди ин дархост тамоми хотираи ҳамаи серверҳои кластер истеъмол карда шуд ва ҳамаи серверҳои кластер ба OOM дохил шуданд. Сипас, ҳама якҷоя бархоста, ба якҷоя кардани ин амалиёт, ин блоки додаҳо шурӯъ карданд ва боз ба OOM афтоданд. Баъд боз бархоста боз афтоданд. Ва ин кор бас нашуд.

Баъд маълум шуд, ки ин воқеан як хатоест, ки бачаҳо ислоҳ карданд. Ин хеле аҷиб аст, ташаккури зиёд. Аммо як боқимонда боқӣ монд. Ва ҳоло, вақте ки ман дар бораи сохтани як навъ муттаҳидшавӣ дар ҷадвал фикр мекунам, ман саволе дорам - чаро ман наметавонам ба ин муттаҳидшавӣ таъсир расонам? Масалан, онҳоро аз рӯи миқдори RAM талабшуда маҳдуд кунед, ё аслан, аз рӯи маблағе, ки ин ҷадвали мушаххасро коркард мекунад.

Ман ҷадвале бо номи "Метрика" дорам, лутфан онро барои ман дар ду ришта коркард кунед. Дар баробари эҷод кардани даҳ ё панҷ муттаҳидшавӣ лозим нест, онро дар ду иҷро кунед. Ман фикр мекунам, ки ман барои ду хотираи кофӣ дорам, аммо барои коркарди даҳ он метавонад кофӣ набошад. Чаро тарс боқӣ мемонад? Азбаски ҷадвал афзоиш ёфта истодааст ва рӯзе ман бо вазъияте рӯбарӯ мешавам, ки аслан дигар бо сабаби хатогӣ нест, балки аз сабаби он ки маълумот ба андозаи калон тағир меёбад, ки ман танҳо хотираи кофӣ надорам. сервер. Ва он гоҳ сервер ҳангоми якҷояшавӣ ба OOM дучор мешавад. Гузашта аз ин, ман метавонам мутатсияро бекор кунам, аммо Мерҷи дигар дар он ҷо нест.

Шумо медонед, ки ҳангоми якҷояшавӣ сервер ба OOM намеафтад, зеро ҳангоми якҷояшавӣ миқдори RAM танҳо барои як доираи хурди додаҳо истифода мешавад. Ҳамин тавр, новобаста аз миқдори маълумот ҳама чиз хуб хоҳад буд.

Владимир Колобаев: Хуб. Дар ин ҷо лаҳзае аст, ки пас аз ислоҳи хато ман як версияи навро барои худ зеркашӣ кардам ва дар ҷадвали дигар, ки дар он қисматҳои зиёд мавҷуданд, ман чунин амалиётро анҷом додам. Ва ҳангоми якҷоякунӣ тақрибан 100 ГБ хотираи оперативӣ дар сервер сӯзонда шуд. Ман 150 нафарро ишғол кардам, 100 нафар хӯрда будам ва тирезаи 50 ГБ мондам, бинобар ин ман ба OOM афтодаам.

Дар айни замон чӣ маро аз афтодан ба OOM муҳофизат мекунад, агар он воқеан 100 ГБ RAM-ро истеъмол кунад? Чӣ бояд кард, агар ногаҳон RAM дар якҷоякунӣ тамом шавад?

Алексей Миловидов: Чунин мушкилот вуҷуд дорад, ки истеъмоли RAM махсус барои якҷояшавӣ маҳдуд нест. Ва мушкили дуюм ин аст, ки агар ягон намуди якҷоякунӣ таъин шуда бошад, пас он бояд иҷро карда шавад, зеро он дар журнали такрорӣ сабт шудааст. Рӯйхати такрорӣ амалҳое мебошанд, ки барои ба ҳолати мувофиқ овардан нусхабардорӣ лозиманд. Агар шумо амалҳои дастӣ анҷом надиҳед, ки ин сабти такрориро баргардонанд, якҷоякунӣ бояд ин ё он роҳ иҷро карда шавад.

Албатта, доштани маҳдудияти RAM, ки "танҳо дар сурати" аз OOM муҳофизат мекунад, зиёдатӣ нахоҳад буд. Он барои ба итмом расонидани муттаҳидшавӣ кӯмак намекунад, он аз нав оғоз мешавад, ба ҳадди аққал мерасад, истисноро мепартояд ва баъд аз нав оғоз мекунад - аз ин ҳеҷ чизи хубе нахоҳад омад. Аммо принципан чорй кардани ин махдудият фоиданок мебуд.

Чӣ тавр драйвери Golang барои ClickHouse таҳия карда мешавад?

Ронандаи Голанг, ки онро Кирилл Шваков навиштааст, ҳоло аз ҷониби дастаи ClickHouse расман дастгирӣ мешавад. У дар анбори ClickHouse, вай холо калон ва хакикй аст.

Як ёддошт хурд. Як анбори аҷиб ва маҳбуби шаклҳои муқаррарии тартиботи беохир мавҷуд аст - ин Вертика аст. Онҳо инчунин драйвери расмии питони худро доранд, ки онро таҳиягарони Vertica дастгирӣ мекунанд. Ва якчанд маротиба рӯй дод, ки версияҳои нигаҳдорӣ ва версияҳои драйвер ба таври назаррас фарқ карданд ва ронанда дар як лаҳза корашро қатъ кард. Ва нуктаи дуюм. Дастгирии ин ронандаи расмӣ, ба назарам, системаи "пистони" амалӣ карда мешавад - шумо ба онҳо масъала менависед ва он то абад овезон мешавад.

Ман ду савол дорам. Ҳоло ронандаи Голанг Кирилл қариб роҳи пешфарз барои муошират аз Голанг бо ClickHouse мебошад. Агар касе то ҳол тавассути интерфейси http муошират накунад, зеро ба ӯ ин тавр маъқул аст. Ташаккули ин ронанда чӣ гуна пеш меравад? Оё он бо ҳама гуна тағироти вайроншуда дар худи анбор ҳамоҳанг карда мешавад? Ва тартиби баррасии масъала чӣ гуна аст?

Кирилл Шваков: Якум он аст, ки хама чиз чй тавр ба таври бюрократй ташкил карда шудааст. Ин нукта мавриди баррасӣ қарор нагирифтааст, бинобар ин ман чизе барои ҷавоб додан надорам.

Барои ҷавоб додан ба савол дар бораи ин масъала, мо бояд каме таърихи ронандаро омӯзем. Ман дар ширкате кор мекардам, ки маълумоти зиёд дошт. Ин як чархи таблиғӣ бо шумораи зиёди рӯйдодҳо буд, ки бояд дар ҷое нигоҳ дошта шаванд. Ва дар як лаҳза ClickHouse пайдо шуд. Мо онро бо маълумот пур кардем ва дар аввал ҳама чиз хуб буд, аммо баъд ClickHouse ба садама дучор шуд. Дар он лаҳза мо тасмим гирифтем, ки ба мо лозим нест.

Пас аз як сол, мо ба идеяи истифодаи ClickHouse баргаштем ва ба мо лозим омад, ки дар он ҷо маълумот нависем. Паёми муқаддимавӣ чунин буд: сахтафзор хеле заиф аст, захираҳо каманд. Аммо мо ҳамеша ҳамин тавр кор мекардем ва аз ин рӯ мо ба протоколи ватанӣ назар мекардем.

Азбаски мо дар Go кор мекардем, маълум буд, ки ба мо ронандаи Go лозим аст. Ман онро қариб пурра иҷро кардам - ​​ин вазифаи кори ман буд. Мо онро ба як нукта овардем ва аслан касе гумон намекард, ки гайр аз мо касе аз он истифода мебарад. Пас аз он CloudFlare бо ҳамон мушкилот омад ва чанд вақт мо бо онҳо хеле осон кор кардем, зеро онҳо вазифаҳои якхела доштанд. Гузашта аз ин, мо инро ҳам дар ClickHouse худамон ва ҳам дар ронанда анҷом додем.

Дар баъзе мавридҳо ман ин корро бас кардам, зеро фаъолияти ман дар робита ба ClickHouse ва кор каме тағйир ёфт. Аз ин рӯ, масъалаҳо пӯшида нестанд. Давра ба давра, одамоне, ки ба чизе ниёз доранд, ба анбор муроҷиат мекунанд. Он гоҳ ман ба дархости ҷалб назар мекунам ва баъзан ман ҳатто чизеро худам таҳрир мекунам, аммо ин хеле кам рӯй медиҳад.

Ман мехоҳам ба назди ронанда баргардам. Чанд сол пеш, вақте ки ин ҳама чиз оғоз шуд, ClickHouse низ гуногун ва дорои қобилиятҳои гуногун буд. Акнун мо фаҳмидем, ки чӣ гуна ронандаро аз нав сохтан лозим аст, то он хуб кор кунад. Агар ин рӯй диҳад, пас версияи 2 дар ҳар сурат аз сабаби асобағалҳои ҷамъшуда номувофиқ хоҳад буд.

Ман намедонам, ки ин масъаларо чӣ гуна ташкил кунам. Ман худам вақти зиёд надорам. Агар баъзехо ронандаро ба охир расонанд, ман ба онхо ёрй расонда метавонам, ки чй кор кунанд. Аммо ширкати фаъолонаи Яндекс дар таҳияи лоиҳа то ҳол баррасӣ нашудааст.

Алексей Миловидов: Дар хакикат, дар хакки ин ронандагон хануз бюрократизм дида намешавад. Ягона чизе, ки онҳо ба як ташкилоти расмӣ пешниҳод карда мешаванд, яъне ин драйвер ҳамчун ҳалли расмии пешфарз барои Go эътироф карда мешавад. Дигар ронандагон хастанд, вале алохида меоянд.

Мо барои ин ронандагон ҳеҷ гуна рушди дохилӣ надорем. Савол ин аст, ки оё мо метавонем як нафари алохидаро ба кор гирем, на барои ин ронандаи мушаххас, балки барои рушди тамоми ронандагони ҷамоатҳо ва ё аз берун касеро ёфта метавонем?

Луғати беруна пас аз бозоғозӣ бо танзими lazy_load фаъол намешавад. Чӣ бояд кард?

Мо танзими lazy_load-ро фаъол кардем ва пас аз бозоғоз кардани сервер, луғат худ аз худ бор намекунад. Он танҳо пас аз дастрасии корбар ба ин луғат баланд мешавад. Ва бори аввал ман ба он дастрасӣ пайдо мекунам, он хато медиҳад. Оё имкон аст, ки бо истифода аз ClickHouse ба таври худкор луғатҳоро бор кунед ё шумо бояд ҳамеша худатон омодагии онҳоро назорат кунед, то корбарон хатогиҳоро нагиранд?

Шояд мо версияи кӯҳнаи ClickHouse дошта бошем, аз ин рӯ луғат ба таври худкор бор намекунад. Оё ин тавр шуда метавонад?

Аввалан, луғатҳоро бо истифода аз дархост маҷбуран бор кардан мумкин аст луғатҳоро аз нав бор кардани система. Дуюм, дар бораи хатогӣ - агар луғат аллакай бор карда шуда бошад, пас дархостҳо дар асоси маълумоти боршуда кор мекунанд. Агар луғат то ҳол бор карда нашуда бошад, он мустақиман ҳангоми дархост бор карда мешавад.

Ин барои луғатҳои вазнин чандон қулай нест. Масалан, ба шумо лозим аст, ки аз MySQL як миллион сатр кашед. Касе интихоби оддӣ мекунад, аммо ин интихоб ҳамон миллион сатрро интизор мешавад. Дар ин ҷо ду роҳи ҳал вуҷуд дорад. Аввалан, хомӯш кардани lazy_load аст. Дуюм, вақте ки сервер фаъол аст, пеш аз бор кардан ба он, иҷро кунед луғати аз нав боркунии система ё танҳо дархостеро иҷро кунед, ки луғатро истифода мебарад. Пас луғат бор карда мешавад. Шумо бояд мавҷудияти луғатҳоро бо танзими lazy_load назорат кунед, зеро ClickHouse онҳоро ба таври худкор бор намекунад.

Ҷавоб ба саволи охирин ин аст, ки версия кӯҳна аст ё он бояд ислоҳ карда шавад.

Чӣ бояд кард, ки луғатҳои аз нав боркунии система ҳеҷ яке аз луғатҳои зиёдеро бор намекунад, агар ақаллан яке аз онҳо бо хатогӣ кор кунад?

Саволи дигаре дар бораи луғатҳои азнавборкунии система вуҷуд дорад. Мо ду луғат дорем - яке бор нест, дуюмаш бор аст. Дар ин ҳолат, луғатҳои азнавборкунии система ягон луғатро бор намекунад ва шумо бояд бо истифода аз луғати азнавборкунии система луғати мушаххасро бо номи он бор кунед. Оё ин ба версияи ClickHouse низ алоқаманд аст?

Ман мехоҳам туро хушбахт кунам. Ин рафтор дигар мешуд. Ин маънои онро дорад, ки агар шумо ClickHouse навсозӣ кунед, он низ тағир меёбад. Агар шумо аз рафтори ҳозираи худ қаноатманд набошед луғатҳоро аз нав бор кардани система, навсозӣ кунед ва умедворем, ки он барои беҳтар тағйир меёбад.

Оё роҳи танзими тафсилот дар конфигуратсияи ClickHouse вуҷуд дорад, аммо дар сурати хатогиҳо онҳоро намоиш надиҳед?

Саволи навбатӣ дар бораи хатогиҳои марбут ба луғат, яъне тафсилот аст. Мо тафсилоти пайвастшавиро дар конфигуратсияи ClickHouse барои луғат муайян кардем ва агар хатое вуҷуд дошта бошад, мо дар посух ин тафсилот ва паролро мегирем.

Мо ин хаторо тавассути илова кардани тафсилот ба конфигуратсияи драйвери ODBC ҳал кардем. Оё ягон роҳи танзим кардани тафсилот дар конфигуратсияи ClickHouse вуҷуд дорад, аммо дар сурати хатогиҳо ин тафсилотро нишон надиҳед?

Ҳалли воқеӣ дар ин ҷо муайян кардани ин эътимодномаҳо дар odbc.ini аст ва дар худи ClickHouse танҳо номи манбаи маълумотҳои ODBC-ро муайян кунед. Ин барои дигар манбаъҳои луғат рӯй нахоҳад дод - на барои луғат бо MySQL ва на барои дигарон, вақте ки шумо паёми хатогиро мегиред, паролро набинед. Барои ODBC, ман ҳам мебинам - агар он вуҷуд дошта бошад, шумо бояд онро тоза кунед.

Бонус: замина барои Zoom аз ҷамъомадҳо

Бо пахш кардани расм, заминаҳои бонусӣ аз ҷамъомадҳо барои хонандагони устувортарин кушода мешаванд. Мо якҷоя бо маскотҳои технологияи Avito сӯхторро хомӯш мекунем, мо бо ҳамкорон аз утоқи маъмури система ё клуби компютерии кӯҳна сӯҳбат мекунем ва дар пасманзари граффити ҳар рӯз дар зери купрук вохӯриҳо мегузаронем.

ClickHouse барои корбарони пешрафта дар саволҳо ва ҷавобҳо

Манбаъ: will.com

Илова Эзоҳ