â see on veergupĂ”hine andmebaaside haldussĂŒsteem, mis on loodud Yandexi poolt ja mĂ”eldud veebipĂ”histe analĂŒĂŒtiliste pĂ€ringute (OLAP) töötlemiseks avatud lĂ€htekoodiga. Seda kasutavad Yandex, CloudFlare, VK.com, Badoo ja teised teenused ĂŒle kogu maailma, et salvestada tĂ”eliselt suuri andmemahtusid (tuhandete ridade sisestamine sekundis vĂ”i petabaidid andmeid, mis on salvestatud kettale).
Tavaliselt, "rea" andmebaasi haldussĂŒsteemides, nagu MySQL, Postgres, MS SQL Server, on andmed salvestatud sellises jĂ€rjekorras:

Samas salvestatakse ĂŒhe rea vÀÀrtused fĂŒĂŒsiliselt koos. VeergupĂ”histes andmebaasi haldussĂŒsteemides hoitakse erinevate veergude vÀÀrtusi eraldi, samas kui ĂŒhe veeru andmed hoitakse koos:

VeergupÔhiste andmebaaside nÀideteks on Vertica, Paraccel (Actian Matrix, Amazon Redshift), Sybase IQ, Exasol, Infobright, InfiniDB, MonetDB (VectorWise, Actian Vector), LucidDB, SAP HANA, Google Dremel, Google PowerDrill, Druid, kdb+.
EttevĂ”te â meilifoorvarder hakkas kasutama Clickhouse'i 2018. aastal aruannete koostamiseks ja oli selle lihtsuse, skaleeritavuse, SQL-i toe ja kiirusest vĂ€ga positiivselt ĂŒllatunud. Selle andmebaasi töökiirus ulatus peaaegu maagiliseks.
Lihtsus
Clickhouse installimine Ubuntu-s toimub ĂŒheainsa kĂ€suga. Kui oskate SQL-i, siis saate kohe alustada Clickhouse'i kasutamist oma vajaduste jaoks. Kuid see ei tĂ€henda, et saaksite lihtsalt MySQL-is "show create table" kĂ€sku kĂ€itada ja teha SQL-i kopeerimist Clickhouse'i.
VĂ”rreldes MySQL-iga on selle andmebaasi puhul olulised erinevused andmetĂŒĂŒpide mÀÀratlemises tabelite skeemides, seetĂ”ttu kulub teil siiski aega, et muuta tabelite skeemide mÀÀratlusi ja Ă”ppida tabelite mootoreid.
Clickhouse töötab suurepĂ€raselt ilma igasuguste tĂ€iendavate tarkvarade installimiseta, kuid kui soovite kasutada replikatsiooni, vajate ZooKeeper'i installimist. PĂ€ringute jĂ”udluse analĂŒĂŒs nĂ€itab suurepĂ€raseid tulemusi â sĂŒsteemi tabelid sisaldavad kogu teavet ja kĂ”ik andmed on saadaval vana ja igava SQL-i abil.
TÔhusus
- Clickhouse'i vÔrdlemine Vertica ja MySQL-ga serverikonfiguratsioonil: kaks soket IntelŸ XeonŸ CPU E5-2650 v2 @ 2.60GHz; 128 GiB RAM; md RAID-5 8 6TB SATA HDD-l, ext4.
- Clickhouse'i vÔrdlemine Amazon RedShift'i pilveteenusega.
- Kneeed blogist :

ClickHouse andmebaas omab vĂ€ga lihtsat disaini - kĂ”ik klastris olevad sĂ”lmed omavad sama funktsionaalsust ja kasutavad koordineerimiseks ainult ZooKeeperit. Me tĂ”stsime ĂŒles vĂ€ikese klastrite, kus oli mitu sĂ”lme ja tegime testimise, mille kĂ€igus leidsime, et sĂŒsteem omab ĂŒsna muljetavaldavat jĂ”udlust, mis vastab vĂ€idetud eelistele analĂŒĂŒtiliste andmebaaside bĂ€nĆĄmarkides. Otsustasime pĂ”hjalikumalt uurida ClickHouse'i aluseks olevat kontseptsiooni. Esimese probleemina teadusuuringute teel oli tööriistade puudumine ja ClickHouse'i kogukonna vĂ€hesus, seetĂ”ttu sĂŒvenesime selle andmebaasi disaini, et mĂ”ista, kuidas see töötab.
ClickHouse ei toeta andmete vastuvĂ”ttu otse Kafka'st, kuna see on lihtsalt andmebaas, seetĂ”ttu kirjutasime omaenda adapterite teenuse Go keeles. See luges Kafka'st kodeeritud sĂ”numeid Capân Proto, muundas need TSV-ks ja sisestas need pakettidena ClickHouse'i HTTP-liidese kaudu. Hiljem kirjutasime selle teenuse ĂŒmber, et kasutada Go raamatukogu koos ClickHouse'i enda liidesega jĂ”udluse tĂ”stmiseks. Pakettide vastuvĂ”tu jĂ”udlust hinnates leidsime ĂŒhe olulise asja - ClickHouse'i jĂ”udlus sĂ”ltub tugevalt paketi suurusest, see tĂ€hendab, samaaegselt sisestatud ridade arvust. Et mĂ”ista, miks see nii on, uurisime, kuidas ClickHouse andmeid salvestab.
ClickHouse'i peamine mootor, tÀpsemalt laudadeks kasutatavate mootorite perekond, on MergeTree. See mootor on kontseptuaalselt sarnane LSM algoritmiga, mida kasutatakse Google BigTable'is vÔi Apache Cassandra's, kuid see vÀldib vahepealse mÀlutabeli loomist ja kirjutab andmed otse kettale. See tagab suurepÀrase kirjutamise lÀbilaskevÔime, kuna iga sisestatud paket sorteeritakse ainult "peamise vÔtme" primary key jÀrgi, pressitakse kokku ja kirjutatakse kettale, et luua segment.
MĂ€lu tabeli vĂ”i mingisuguse âvĂ€rskuseâ andmete mĂ”iste puudumine tĂ€hendab, et andmeid saab vaid lisada; sĂŒsteem ei toeta muutmist ega kustutamist. Praegu on ainus viis andmete kustutamiseks nende kustutamine kalenderkuude kaupa, kuna segmendid ei ĂŒleta kunagi kuu piire. ClickHouse meeskond töötab aktiivselt selle funktsiooni kohandamise nimel. Teiselt poolt muudab see konfliktivabaks segmentide salvestamise ja liitmise, mistĂ”ttu vastuvĂ”tu lĂ€bilaskevĂ”ime suureneb lineaarselt paralleelsete sisestuste arvuga, kuni toimub I/O vĂ”i tuumade kĂŒllastus.
Kuid see asjaolu tĂ€hendab ka, et sĂŒsteem ei sobi vĂ€ikeste partiide jaoks, seega kasutatakse puhverdamiseks Kafka teenuseid ja sisestajaid. TĂ”enĂ€oliselt teeb ClickHouse taustal pidevalt segmente liitmist, nii et palju vĂ€ikeseid andmeosi ĂŒhendatakse ja salvestatakse rohkem kordi, seelĂ€bi suurendades kirjutamisintensiivsust. Samal ajal pĂ”hjustab liiga palju omavahel mitteseotud osi agressiivset sisestuste tootmise vĂ€hendamist, kuni liitmine jĂ€tkub. Oleme avastanud, et parim kompromiss reaalajas andmete vastuvĂ”tu ja vastuvĂ”tutootlikkuse vahel on vastuvĂ”tt tabelisse piiratud arvu sisestuste puhul sekundis.
Lugemise sooritusvĂ”ime vĂ”ti tabelites on indekseerimine ja andmete paiknemine kettal. ĂkskĂ”ik kui kiire on töötlemine, kui mootori tuleb skaneerida terabaitide kaupa andmeid kettalt ja kasutada neist vaid osa, vĂ”tab see aega. ClickHouse on veergude kaupa salvestav sĂŒsteem, seega iga segment sisaldab iga veeru jaoks faili, kus on sorteeritud vÀÀrtused iga rea kohta. Seega vĂ”ivad pĂ€ringus puuduvad terved veerud esmalt jÀÀda vahelt kĂ”rvale ning seejĂ€rel vĂ”ivad mĂ”ned rakud töötlemiseks toimuda paralleelselt vektoriseeritud tĂ€itmisega. TĂ€ieliku skaneerimise vĂ€ltimiseks on igal segmendil vĂ€ike indeksifail.
Arvestades, et kĂ”ik veerud on jĂ€rjestatud âpeamise vĂ”tmeâ jĂ€rgi, sisaldab indeksifail ainult mĂ€rgid (kinni pĂŒĂŒtud read) iga N-nda rea kohta, et neid isegi vĂ€ga suurte tabelite jaoks mĂ€lus hoida. NĂ€iteks vĂ”ib vaikeseaded seadistada nii, et âmĂ€rkida iga 8192. reaâ, siis ânĂ”rkâ indekseerimine tabelisse, kus on 1 triljon rida, mis mahub kergesti mĂ€llu, vĂ”tab vaid 122 070 baiti.
SĂŒsteemi areng
Clickhouse'i arengu ja tĂ€iustamise jĂ€lgimine on vĂ”imalik ja nĂ€ha, et âkasvamisprotsessâ toimub muljetavaldava tempoga.

Populaarsus
Paistab, et Clickhouse'i populaarsus kasvab eksponentsiaalselt, eriti venekeelses kogukonnas. Eelmisel aastal toimunud konverents High load 2018 (Moskva, 8-9. november 2018) nĂ€itas, et sellised hiiglased nagu vk.com ja Badoo kasutavad Clickhouse'i, et sisestada andmeid (nt logisid) kĂŒmnetelt tuhandelt serverilt samal ajal. 40-minutilises videos . Peagi avaldame materjali mugavuse huvides Habrile.
Rakendusvaldkonnad
PĂ€rast seda, kui olen veidi aega uurimisele pĂŒhendanud, arvan, et on valdkondi, kus ClickHouse vĂ”ib olla kasulik vĂ”i suudab tĂ€ielikult asendada teisi, traditsioonilisemaid ja populaarsemaid lahendusi, nagu MySQL, PostgreSQL, ELK, Google Big Query, Amazon RedShift, TimescaleDB, Hadoop, MapReduce, Pinot ja Druid. Edasi on toodud ĂŒksikasjad ClickHouse'i kasutamise kohta nende andmebaaside moderniseerimiseks vĂ”i tĂ€ielikuks asendamiseks.
MySQL ja PostgreSQL vÔimekuse laiendamine
Hiljuti asendasime osaliselt MySQL-i ClickHouse'iga teadetetahvlite platvormil . Probleem oli see, et MySQL salvestas halva kujunduse tĂ”ttu iga saadetud kirja ja iga selle kirja linki base64-hashiga, luues tohutu MySQL tabeli (email_stats). PĂ€rast 10 miljoni kirja saatmist teenuse tellijatele kasvas selle tabeli suurus 150 GB peale ja MySQL hakkas aeglustuma lihtsate pĂ€ringute ajal. Probleemi lahendamiseks failiruumi osas kasutasime edukalt InnoDB tabeli kokkusurumist, mis vĂ€hendas selle mahtu 4 korda. Kuid pole mĂ”tet hoida MySQL-is ĂŒle 20-30 miljoni e-kirja vaid ajaloosse vaatamiseks, kuna iga lihtne pĂ€ring, mis mingil pĂ”hjusel peab teostama tĂ€ieliku skaneerimise, viib vahetusse ja suurenenud I/O koormuseni, millest saime regulaarselt Zabbixi hoiatusi.

Clickhouse kasutab kahte kokkusurumise algoritmi, mis vÀhendavad andmemahtu umbes , kuid antud juhul olid andmed eriti "kokkusurutavad".

ELK asendamine
Oma kogemustest lĂ€htuvalt nĂ”uab ELK (ElasticSearch, Logstash ja Kibana, antud juhul ElasticSearch) kasutamine palju rohkem ressursse, kui on vajalik logide salvestamiseks. ElasticSearch on suurepĂ€rane mootor, kui vajate head tĂ€isteksti otsingut logides (aga ma ei usu, et see tĂ”eliselt vajalik on), kuid mind huvitab, miks sellest on de-facto saanud standardne logide haldamise mootor. Selle vastuvĂ”tu tulemuslikkus koos Logstashiga tekitas meile probleeme isegi ĂŒsna vĂ€ikeste koormuste korral ja nĂ”udis pidevat suurema RAM-i ja kettaruumi lisamist. Andmebaasina on Clickhouse parem kui ElasticSearch jĂ€rgmiste pĂ”hjuste tĂ”ttu:
- SQL-dialekti tugi;
- Parim andmete salvestamise kokkusurumise mÀÀr;
- Regex regulaaravaldiste otsimise tugi, mitte tÀisteksti otsimise tugi;
- Parandatud pĂ€ringute planeerimine ja ĂŒldine kĂ”rgem jĂ”udlus.
Praegu on suurim probleem ClickHouse'i vĂ”rdlemisel ELK-ga logide transportimise lahenduste puudumine ning selle teema dokumentatsiooni ja juhendite nappus. Sellegipoolest saab iga kasutaja ELK-d seadistada Digital Ocean'i juhendi abil, mis on vĂ€ga oluline selliste tehnoloogiate kiireks rakendamiseks. Siin on andmebaasimootor, kuid Filebeat'i tugi ClickHouse'i jaoks puudub. Jah, seal on olemas ja logide töötlemiseks mĂ”eldud sĂŒsteem , on olemas tööriist , et edastada logifailide andmeid ClickHouse'i, kuid see nĂ”uab rohkem aega. Siiski jÀÀb ClickHouse oma lihtsuse tĂ”ttu liidriks, mistĂ”ttu ka algajad suudavad selle paigaldada ja kasutada tĂ€ielikult vaid kĂŒmne minutiga.
Eelistades minimalistlikke lahendusi, proovisin kasutada FluentBit'i, tööriista, mis edastab logisid vĂ€ga vĂ€ikese mĂ€lukasutusega, koos ClickHouse'iga, samal ajal pĂŒĂŒdes vĂ€ltida Kafka kasutamist. Siiski tuleb lahendada mĂ”ned vĂ€iksed ĂŒhilduvusprobleemid, nĂ€iteks , enne kui seda saab teha ilma vahetegemise kihita, mis konverteerib andmed FluentBit'ist ClickHouse'i.
Alternatiivselt saab ClickHouse'i kasutada ka Kibana tagaplaanina . Nii palju kui ma aru sain, vĂ”ivad sellega kaasneda jĂ”udlusprobleemid, kui renderdatakse tohutul hulgal andmepunkte, eriti vanemate Grafana versioonide puhul. Me Qwintry's pole seda veel proovinud, kuid kaebusi selle ĂŒle ilmneb aeg-ajalt ClickHouse'i tugikanalis Telegramis.
Google Big Query ja Amazon RedShift asendamine (lahendus suurtele ettevÔtetele)
BigQuery ideaalne kasutusjuht on 1 TB JSON-andmete ĂŒleslaadimine ja nende peal analĂŒĂŒsikĂŒsimuste tegemine. Big Query on suurepĂ€rane toode, mille skaleeritavust on raske ĂŒle hinnata. See on palju keerukam tarkvara kui ClickHouse, mis töötab sisemises klastris, kuid kliendi seisukohalt on sellel palju ĂŒhist ClickHouse'iga. BigQuery vĂ”ib kiiresti "kulukaks" muutuda, kui hakkate maksma iga SELECT'i eest, seega on see tĂ”eline SaaS-lahendus oma kĂ”igi plusside ja miinustega.
ClickHouse on parim valik juhul, kui tĂ€idate palju arvutuslikult kallis kĂŒsimusi. Mida rohkem SELECT-i kĂŒsimusi te iga pĂ€ev esitate, seda rohkem mĂ”tet on asendada Big Query ClickHouse'iga, sest see vahetamine aitab teil sÀÀsta tuhandeid dollareid, kui tegemist on paljude terabaitide töödeldud andmetega. See ei kehti salvestatud andmete kohta, mille töötlemine Big Query's on suhteliselt odav.
Altinity kaasasutaja Aleksandr Zaitsevi artiklis rÀÀgitakse sellise andmebaasi migreerimise eelistest.
TimescaleDB asendamine
TimescaleDB on PostgreSQLi laiendamine, mis optimeerib ajajÀrkude töötlemist tavalises andmebaasis., ).
Kuigi ClickHouse ei ole tĂ”sine konkurent ajajoone nurgas, on see veergude struktuuri ja vektorkĂŒsimuste tĂ€itmise tĂ”ttu analĂŒĂŒtiliste pĂ€ringute töötlemisel enamasti TimescaleDB-st kolm korda kiirem. Lisaks on ClickHouse'i partiide andmete vastuvĂ”tu jĂ”udlus umbes kolm korda parem ning see kasutab 20 korda vĂ€hem kettaruumi, mis on tĂ”eliselt oluline suurte ajalooliste andmete töötlemiseks..
Erinevalt ClickHouse'ist on TimescaleDB-s ainus viis natuke kettaruumi kokku hoida ZFS-i vĂ”i sarnaste failisĂŒsteemide kasutamine.
Tulevased ClickHouse'i tÀiustused toovad tÔenÀoliselt sissetulekud, mille kaudu see on veelgi sobivam ajajÀrkude andmete töötlemiseks ja salvestamiseks. TimescaleDB vÔib olla parem valik kui "puhas" ClickHouse jÀrgmistes olukordades:
- vÀiksed installatsioonid vÀga vÀikese mÀlumahtuga (<3 GB);
- suur hulk vÀikeseid INSERT-e, mida te ei soovi suurtesse fragmentidesse puhuda;
- parem jĂ€rjepidevus, ĂŒhtsus ja ACID-nĂ”uded;
- PostGIS-i tugi;
- integreerimine olemasolevate PostgreSQL-tabelitega, kuna TimescaleDB on pÔhimÔtteliselt PostgreSQL.
konkurents Hadoopi ja MapReduce sĂŒsteemide vahel.
Hadoop ja teised MapReduce tooted suudavad tĂ€ita mitmeid keerukaid arvutusi, kuid tavaliselt töötavad nad tohutu viivitusega. ClickHouse lahendab selle probleemi, töötlemata terabaitide andmeid ja andes tulemuse peaaegu koheselt. SeetĂ”ttu on ClickHouse oluliselt tĂ”husam kiire, interaktiivse analĂŒĂŒtilise uuringu teostamiseks, mis peaks andmeanalĂŒĂŒtikute huvi Ă€ratama.
konkurents Pinot ja Druidiga.
ClickHouse'i lĂ€himad konkurendid on veergude lineaarsete avatud allikate tooted Pinot ja Druid. Hea töö nende sĂŒsteemide vĂ”rdluses on avaldatud artiklis 1. veebruar 2018.

See artikkel vajab vĂ€rskendamist â see ĂŒtleb, et ClickHouse ei toeta UPDATE ja DELETE operatsioone, mis ei ole viimaste versioonide kohta pĂ€ris Ă”iged.
Meil puudub piisav kogemus nende andmebaasidega, kuid mulle ei meeldi ĂŒldse keerulisus, mida infrastruktuur nĂ”uab Druid ja Pinot kĂ€ivitamiseks â seal on terve rida âliikumaÌisi osiâ, ĂŒmbritsetud Java'ga igast kĂŒljest.
Druid ja Pinot on Apache'i inkubaatoriprojektid, mille arengut kajastatakse ĂŒksikasjalikult Apache'i projektide GitHubi lehtedel. Pinot ilmus inkubaatorisse oktoobris 2018, samas kui Druid sĂŒndis kaheksa kuud varem â veebruaris.
Teave AFSi toimimise kohta puudub ja see tekitab minus mitmeid, ja vĂ”ib-olla ka tobedaid, kĂŒsimusi. Kas Pinot'i autorid on mĂ€rganud, et Apache Foundation on Druidile palju vastuolulisem kui Pinot'ile, ning kas see on tekitanud nende seas kadedust? Kas Druid'i areng aeglustub ja Pinot'i areng kiireneb, kui esimese toetajad Ă€kki teise vastu huvi tunnevad?
ClickHouse'i puudused
KĂŒpsus: on ilmne, et see on endiselt lĂ”bus tehnoloogia, kuid igal juhul ei tĂ€heldata midagi sarnast teistes veergandmebaasides.
VĂ€ikesed lisandid töötavad kĂ”rge kiirusel halvasti: lisandid tuleks jagada suurteks tĂŒkkideks, kuna vĂ€ikeste lisandite efektiivsus vĂ€heneb proportsionaalselt iga rea veergude arvule. Just nii ClickHouse salvestab andmeid kettale â iga veerg tĂ€hendab 1 faili vĂ”i rohkem, seetĂ”ttu tuleb 1 rea lisamiseks, mis sisaldab 100 veergu, avada ja kirjutada vĂ€hemalt 100 faili. SellepĂ€rast on lisandite vahemĂ€lu jaoks vajalik vahendaja (kui klient iseenesest vahemĂ€lu ei paku) â tavaliselt on see Kafka vĂ”i mĂ”ni jĂ€rjekorratehnoloogia. Samuti vĂ”ib kasutada Buffer table'i mootorit, et hiljem kopeerida suured andmefraktsioonid MergeTree tabelitesse.
Tabelite ĂŒhendused on piiratud serveri mĂ€luga, kuid vĂ€hemalt on need seal! NĂ€iteks Druid ja Pinot ei oma selliseid ĂŒhendusi, kuna neid on raske rakendada jaotatud sĂŒsteemides, mis ei toeta suurte andmete tĂŒkikeste liikumist sĂ”lmede vahel.
JĂ€reldused
JĂ€rgnevatel aastatel kavatseme Qwintrys laialdaselt kasutada ClickHouse'i, kuna see andmebaasisĂŒsteem pakub suurepĂ€rast tasakaalu jĂ”udluse, madalate kulude, skaleeritavuse ja lihtsuse vahel. Olen peaaegu kindel, et see hakkab kiiresti levinema, kui ClickHouse'i kogukond leiab rohkem viise selle kasutamiseks vĂ€ikestes ja keskmistes installatsioonides.
Veidi reklaami đ
AitÀh, et olete meiega. Kas teile meeldivad meie artiklid? Kas soovite nÀha rohkem huvitavat sisu? Toetage meid, tellides teenuse vÔi soovitades meid tuttavatele. , ainulaadne entry-level serverite analoog, mille oleme teie jaoks vÀlja mÔelnud: (saadaval RAID1 ja RAID10 variandid, kuni 24 tuuma ja kuni 40GB DDR4).
Dell R730xd on Equinixi Tier IV andmekeskuses Amsterdamis kaks korda odavam? Ainult meie juures Hollandis! Dell R420 â 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB â alates $99! Lugege sellest
Allikas: habr.com
