Ho fallela ClickHouse: Lilemo tse 3 hamorao

Lilemong tse tharo tse fetileng Viktor Tarnavsky le Alexey Milovidov ba tsoang Yandex sethaleng Phahameng++ bolelletsoe, ClickHouse e ntle hakae, le hore na ha e fokotsehe joang. 'Me sethaleng se latelang ho ne ho le teng Alexander Zaitsev с tlaleha mabapi le ho fallela ho TlanyaHouse ho tsoa ho DBMS e 'ngoe ea tlhahlobo le ka qeto ea hore TlanyaHouse, ehlile, e ntle, empa ha e bonolo haholo. Ka 2016 khampani LifeStreet, moo Alexandere a neng a sebetsa ka nako eo, o ne a fetola mokhoa oa ho hlahloba li-petabyte tse ngata ho TlanyaHouse, e ne e le "tsela ea litene tse tšehla" e tsotehang e tletseng likotsi tse sa tsejoeng - TlanyaHouse ka nako eo ho ne ho bonahala eka ke lebala la liqhomane.

Lilemo tse tharo hamorao TlanyaHouse e ile ea e-ba molemo haholo - nakong ena Alexandere o thehile Altinity khampani, e sa thuseng feela batho ho fallela ho eona TlanyaHouse merero e mengata, empa hape e ntlafatsa sehlahisoa ka boeona hammoho le basebetsi-'moho le Yandex. Jwale TlanyaHouse e ntse e se ho itsamaela o sa tsotelle, empa ha e sa le lebala la liqhomane.

Alexander esale a sebetsa le litsamaiso tse ajoang ho tloha 2003, a nts'etsapele merero e meholo ho MySQL, Oracle и Vertica. Qetellong Phahameng ka ho Fetisisa++ 2019 Alexander, e mong oa bo-pula-maliboho ba ho sebelisa TlanyaHouse, e boletse hore na DBMS ena ke eng hona joale. Re tla ithuta ka likarolo tse kholo TlanyaHouse: e fapana joang le litsamaiso tse ling le hore na ke maemong afe moo e sebetsang haholoanyane ho e sebelisa. Re sebelisa mehlala, re tla sheba mekhoa ea morao-rao le e lekiloeng ea morero bakeng sa mekhoa ea ho haha ​​e thehiloeng ho TlanyaHouse.


Retrospective: se etsahetseng lilemong tse 3 tse fetileng

Lilemong tse tharo tse fetileng re ile ra fetisetsa khampani LifeStreet mabapi le TlanyaHouse ho tsoa ho database e 'ngoe ea tlhahlobo, le phallo ea marang-rang ea lipapatso e ne e shebahala tjena:

  • Phuptjane 2016. Ka Sesebelisoa sa OpenSource hlaha TlanyaHouse mme morero wa rona o ile wa qala;
  • Phato. Bopaki ba Khopolo: marang-rang a maholo a papatso, lisebelisoa tsa motheo le 200-300 terabytes ea data;
  • Mphalane. Lintlha tsa tlhahiso ea pele;
  • Tshitwe. Moroalo o felletseng oa sehlahisoa ke liketsahalo tse limilione tse likete tse 10-50 ka letsatsi.
  • Phuptjane 2017. Ho falla ho atlehileng ha basebelisi ho TlanyaHouse, 2,5 petabytes ea data ho sehlopha sa li-server tse 60.

Nakong ea ts'ebetso ea ho falla, ho ne ho e-na le kutloisiso e ntseng e hōla ea hore TlanyaHouse ke tsamaiso e ntle e monate ho sebetsa le eona, empa ena ke morero oa ka hare oa Yandex. Ka hona, ho na le li-nuances: Yandex e tla qala ho sebetsana le bareki ba eona ba ka hare 'me feela ka sechaba le litlhoko tsa basebelisi ba kantle,' me ClickHouse ha ea ka ea fihla boemong ba khoebo libakeng tse ngata tse sebetsang. Ke kahoo re thehileng Altinity ka Hlakubele 2017 ho etsa TlanyaHouse e potlakile ebile e bonolo haholoanyane eseng bakeng sa Yandex feela, empa le bakeng sa basebelisi ba bang. 'Me joale re:

  • Re koetlisa le ho thusa ho aha litharollo tse thehiloeng ho TlanyaHouse e le hore bareki ba se ke ba kena mathateng, le hore tharollo e qetelle e sebetsa;
  • Re fana ka tšehetso ea 24/7 TlanyaHouse- lisebelisoa;
  • Re iketsetsa merero ea rona ea tikoloho;
  • Re itlama ka mafolofolo ho rona TlanyaHouse, ho arabela likopo tsa basebelisi ba batlang ho bona likarolo tse itseng.

'Me ehlile, re thusa ka ho fallela TlanyaHouse с MySQL, Vertica, oracle, Greenplum, Lefapha la boipheliso le litsamaiso tse ling. Re bile le seabo metsamaong e fapaneng, mme kaofela e atlehile.

Ho fallela ClickHouse: Lilemo tse 3 hamorao

Ke hobane'ng ha u fallela ho TlanyaHouse

Ha e khoehlise! Lena ke lona lebaka le ka sehloohong. TlanyaHouse - database e potlakileng haholo bakeng sa maemo a fapaneng:

Ho fallela ClickHouse: Lilemo tse 3 hamorao

Litlhaloso tse sa reroang ho tsoa ho batho ba 'nileng ba sebetsa le batho ka nako e telele TlanyaHouse.

Scalability. Sebakeng se seng sa database u ka fihlela ts'ebetso e ntle karolong e le 'ngoe ea Hardware, empa TlanyaHouse o ka seke oa seke oa otlolohile feela, empa hape o otlolohile, feela ka ho eketsa li-server. Ntho e 'ngoe le e' ngoe ha e sebetse hantle kamoo re ka ratang kateng, empa e ea sebetsa. U ka eketsa sistimi ha khoebo ea hau e ntse e hola. Ke habohlokoa hore re se ke ra lekanyetsoa ke tharollo hona joale 'me kamehla ho na le monyetla oa ho ntlafatsa.

Portability. Ha ho na kamano ho ntho e le 'ngoe. Ka mohlala, ka Redshift ea Amazon Ho thata ho fallela kae-kae. A TlanyaHouse u ka e kenya ho laptop ea hau, seva, u e sebelise ho leru, u ee ho Kubernetes - ha ho na lithibelo ts'ebetsong ea lisebelisoa tsa motheo. Sena se loketse motho e mong le e mong, 'me ona ke monyetla o moholo oo li-database tse ling tse ngata tse tšoanang li ke keng tsa ithorisa ka oona.

Ho feto-fetoha le maemo. TlanyaHouse ha e emise nthong e le 'ngoe, mohlala, Yandex.Metrica, empa e ntse e tsoela pele ebile e sebelisoa mererong le liindastering tse ngata tse fapaneng. E ka atolosoa ka ho eketsa bokhoni bo bocha ho rarolla mathata a macha. Ka mohlala, ho lumeloa hore ho boloka lits'oants'o tsa polokelo ea boitsebiso ke mekhoa e mebe, kahoo ba tlile le eona Elasticsearch. Empa ka lebaka la ho tenyetseha TlanyaHouse, u ka boela ua boloka li-log ho eona, 'me hangata sena se molemo le ho feta ho Elasticsearch - ka hare TlanyaHouse sena se hloka tšepe ka makhetlo a 10.

Mahala Mohloli o Hlahileng. Ha ho hlokahale hore u lefelle letho. Ha ho na tlhoko ea ho buisana ka tumello ea ho kenya sistimi ho laptop kapa seva ea hau. Ha ho litefiso tse patiloeng. Ka nako e ts'oanang, ha ho na theknoloji e 'ngoe ea Open Source database e ka qothisanang lehlokoa le eona TlanyaHouse. MySQL, MariaDB, Greenplum - kaofela ba lieha haholo.

Sechaba, khanna le monate. Ho TlanyaHouse sechaba se setle: likopano, lipuisano le Alexey Milovidov, ea re qosang bohle ka matla le tšepo ea hae.

Ho fallela ClickHouse

Ho ea ho TlanyaHouse ka lebaka le itseng, o hloka lintho tse tharo feela:

  • Utloisisa mefokolo TlanyaHouse le seo e sa lokelang bakeng sa sona.
  • Nka monyetla thekenoloji le matla a eona a maholohali.
  • Teko. Esita le ho utloisisa hore na e sebetsa joang TlanyaHouse, ha se kamehla ho ka khonehang ho bolela esale pele hore na e tla potlaka neng, hore na e tla lieha neng, e tla ba betere neng le hore na e tla mpefala neng. Kahoo leka.

Bothata ba ho sisinyeha

Ho na le "empa" e le 'ngoe feela: haeba u fallela ho TlanyaHouse ho tsoa ho ntho e 'ngoe, ebe hangata ho na le ntho e sa tsamaeeng hantle. Re tloaetse mekhoa le lintho tse sebetsang sebakeng sa rona sa polokelo ea litaba tseo re li ratang. Ka mohlala, mang kapa mang ea sebetsang le eena SQLi-database tsa L li nka sete e latelang ea mesebetsi e tlamang:

  • ditransekshene;
  • litšitiso;
  • tsitsipano;
  • indices;
  • HLAKOLA/HLAKOLA;
  • NAKO;
  • milliseconds;
  • mefuta ea othomathike;
  • ho kopanya tse ngata;
  • li-partitions tse sa tloaelehang;
  • lisebelisoa tsa tsamaiso ea lihlopha.

Ho hira hoa hlokahala, empa lilemo tse tharo tse fetileng TlanyaHouse Ha ho le e 'ngoe ea mesebetsi ena e neng e fumaneha! Hona joale ka tlase ho halofo ea tse e-s'o kenngoe ts'ebetsong e ntse e le: litšebelisano, litšitiso, Consistency, milliseconds le mofuta oa ho hlahisa.

Mme ntho e ka sehloohong ke hore ho TlanyaHouse litloaelo le mekhoa e meng e tloaelehileng ha e sebetse kapa e sebetsa ka tsela e fapaneng le eo re e tloaetseng. Tsohle tse hlahang ho TlanyaHouse, e tsamaellana le "Tsela ea ClickHouse", ke. mesebetsi e fapana ho tsoa ho li-database tse ling. Ka mohlala:

  • Li-index ha li khethoe, empa lia tlotsoa.
  • HLAKOLA/HLAKOLA eseng synchronous, empa asynchronous.
  • Ho na le likhokahano tse ngata, empa ha ho na moralo oa lipotso. Tsela eo li etsoang ka eona ka nako eo hangata ha e hlake ho batho ba tsoang lefats'eng la database.

Lingoloa tsa ClickHouse

Ka 1960, setsebi sa lipalo sa Amerika se tsoang Sehungary Wigner EP o ngotse sehlooho "Katleho e sa utloahaleng ea lipalo ho mahlale a tlhaho” (“The Incomprehensing Effectiveness of Mathematics in the Natural Science”) hore ka mabaka a itseng lefatše le re potolohileng le hlalosoa hantle ke melao ea lipalo. Mathematics ke saense e sa utloahaleng, 'me melao ea tlhaho e hlalosoang ka mokhoa oa lipalo ha se manyane,' me Wigner EP a hatisa hore sena se makatsa haholo.

Ho ea ka pono ea ka, TlanyaHouse - mohlolo o tšoanang. Ho fetolela Wigner hape, re ka bua sena: ts'ebetso e ke keng ea nahanoa ea hlolla TlanyaHouse ka mefuta e mengata e fapaneng ea ts'ebeliso ea tlhahlobo!

Ho fallela ClickHouse: Lilemo tse 3 hamorao

Ka mohlala, ha re nkeng Sebaka sa polokelo ea data ea Nako ea 'Nete, eo data e kenngoa ho eona hoo e batlang e sa khaotse. Re batla ho amohela likopo ho tsoa ho eona ka tieho ea bobeli. Ka kopo - e sebelise TlanyaHouse, hobane ena ke boemo boo e neng e etselitsoe bona. TlanyaHouse ena ke tsela eo e sebelisoang ka eona eseng feela ho webosaete, empa hape le litlhahlobong tsa papatso le tsa lichelete, AdTech, hammoho le ho Ho lemoha bomenemenen. IN Sebaka sa polokelo ea data ea nako ea 'nete ho sebelisoa morero o rarahaneng o hlophisitsoeng joalo ka "naleli" kapa "snowflake", litafole tse ngata tse nang le ETSA (ka linako tse ling tse ngata), 'me data hangata e bolokoa le ho fetoloa lits'ebetsong tse ling.

Ha re nkeng boemo bo bong hape - Letoto la Nako: tlhokomelo ea lisebelisoa, marang-rang, lipalo-palo tsa tšebeliso, Inthanete ea Lintho. Mona re kopana le liketsahalo tse bonolo tse hlophisitsoeng ka nako. TlanyaHouse ha e ea qalisoa bakeng sa sena, empa e iponahalitse e sebetsa hantle, ke ka lebaka leo lik'hamphani tse kholo li sebelisang TlanyaHouse joalo ka polokelo ea tlhaiso-leseling. Ho hlahloba hore na e loketse TlanyaHouse bakeng sa letoto la nako, re entse benchmark ho latela mokhoa le liphetho InfluxDB и LinakoDDB - e khethehileng letoto la nako databases. Ho ile ha fumaneha, joalo TlanyaHouse, le ntle le ts'ebetso ea mesebetsi e joalo, e hapa lebaleng la kantle ho naha:

Ho fallela ClickHouse: Lilemo tse 3 hamorao

В letoto la nako Hangata ho sebelisoa tafole e moqotetsane - litšiea tse 'maloa tse nyane. Lintlha tse ngata li ka tsoa ho beha leihlo - lirekoto tse limilione ka motsotsoana - 'me hangata li hlaha ka ho phatloha ho honyenyane (hona joale phallo). Ka hona, ho hlokahala mongolo o fapaneng oa ho kenya, 'me lipotso ka botsona li na le lintlha tsa tsona tse tobileng.

Log Management. Ho bokella lits'oants'o ho database hangata ho fosahetse, empa TlanyaHouse sena se ka etsoa ka litlhaloso tse ling tse hlalositsoeng ka holimo. Lik'hamphani tse ngata li sebetsa TlanyaHouse hantle bakeng sa morero ona. Tabeng ena, re sebelisa tafole e pharaletseng e bataletseng moo re bolokang lifate tsohle (mohlala, ka foromo JSON), kapa khaola likotoana. Hangata data e kenngoa ka lihlopha tse kholo (lifaele), 'me re batla ka libaka tse ling.

Bakeng sa e 'ngoe le e' ngoe ea mesebetsi ena, hangata ho sebelisoa li-database tse khethehileng. TlanyaHouse motho a ka li etsa tsohle le ka bokhabane hoo a li fetang. A re ke re hlahlobeng ka hloko letoto la nako scenario, le mokhoa oa ho "pheha" ka nepo TlanyaHouse bakeng sa boemo bona.

Letoto la Nako

Hajoale sena ke boemo bo ka sehloohong boo TlanyaHouse ho nahanoa ka tharollo e tloaelehileng. Letoto la nako ke letoto la diketsahalo tse hlophilweng ka nako, tse emelang diphetoho tshebetsong e itseng ka nako. Ka mohlala, sena e ka ba lebelo la pelo ka letsatsi kapa palo ea mekhoa ea tsamaiso. Ntho e 'ngoe le e' ngoe e fanang ka nako ea li-ticks ka litekanyo tse itseng e letoto la nako:

Ho fallela ClickHouse: Lilemo tse 3 hamorao

Bongata ba mefuta ena ea liketsahalo bo tsoa ho beha leihlo. Sena e ka se be ho beha leihlo marang-rang feela, empa le lisebelisoa tsa 'nete: likoloi, litsamaiso tsa indasteri, IoT, lifeme kapa litekesi tse sa sebetsoeng, ka kutu eo Yandex e seng e ntse e e beha TlanyaHouse-server.

Ka mohlala, ho na le lik'hamphani tse bokellang data ho tloha likepe. Metsotsoana e meng le e meng e seng mekae, lisensara ka sekepeng sa lijana li romela litekanyo tse makholo tse fapaneng. Baenjineri ba li ithuta, ba haha ​​mehlala le ho leka ho utloisisa hore na sekepe se sebelisoa hantle hakae, hobane sekepe sa lijana ha sea lokela ho lula se sa sebetse le motsotsoana. Nako leha e le efe ea ho theoha ke tahlehelo ea chelete, kahoo ke habohlokoa ho bolela esale pele tsela e le hore ho emisa ho fokotsehe.

Matsatsing ana ho na le kholo ea li-database tse khethehileng tse lekanyang letoto la nako. Sebakeng DB-Dienjini Li-database tse fapaneng li behiloe ka tsela e itseng, 'me u ka li sheba ka mofuta:

Ho fallela ClickHouse: Lilemo tse 3 hamorao

Mofuta o holang ka potlako ke letoto la nakos. Li-database tsa kerafo le tsona lia hola, empa letoto la nakoe ntse e hola ka potlako lilemong tse 'maloa tse fetileng. Baemeli ba tloaelehileng ba lelapa lena la database ke InfluxDB, Prometheus, KDB, LinakoDDB (e hahiloe ka PostgreSQL), tharollo e tsoang ho Amazon. TlanyaHouse e ka sebelisoa le mona, 'me ea sebelisoa. E-re ke u fe mehlala e seng mekae ea sechaba.

E mong oa bo-pula-maliboho ke k'hamphani CloudFlare (CDN-moabi). Ba hlokomela tsa bona CDN ho pholletsa TlanyaHouse (DNS- likopo, http-Quries) ka mojaro o moholo - liketsahalo tse limilione tse 6 motsotsoana. Tsohle lia feta Kafka, e ea TlanyaHouse, e fanang ka monyetla oa ho bona li-dashboard tsa liketsahalo tsamaisong ka nako ea sebele.

Comcast - e mong oa baeta-pele ba lipuisano tsa mehala USA: Inthanete, thelevishene ea digital, thelefono. Ba thehile tsamaiso e tšoanang ea taolo CDN ka hara moralo Mohloli o Hlahileng morero Taolo ea Sephethephethe ea Apache ho sebetsa le data ea hau e kholo. TlanyaHouse e sebedisoang joalo ka morao-rao bakeng sa li-analytics.

percona e hahiloeng ka TlanyaHouse ka hare ho hao PMMho boloka tlhokomelo ea tse fapa-fapaneng MySQL.

Litlhoko tse Khethehileng

Li-database tsa letoto la nako li na le litlhoko tsa tsona tse ikhethileng.

  • Ho kenngoa ka potlako ho tsoa ho baemeli ba bangata. Re tlameha ho kenya data ho tsoa melapong e mengata kapele haholo. TlanyaHouse E etsa sena hantle hobane tsohle tsa eona tse kentsoeng ha li thibele. Leha e le efe kenya ke faele e ncha ho disk, 'me lintho tse nyenyane tse kentsoeng li ka bolokoa ka tsela e' ngoe kapa e 'ngoe. IN TlanyaHouse Ho molemo ho kenya data ka lihlopha tse kholo ho e-na le mola o le mong ka nako.
  • Sekema se feto-fetohang. The letoto la nako hangata ha re tsebe sebopeho sa data ka botlalo. Hoa khoneha ho aha mokhoa oa ho beha leihlo bakeng sa kopo e itseng, empa joale ho thata ho e sebelisa bakeng sa kopo e 'ngoe. Sena se hloka leano le tenyetsehang haholoanyane. TlanyaHouse, e u lumella ho etsa sena, le hoja e le setsi se thaelitsoeng ka matla.
  • Ho boloka hantle le ho lebala data. Hangata ka letoto la nako palo e kholo ea data, kahoo e tlameha ho bolokoa ka katleho kamoo ho ka khonehang. Ka mohlala, ho InfluxDB compression e ntle ke tšobotsi ea eona e ka sehloohong. Empa ntle le ho boloka, o boetse o hloka ho khona ho "lebala" data ea khale le ho etsa mofuta o itseng oa ho theola mohlala - ho bala ka boiketsetso ba likakaretso.
  • Lipotso tse potlakileng ho data e kopaneng. Ka linako tse ling hoa thahasellisa ho sheba metsotso e 5 ea ho qetela ka ho nepahala ha milliseconds, empa motsotso oa khoeli le khoeli oa data kapa granularity ea bobeli e ka 'na ea se ke ea hlokahala - lipalo-palo tse akaretsang li lekane. Ts'ehetso ea mofuta ona ea hlokahala, ho seng joalo kopo ea likhoeli tse 3 e tla nka nako e telele ho e phethela TlanyaHouse.
  • Likopo tse kang "ntlha ea ho qetela, joalo ka ea». Tsena li tloaelehile bakeng sa letoto la nako queries/ Ketso ya ho sheba: sheba tekanyo ya ho qetela kapa boemo ba tsamaiso ka nako e itseng t. Tsena ha se lipotso tse monate haholo bakeng sa database, empa hape o hloka ho khona ho li etsa.
  • "Gluing" letoto la nako. Letoto la nako ke letoto la nako. Haeba ho na le lihlopha tse peli tsa nako, hangata li hloka ho hokahanngoa le ho amahanngoa. Ha ho bonolo ho etsa sena ho li-database tsohle, haholo-holo ka letoto la nako le sa arolelanoeng: lintlha tsa nako ke tsena, ho na le tse ling. U ka nahana ka karolelano, empa ka tšohanyetso ho tla be ho ntse ho e-na le sekoti moo, kahoo ha e hlake.

A re boneng hore na litlhokahalo tsena li fihleloa joang TlanyaHouse.

Scheme

В TlanyaHouse morero bakeng sa letoto la nako e ka etsoa ka litsela tse fapaneng, ho itšetlehile ka tekanyo ea ho tloaeleha ha data. Hoa khonahala ho theha sistimi ho data e tloaelehileng ha re tseba metrics kaofela esale pele. Ka mohlala, ke entse sena CloudFlare ka ho beha leihlo CDN ke sistimi e ntlafalitsoeng hantle. U ka haha ​​​​sistimi e akaretsang haholoanyane e hlokomelang lits'ebeletso tsohle le lits'ebeletso tse fapaneng. Tabeng ea data e sa tloaelehang, ha re tsebe esale pele hore na re beha leihlo eng - mme mohlomong ena ke eona e tloaelehileng haholo.

Lintlha tse tloaelehileng. Likholomo. Morero o bonolo - litšiea tse nang le mefuta e hlokahalang:

CREATE TABLE cpu (
  created_date Date DEFAULT today(),  
  created_at DateTime DEFAULT now(),  
  time String,  
  tags_id UInt32,  /* join to dim_tag */
  usage_user Float64,  
  usage_system Float64,  
  usage_idle Float64,  
  usage_nice Float64,  
  usage_iowait Float64,  
  usage_irq Float64,  
  usage_softirq Float64,  
  usage_steal Float64,  
  usage_guest Float64,  
  usage_guest_nice Float64
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);

Ena ke tafole e tloaelehileng e hlokomelang mofuta o mong oa ts'ebetso ea ho kenya sistimi (user want-meet.ru, tsamaiso, ha e sebetse, ntle). E bonolo ebile e bonolo, empa e sa tenyetsehe. Haeba re batla moralo o feto-fetohang haholoanyane, re ka sebelisa li-arrays.

Lintlha tse sa tloaelehang. Lihlopha:

CREATE TABLE cpu_alc (
  created_date Date,  
  created_at DateTime,  
  time String,  
  tags_id UInt32,  
  metrics Nested(
    name LowCardinality(String),  
    value Float64
  )
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);

SELECT max(metrics.value[indexOf(metrics.name,'usage_user')]) FROM ...

sebopeho sa Sehlaha li na le lihlopha tse peli: metrics.lebitso и metrics.boleng. Mona o ka boloka lintlha tse joalo tsa ho beha leihlo joalo ka lethathamo la mabitso le litekanyo tse ngata bakeng sa ketsahalo ka 'ngoe. Bakeng sa ntlafatso e eketsehileng, ho e-na le mohaho o le mong o joalo, o ka etsa tse 'maloa. Ka mohlala, e 'ngoe bakeng sa phaphametse- bohlokoa, e 'ngoe - bakeng sa eth-ho bolela hobane eth Ke batla ho boloka ka mokhoa o atlehileng haholoanyane.

Empa ho thata haholo ho fihlella sebopeho se joalo. U tla tlameha ho sebelisa moaho o khethehileng, u sebelisa mesebetsi e ikhethang ho hula boleng ba index pele ebe sehlopha:

SELECT max(metrics.value[indexOf(metrics.name,'usage_user')]) FROM ...

Empa e ntse e sebetsa ka potlako. Mokhoa o mong oa ho boloka data e sa tloaelehang ke ka mola.

Lintlha tse sa tloaelehang. Likhoele. Ka mokhoa ona oa setso, ntle le li-array, mabitso le litekanyetso li bolokoa ka nako e le 'ngoe. Haeba litekanyo tse 5 li tsoa sesebelisoa se le seng ka nako e le 'ngoe, mela e 000 e hlahisoa polokelong ea boitsebiso:

CREATE TABLE cpu_rlc (
  created_date Date,  
  created_at DateTime,  
  time String,  
  tags_id UInt32,  
  metric_name LowCardinality(String),  
  metric_value Float64
) ENGINE = MergeTree(created_date, (metric_name, tags_id, created_at), 8192);


SELECT 
    maxIf(metric_value, metric_name = 'usage_user'),
    ... 
FROM cpu_r
WHERE metric_name IN ('usage_user', ...)

TlanyaHouse e sebetsana le sena - e na le lisebelisoa tse khethehileng TlanyaHouse SQL. Mohlala maxIf - mosebetsi o khethehileng o balang boholo ka metric ha boemo bo itseng bo fihletsoe. U ka ngola lipolelo tse joalo tse 'maloa kopong e le' ngoe 'me hang-hang u bale boleng ba metrics e mengata.

A re bapiseng mekhoa e meraro:

Ho fallela ClickHouse: Lilemo tse 3 hamorao

lintlha tse qaqileng

Mona ke kentse "Disk Data Size" bakeng sa sete ea data ea liteko. Tabeng ea litšiea, re na le boholo bo fokolang ba data: khatello e phahameng ka ho fetisisa, lebelo le phahameng la ho botsa, empa re lefa ka ho rekota ntho e 'ngoe le e' ngoe hang-hang.

Tabeng ea li-arrays, ntho e 'ngoe le e' ngoe e mpe le ho feta. Lintlha li ntse li hatelloa hantle 'me mokhoa o sa tloaelehang o ka bolokoa. Empa TlanyaHouse - database ea columnar, 'me ha re qala ho boloka ntho e' ngoe le e 'ngoe ka bongata, e fetoha mola o le mong,' me re lefa bakeng sa ho feto-fetoha ha maemo ka katleho. Bakeng sa ts'ebetso efe kapa efe, o tla tlameha ho bala lethathamo lohle mohopolong, ebe o fumana ntho eo o e batlang ho eona - mme haeba sehlopha se ntse se hola, lebelo lea fokotseha.

Ho e 'ngoe ea lik'hamphani tse sebelisang mokhoa ona (mohlala, Uber), lihlopha li khaoloa likotoana tsa likarolo tse 128. Lintlha tse tsoang ho metrics tse likete tse 'maloa tse nang le palo ea 200 TB ea data/letsatsi ha li bolokoe ka mokhoa o le mong, empa ka lihlopha tse 10 kapa tse 30 tse nang le mohopolo o khethehileng oa polokelo.

Mokhoa o bonolo ka ho fetisisa ke oa likhoele. Empa data ha e hatellehe hantle, boholo ba tafole bo boholo, mme leha lipotso li thehiloe ho metrics tse 'maloa, ClickHouse ha e sebetse hantle.

Sekema sa Hybrid

A re nke hore re khethile potoloho e ngata. Empa ha re tseba hore boholo ba li-dashboards tsa rona li bonts'a feela metrics ea basebelisi le sistimi, re ka kenyelletsa metrics ena ka likholomo ho tsoa ho sehlopha se maemong a tafole ka tsela ena:

CREATE TABLE cpu_alc (
  created_date Date,  
  created_at DateTime,  
  time String,  
  tags_id UInt32,  
  metrics Nested(
    name LowCardinality(String),  
    value Float64
  ),
  usage_user Float64 
             MATERIALIZED metrics.value[indexOf(metrics.name,'usage_user')],
  usage_system Float64 
             MATERIALIZED metrics.value[indexOf(metrics.name,'usage_system')]
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);

Ha o kenya TlanyaHouse e tla li bala ka bo eona. Ka tsela ena o ka kopanya khoebo le monyaka: moralo o fetoha le maemo ebile o akaretsa, empa re ile ra ntša litšiea tse sebelisoang khafetsa. Hlokomela hore sena se ne se sa hloke ho fetola ho kenya le ETLe tswelang pele ho kenya mekgahlelo ka hara tafole. Re sa tsoa etsa joalo ALTER TABLE, e kentse libui tse 'maloa' me ra fumana sekema se nyalisitsoeng le se potlakileng seo u ka qalang ho se sebelisa hang-hang.

Codecs le compression

etsoe letoto la nako Hoa tsotelleha hore na u paka lintlha hantle hakae hobane tlhaiso-leseling e ka ba kholo haholo. IN TlanyaHouse Ho na le sete ea lisebelisoa ho fihlela phello ea compression ea 1:10, 1:20, 'me ka linako tse ling ho feta. Sena se bolela hore 1 TB ea data e sa koaloang ka disk e nka 50-100 GB. Boholo bo nyane bo lokile, data e ka baloa le ho sebetsoa kapele.

Ho fihlela boemo bo phahameng ba compression, TlanyaHouse e tšehetsa li-codec tse latelang:

Ho fallela ClickHouse: Lilemo tse 3 hamorao

Tafole ea mohlala:

CREATE TABLE benchmark.cpu_codecs_lz4 (
    created_date Date DEFAULT today(), 
    created_at DateTime DEFAULT now() Codec(DoubleDelta, LZ4), 
    tags_id UInt32, 
    usage_user Float64 Codec(Gorilla, LZ4), 
    usage_system Float64 Codec(Gorilla, LZ4), 
    usage_idle Float64 Codec(Gorilla, LZ4), 
    usage_nice Float64 Codec(Gorilla, LZ4), 
    usage_iowait Float64 Codec(Gorilla, LZ4), 
    usage_irq Float64 Codec(Gorilla, LZ4), 
    usage_softirq Float64 Codec(Gorilla, LZ4), 
    usage_steal Float64 Codec(Gorilla, LZ4), 
    usage_guest Float64 Codec(Gorilla, LZ4), 
    usage_guest_nice Float64 Codec(Gorilla, LZ4), 
    additional_tags String DEFAULT ''
)
ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);

Mona re hlalosa codec DoubleDelta ka nako e 'ngoe, ea bobeli - Gorilla, 'me ka sebele re tla eketsa tse ling LZ4 khatello. Ka lebaka leo, boholo ba data ho disk bo fokotsehile haholo:

Ho fallela ClickHouse: Lilemo tse 3 hamorao

Sena se bonts'a hore na data e ts'oanang e nka sebaka se kae, empa ho sebelisoa li-codec le likhatello tse fapaneng:

  • ka faele ea GZIP ho disk;
  • ho ClickHouse ntle le li-codec, empa ka compression ea ZSTD;
  • ho ClickHouse e nang le li-codec le compression LZ4 le ZSTD.

Hoa hlokomeleha hore litafole tse nang le li-codec li nka sebaka se senyenyane haholo.

Taba ea bohlokoa

Ha ho bohlokoa hakaalo ho khetha mofuta o nepahetseng oa data:

Ho fallela ClickHouse: Lilemo tse 3 hamorao

Mehlala eohle e ka holimo eo ke e sebelisitseng Phallela64. Empa haeba re khetha Phallela32, joale hoo ho ka ba molemo le ho feta. Sena se ile sa bontšoa hantle ke bashanyana ba Perkona sehloohong se hokahaneng ka holimo. Ho bohlokoa ho sebelisa mofuta o kopaneng ka ho fetesisa o loketseng mosebetsi: le ka tlase ho boholo ba disk ho feta lebelo la potso. TlanyaHouse e hlokolosi haholo ho sena.

Haeba u ka sebelisa ent32 sebakeng sa ent64, ebe o lebella keketseho e batlang e imena habeli ts'ebetsong. Lintlha li nka mohopolo o fokolang, 'me "arithmetic" eohle e sebetsa ka potlako haholo. TlanyaHouse ka hare ke sistimi e thaetsoeng ka thata haholo; e sebelisa haholo menyetla eohle eo litsamaiso tsa sejoale-joale li fanang ka tsona.

Aggregation le Pono ea lintho tse bonahalang

Lipono tse kopaneng le tse fetotsoeng li u lumella ho theha likakaretso bakeng sa liketsahalo tse fapaneng:

Ho fallela ClickHouse: Lilemo tse 3 hamorao

Mohlala, o kanna oa ba le data ea mohloli o sa kopanngoeng, 'me u ka hokela lipono tse fapaneng ho tsona ka ho itlhahisa ka enjine e khethehileng. SummingMergeTree (SMT). SMT ke sebopeho se ikhethileng sa data se kopanyang ka bohona. Lintlha tse tala li kengoa polokelong ea litaba, li bokelloa ka bo eona, 'me li-dashboard li ka sebelisoa hang-hang ho eona.

TTL - "lebala" data ea khale

Mokhoa oa ho "lebala" data e seng e sa hlokehe? TlanyaHouse tseba ho etsa sena. Ha u theha litafole, u ka hlakisa TTL mantsoe: mohlala, hore re boloka lintlha tsa motsotso bakeng sa letsatsi le le leng, data ea letsatsi le letsatsi bakeng sa matsatsi a 30, 'me re se ke ra tšoara data ea beke le khoeli kapa ea khoeli le khoeli:

CREATE TABLE aggr_by_minute
…
TTL time + interval 1 day

CREATE TABLE aggr_by_day
…
TTL time + interval 30 day

CREATE TABLE aggr_by_week
…
/* no TTL */

Mekhahlelo e mengata - arola data ho li-disk

Ho latela mohopolo ona ho ea pele, data e ka bolokoa ho TlanyaHouse libakeng tse fapaneng. A re re re batla ho boloka lintlha tse chesang tsa beke e fetileng sebakeng se potlakileng haholo SSD, 'me re beha lintlha tse ling tsa histori sebakeng se seng. IN TlanyaHouse hona joale hoa khoneha:

Ho fallela ClickHouse: Lilemo tse 3 hamorao

O ka etsa leano la polokelo (leano la polokelo) Kahoo TlanyaHouse e tla fetisetsa data ka bo eona ha e fihla maemong a itseng ho ea polokelong e 'ngoe.

Empa ha se eona feela. Boemong ba tafole e itseng, o ka hlalosa melao bakeng sa hantle ha data e kena polokelong e batang. Ka mohlala, data e bolokiloe ka disk e potlakileng haholo bakeng sa matsatsi a 7, 'me ntho e' ngoe le e 'ngoe e tsofetseng e fetisetsoa ho e liehang. Sena se molemo hobane se o lumella ho boloka sistimi e sebetsa haholo, ha o ntse o laola litšenyehelo mme o sa senye chelete ho data e batang:

CREATE TABLE 
... 
TTL date + INTERVAL 7 DAY TO VOLUME 'cold_volume', 
    date + INTERVAL 180 DAY DELETE

Likarolo tse Ikhethang TlanyaHouse

Hoo e ka bang tsohle TlanyaHouse Ho na le "lintlha-khōlō" tse joalo, empa li sitisoa ke boinotšing - ntho e seng ka har'a li-database tse ling. Ka mohlala, mona ke tse ling tsa likarolo tse ikhethang TlanyaHouse:

  • Mehla. The TlanyaHouse tšehetso e ntle haholo bakeng sa li-arrays, hammoho le bokhoni ba ho etsa lipalo tse rarahaneng ho tsona.
  • Aggregating Data Structures. Ena ke e 'ngoe ea likarolo tsa "molai" TlanyaHouse. Ho sa tsotellehe taba ea hore bahlankana ba Yandex ba re ha re batle ho bokella lintlha, ntho e 'ngoe le e' ngoe e kopantsoe TlanyaHouse, hobane e potlakile ebile e loketse.
  • Maikutlo a Bonolo. Hammoho le ho kopanya mekhoa ea data, lipono tse fetotsoeng li u lumella ho etsa hore ho be bonolo hona joale kopanelo.
  • ClickHouse SQL. Ena ke katoloso ea puo SQL ka likarolo tse ling tsa tlatsetso le tse ikhethileng tse fumanehang feela ho TlanyaHouse. Pele, e ne e tšoana le ho atolosoa ka lehlakoreng le leng, 'me e le bothata ka lehlakoreng le leng. Hona joale hoo e batlang e le go tlhoka mesola ha ho bapisoa le SQL 92 re e tlositse, joale e se e le katoloso feela.
  • Lambda– lipolelo. Na li ntse li le polokelong efe kapa efe?
  • ML-tšehetso. Sena se fumaneha litsing tse fapaneng, tse ling li betere, tse ling li mpe le ho feta.
  • mohloli o bulehileng. Re ka atolosa TlanyaHouse mmoho. Joale kena TlanyaHouse bafani ba ka bang 500, 'me palo ena e ntse e eketseha kamehla.

Lipotso tse makatsang

В TlanyaHouse ho na le mekhoa e mengata e fapaneng ea ho etsa ntho e le 'ngoe. Mohlala, o ka khutlisa boleng ba ho qetela ho tsoa tafoleng ka mekhoa e meraro e fapaneng bakeng sa CPU (ho boetse ho na le ea bone, empa e sa tloaelehang le ho feta).

Ea pele e bontša kamoo ho leng bonolo ho e etsa TlanyaHouse lipotso ha u batla ho hlahloba seo tuple e fumanehang ho subquery. Ena ke ntho eo ke hlileng ke e hlolohetsoeng ho li-database tse ling. Haeba ke batla ho bapisa ntho e itseng le subquery, joale ho li-database tse ling feela scalar e ka bapisoa le eona, empa bakeng sa lihlopha tse 'maloa tseo ke lokelang ho li ngola. ETSA. The TlanyaHouse u ka sebelisa tuple:

SELECT *
  FROM cpu 
 WHERE (tags_id, created_at) IN 
    (SELECT tags_id, max(created_at)
        FROM cpu 
        GROUP BY tags_id)

Mokhoa oa bobeli o etsa ntho e ts'oanang empa o sebelisa ts'ebetso ea kakaretso argMax:

SELECT 
    argMax(usage_user), created_at),
    argMax(usage_system), created_at),
...
 FROM cpu 

В TlanyaHouse ho na le likarolo tse 'maloa tse kopaneng,' me haeba u sebelisa li-combinator, ho ea ka melao ea li-combinator u tla fumana tse ka bang sekete tsa tsona. ArgMax - e 'ngoe ea mesebetsi e balang boleng bo holimo: kopo e khutlisa boleng mosebedisi_mosebedisi, moo boleng bo phahameng bo fihletsoeng bōpiloe_at:

SELECT now() as created_at,
       cpu.*
  FROM (SELECT DISTINCT tags_id from cpu) base 
  ASOF LEFT JOIN cpu USING (tags_id, created_at)

ASOF KENYA — mela e “kgomaretsang” e nang le dinako tse fapaneng. Ena ke tšobotsi e ikhethang bakeng sa li-database tse fumanehang feela ho kdb+. Haeba ho na le letoto la linako tse peli le linako tse fapaneng, ASOF KENYA e o lumella ho tsamaisa le ho li kopanya ka kopo e le 'ngoe. Ho boleng bo bong le bo bong letotong le le leng, boleng bo haufi haholo ho le leng boa fumanoa, 'me li khutlisetsoa mothating o tšoanang:

Ho fallela ClickHouse: Lilemo tse 3 hamorao

Mesebetsi ea Analytic

Boemong SQL-2003 o ka ngola tjena:

SELECT origin,
       timestamp,
       timestamp -LAG(timestamp, 1) OVER (PARTITION BY origin ORDER BY timestamp) AS duration,
       timestamp -MIN(timestamp) OVER (PARTITION BY origin ORDER BY timestamp) AS startseq_duration,
       ROW_NUMBER() OVER (PARTITION BY origin ORDER BY timestamp) AS sequence,
       COUNT() OVER (PARTITION BY origin ORDER BY timestamp) AS nb
  FROM mytable
ORDER BY origin, timestamp;

В TlanyaHouse Ha o khone ho etsa joalo - ha e tšehetse maemo SQL-2003 'me mohlomong e ke ke ea e etsa. Ho e-na le hoo, ho TlanyaHouse Ho tloaelehile ho ngola tjena:

Ho fallela ClickHouse: Lilemo tse 3 hamorao

Ke tšepisitse lambdas - ke tsena!

Ena ke analogue ea potso ea analytical ho standard SQL-2003: o bala phapang pakeng tsa tse peli setempe sa nako, nako, nomoro ea ordinal - ntho e 'ngoe le e' ngoe eo re atisang ho e nahana ka mesebetsi ea ho hlahloba. IN TlanyaHouse Re li bala ka li-arrays: pele re phunya data ka bongata, ka mor'a moo re etsa ntho e 'ngoe le e' ngoe eo re e batlang ka har'a sehlopha, ebe re e atolosa hape. Ha e bonolo haholo, e hloka lerato la mananeo a sebetsang bonyane, empa e fetoha haholo.

Likarolo Tse Khethehileng

Ho feta moo, ho TlanyaHouse mesebetsi e mengata e khethehileng. Ka mohlala, mokhoa oa ho tseba hore na ke mananeo a makae a etsoang ka nako e le 'ngoe? Mosebetsi o tloaelehileng oa ho beha leihlo ke ho fumana hore na ho na le mojaro o moholo hakae ka kopo e le 'ngoe. IN TlanyaHouse Ho na le ts'ebetso e khethehileng bakeng sa morero ona:

Ho fallela ClickHouse: Lilemo tse 3 hamorao

Ka kakaretso, ClickHouse e na le mesebetsi e khethehileng bakeng sa merero e mengata:

  • matha Phapang, mathang Bokella, moahelani;
  • sumMap(senotlolo, boleng);
  • timeSeriesGroupSum(uid, timestamp, value);
  • timeSeriesGroupRateSum(uid, setempe sa nako, boleng);
  • skewPop, skewSamp, kurtPop, kurtSamp;
  • KA HO TLATSA / KA MATHAI;
  • simpleLinearRegression, stochasticLinearRegression.

Sena ha se lenane le felletseng la mesebetsi, ho na le 500-600 ka kakaretso. Tlhahiso: lits'ebetso tsohle ho TlanyaHouse e ka har'a tafole ea sistimi (ha se tsohle tse ngotsoeng, empa kaofela lia khahla):

select * from system.functions order by name

TlanyaHouse e boloka boitsebiso bo bongata ka eona, ho akarelletsa le litafole tsa log, query_log, trace log, log of operations with data blocks (karolo_log), log ea metrics, le log log, eo hangata e e ngollang disk. Log metrics ke letoto la nako в TlanyaHouse Haele hantle TlanyaHouse: Database ka boeona e ka bapala karolo letoto la nako polokelongtshedimosetso, ka tsela eo "ho harola" ka boyona.

Ho fallela ClickHouse: Lilemo tse 3 hamorao

Sena le sona ke ntho e ikhethang - kaha re etsa mosebetsi o motle bakeng sa letoto la nako, ke hobane’ng ha re sa khone ho boloka ntho e ’ngoe le e ’ngoe eo re e hlokang ka hare ho rōna? Ha re hloke Prometheus, re ipolokela ntho e ’ngoe le e ’ngoe. E hokahane grafana mme re ipeha leihlo. Leha ho le joalo, haeba TlanyaHouse oela, re ke ke ra bona lebaka, kahoo hangata ha ba etse joalo.

Sehlopha se seholo kapa tse nyane tse ngata TlanyaHouse

Ke eng e betere - sehlopha se le seng se seholo kapa li-ClickHouses tse ngata tse nyane? Mokhoa oa setso oa ho DWH ke sehlopha se seholo seo ho sona ho abeloang lipotoloho bakeng sa kopo ka 'ngoe. Re tlile ho molaoli oa polokelo ea litaba - re fe setšoantšo, 'me ba re fa sona:

Ho fallela ClickHouse: Lilemo tse 3 hamorao

В TlanyaHouse o ka e etsa ka tsela e fapaneng. U ka etsa hore sesebelisoa ka seng e be sa hau TlanyaHouse:

Ho fallela ClickHouse: Lilemo tse 3 hamorao

Ha re sa hloka e nyarosang haholo DWH le li-admins tse sa tsitsang. Re ka fa kopo ka 'ngoe ea eona TlanyaHouse, 'me moqapi a ka e etsa ka boeena, kaha TlanyaHouse ho bonolo haholo ho kenya mme ha e hloke tsamaiso e rarahaneng:

Ho fallela ClickHouse: Lilemo tse 3 hamorao

Empa haeba re na le tse ngata TlanyaHouse, 'me u hloka ho e kenya hangata, joale u batla ho iketsetsa mokhoa ona. Bakeng sa sena, ka mohlala, re ka sebelisa Kubernetes и Clickhouse-mosebeletsi. IN Kubernetes ClickHouse o ka e beha "on-click": Nka tobetsa konopo, tsamaisa manifesto mme database e se e lokile. Hang-hang nka etsa sets'oants'o, ka qala ho kenya metrics moo, 'me ka mor'a metsotso e 5 ke be ke se ke lokisitse dashboard. grafana. Ho bonolo haholo!

Ke'ng qetellong?

Kahoo, TlanyaHouse - Sena:

  • Ka potlako. E mong le e mong o tseba sena.
  • Feela. Ho na le likhang tse nyane, empa ke lumela hore ho thata ho koetlisoa, ho bonolo ntoeng. Haeba u utloisisa kamoo TlanyaHouse e ea sebetsa, joale ntho e 'ngoe le e' ngoe e bonolo haholo.
  • Ka bophara. E loketse maemo a fapaneng: DWH, Time Series, Log Storage. Empa ha ho joalo OLTP database, kahoo u se ke ua leka ho kenya lintho tse khutšoanyane le ho bala moo.
  • Tse thahasellisang. Mohlomong ke ea sebetsang le eena TlanyaHouse, e bile le linako tse ngata tse thahasellisang ka tsela e ntle le e mpe. Ka mohlala, tokollo e ncha e ile ea tsoa, ​​ntho e 'ngoe le e' ngoe ea emisa ho sebetsa. Kapa ha u ne u loana le mosebetsi ka matsatsi a mabeli, empa ka mor'a ho botsa potso puisanong ea Telegram, mosebetsi o ile oa rarolloa ka metsotso e 'meli. Kapa joalo ka kopanong tlalehong ea Lesha Milovidov, skrini se tsoang ho TlanyaHouse qhetsola kgaso Phahameng++. Ntho ea mofuta ona e etsahala ka linako tsohle 'me e thatafatsa bophelo ba rona. TlanyaHouse e khanyang le e thahasellisang!

U ka shebella nehelano mona.

Ho fallela ClickHouse: Lilemo tse 3 hamorao

Seboka sa nako e telele se lebelletsoeng sa baetsi ba litsamaiso tse boima haholo ho Phahameng++ e tla etsahala ka November 9 le 10 Skolkovo. Qetellong, ena e tla ba seboka sa kantle ho marang-rang (leha ho na le litemoso tsohle tse teng), kaha matla a HighLoad++ a ke ke a kenngoa inthaneteng.

Bakeng sa seboka, re fumana le ho u bontša linyeoe tse mabapi le bokhoni bo phahameng ba theknoloji: HighLoad ++ e ne e le teng, 'me e tla ba eona feela sebaka seo u ka ithutang sona ka matsatsi a mabeli kamoo Facebook, Yandex, VKontakte, Google le Amazon li sebetsang kateng.

Kaha re se re tšoere liboka ntle le tšitiso ho tloha ka 2007, selemong sena re tla kopana ka lekhetlo la bo14. Nakong ena, seboka se eketsehile ka makhetlo a 10; selemong se fetileng, ketsahalo ea bohlokoa ea indasteri e ile ea kopanya barupeluoa ba 3339, libui tse 165, litlaleho le likopano, 'me lipina tse 16 li ne li sebetsa ka nako e le' ngoe.
Selemong se fetileng ho ne ho e-na le libese tse 20, lilithara tse 5280 tsa tee le kofi, lilithara tse 1650 tsa lino tsa litholoana le libotlolo tse 10200 tsa metsi. Le lijo tse ling tse boima ba lik’hilograma tse 2640 16, lipoleiti tse 000 25 le likopi tse 000 100. Ka tsela, ka chelete e hlahisitsoeng pampiring e tsosolositsoeng, re ile ra lema lipeo tse XNUMX tsa oak :)

U ka reka litekete mona, fumana litaba ka kopano - mona, 'me u bue le marang-rang ohle a sechaba: thelekramo, Facebook, Vkontakte и Twitter.

Source: www.habr.com

Eketsa ka tlhaloso