Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Ós rud é gur córas speisialaithe é ClickHouse, agus é á úsáid tá sé tábhachtach gnéithe a ailtireachta a chur san áireamh. Sa tuarascáil seo, labhróidh Alexey faoi shamplaí de bhotúin choitianta agus ClickHouse á n-úsáid, rud a d’fhéadfadh obair neamhéifeachtach a bheith mar thoradh air. Léireoidh samplaí praiticiúla conas is féidir le roghnú scéim phróiseála sonraí amháin nó scéim eile feidhmíocht a athrú de réir orduithe méide.

Dia duit gach duine! Alexey is ainm dom, déanaim ClickHouse.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Ar an gcéad dul síos, déanaim deifir chun tú a shásamh ar an bpointe boise, inniu ní inseoidh mé duit cad is ClickHouse ann. Le bheith macánta, tá mé tuirseach de. Gach uair a deirim leat cad é. Agus is dócha go bhfuil a fhios ag gach duine cheana féin.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Ina áit sin, inseoidh mé duit cad iad na botúin a d'fhéadfadh a bheith ann, is é sin, conas is féidir leat ClickHouse a úsáid go mícheart. Go deimhin, ní gá a bheith eagla, toisc go bhfuil muid ag forbairt ClickHouse mar chóras atá simplí, áisiúil, agus a oibríonn as an mbosca. Suiteáil mé é, gan aon fhadhbanna.

Ach ní mór duit a chur san áireamh go bhfuil an córas seo speisialaithe agus is féidir leat teacht go héasca ar chás úsáide neamhghnách a bhainfidh an córas seo as a chrios chompord.

Mar sin, cén cineál raca atá ann? Den chuid is mó beidh mé ag caint faoi rudaí soiléire. Tá gach rud soiléir do gach duine, tuigeann gach duine gach rud agus is féidir leo a bheith sásta go bhfuil siad chomh cliste, agus foghlaimeoidh siad siúd nach dtuigeann rud éigin nua.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Is é an chéad sampla agus an sampla is simplí, a tharlaíonn go minic, ar an drochuair, ná líon mór iatáin le baisceanna beaga, ie líon mór iatáin bheaga.

Má bhreithnímid conas a fheidhmíonn ClickHouse cuir isteach, ansin is féidir leat terabyte sonraí ar a laghad a sheoladh in aon iarratas amháin. Ní fadhb í.

Agus a ligean ar a fheiceáil cad a bheadh ​​​​an fheidhmíocht tipiciúil a bheith. Mar shampla, tá tábla againn ó shonraí Yandex.Metrica. Amais. 105 roinnt colúin. 700 beart neamh-chomhbhrúite. Agus cuirfimid isteach ar bhealach maith i mbaisceanna de mhilliún sraitheanna.

Cuirimid MergeTree isteach sa tábla, casadh sé amach leath mhilliún sraitheanna in aghaidh an tsoicind. Go hiontach. I dtábla athdhéanta beidh sé beagán níos lú, thart ar 400 sraith in aghaidh an tsoicind.

Agus má chumasaíonn tú cur isteach córam, gheobhaidh tú beagán níos lú, ach feidhmíocht mhaith fós, 250 téarma in aghaidh an tsoicind. Is gné neamhdhoiciméadaithe é ionsá córam i ClickHouse*.

* ó 2020, doiciméadaithe cheana féin.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Cad a tharlaíonn má dhéanann tú rud éigin dona? Cuirimid sraith amháin isteach sa tábla MergeTree agus faighimid 59 sraith in aghaidh an tsoicind. Sin 10 uair níos moille. I ReplicatedMergeTree – 000 shraith in aghaidh an tsoicind. Agus má tá an córam iompú ar, ansin casadh sé amach 6 línte in aghaidh an dara. Is é mo thuairim gur cacamas iomlán de shaghas éigin é seo. Conas is féidir leat moilliú mar sin? Tá sé scríofa agam fiú ar mo T-léine nár cheart do ClickHouse moilliú. Ach mar sin féin tarlaíonn sé uaireanta.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Go deimhin, is é seo ár n-easnamh. D’fhéadfaimis go n-oibreodh gach rud go breá go héasca, ach níor éirigh linn. Agus ní dhearnamar é mar níor theastaigh ónár script é. Bhí búistéirí againn cheana féin. Fuair ​​​​muid baisceanna díreach ag ár mbealach isteach, agus gan aon fhadhbanna. Cuirimid isteach é agus oibríonn gach rud go breá. Ach, ar ndóigh, is féidir gach cineál cásanna. Mar shampla, nuair a bhíonn roinnt freastalaithe agat ar a ngintear sonraí. Agus ní chuireann siad isteach sonraí chomh minic, ach fós cuireann siad isteach go minic. Agus caithfimid é seo a sheachaint ar bhealach éigin.

Ó thaobh teicniúil de, is é an pointe ná nuair a dhéanann tú ionsá i ClickHouse, ní chríochnaíonn na sonraí in aon tábla memtable. Níl struchtúr logála fíor againn fiú MergeTree, ach MergeTree amháin, toisc nach bhfuil logáil ná memTable ann. Ní dhéanaimid ach na sonraí a scríobh láithreach chuig an gcóras comhad, socraithe cheana féin i gcolúin. Agus má tá 100 colún agat, beidh gá le níos mó ná 200 comhad a scríobh chuig eolaire ar leith. Tá sé seo go léir an-chumbersome.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Agus éiríonn an cheist: “Conas é a dhéanamh i gceart?” Má tá an scéal amhlaidh go gcaithfidh tú fós sonraí a thaifeadadh ar bhealach éigin i ClickHouse.

Modh 1. Is é seo an bealach is éasca. Bain úsáid as scuaine dáilte de chineál éigin. Mar shampla, Kafka. Ní dhéanann tú ach sonraí a bhaint as Kafka agus iad a bhaisc uair sa soicind. Agus beidh gach rud go breá, taifeadann tú, oibríonn gach rud go breá.

Is iad na míbhuntáistí ná gur córas toirtiúil dáileadh eile é Kafka. Tuigim freisin má tá Kafka i do chuideachta cheana féin. Tá sé go maith, tá sé áisiúil. Ach mura bhfuil sé ann, ba cheart duit smaoineamh faoi thrí sula dtarraingeoidh tú córas dáilte eile isteach i do thionscadal. Agus mar sin is fiú smaoineamh ar roghanna eile.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Modh 2. Is rogha eile seanscoile é seo agus ag an am céanna an-simplí. An bhfuil freastalaí de chineál éigin agat a ghineann do logs. Agus scríobhann sé ach do logs le comhad. Agus uair sa soicind, mar shampla, athainmnímid an comhad seo agus scriosaimid ceann nua. Agus glacann script ar leith, trí cron nó deamhan éigin, an comhad is sine agus scríobhann chuig ClickHouse é. Má thaifeadann tú logaí uair sa soicind, ansin beidh gach rud go breá.

Ach is é an míbhuntáiste a bhaineann leis an modh seo ná má imíonn do fhreastalaí ar a ngintear na logaí áit éigin, ansin beidh na sonraí imithe freisin.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Modh 3. Tá modh suimiúil eile ann, nach dteastaíonn comhaid shealadacha ar chor ar bith. Mar shampla, tá spinner fógraíochta de chineál éigin agat nó deamhan suimiúil eile a ghineann sonraí. Agus is féidir leat a lán sonraí a charnadh go díreach sa RAM, sa mhaolán. Agus nuair a bheidh go leor ama caite, cuireann tú an maolán seo ar leataobh, cruthaigh ceann nua, agus i snáithe ar leith, cuir isteach an méid atá carntha cheana féin i ClickHouse.

Ar an láimh eile, imíonn na sonraí freisin le marú -9. Má thuairteanna do fhreastalaí, caillfidh tú na sonraí seo. Agus fadhb eile is ea mura raibh tú in ann scríobh chuig an mbunachar sonraí, ansin carnfaidh do shonraí sa RAM. Agus rithfidh an RAM amach, nó caillfidh tú sonraí.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Modh 4. Modh suimiúil eile. An bhfuil próiseas freastalaí de chineál éigin agat. Agus is féidir leis sonraí a sheoladh chuig ClickHouse láithreach, ach é a dhéanamh i nasc amháin. Mar shampla, sheol mé iarratas http le haistriú-ionchódú: chunked with insert. Agus gineann sé smután nach ró-annamh, is féidir leat gach líne a sheoladh, cé go mbeidh forchostais ann chun na sonraí seo a chumadh.

Mar sin féin, sa chás seo seolfar na sonraí chuig ClickHouse láithreach. Agus maolóidh ClickHouse iad féin.

Ach tagann fadhbanna chun cinn freisin. Anois caillfidh tú sonraí, lena n-áirítear nuair a mharaítear do phróiseas agus má mharaítear an próiseas ClickHouse, toisc go mbeidh sé ina chur isteach neamhiomlán. Agus i ClickHouse tá iatáin adamhach suas go dtí tairseach sonraithe áirithe i méid na sraitheanna. I bprionsabal, is bealach suimiúil é seo. Is féidir é a úsáid freisin.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Modh 5. Seo modh suimiúil eile. Is freastalaí pobail de chineál éigin é seo le haghaidh baisceáil sonraí. Níor fhéach mé air mé féin, mar sin ní féidir liom aon rud a ráthú. Mar sin féin, ní thugtar aon ráthaíochtaí do ClickHouse féin. Is foinse oscailte é seo freisin, ach ar an láimh eile, d'fhéadfá a bheith i dtaithí ar chaighdeán éigin a dhéanaimid iarracht a sholáthar. Ach don rud seo - níl a fhios agam, téigh go GitHub, féach ar an gcód. B’fhéidir gur scríobh siad rud éigin gnáth.

* ó 2020, ba cheart iad a chur san áireamh freisin Teach Kitten.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Modh 6. Modh eile is ea táblaí Maoláin a úsáid. Is é an leas a bhaint as an modh seo ná go bhfuil sé an-éasca tosú ag baint úsáide as. Cruthaigh tábla Maolán agus cuir isteach é.

Is é an míbhuntáiste nach bhfuil an fhadhb a réiteach go hiomlán. Más rud é, i ráta cosúil le MergeTree, go gcaithfidh tú sonraí a ghrúpáil de réir bhaisc amháin in aghaidh an tsoicind, ansin i ráta i dtábla maolánach, ní mór duit suas le roinnt mílte in aghaidh an tsoicind ar a laghad a ghrúpáil. Má tá sé níos mó ná 10 in aghaidh an tsoicind, beidh sé fós dona. Agus má chuireann tú isteach é i mbaisceanna, ansin chonaic tú go raibh sé céad míle líne in aghaidh an tsoicind. Agus tá sé seo cheana féin ar shonraí measartha trom.

Agus freisin nach bhfuil táblaí maolánacha logáil isteach. Agus má tá rud éigin cearr le do fhreastalaí, ansin beidh na sonraí a bheith caillte.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Agus mar bhónas, fuair muid an deis le déanaí ag ClickHouse sonraí a aisghabháil ó Kafka. Tá inneall tábla - Kafka. Cruthaíonn tú go simplí. Agus is féidir leat léirithe ábhartha a chrochadh air. Sa chás seo, bainfidh sé féin sonraí ó Kafka agus cuirfidh sé isteach sna táblaí atá uait.

Agus is é an rud atá thar a bheith taitneamhach faoin deis seo ná nach sinne a rinne é. Is gné pobail é seo. Agus nuair a deirim “gné pobail,” is éard atá i gceist agam é gan aon díspeagadh. Léigh muid an cód, rinne athbhreithniú, ba chóir go n-oibreoidh sé go breá.

* ó 2020, bhí tacaíocht chomhchosúil le sonrú Coinín MQ.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Cad eile a d’fhéadfadh a bheith deacair nó gan choinne agus sonraí á gcur isteach? Má dhéanann tú iarratas luachanna cuir isteach agus scríobh roinnt slonn ríofa i luachanna. Mar shampla, is slonn ríofa é now(). Agus sa chás seo, tá iallach ar ClickHouse ateangaire na nathanna cainte seo a sheoladh ar gach líne, agus laghdóidh an fheidhmíocht de réir orduithe méide. Is fearr é seo a sheachaint.

* faoi láthair, tá an fhadhb réitithe go hiomlán, níl aon aischéimniú feidhmíochta ann a thuilleadh nuair a úsáidtear nathanna i LUACHANNA.

Sampla eile is ea nuair a d’fhéadfadh roinnt fadhbanna a bheith ann nuair a bhíonn sonraí agat ar bhaisc amháin a bhaineann le roinnt deighiltí. De réir réamhshocraithe, tá deighiltí ClickHouse de réir míosa. Agus má chuireann tú isteach baisc de mhilliún sraitheanna, agus go bhfuil sonraí ann ar feadh roinnt blianta, ansin beidh roinnt dosaen deighiltí agat ann. Agus tá sé seo comhionann leis an bhfíric go mbeidh baisceanna cúpla uair níos lú i méid, mar gheall ar an taobh istigh tá siad i gcónaí roinnte ina landairí ar dtús.

* Le déanaí, i mód turgnamhach, chuir ClickHouse tacaíocht le formáid dhlúth na smután agus na smután in RAM le logáil roimh ré, rud a réitíonn an fhadhb beagnach go hiomlán.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Anois, déanaimis féachaint ar an dara cineál fadhb - clóscríobh sonraí.

Is féidir le clóscríobh sonraí a bheith dian nó teaghrán. Is éard atá i gceist le teaghrán ná nuair a thóg tú díreach é agus nuair a dhearbhaigh tú gur teaghrán cineál iad do réimsí go léir. Seo sucks. Níl aon ghá é seo a dhéanamh.

Déanaimis amach conas é a dhéanamh i gceart sna cásanna sin nuair is mian leat a rá go bhfuil réimse éigin againn, teaghrán, agus lig do ClickHouse é a dhéanamh amach leis féin, agus ní bheidh mé bodhraigh. Ach is fiú iarracht éigin a dhéanamh fós.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Mar shampla, tá seoladh IP againn. I gcás amháin, shábháil muid é mar teaghrán. Mar shampla, 192.168.1.1. Agus i gcás eile, is cineál UInt32* a bheidh ann. Is leor 32 giotán do sheoladh IPv4.

Ar an gcéad dul síos, rud aisteach go leor, déanfar na sonraí a chomhbhrú go cothrom, a bheag nó a mhór. Beidh difríocht ann, ar ndóigh, ach níl sé chomh mór sin. Mar sin níl aon fadhbanna speisialta le diosca I/O.

Ach tá difríocht mhór idir am próiseálaí agus am forghníomhaithe na gceisteanna.

Déanaimis líon na seoltaí IP uathúla a chomhaireamh má stóráiltear iad mar uimhreacha. Is ionann sin agus 137 milliún líne in aghaidh an tsoicind. Má tá an rud céanna i bhfoirm teaghráin, ansin 37 milliún líne in aghaidh an tsoicind. Níl a fhios agam cén fáth ar tharla an chomhtharlú seo. Rinne mé féin na hiarratais seo. Ach fós thart ar 4 huaire níos moille.

Agus má ríomhann tú an difríocht i spás diosca, ansin tá difríocht ann freisin. Agus tá an difríocht thart ar aon cheathrú, toisc go bhfuil go leor seoltaí IP uathúla ann. Agus dá mbeadh línte le líon beag bríonna éagsúla ann, is furasta iad a chomhbhrú de réir an fhoclóra go timpeall an toirt chéanna.

Agus ní luíonn an difríocht ama ceithre huaire ar an mbóthar. B’fhéidir nach dtugann tú diabhal, ar ndóigh, ach nuair a fheicim an difríocht sin cuireann sé brón orm.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Breathnaímid ar chásanna éagsúla.

1. Cás amháin nuair nach bhfuil mórán luachanna uathúla éagsúla agat. Sa chás seo, bainimid úsáid as cleachtas simplí is dócha go bhfuil a fhios agat agus is féidir a úsáid le haghaidh aon DBMS. Déanann sé seo ciall ní hamháin do ClickHouse. Níl le déanamh ach aitheantóirí uimhriúla a scríobh isteach sa bhunachar sonraí. Agus is féidir leat a thiontú go teaghráin agus ar ais ar an taobh d'iarratas.

Mar shampla, tá réigiún agat. Agus tá tú ag iarraidh é a shábháil mar teaghrán. Agus beidh sé scríofa ann: Moscó agus Moscó Réigiún. Agus nuair a fheicim go ndeir sé “Moscó”, ní rud ar bith é, ach nuair is Moscó é, éiríonn sé brónach ar bhealach éigin. Seo cé mhéad beart.

Ina áit sin, ní dhéanann muid ach an uimhir Ulnt32 agus 250 a scríobh síos. Tá 250 againn in Yandex, ach d’fhéadfadh go mbeadh an uimhir agatsa difriúil. Ar eagla na heagla, déarfaidh mé go bhfuil cumas ionsuite ag ClickHouse oibriú le geobase. Ní dhéanann tú ach eolaire a scríobh síos le réigiúin, lena n-áirítear ceann ordlathach, ie beidh Moscó, Réigiún Moscó, agus gach rud atá uait. Agus is féidir leat a thiontú ar an leibhéal iarratais.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Tá an dara rogha thart ar an gcéanna, ach le tacaíocht taobh istigh de ClickHouse. Is é seo an cineál sonraí Enum. Níl ort ach na luachanna go léir a theastaíonn uait a scríobh taobh istigh den Enum. Mar shampla, cineál feiste agus scríobh ann: deasc, soghluaiste, táibléad, teilifís. Tá 4 rogha san iomlán.

Is é an míbhuntáiste gur gá duit é a athrú go tréimhsiúil. Níl ach rogha amháin curtha leis. Déanaimis tábla a athrú. Go deimhin, tá tábla a athrú i ClickHouse saor in aisce. Go háirithe saor in aisce do Enum toisc nach n-athraíonn na sonraí ar an diosca. Ach mar sin féin, faigheann alter glas* ar an mbord agus ní mór dó fanacht go dtí go ndéantar gach rogha. Agus ní dhéanfar ach an t-athrú seo a fhorghníomhú, i.e. tá roinnt míchaoithiúlacht ann fós.

* Sna leaganacha is déanaí de ClickHouse, déantar ALTER go hiomlán neamh-bhloic.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Rogha eile atá uathúil go leor do ClickHouse ná foclóirí seachtracha a nascadh. Is féidir leat uimhreacha a scríobh i ClickHouse, agus d’eolairí a choinneáil in aon chóras áisiúil duit. Mar shampla, is féidir leat úsáid a bhaint as: MySQL, Mongo, Postgres. Is féidir leat fiú do mhicreirbhís féin a chruthú a sheolfaidh na sonraí seo trí http. Agus ar leibhéal ClickHouse, scríobhann tú feidhm a thiontóidh na sonraí seo ó uimhreacha go teaghráin.

Is bealach speisialaithe ach an-éifeachtach é seo chun ceangal a dhéanamh ar bhord seachtrach. Agus tá dhá rogha ann. In aon embodiment amháin, déanfar na sonraí seo a thaisceadh go hiomlán, go hiomlán i láthair sa RAM agus a nuashonrú go minic. Agus i rogha eile, mura luíonn na sonraí seo isteach sa RAM, is féidir leat é a thaisceadh go páirteach.

Seo sampla. Tá Yandex.Direct ann. Agus tá cuideachta fógraíochta agus meirgí. Is dócha go bhfuil thart ar na mílte cuideachtaí fógraíochta ann. Agus oiriúnach siad go garbh isteach sa RAM. Agus tá na billiúin meirgí ann, níl siad oiriúnach. Agus bainimid úsáid as foclóir i dtaisce ó MySQL.

Is é an t-aon fhadhb atá ann ná go n-oibreoidh an foclóir taisce go breá má tá an ráta buailte gar do 100%. Má tá sé níos lú, ansin agus fiosrúcháin á bpróiseáil agat le haghaidh gach baisce sonraí, beidh ort na heochracha atá ar iarraidh a thógáil agus na sonraí a fháil ó MySQL. Maidir le ClickHouse, is féidir liom a ráthú go fóill - sea, ní mhoillíonn sé, ní labhróidh mé faoi chórais eile.

Agus mar bhónas, is bealach an-éasca iad foclóirí chun sonraí a nuashonrú go haisghníomhach i ClickHouse. Is é sin, bhí tuairisc agat ar chuideachtaí fógraíochta, níor athraigh an t-úsáideoir ach an chuideachta fógraíochta agus sna sean-sonraí go léir, i ngach tuarascáil, d'athraigh na sonraí seo freisin. Má scríobhann tú sraitheanna go díreach chuig an tábla, beidh sé dodhéanta iad a nuashonrú.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Bealach eile nuair nach bhfuil a fhios agat cá bhfaighidh tú na haitheantóirí do do theaghráin. is féidir leat hash go simplí é. Thairis sin, is é an rogha is simplí hash 64-giotán a ghlacadh.

Is é an t-aon fhadhb atá ann ná má tá an hash 64-giotán, ansin is cinnte go mbeidh imbhuailtí ort. Mar má tá billiún línte ann, ansin éiríonn an dóchúlacht faoi deara cheana féin.

Agus ní bheadh ​​​​sé an-mhaith hash ainmneacha cuideachtaí fógraíochta ar an mbealach seo. Má dhéantar feachtais fógraíochta cuideachtaí éagsúla a mheascadh suas, beidh rud éigin dothuigthe ann.

Agus tá cleas simplí. Fíor, níl sé an-oiriúnach freisin do shonraí tromchúiseacha, ach mura bhfuil rud éigin an-tromchúiseach, ansin cuir aitheantóir an chliaint leis an eochair fhoclóra. Agus ansin beidh imbhuailtí agat, ach laistigh de chliant amháin. Agus úsáidimid an modh seo le haghaidh léarscáileanna nasc i Yandex.Metrica. Tá URLanna againn ann, stóráilimid hashes. Agus tá a fhios againn, ar ndóigh, go bhfuil imbhuailtí ann. Ach nuair a thaispeánfar an leathanach, is féidir faillí a dhéanamh ar an dóchúlacht go mbeidh roinnt URLanna greamaithe le chéile ar leathanach amháin d’úsáideoir amháin agus go dtabharfar faoi deara é seo.

Mar bhónas, le haghaidh go leor oibríochtaí is leor hashes amháin agus ní gá na teaghráin féin a stóráil in áit ar bith.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Sampla eile is ea má tá na teaghráin gearr, mar shampla, fearainn láithreán gréasáin. Is féidir iad a stóráil mar atá. Nó, mar shampla, is é 2 bytes an teanga bhrabhsálaí ru. Ar ndóigh, is dóigh liom go mór leithscéal as na bearta, ach ná bíodh imní ort, ní mór an trua iad 2 bytes. Coinnigh mar atá, le do thoil, ná bí buartha.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Is cás eile é nuair, ar a mhalairt, go bhfuil go leor línte ann agus go bhfuil go leor cinn uathúla iontu, agus is féidir fiú an tacar a bheith gan teorainn. Sampla tipiciúil is ea frásaí cuardaigh nó URLanna. Cuardaigh frásaí, lena n-áirítear typos. Feicfimid cé mhéad frása cuardaigh uathúla atá ann in aghaidh an lae. Agus casadh sé amach go bhfuil siad beagnach leath de na himeachtaí. Agus sa chás seo, b'fhéidir go gceapfá go gcaithfidh tú na sonraí a normalú, na haitheantóirí a chomhaireamh, agus é a chur i dtábla ar leith. Ach ní gá duit é sin a dhéanamh. Coinnigh na línte seo mar atá siad.

Is fearr gan rud ar bith a chumadh, mar má stórálann tú é ar leithligh, beidh ort ceangal a dhéanamh. Agus is é an ceangal seo, ar a fheabhas, rochtain randamach ar chuimhne, má oireann sé fós sa chuimhne. Mura n-oireann sé, ansin beidh fadhbanna ann.

Agus má tá na sonraí stóráilte i bhfeidhm, ansin é a léamh go simplí san ord riachtanach ón gcóras comhaid agus tá gach rud go breá.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Má tá URLanna nó teaghrán fada casta eile agat, is fiú smaoineamh gur féidir leat sliocht de chineál éigin a ríomh roimh ré agus é a scríobh i gcolún ar leith.

Maidir le URLanna, mar shampla, is féidir leat an fearann ​​​​a stóráil ar leithligh. Agus má tá fearann ​​uait i ndáiríre, bain úsáid as an gcolún seo, agus beidh na URLanna suite ann, agus ní dhéanfaidh tú teagmháil leo fiú.

A ligean ar a fheiceáil cad é an difríocht. Tá feidhm speisialaithe ag ClickHouse a ríomhann an fearann. Tá sé an-tapa, tá uasmhéadú déanta againn air. Agus, le bheith macánta, ní chomhlíonann sé fiú an RFC, ach mar sin féin measann sé gach rud atá uainn.

Agus i gcás amháin beidh muid a fháil go simplí ar na URLanna agus ríomh an bhfearann. Is ionann sin agus 166 milleasoicind. Agus má ghlacann tú fearann ​​réamhdhéanta, ní bheidh ann ach 67 milleasoicindí, i.e. beagnach trí huaire níos tapúla. Agus tá sé níos tapúla ní toisc go gcaithfimid roinnt ríomhaireachtaí a dhéanamh, ach toisc go léann muid níos lú sonraí.

Sin an fáth a bhfuil iarratas amháin, atá níos moille, ag luas níos airde de ghigibheart in aghaidh an tsoicind. Toisc go léann sé níos mó ghigibheart. Is sonraí go hiomlán gan ghá é seo. Is cosúil go ritheann an t-iarratas níos tapúla, ach tógann sé níos faide é a chríochnú.

Agus má fhéachann tú ar an méid sonraí ar an diosca, tharlaíonn sé go raibh an URL 126 meigibheart, agus an bhfearann ​​​​ach 5 meigibheart. Casadh sé amach 25 huaire níos lú. Ach mar sin féin, ní dhéantar an t-iarratas ach 4 huaire níos tapúla. Ach is é sin toisc go bhfuil na sonraí te. Agus dá mbeadh sé fuar, is dócha go mbeadh sé 25 uair níos tapúla mar gheall ar dhiosca I/O.

Dála an scéil, má dhéanann tú meastachán ar cé mhéad níos lú fearainn ná URL, beidh sé thart ar 4 huaire níos lú.Ach ar chúis éigin, tógann na sonraí suas 25 uair níos lú ar dhiosca. Cén fáth? Mar gheall ar chomhbhrú. Agus tá an URL comhbhrúite, agus tá an bhfearann ​​​​comhbhrúite. Ach go minic tá a bunch de truflais san URL.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Agus, ar ndóigh, íocann sé úsáid a bhaint as na cineálacha sonraí cearta atá deartha go sonrach le haghaidh na luachanna atá ag teastáil nó atá oiriúnach. Má tá tú i IPv4, stóráil UInt32*. Más IPv6, ansin FixedString(16), toisc go bhfuil an seoladh IPv6 giotán 128, i.e. stóráilte go díreach i bhformáid dhénártha.

Ach cad a tharlaíonn má tá seoltaí IPv4 agat uaireanta agus uaireanta IPv6? Sea, is féidir leat an dá rud a stóráil. Colún amháin le haghaidh IPv4, ceann eile le haghaidh IPv6. Ar ndóigh, tá rogha ann IPv4 a thaispeáint i IPv6. Oibreoidh sé seo freisin, ach má bhíonn seoladh IPv4 ag teastáil uait go minic in iarratais, bheadh ​​​​sé deas é a chur i gcolún ar leith.

* Tá cineálacha sonraí IPv4, IPv6 ar leith ag ClickHouse a stórálann sonraí chomh héifeachtach le huimhreacha, ach a léiríonn iad chomh háisiúil le teaghráin.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Tá sé tábhachtach a thabhairt faoi deara freisin gur fiú na sonraí a réamhphróiseáil roimh ré. Mar shampla, faigheann tú roinnt logs amh. Agus b'fhéidir nár cheart duit iad a chur i ClickHouse ar an bpointe boise, cé go bhfuil sé an-tempting gan faic a dhéanamh agus oibreoidh gach rud. Ach tá sé fós fiú a chur i gcrích na ríomhanna is féidir.

Mar shampla, leagan brabhsálaí. I roinn éigin in aice láimhe, nach bhfuil mé ag iarraidh méar a dhíriú uirthi, stóráiltear leagan an bhrabhsálaí mar seo, is é sin, mar theaghrán: 12.3. Agus ansin, chun tuairisc a dhéanamh, tógann siad an teaghrán seo agus roinneann siad in eagar é, agus ansin isteach sa chéad eilimint den eagar. Ar ndóigh, slows gach rud síos. D'iarr mé cén fáth a dhéanann siad seo. Dúirt siad liom nach maith leo barrfheabhsú roimh am. Agus ní maith liom pessimization roimh am.

Mar sin, sa chás seo bheadh ​​sé níos ceart é a roinnt ina 4 cholún. Ná bíodh eagla ort anseo, mar is ClickHouse é seo. Is bunachar sonraí columnar é ClickHouse. Agus na colúin bheaga níos néata, is amhlaidh is fearr. Beidh 5 Leaganacha Brabhsálaí ann, déan 5 cholún. Tá sé seo go breá.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Anois, déanaimis féachaint ar cad atá le déanamh má tá go leor teaghráin an-fhada agat, eagair an-fhada. Ní gá iad a stóráil i ClickHouse ar chor ar bith. Ina áit sin, ní féidir leat ach aitheantóir a stóráil i ClickHouse. Agus cuir na línte fada seo isteach i gcóras éigin eile.

Mar shampla, tá roinnt paraiméadair imeachtaí ag ceann dár seirbhísí anailíse. Agus má tá go leor paraiméadair ann le haghaidh imeachtaí, ní dhéanaimid ach an chéad 512 a thagann trasna a shábháil. Toisc nach mór an trua é 512.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Agus mura féidir leat cinneadh a dhéanamh ar do chineálacha sonraí, is féidir leat sonraí a thaifeadadh i ClickHouse freisin, ach i dtábla sealadach den chineál Loga, atá speisialta le haghaidh sonraí sealadacha. Tar éis seo, is féidir leat anailís a dhéanamh ar cén dáileadh luachanna atá agat ann, cad atá ann i gcoitinne, agus na cineálacha cearta a chruthú.

*Tá cineál sonraí ag ClickHouse anois Cairdiúlacht Íseal rud a ligeann duit teaghráin a stóráil go héifeachtach le níos lú iarracht.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Anois, déanaimis féachaint ar chás suimiúil eile. Uaireanta oibríonn rudaí aisteach do dhaoine. Tagaim isteach agus feicim é seo. Agus is cosúil láithreach go ndearna roinnt riarthóir cliste an-taithí é seo a bhfuil taithí fhairsing aige ar leagan MySQL 3.23 a bhunú.

Anseo feicimid míle tábla, agus taifeadann gach ceann acu an chuid eile den roinnt cé a fhios cad é an míle.

I bprionsabal, tá meas agam ar thaithí daoine eile, lena n-áirítear an tuiscint ar an bhfulaingt is féidir a fháil tríd an taithí seo.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Agus tá na cúiseanna níos mó nó níos lú soiléir. Is sean-steiréitíopaí iad seo a d’fhéadfadh a bheith carntha agus iad ag obair le córais eile. Mar shampla, níl eochair bhunscoile cnuasaithe ag táblaí MyISAM. Agus b'fhéidir gur iarracht éadóchasach é an bealach seo chun sonraí a roinnt chun an fheidhmiúlacht chéanna a fháil.

Cúis eile is ea go bhfuil sé deacair aon oibríochtaí athraithe a dhéanamh ar tháblaí móra. Cuirfear bac ar gach rud. Cé nach bhfuil an fhadhb seo chomh tromchúiseach i leaganacha nua-aimseartha de MySQL.

Nó, mar shampla, microsharding, ach níos mó ar sin níos déanaí.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Ní gá é seo a dhéanamh i ClickHouse, mar, ar an gcéad dul síos, tá an eochair phríomhúil cnuasaithe, ordaítear na sonraí de réir na príomheochair.

Agus uaireanta cuireann daoine ceist orm: “Conas a athraíonn feidhmíocht na gceisteanna raoin i ClickHouse ag brath ar mhéid an tábla?” Deirim nach n-athraíonn sé ar chor ar bith. Mar shampla, tá tábla agat le billiún sraitheanna agus léann tú raon milliún sraitheanna. Tá gach rud breá. Má tá trilliún sraitheanna i dtábla agus má léann tú milliún sraitheanna, beidh sé beagnach mar an gcéanna.

Agus, ar an dara dul síos, ní gá gach cineál rudaí cosúil le landairí láimhe. Má théann tú isteach agus féachaint ar a bhfuil ar an gcóras comhad, feicfidh tú go bhfuil an tábla mór go leor. Agus tá rud éigin cosúil le landairí taobh istigh. Is é sin, déanann ClickHouse gach rud duit agus ní gá duit a bheith ag fulaingt.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Tá Alter in ClickHouse saor in aisce má athraigh an colún cuir/titim.

Agus níor cheart duit táblaí beaga a dhéanamh, mar má tá 10 sraitheanna nó 10 sraitheanna i dtábla agat, is cuma leis sin ar chor ar bith. Is córas é ClickHouse a uasmhéadaíonn tréchur, ní latency, agus mar sin ní dhéanann sé ciall 000 líne a phróiseáil.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Tá sé ceart tábla mór amháin a úsáid. Faigh réidh le sean-steiréitíopaí, beidh gach rud go breá.

Agus mar bhónas, sa leagan is déanaí tá an cumas againn anois eochair deighilte treallach a chruthú chun gach cineál oibríochtaí cothabhála a dhéanamh ar landairí aonair.

Mar shampla, tá go leor táblaí beaga ag teastáil uait, mar shampla, nuair is gá roinnt sonraí idirmheánacha a phróiseáil, faigheann tú smután agus ní mór duit claochlú a dhéanamh orthu sula scríobhann tú chuig an tábla deiridh. Don chás seo, tá inneall tábla iontach - StripeLog. Tá sé cineál cosúil le TinyLog, ach níos fearr.

* anois tá ClickHouse freisin ionchur feidhm tábla.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Frithphatrún eile is ea microsharding. Mar shampla, ní mór duit sonraí a shardadh agus tá 5 fhreastalaí agat, agus amárach beidh 6 fhreastalaí ann. Agus smaoiníonn tú ar conas na sonraí seo a athchothromú. Agus ina ionad sin ní bhriseann tú isteach i 5 shards, ach i 1 shards. Agus ansin mapálann tú gach ceann de na microshards seo chuig freastalaí ar leith. Agus gheobhaidh tú, mar shampla, 000 ClickHouses ar fhreastalaí amháin, mar shampla. Cásanna ar leith ar chalafoirt ar leith nó ar bhunachair shonraí ar leith.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Ach níl sé seo an-mhaith i ClickHouse. Toisc go ndéanann fiú sampla ClickHouse amháin iarracht na hacmhainní freastalaí go léir atá ar fáil a úsáid chun iarratas amháin a phróiseáil. Is é sin le rá, tá freastalaí de shaghas éigin agat agus tá, mar shampla, 56 cores próiseálaí aige. Tá ceist á rith agat a thógann soicind amháin agus úsáidfidh sé 56 chroí. Agus má chuir tú 200 ClickHouses ann ar fhreastalaí amháin, is cosúil go dtosóidh 10 snáithe. Go ginearálta, beidh gach rud an-dona.

Fáth eile is ea go mbeidh dáileadh na hoibre ar na cásanna seo míchothrom. Críochnóidh cuid acu níos luaithe, críochnóidh cuid eile níos déanaí. Dá dtarlódh sé seo go léir i gcás amháin, ansin bheadh ​​ClickHouse féin amach conas na sonraí a dháileadh i gceart i measc na snáitheanna.

Agus is cúis eile é go mbeidh cumarsáid idirphróiseálaithe agat trí TCP. Ní mór na sonraí a shraithiú, a dhíshraithiú, agus is líon mór microshards é seo. Go simplí ní oibreoidh sé go héifeachtach.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Frithphatrún eile, cé gur ar éigean gur féidir frithphatrún a thabhairt air. Is méid mór de réamh-chomhiomlánú é seo.

Go ginearálta, tá réamh-chomhiomlánú go maith. Bhí billiún sraitheanna agat, chomhiomlánaigh tú é agus rinneadh 1 sraith de, agus anois déantar an cheist ar an toirt. Tá gach rud go hiontach. Is féidir leat é seo a dhéanamh. Agus chuige seo, tá cineál tábla speisialta ag fiú ClickHouse, AggregatingMergeTree, a dhéanann comhiomlánú incriminteach de réir mar a chuirtear isteach sonraí.

Ach tá amanna ann nuair a cheapann tú go ndéanfaimid sonraí mar seo a chomhiomlánú agus sonraí comhiomlána mar seo a dhéanamh. Agus i roinnt rannóg in aice láimhe, níl mé ag iarraidh a rá cé acu ceann, úsáideann siad táblaí SummingMergeTree chun achoimre a dhéanamh de réir an eochair phríomha, agus úsáidtear thart ar 20 colún mar phríomheochair. Ar eagla na heagla, d’athraigh mé ainmneacha roinnt colún le haghaidh rúndachta, ach sin é go leor.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Agus tagann fadhbanna den sórt sin chun cinn. Ar an gcéad dul síos, ní laghdaíonn méid do shonraí an iomarca. Mar shampla, laghdaíonn sé trí huaire. Bheadh ​​​​trí huaire ina phraghas maith chun na cumais anailíse neamhtheoranta a thagann chun cinn mura ndéantar do shonraí a chomhiomlánú. Má dhéantar na sonraí a chomhiomlánú, ní bhfaighidh tú ach staitisticí trua in ionad anailíse.

Agus cad atá chomh speisialta faoi? Is é fírinne an scéil go dtéann na daoine seo ón roinn in aice láimhe uaireanta agus iarrann siad colún eile a chur leis an eochair bunscoile. Is é sin, chomhbhailíomar na sonraí mar seo, ach anois ba mhaith linn beagán níos mó. Ach níl eochair bunscoile athraithe ag ClickHouse. Mar sin, ní mór dúinn roinnt scripteanna a scríobh i C ++. Agus ní maith liom scripteanna, fiú má tá siad i C ++.

Agus má fhéachann tú ar cad chuige ar cruthaíodh ClickHouse, is é sonraí neamh-chomhiomlánaithe go díreach an cás ar rugadh é. Má tá ClickHouse á úsáid agat le haghaidh sonraí neamh-chomhiomlánaithe, tá sé á dhéanamh agat i gceart. Má dhéanann tú comhiomlán, is féidir é seo a ligean thar ceal uaireanta.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Cás suimiúil eile is ea ceisteanna i lúb gan teorainn. Uaireanta téim chuig roinnt freastalaí táirgeachta agus breathnaíonn mé ar an bpróiseálaí seó ann. Agus gach uair a fhaighim amach go bhfuil rud éigin uafásach ag tarlú.

Mar shampla, mar seo. Tá sé soiléir láithreach go bhféadfaí gach rud a dhéanamh in aon iarratas amháin. Níl le déanamh ach an url agus an liosta a scríobh ann.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Cén fáth a bhfuil go leor ceisteanna den sórt sin i lúb endless dona? Mura n-úsáidtear innéacs, beidh go leor pasanna agat thar na sonraí céanna. Ach má úsáidtear an t-innéacs, mar shampla, tá eochair bunscoile agat le haghaidh ru agus scríobhann tú url = rud éigin ann. Agus is dóigh leat mura léitear ach URL amháin ón tábla, beidh gach rud go breá. Ach i ndáiríre níl. Toisc go ndéanann ClickHouse gach rud i mbaisceanna.

Nuair is gá dó raon áirithe sonraí a léamh, léann sé beagán níos mó, toisc go bhfuil an t-innéacs i ClickHouse gann. Ní cheadaíonn an t-innéacs seo duit sraith aonair amháin a fháil sa tábla, ach raon de shaghas éigin. Agus tá na sonraí comhbhrúite i mbloic. D'fhonn líne amháin a léamh, ní mór duit an bloc iomlán a ghlacadh agus é a dhíghlasáil. Agus má tá tú ag déanamh bunch ceisteanna, beidh go leor forluí agat, agus beidh go leor oibre le déanamh agat arís agus arís eile.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Agus mar bhónas, is féidir leat a thabhairt faoi deara i ClickHouse níor cheart go mbeadh eagla ort fiú meigibheart agus fiú na céadta meigibheart a aistriú chuig an rannán IN. Is cuimhin liom ónár gcleachtas más rud é i MySQL aistrímid bunch de luachanna chuig an rannóg IN, mar shampla, aistrímid 100 meigeavata de roinnt uimhreacha ann, ansin itheann MySQL suas 10 ghigibheart de chuimhne agus ní tharlaíonn aon rud eile dó, gach rud. oibríonn go dona.

Agus is é an dara ceann ná i ClickHouse, má úsáideann do cheisteanna innéacs, ní bhíonn sé i gcónaí níos moille ná scanadh iomlán, i.e. más gá duit an tábla iomlán beagnach a léamh, rachaidh sé go seicheamhach agus léifidh sé an tábla iomlán. Go ginearálta, déanfaidh sé amach é ar a chuid féin.

Ach mar sin féin tá roinnt deacrachtaí ann. Mar shampla, ar an bhfíric nach bhfuil IN le subquery úsáid as an t-innéacs. Ach is é seo ár bhfadhb agus ní mór dúinn a réiteach. Níl aon rud bunúsach anseo. Déanfaimid é a shocrú*.

Agus rud suimiúil eile is ea má tá iarratas an-fhada agat agus go bhfuil próiseáil iarratais dáilte ar siúl, ansin seolfar an t-iarratas an-fhada seo chuig gach freastalaí gan comhbhrú. Mar shampla, 100 meigibheart agus 500 freastalaí. Agus, dá réir sin, beidh ort 50 ghigibheart a aistriú thar an líonra. Déanfar é a tharchur agus ansin cuirfear gach rud i gcrích go rathúil.

* ag baint úsáide as cheana féin; Socraíodh gach rud mar a gealladh.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Agus is cás coitianta go leor é nuair a thagann iarratais ón API. Mar shampla, chruthaigh tú do sheirbhís féin de shaghas éigin. Agus má tá do sheirbhís ag teastáil ó dhuine éigin, osclaíonn tú an API agus go litriúil dhá lá ina dhiaidh sin feiceann tú go bhfuil rud éigin dothuigthe ag tarlú. Tá gach rud ró-ualaithe agus tá roinnt iarratais uafásacha ag teacht isteach nár cheart riamh a bheith tarlaithe.

Agus níl ach réiteach amháin ann. Má d'oscail tú an API, ansin beidh ort é a ghearradh. Mar shampla, tabhair isteach cuótaí de chineál éigin. Níl aon roghanna eile gnáth. Seachas sin, scríobhfaidh siad script láithreach agus beidh fadhbanna ann.

Agus tá gné speisialta ag ClickHouse - ríomh cuóta. Ina theannta sin, is féidir leat d'eochair chuóta a aistriú. Is é seo, mar shampla, an t-aitheantas úsáideora inmheánach. Agus déanfar cuótaí a ríomh go neamhspleách do gach ceann acu.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Anois rud suimiúil eile. Is macasamhlú láimhe é seo.

Tá a fhios agam go leor cásanna, in ainneoin tacaíocht macasamhlú ionsuite ag ClickHouse, go ndéanann daoine ClickHouse a mhacasamhlú de láimh.

Cad é an prionsabal? Tá píblíne próiseála sonraí agat. Agus oibríonn sé go neamhspleách, mar shampla, in ionaid sonraí éagsúla. Scríobhann tú na sonraí céanna ar an mbealach céanna i ClickHouse. Fíor, léiríonn cleachtas go mbeidh na sonraí fós éagsúil mar gheall ar roinnt gnéithe i do chód. Tá súil agam go bhfuil sé i do chuid.

Agus ó am go ham beidh ort sioncrónú de láimh fós. Mar shampla, uair sa mhí déanann riarthóirí rsync.

Go deimhin, tá sé i bhfad níos éasca an macasamhlú a tógadh isteach i ClickHouse a úsáid. Ach d'fhéadfadh go mbeadh roinnt contraindications, mar gheall ar seo ní mór duit a úsáid ZooKeeper. Ní déarfaidh mé aon rud dona faoi ZooKeeper, i bprionsabal, oibríonn an córas, ach tarlaíonn sé nach n-úsáideann daoine é mar gheall ar java-phobia, toisc gur córas chomh maith é ClickHouse, scríofa i C ++, ar féidir leat a úsáid agus beidh gach rud ceart go leor . Agus tá ZooKeeper i java. Agus ar bhealach ní fiú duit breathnú, ach ansin is féidir leat macasamhlú láimhe a úsáid.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Is córas praiticiúil é ClickHouse. Cuireann sí do chuid riachtanas san áireamh. Má tá macasamhlú láimhe agat, is féidir leat tábla Dáilte a chruthú a bhreathnaíonn ar do mhacasamhla láimhe agus a dhéanann teip eatarthu. Agus tá fiú rogha speisialta ann a ligeann duit flops a sheachaint, fiú má athraíonn do línte go córasach.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

D’fhéadfadh fadhbanna breise a bheith ann má úsáideann tú innill boird primitive. Is cruthaitheoir é ClickHouse a bhfuil go leor inneall boird éagsúla aige. I gcás gach cás tromchúiseach, mar atá scríofa sa doiciméadú, bain úsáid as táblaí ón teaghlach MergeTree. Agus an chuid eile go léir - tá sé seo amhlaidh, le haghaidh cásanna aonair nó le haghaidh tástálacha.

I dtábla MergeTree, ní gá go mbeadh aon dáta agus am agat. Is féidir leat é a úsáid fós. Mura bhfuil dáta agus am ann, scríobh gurb é 2000 an réamhshocrú. Oibreoidh sé seo agus ní bheidh acmhainní ag teastáil uaidh.

Agus sa leagan nua den fhreastalaí, is féidir leat a shonrú fiú go bhfuil deighilt saincheaptha agat gan eochair deighilte. Beidh sé mar an gcéanna.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Ar an láimh eile, is féidir leat innill tábla primitive a úsáid. Mar shampla, líon isteach na sonraí uair amháin agus féach, casadh agus scrios. Is féidir leat Log a úsáid.

Nó is é StripeLog nó TinyLog a stóráil méideanna beaga le haghaidh próiseála idirmheánach.

Is féidir cuimhne a úsáid má tá an méid sonraí beag agus is féidir leat rud éigin a twiddle sa RAM.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Ní thaitníonn ClickHouse go mór le sonraí athnormalaithe.

Seo sampla tipiciúil. Is líon mór URLanna é seo. Chuir tú sa chéad tábla eile iad. Agus ansin shocraigh siad a dhéanamh JOIN leo, ach ní oibreoidh sé seo, mar riail, toisc nach dtacaíonn ClickHouse ach le Hash JOIN. Mura bhfuil go leor RAM ann le go leor sonraí a theastaíonn a nascadh, ní oibreoidh JOIN*.

Má tá ard-cairdiúlacht ag baint leis na sonraí, ná bíodh imní ort, déan iad a stóráil i bhfoirm dhínormalaithe, tá na URLanna i bhfeidhm go díreach sa tábla is mó.

* agus anois tá ceangal cumaisc ag ClickHouse freisin, agus oibríonn sé i gcoinníollacha nach bhfuil sonraí idirmheánacha oiriúnach don RAM. Ach tá sé seo neamhéifeachtach agus tá an moladh i bhfeidhm fós.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Cúpla sampla eile, ach tá amhras orm cheana féin an bhfuil siad frith-patrún nó nach bhfuil.

Tá locht amháin ar eolas ag ClickHouse. Níl a fhios aige conas a nuashonrú*. I roinnt bealaí, tá sé seo fiú go maith. Má tá roinnt sonraí tábhachtacha agat, mar shampla, cuntasaíocht, ansin ní bheidh aon duine in ann é a sheoladh, toisc nach bhfuil aon nuashonruithe ann.

* Cuireadh tacaíocht do nuashonrú agus scriosadh i mód baisc leis i bhfad ó shin.

Ach tá roinnt bealaí speisialta ann a cheadaíonn nuashonruithe amhail is dá mba sa chúlra. Mar shampla, táblaí cosúil le ReplaceMergeTree. Déanann siad nuashonruithe le linn cumaisc chúlra. Is féidir leat é seo a bhrú le tábla optamaithe. Ach ná déan é seo ró-mhinic, mar déanfaidh sé an críochdheighilt a fhorscríobh go hiomlán.

Ní dhéileálann pleanálaí na gceisteanna ach go dona le hAontachtaí Dáilte i ClickHouse.

Droch, ach uaireanta OK.

Ag baint úsáide as ClickHouse amháin chun sonraí a léamh ar ais ag baint úsáide as roghnaigh*.

Ní mholfainn ClickHouse a úsáid le haghaidh ríomhaireachtaí deacra. Ach níl sé seo go hiomlán fíor, mar táimid ag bogadh ar shiúl ón moladh seo cheana féin. Agus chuireamar leis le déanaí an cumas samhlacha meaisínfhoghlama a chur i bhfeidhm i ClickHouse - Catboost. Agus cuireann sé isteach orm mar ceapaim, “Cad uafás é. Seo cé mhéad timthriallta in aghaidh an bheart a tharlaíonn sé! Is fuath liom i ndáiríre cloig a chur amú ar bhearta.

Úsáid éifeachtach ClickHouse. Alexey Milovidov (Yandex)

Ach ná bíodh eagla ort, suiteáil ClickHouse, beidh gach rud ceart go leor. Más rud ar bith, tá pobal againn. Dála an scéil, is tusa an pobal. Agus má tá aon fhadhb agat, is féidir leat dul chuig ár gcomhrá ar a laghad, agus tá súil agam go gcabhróidh siad leat.

ceisteanna

Go raibh maith agat as an tuairisc! Cá háit is féidir liom gearán a dhéanamh faoi thuairteáil ClickHouse?

Is féidir leat gearán a dhéanamh liom go pearsanta faoi láthair.

Thosaigh mé le déanaí ag baint úsáide as ClickHouse. Thit mé an comhéadan cli láithreach.

Cad scór.

Beagán níos déanaí thuairt mé an freastalaí le roghnú beag.

Tá tallainne agat.

D’oscail mé fabht GitHub, ach tugadh neamhaird air.

Feicfimid.

Rinne Alexey cleas orm freastal ar an tuarascáil, ag gealladh go n-inseoidh sé dom conas a fhaigheann tú rochtain ar na sonraí istigh.

An-simplí.

Thuig mé seo inné. Tuilleadh sonraí.

Níl cleasanna uafásacha ann. Níl ann ach comhbhrú bloc-ar-bhloc. Is é LZ4 an réamhshocrú, is féidir leat ZSTD * a chumasú. Bloic ó 64 cilibheart go dtí 1 meigibheart.

* tá tacaíocht ann freisin do chódaigh chomhbhrú speisialaithe is féidir a úsáid i slabhra le halgartaim eile.

An bhfuil sna bloic ach sonraí amha?

Gan amh go hiomlán. Tá arrays. Má tá colún uimhriúil agat, ansin cuirtear uimhreacha i ndiaidh a chéile in eagar.

Tá sé soiléir.

Alexey, sampla a bhí le uniqExact thar IPanna, i.e. an bhfíric go dtógann uniqExact níos faide chun ríomh de réir línte ná de réir uimhreacha, agus mar sin de. Cad a tharlóidh má úsáideann muid feint lenár gcluasa agus a caitheadh ​​​​ag am an profaí? Is é sin, is cosúil go bhfuil tú ráite nach bhfuil sé an-difriúil ar ár diosca. Má léimid línte ó diosca agus teilgthe, an mbeidh ár gcomhiomláin níos tapúla nó nach mbeidh? Nó an rachaidh muid chun cinn beagáinín anseo? Feictear dom go ndearna tú tástáil air seo, ach ar chúis éigin níor léirigh sé sa tagarmharc é.

Sílim go mbeidh sé níos moille ná gan réitigh. Sa chás seo, ní mór an seoladh IP a pharsáil ón teaghrán. Ar ndóigh, ag ClickHouse, tá ár bparsáil seoltaí IP optamaithe freisin. Rinneamar iarracht an-deacair, ach tá na huimhreacha scríofa agat i bhfoirm deich míle. An-míchompordach. Ar an láimh eile, oibreoidh an fheidhm uniqExact níos moille ar teaghráin, ní hamháin toisc gur teaghráin iad seo, ach freisin toisc go roghnaítear speisialtóireacht dhifriúil den algartam. Déantar teaghráin a phróiseáil ar bhealach difriúil.

Cad a tharlóidh má thógaimid cineál sonraí níos primitive? Mar shampla, scríobhamar síos an t-aitheantas úsáideora, atá againn, scríobh síos é mar líne, agus ansin scrofa é, an mbeidh sé níos spraoi nó nach mbeidh?

Tá mé in amhras. Sílim go mbeidh sé níos brónach, mar tar éis an tsaoil, is fadhb thromchúiseach é uimhreacha a pharsáil. Feictear dom gur thug an comhghleacaí seo fiú tuairisc ar cé chomh deacair is atá sé uimhreacha a pharsáil i bhfoirm deich míle, ach b’fhéidir nach bhfuil.

Alexey, go raibh míle maith agat as an tuairisc! Agus go raibh míle maith agat as ClickHouse! Tá ceist agam faoi phleananna. An bhfuil aon phleananna le haghaidh gné chun foclóirí a nuashonrú go neamhiomlán?

Is é sin, atosaigh páirteach?

Tá Tá. Cosúil leis an gcumas réimse MySQL a shocrú ann, i.e. nuashonraigh ina dhiaidh sin ionas nach lódáiltear na sonraí seo ach amháin má tá an foclóir an-mhór.

Gné an-suimiúil. Agus is dóigh liom gur mhol duine éigin é inár gcomhrá. B'fhéidir go raibh sé fiú duit.

Ní dóigh liom go bhfuil.

Go hiontach, anois casadh sé amach go bhfuil dhá iarratas. Agus is féidir leat tosú go mall é a dhéanamh. Ach ba mhaith liom rabhadh a thabhairt duit láithreach go bhfuil an ghné seo simplí go leor le cur i bhfeidhm. Is é sin, go teoiriciúil, ní gá duit ach uimhir an leagain a scríobh sa tábla agus ansin scríobh: leagan níos lú ná a leithéid agus a leithéid. Ciallaíonn sé seo, is dócha, go dtairgfimid é seo do dhíograiseoirí. An díograiseoir thú?

Sea, ach, ar an drochuair, ní i C++.

An bhfuil a fhios ag do chomhghleacaithe conas scríobh i C++?

Gheobhaidh mé duine.

Go hiontach*.

* cuireadh an ghné leis dhá mhí tar éis na tuarascála - d'fhorbair údar na ceiste í agus chuir a chuid iarraidh tarraingthe.

Go raibh maith agat!

Dia dhuit! Go raibh maith agat as an tuairisc! Luaigh tú go bhfuil ClickHouse an-mhaith ag ídiú na n-acmhainní go léir atá ar fáil dó. Agus labhair an cainteoir in aice le Luxoft faoina réiteach le haghaidh Post na Rúise. Dúirt sé gur thaitin ClickHouse go mór leo, ach níor úsáid siad é in ionad a bpríomhiomaitheoir go beacht toisc go raibh sé ag ithe an LAP go léir. Agus ní raibh siad in ann é a phlugáil isteach ina n-ailtireacht, isteach sa ZooKeeper le dugairí. An féidir ClickHouse a theorannú ar bhealach éigin ionas nach n-ídíonn sé gach rud a bheidh ar fáil dó?

Sea, is féidir agus an-éasca. Más mian leat níos lú croíleacáin a ithe, scríobh ansin set max_threads = 1. Agus sin é, déanfaidh sé an t-iarratas a fhorghníomhú i gcroílár amháin. Thairis sin, is féidir leat socruithe éagsúla a shonrú d'úsáideoirí éagsúla. Mar sin aon fhadhb. Agus abair le do chomhghleacaithe ó Luxoft nach bhfuil sé go maith nach bhfuair siad an socrú seo sa doiciméadú.

Alexey, Dia duit! Ba mhaith liom ceist a chur faoin gceist seo. Ní hé seo an chéad uair a chuala mé go bhfuil go leor daoine ag tosú ar ClickHouse a úsáid mar stóráil do logaí. Dúirt tú ag an tuairisc gan é seo a dhéanamh, i.e. ní gá duit teaghráin fhada a stóráil. Cad a cheapann tú faoi?

Ar an gcéad dul síos, ní teaghráin fhada iad logaí, mar riail. Tá eisceachtaí ann, ar ndóigh. Mar shampla, caitheann seirbhís éigin scríofa i java eisceacht, tá sé logáilte isteach. Agus mar sin de i lúb endless, agus an spás ar an tiomántán crua ritheann amach. Tá an réiteach an-simplí. Má tá na línte an-fhada, ansin iad a ghearradh. Cad is brí le fada? Tá na mílte cilibheart go dona*.

* Sna leaganacha is déanaí de ClickHouse, tá “granularity innéacs oiriúnaitheach” cumasaithe, rud a chuireann deireadh leis an bhfadhb a bhaineann le sraitheanna fada a stóráil den chuid is mó.

An gnáthchilibheart é?

Tá sé gnáth.

Dia dhuit! Go raibh maith agat as an tuairisc! Chuir mé ceist faoi seo sa chomhrá cheana féin, ach ní cuimhin liom an bhfuair mé freagra. An bhfuil pleananna ann chun an rannán WITH a leathnú ar bhealach CTE?

Fós. Tá ár rannóg WITH beagán suaibhreosach. Tá sé cosúil le gné beag dúinn.

Tuigim. Go raibh maith agat!

Go raibh maith agat as an tuairisc! An-súimiúil! Ceist dhomhanda. An bhfuil aon phleananna ann chun scriosadh sonraí a mhodhnú, b'fhéidir i bhfoirm stubs de shaghas éigin?

Gá. Is é seo an chéad tasc atá againn inár scuaine. Táimid ag smaoineamh go gníomhach anois ar conas gach rud a dhéanamh i gceart. Agus ba chóir duit tosú ar an méarchlár a bhrú *.

* brúite na cnaipí ar an méarchlár agus rinne gach rud.

An mbeidh tionchar aige seo ar fheidhmíocht an chórais nó nach mbeidh? An mbeidh an cur isteach chomh tapa agus atá sé anois?

B'fhéidir go mbeidh na scriosanna iad féin agus na nuashonruithe iad féin an-trom, ach ní dhéanfaidh sé seo difear d'fheidhmíocht roghnaithe nó d'fheidhmíocht na n-iontán.

Agus ceist bheag amháin eile. Ag an cur i láthair labhair tú faoi eochair bunscoile. Dá réir sin, ní mór dúinn deighilt, a dhéantar go míosúil de réir réamhshocraithe, ceart? Agus nuair a shocraímid raon dáta a luíonn isteach i mí, ansin ní léitear ach an deighilt seo, ceart?

Is ea.

Ceist. Mura féidir linn príomheochair ar bith a roghnú, an bhfuil sé ceart é a dhéanamh go sonrach de réir an réimse “Dáta” ionas go mbeidh níos lú atheagrú ar na sonraí seo sa chúlra ionas go n-oireann sé ar bhealach níos ordúla? Mura bhfuil ceisteanna raoin agat agus mura bhfuil tú in ann fiú aon eochair phríomha a roghnú, ar fiú dáta a chur sa phríomheochair?

Is ea.

B'fhéidir go bhfuil ciall le réimse a chur san eochair bhunscoile a chomhbhrúigh na sonraí níos fearr má dhéantar é a shórtáil de réir an réimse seo. Mar shampla, ID úsáideora. Úsáideoir, mar shampla, téann go dtí an suíomh céanna. Sa chás seo, cuir an t-aitheantas úsáideora agus an t-am. Agus ansin beidh do shonraí comhbhrúite níos fearr. Maidir leis an dáta, mura bhfuil agus mura bhfuil fiosruithe raoin agat ar dhátaí, ní gá duit an dáta a chur sa phríomheochair.

OK go raibh maith agat go mór!

Foinse: will.com

Add a comment