Махзани маълумотҳои ClickHouse тарҳи хеле содда дорад - ҳамаи гиреҳҳои кластер як функсия доранд ва танҳо барои ҳамоҳангсозӣ ZooKeeper -ро истифода мебаранд. Мо як кластери хурди якчанд гиреҳҳо сохтем ва санҷиш гузаронидем, ки дар давоми он мо фаҳмидем, ки система кори хеле таъсирбахш дорад, ки ба бартариҳои зикршуда дар нишондиҳандаҳои таҳлилии DBMS мувофиқат мекунад. Мо тасмим гирифтем, ки ба консепсияи паси ClickHouse муфассалтар назар андозем. Аввалин монеаи тадқиқот ин набудани асбобҳо ва ҷомеаи хурди ClickHouse буд, аз ин рӯ мо тарҳи ин DBMS-ро омӯзем, то бифаҳмем, ки он чӣ гуна кор мекунад.
ClickHouse қабули маълумотро мустақиман аз Кафка дастгирӣ намекунад, зеро он танҳо як пойгоҳи додаҳост, аз ин рӯ мо хидмати адаптери худро дар Go навиштем. Он паёмҳои Cap'n Proto-ро аз Кафка хонда, онҳоро ба TSV табдил дод ва тавассути интерфейси HTTP ба ClickHouse дар гурӯҳҳо дохил кард. Мо дертар ин хидматро аз нав навиштем, то китобхонаи Go-ро дар якҷоягӣ бо интерфейси худи ClickHouse барои беҳтар кардани кор истифода барем. Ҳангоми арзёбии кори бастаҳои қабул, мо як чизи муҳимро кашф кардем - маълум шуд, ки барои ClickHouse ин нишондиҳанда аз андозаи баста, яъне шумораи сатрҳои ҳамзамон воридшуда вобаста аст. Барои фаҳмидани он ки чаро ин рӯй медиҳад, мо дида баромадем, ки чӣ тавр ClickHouse маълумотро нигоҳ медорад.
Муҳаррики асосӣ, дурусттараш оилаи муҳаррикҳои ҷадвал, ки аз ҷониби ClickHouse барои нигоҳ доштани маълумот MergeTree истифода мешавад. Ин муҳаррик аз ҷиҳати консептуалӣ ба алгоритми LSM шабоҳат дорад, ки дар Google BigTable ё Apache Cassandra истифода мешавад, аммо аз сохтани ҷадвали хотираи фосилавӣ худдорӣ мекунад ва маълумотро мустақиман ба диск менависад. Ин ба он қобилияти аълои навиштан медиҳад, зеро ҳар як бастаи воридшуда танҳо аз рӯи калиди ибтидоӣ мураттаб карда, фишурда мешавад ва ба диск навишта мешавад, то сегментро ташкил кунад.
Набудани ҷадвали хотира ё ҳама гуна мафҳуми “тару тозагии” маълумот инчунин маънои онро дорад, ки онҳо метавонанд танҳо илова карда шаванд; система тағир додан ё нест карданро дастгирӣ намекунад. Дар айни замон, роҳи ягонаи нест кардани маълумот ин нест кардани он аз рӯи моҳи тақвимӣ мебошад, зеро сегментҳо ҳеҷ гоҳ сарҳади як моҳро убур намекунанд. Дастаи ClickHouse барои танзимшавандаи ин хусусият фаъолона кор мекунад. Аз тарафи дигар, он навиштан ва муттаҳид кардани сегментҳоро бидуни баҳс мекунад, аз ин рӯ миқёси интиқолро ба таври хаттӣ бо шумораи воридоти ҳамзамон то фаро расидани I/O ё сершавии аслӣ қабул кунед.
Аммо, ин инчунин маънои онро дорад, ки система барои бастаҳои хурд мувофиқ нест, аз ин рӯ хидматҳои Кафка ва воридкунандагон барои буферӣ истифода мешаванд. Баъдан, ClickHouse дар замина пайваста муттаҳидкунии сегментҳоро идома медиҳад, то ки бисёре аз қисмҳои хурди иттилоот муттаҳид карда шаванд ва борҳо сабт карда шаванд ва ба ин васила шиддати сабтро зиёд кунад. Аммо, то даме ки муттаҳидшавӣ идома дорад, қисмҳои аз ҳад зиёди пайвастнашуда боиси дроссели хашмгин мешаванд. Мо дарёфтем, ки беҳтарин созиш байни қабули вақти воқеӣ ва иҷрои воридшавӣ ворид кардани миқдори маҳдуди воридот дар як сония ба ҷадвал аст.
Калиди иҷрои хондани ҷадвал индексатсия ва ҷойгиршавии маълумот дар диск мебошад. Новобаста аз он ки коркард то чӣ андоза зуд аст, вақте ки муҳаррик бояд терабайтҳои маълумотро аз диск скан кунад ва танҳо як қисми онро истифода барад, он вақтро мегирад. ClickHouse як мағозаи сутун аст, аз ин рӯ ҳар як сегмент дорои файл барои ҳар як сутун (сутун) бо арзишҳои мураттабшуда барои ҳар як сатр. Бо ин роҳ, аввал тамоми сутунҳои дар пурсиш мавҷудбударо партофтан мумкин аст ва сипас якчанд ячейкаҳоро дар баробари иҷрои векторӣ коркард кардан мумкин аст. Барои пешгирӣ кардани скан пурра, ҳар як сегмент дорои файли индекси хурд аст.
Бо назардошти он, ки ҳамаи сутунҳо аз рӯи "калиди ибтидоӣ" мураттаб карда мешаванд, файли индекс танҳо тамғакоғазҳоро (сатрҳои гирифташуда) -и ҳар як сатри N-ро дар бар мегирад, то онҳоро ҳатто барои ҷадвалҳои хеле калон дар хотира нигоҳ дорад. Масалан, шумо метавонед танзимоти пешфарзро барои "ҳар як сатри 8192-ум қайд кунед", пас индексатсияи "ночиз" -и ҷадвал бо 1 триллион. сатрҳое, ки ба хотира ба осонӣ мувофиқанд, танҳо 122 аломат мегиранд.
Рушди система
Рушд ва такмили Clickhouse-ро метавон пайгирӣ кард Репо Github ва боварӣ ҳосил кунед, ки раванди "болошавӣ" бо суръати таъсирбахш мегузарад.
Нашрия
Чунин ба назар мерасад, ки маъруфияти Clickhouse, махсусан дар ҷомеаи русзабон, беист афзоиш меёбад. Конфронси соли гузаштаи High load 2018 (Маскав, 8-9 ноябри соли 2018) нишон дод, ки чунин ҳаюлоҳо ба монанди vk.com ва Badoo аз Clickhouse истифода мебаранд, ки бо онҳо маълумотро (масалан, гузоришҳо) аз даҳҳо ҳазор серверҳо дар як вақт ворид мекунанд. Дар як видеои 40 дақиқа Юрий Насретдинов аз гурӯҳи ВКонтакте дар бораи он ки чӣ тавр ин корро анҷом медиҳад, нақл мекунад. Ба наздикӣ мо стенограммаро дар Habr ҷойгир хоҳем кард, то кор бо мавод осон шавад.
Барномаҳо
Пас аз чанд вақт барои таҳқиқ, ман фикр мекунам, ки соҳаҳое ҳастанд, ки ClickHouse метавонад муфид бошад ё метавонад ҳалли дигар, анъанавӣ ва маъмулро иваз кунад, ба монанди MySQL, PostgreSQL, ELK, Google Big Query, Amazon RedShift, TimescaleDB, Hadoop, MapReduce, Pinot ва Друид. Дар зер тафсилоти истифодаи ClickHouse барои навсозӣ ё пурра иваз кардани DBMS дар боло тавсиф карда шудааст.
Васеъ кардани имкониятҳои MySQL ва PostgreSQL
Ба наздикӣ мо қисман MySQL-ро бо ClickHouse барои платформаи бюллетени худ иваз кардем Бюллетени Mautic. Мушкилот дар он буд, ки MySQL аз сабаби тарҳрезии бад, ҳар як почтаи ирсолшуда ва ҳар як истиноди ин почтаи электрониро бо хэши base64 сабт карда, ҷадвали бузурги MySQL (email_stats) эҷод мекард. Пас аз фиристодани ҳамагӣ 10 миллион почтаи электронӣ ба муштариёни хидматрасонӣ, ин ҷадвал 150 ГБ фазои файлро ишғол кард ва MySQL дар дархостҳои оддӣ "беақл" шудан гирифт. Барои ислоҳи масъалаи фазои файл, мо фишурдани ҷадвали InnoDB-ро бомуваффақият истифода кардем, ки онро 4 маротиба кам кард. Бо вуҷуди ин, нигоҳ доштани зиёда аз 20-30 миллион почтаи электронӣ дар MySQL танҳо ба хотири хондани таърих ҳанӯз маъно надорад, зеро ҳар як дархости оддӣ, ки бо ягон сабаб скани пурраро анҷом додан лозим аст, дар своп натиҷа медиҳад ва бисёр ман /О бор, ки аз руи он мо аз Заббикс мунтазам огохй мегирифтем.
Наздиктарин рақибони ClickHouse маҳсулоти сутунӣ ва миқёспазири кушодаи Pinot ва Druid мебошанд. Дар мақола як кори аълои муқоисаи ин системаҳо нашр шудааст Романа Левентова аз 1 феврали соли 2018