ClickHouse no nā mea hoʻohana kiʻekiʻe i nā nīnau a me nā pane

I ʻApelila, ʻākoakoa nā mea ʻenekini Avito no nā hālāwai pūnaewele me ka mea hoʻomohala ClickHouse nui ʻo Alexey Milovidov a me Kirill Shvakov, kahi mea hoʻomohala Golang mai Integros. Ua kūkākūkā mākou pehea mākou e hoʻohana ai i kahi ʻōnaehana hoʻokele waihona a me nā pilikia a mākou e hālāwai ai.

Ma muli o ka hālāwai, ua hōʻuluʻulu mākou i kahi ʻatikala me nā pane a ka poʻe loea i kā mākou a me nā nīnau a ka poʻe e pili ana i nā backup, resharding data, nā puke wehewehe ʻōlelo waho, ka mea hoʻokele Golang a me ka hoʻonui ʻana i nā mana ClickHouse. He mea maikaʻi paha ia i nā mea hoʻomohala e hana nei me ka Yandex DBMS a makemake nui i kona wā a me ka wā e hiki mai ana. Ma ka maʻamau, ʻo Alexey Milovidov nā pane, ke ʻole i kākau ʻia.

E akahele, nui nā kikokikona ma lalo o ka ʻoki. Manaʻolana mākou e kōkua ka ʻike me nā nīnau iā ʻoe e hoʻokele.

ClickHouse no nā mea hoʻohana kiʻekiʻe i nā nīnau a me nā pane

Nā mea

Inā ʻaʻole ʻoe makemake e heluhelu i ka kikokikona, hiki iā ʻoe ke nānā i ka hoʻopaʻa ʻana o nā hui ma kā mākou pūnaewele YouTube. Aia nā timecodes i ka ʻōlelo mua ma lalo o ke wikiō.

Hoʻonui mau ʻia ʻo ClickHouse, akā ʻaʻole kā mākou ʻikepili. He aha ka mea e hana ai?

Hoʻopau mau ʻia ʻo ClickHouse, a ʻo kā mākou ʻikepili, i hoʻopaʻa ʻia i ka hana hope loa, ʻaʻole i hoʻonui ʻia a aia i kahi kope kope.

E ʻōlelo kākou ua pilikia mākou a ua nalowale ka ʻikepili. Ua hoʻoholo mākou e hoʻihoʻi, a ua ʻike ʻia nā ʻāpana kahiko, i mālama ʻia ma nā kikowaena backup, he ʻokoʻa loa ia mai ka mana o ClickHouse i kēia manawa. He aha ka mea e hana ai ma ia kūlana, a hiki paha?

ʻO kahi kūlana āu i hoʻihoʻi ai i ka ʻikepili mai kahi waihona i kahi ʻano kahiko, akā ʻaʻole pili i ka mana hou, hiki ʻole. Hoʻomaopopo mākou i ka hoʻohālikelike ʻana i ka ʻikepili ma ClickHouse mau i hope. ʻOi aku ka nui o kēia ma mua o ka hoʻokō ʻana i hope i ka hana inā ua loli ke ʻano o kekahi hana i hoʻohana ʻole ʻia. Pono ka mana hou o ClickHouse e heluhelu i ka ʻikepili i mālama ʻia ma ka disk. ʻO kēia ke kānāwai.

He aha nā hana maikaʻi loa i kēia manawa no ke kākoʻo ʻana i ka ʻikepili mai ClickHouse?

Pehea e hana ai i nā waihona, me ka noʻonoʻo ʻana ua hoʻokō mākou i nā hana hope loa, kahi waihona nui o terabytes, a me ka ʻikepili i hoʻonui ʻia, e ʻōlelo, no nā lā ʻekolu i hala iho nei, a laila ʻaʻohe hana i loaʻa iā ia?

Hiki iā mākou ke hana i kā mākou hoʻonā ponoʻī a kākau ma ka bash: e hōʻiliʻili i kēia mau kope kope i kēlā me kēia ʻano. Malia paha ʻaʻohe pono e hoʻopaʻa i kekahi mea, a ua hana ʻia ke kaʻa i ka wā kahiko?

E hoʻomaka kākou me nā hana maikaʻi loa. Ke aʻo mau nei koʻu mau hoa, i ka pane ʻana i nā nīnau e pili ana i nā backup, e hoʻomanaʻo iā lākou e pili ana i ka lawelawe Yandex.Cloud, kahi i hoʻopau ʻia ai kēia pilikia. No laila e hoʻohana inā hiki.

ʻAʻohe hopena piha no nā waihona, hoʻokahi haneli pakeneka i kūkulu ʻia i ClickHouse. Aia kekahi mau hakahaka hiki ke hoʻohana. No ka loaʻa ʻana o kahi hoʻonā piha, pono ʻoe e hana liʻiliʻi me ka lima, a i ʻole e hana i nā ʻōwili ma ke ʻano o nā palapala.

E hoʻomaka wau me nā hoʻonā maʻalahi a hoʻopau me nā mea maʻalahi, e pili ana i ka nui o ka ʻikepili a me ka nui o ka puʻupuʻu. ʻO ka nui o ka pūʻulu, ʻoi aku ka paʻakikī o ka hopena.

Inā he mau gigabytes wale nō ka papaʻaina me ka ʻikepili, hiki ke hana ʻia e like me kēia:

  1. E mālama i ka wehewehe ʻana o ka pākaukau i.e. metadata − hōʻike papa hana.
  2. Hana i kahi hoʻolei me ka hoʻohana ʻana i ka mea kūʻai aku ClickHouse - koho i * mai ka papaʻaina e waiho. Ma ka maʻamau, e loaʻa iā ʻoe kahi faila ma ke ʻano TabSeparated. Inā makemake ʻoe e ʻoi aku ka maikaʻi, hiki iā ʻoe ke hana ma ka format Native.

Inā ʻoi aku ka nui o ka ʻikepili, a laila e hoʻonui ka manawa a me ka nui o ka waihona. Kapa ʻia kēia he kākoʻo logical; ʻaʻole pili ia i ka hōpili data ClickHouse. Inā ʻo ia, a laila hiki iā ʻoe ke lawe i kahi hoʻihoʻi a hoʻouka iā MySQL no ka hoʻihoʻi.

No nā hihia kiʻekiʻe aʻe, loaʻa iā ClickHouse kahi mana i kūkulu ʻia e hana i kahi kiʻi o nā ʻāpana i ka ʻōnaehana faila kūloko. Loaʻa kēia hiʻohiʻona ma ke ʻano he noi hoʻololi i ka ʻāpana paʻa paʻa. A i ʻole maʻalahi hoʻololi i ka pākaukau maloʻo - he kiʻi paʻi kēia o ka papaʻaina holoʻokoʻa.

E hana mau ʻia ka paʻi kiʻi no ka pākaukau hoʻokahi ma ka shard hoʻokahi, ʻo ia hoʻi, ʻaʻole hiki ke hana i kahi kiʻi paʻi like o ka pūʻulu holoʻokoʻa ma kēia ʻano. Akā no ka hapa nui o nā hana, ʻaʻohe mea e pono ai, a ua lawa ia e hoʻokō i kahi noi ma kēlā me kēia shard a loaʻa i kahi kiʻi paʻi. Hoʻokumu ʻia ia ma ke ʻano o nā hardlinks a no laila ʻaʻole e lawe i kahi wahi hou. A laila, kope ʻoe i kēia kiʻi paʻi kiʻi i ke kikowaena hoʻihoʻi a i ʻole ka waiho ʻana āu e hoʻohana ai no nā backup.

He mea maʻalahi ka hoʻihoʻi ʻana i kēlā waihona. ʻO ka mea mua, e hana i nā papa me ka hoʻohana ʻana i nā wehewehe papa i loaʻa. A laila, kope i nā paʻi kiʻi i mālama ʻia o nā ʻāpana i Directory-Detached no kēia mau papa a holo i ka nīnau. hoʻopili ʻāpana. He kūpono kēia hoʻonā no ka nui o ka ʻikepili koʻikoʻi.

I kekahi manawa pono ʻoe i kahi mea ʻoi aku ka maʻalili - i nā hihia i loaʻa iā ʻoe nā ʻumi a i ʻole mau haneli terabytes ma kēlā me kēia kikowaena a me nā haneli o nā kikowaena. Aia kahi hoʻonā ma aneʻi aʻu i ʻohi ai mai kaʻu mau hoa hana mai Yandex.Metrica. ʻAʻole wau e paipai iā ia i nā mea a pau - heluhelu ia a hoʻoholo no ʻoe iho inā he kūpono a ʻaʻole paha.

Pono mua ʻoe e hana i kekahi mau kikowaena me nā papa disk nui. A laila, ma kēia mau kikowaena, e hoʻāla i kekahi mau kikowaena ClickHouse a hoʻonohonoho iā lākou i hana lākou e like me kahi kope ʻē aʻe no nā shards like. A laila e hoʻohana i kahi ʻōnaehana faila a i ʻole kekahi mea hana ma kēia mau kikowaena e hiki ai iā ʻoe ke hana i nā snapshot. Elua mau koho maanei. ʻO ka koho mua he LVM snapshots, ʻo ka lua o ka koho ZFS ma Linux.

Ma hope o kēlā, i kēlā me kēia lā pono ʻoe e hana i kahi kiʻi kiʻi, e hoʻopunipuni a lawe i kahi wahi. Ma keʻano maʻamau, inā hoʻololi kaʻikepili, e hoʻonui ka nui o ka hakahaka i ka manawa. Hiki ke lawe ʻia kēia kiʻi paʻi i kēlā me kēia manawa a hoʻihoʻi ʻia ka ʻikepili, kahi hopena ʻē aʻe. Eia kekahi, pono mākou e kaupalena i kēia mau kope i ka config i ʻole lākou e hoʻāʻo e lilo i alakaʻi.

Hiki paha ke hoʻonohonoho i kahi lag i hoʻopaʻa ʻia o nā replicas i loko o nā kumu?

I kēia makahiki ke hoʻolālā nei ʻoe e hana i nā shafts ma ClickHouse. Hiki paha ke hoʻonohonoho i kahi lag o nā replicas i loko o lākou? Makemake mākou e hoʻohana iā ia e pale iā mākou iho mai nā hiʻohiʻona maikaʻi ʻole me nā hoʻololi a me nā hoʻololi ʻē aʻe.

Hiki paha ke hana i kekahi ʻano roll back no nā hoʻololi? No ka laʻana, i loko o kahi lāʻau e kū nei, e lawe a ʻōlelo a hiki i kēia manawa ke hoʻohana nei ʻoe i nā loli, a mai kēia manawa e hoʻōki ʻoe i ka hoʻohana ʻana i nā loli?

Inā hiki mai kahi kauoha i kā mākou puʻupuʻu a uhaʻi, a laila loaʻa iā mākou kahi kope kūlana me kahi hola lag, kahi e hiki ai iā mākou ke ʻōlelo e hoʻohana mākou i kēia manawa, akā ʻaʻole mākou e hoʻololi iā ia no nā minuke he ʻumi i hala?

ʻO ka mea mua, e pili ana i ka lag hoʻomalu ʻia o nā replicas. Aia kekahi noi mai nā mea hoʻohana, a ua hana mākou i kahi pilikia ma Github me ka noi: "Inā makemake kekahi i kēia, e like me ia, e kau i ka puʻuwai." ʻAʻohe mea nāna i hoʻopuka, a ua pani ʻia ka pilikia. Eia naʻe, hiki iā ʻoe ke loaʻa i kēia manawa ma ka hoʻonohonoho ʻana iā ClickHouse. ʻOiaʻiʻo, hoʻomaka wale mai ka mana 20.3.

Hana mau ʻo ClickHouse i ka hoʻohui ʻana i ka ʻikepili ma ke kua. Ke hoʻopau ʻia kahi hui ʻana, hoʻololi ʻia kekahi ʻāpana ʻikepili me kahi ʻāpana nui. I ka manawa like, hoʻomau nā ʻāpana ʻikepili i loaʻa ma mua o ka diski no kekahi manawa.

ʻO ka mea mua, hoʻomau lākou e mālama ʻia inā loaʻa nā nīnau i koho ʻia e hoʻohana iā lākou, i mea e hoʻolako ai i ka hana non-blocking. Heluhelu maʻalahi nā nīnau koho mai nā ʻāpana kahiko.

ʻO ka lua, aia kekahi paepae manawa - waiho ʻia nā ʻikepili kahiko ma ka disk no ʻewalu mau minuke. Hiki ke hoʻopilikino ʻia kēia mau minuke ʻewalu a lilo i lā hoʻokahi. E kūʻai kēia i kahi diski: ma muli o ka kahe o ka ʻikepili, ʻike ʻia i ka lā hope ʻaʻole e pālua wale ka ʻikepili, hiki ke lilo i ʻelima mau manawa. Akā inā he pilikia koʻikoʻi, hiki iā ʻoe ke hoʻōki i ka server ClickHouse a hoʻokaʻawale i nā mea āpau.

I kēia manawa ke kū nei ka nīnau pehea e pale ai kēia i nā hoʻololi. Pono e nānā hohonu ma aneʻi, no ka mea, ma nā mana kahiko o ClickHouse, ua hana ka hoʻololi i ke ʻano e hoʻololi pololei i nā ʻāpana. Aia kekahi ʻāpana ʻikepili me kekahi mau faila, a hana mākou, no ka laʻana, alter drop column. A laila wehe kino ʻia kēia kolamu mai nā ʻāpana āpau.

Akā, e hoʻomaka ana me ka mana 20.3, ua hoʻololi piha ʻia ka mīkini hoʻololi, a i kēia manawa ua loli mau nā ʻāpana ʻikepili. ʻAʻole lākou e loli - ke hana nei nā hoʻololi i ke ʻano like me ka hui ʻana. Ma kahi o ka hoʻololi ʻana i kahi ʻāpana ma kahi, hana mākou i kahi mea hou. I ka ʻāpana hou, ua lilo nā faila i loli ʻole i mau loulou, a inā mākou e holoi i kahi kolamu, e nalowale ana ia i ka ʻāpana hou. E holoi ʻia ka ʻāpana kahiko ma hope o ʻewalu mau minuke, a ma ʻaneʻi hiki iā ʻoe ke hoʻololi i nā hoʻonohonoho i ʻōlelo ʻia ma luna.

Pēlā nō i nā hoʻololi e like me ka hoʻololi ʻana. Ke hana ʻoe hoʻololi holoi ai ole ia, hoʻololi hou, ʻAʻole ia e hoʻololi i ka ʻāpana, akā hana i kahi mea hou. A laila holoi i ka mea kahiko.

Pehea inā ua loli ke ʻano o ka papaʻaina?

Pehea e hoʻihoʻi ai i kahi waihona i hana ʻia me ka papahana kahiko? A ʻo ka nīnau ʻelua e pili ana i ka hihia me nā snapshots a me nā mea hana ʻōnaehana faila. He maikaʻi anei ʻo Btrfs ma kahi o ZFS ma Linux LVM?

Inā hana ʻoe hoʻopili ʻāpana nā ʻāpana me kahi ʻano ʻokoʻa, a laila e haʻi ʻo ClickHouse iā ʻoe ʻaʻole hiki kēia. ʻO kēia ka hopena. ʻO ka mea mua, ʻo ia ka hana ʻana i papa ʻaina no ke ʻano MergeTree me ka hale kahiko, e hoʻopili i ka ʻikepili ma laila me ka hoʻohana ʻana i ka attach, a hana i kahi nīnau hoʻololi. A laila hiki iā ʻoe ke kope a hoʻoili i kēia ʻikepili a hoʻopili hou, a hoʻohana paha i kahi noi alter table neʻe pā.

ʻO ka nīnau ʻelua inā hiki ke hoʻohana ʻia nā Btrfs. No ka hoʻomaka ʻana, inā loaʻa iā ʻoe ka LVM, a laila lawa nā kiʻi paʻi LVM, a hiki i ka ʻōnaehana faila ke ext4, ʻaʻole ia he mea nui. Me Btrts, pili nā mea āpau i kāu ʻike i ka hoʻohana ʻana. He ʻōnaehana faila makua kēia, akā aia kekahi mau kānalua e pili ana i ka holo ʻana o nā mea āpau i ka hoʻomaʻamaʻa ʻana i kahi hiʻohiʻona. ʻAʻole wau e manaʻo e hoʻohana i kēia ke ʻole ʻoe he Btrfs i ka hana.

He aha nā hoʻomaʻamaʻa maikaʻi loa i kēia manawa i ka resharding ʻikepili?

He paʻakikī a he nui ka pilikia o ka hoʻoponopono hou ʻana. Nui nā pane hiki ke loaʻa ma aneʻi. Hiki iā ʻoe ke hele mai kekahi ʻaoʻao a ʻōlelo i kēia - ʻAʻohe hiʻohiʻona resharding i kūkulu ʻia i ka ClickHouse. Akā, hopohopo wau ʻaʻole kūpono kēia pane i kekahi. No laila, hiki iā ʻoe ke hele mai kēlā ʻaoʻao a ʻōlelo aku he nui nā ala a ClickHouse e hoʻihoʻi hou i ka ʻikepili.

Inā pau ka pūʻulu i waho a i ʻole hiki iā ia ke mālama i ka ukana, hoʻohui ʻoe i nā kikowaena hou. Akā, ua nele kēia mau kikowaena ma ka maʻamau, ʻaʻohe ʻikepili ma luna o lākou, ʻaʻohe ukana. Pono ʻoe e hoʻonohonoho hou i ka ʻikepili i hoʻolaha like ʻia ma ka pūʻulu hou a nui.

ʻO ke ala mua e hiki ai ke hana i kēia, ʻo ke kope ʻana i kahi ʻāpana o nā ʻāpana i nā kikowaena hou me ka hoʻohana ʻana i kahi noi alter table fetch partition. No ka laʻana, loaʻa iā ʻoe nā ʻāpana ma ka mahina, a lawe ʻoe i ka mahina mua o 2017 a kope iā ia i kahi kikowaena hou, a laila kope i ke kolu o ka mahina i kekahi kikowaena hou. A hana ʻoe i kēia a hiki i ka liʻiliʻi a i ʻole.

Hiki ke lawe ʻia ka hoʻololi ʻana no kēlā mau ʻāpana i loli ʻole i ka wā hoʻopaʻa. No nā ʻāpana hou, pono e hoʻopau ʻia ka hoʻopaʻa ʻana, no ka mea ʻaʻole atomic kā lākou hoʻoili. Inā ʻaʻole, e hoʻopau ʻoe i nā kope a i ʻole nā ​​āpau i ka ʻikepili. Eia naʻe, kūpono kēia ʻano hana a hana maikaʻi loa. Hoʻouna ʻia nā ʻāpana compressed i mākaukau ma luna o ka pūnaewele, ʻo ia hoʻi, ʻaʻole i hoʻopaʻa ʻia a hoʻopili hou ʻia ka ʻikepili.

Hoʻokahi ka hemahema o kēia ʻano, a pili ia i ke ʻano sharding, inā ʻoe i hoʻohiki i kēia ʻano sharding, he kī sharding āu i loaʻa ai. I kāu laʻana no ka hihia me nā metrics, ʻo ke kī sharding ka hash o ke ala. Ke koho ʻoe i kahi pākaukau Distributed, hele ia i nā ʻāpana āpau o ka hui i ka manawa hoʻokahi a lawe i ka ʻikepili mai laila.

ʻO ke ʻano kēia, ʻaʻole ia he mea nui iā ʻoe i ka ʻikepili i pau i ka shard. ʻO ka mea nui, ʻo ka ʻikepili ma ke ala hoʻokahi e pau i ka shard hoʻokahi, akā ʻaʻole ia ka mea nui. Ma kēia hihia, kūpono ka hoʻololi ʻana i nā ʻāpana i mākaukau, no ka mea me nā nīnau koho e loaʻa nō hoʻi ʻoe i ka ʻikepili piha - inā ma mua o ka hoʻihoʻi ʻana a i ʻole ma hope, ʻaʻohe mea nui ka hoʻolālā.

Akā aia kekahi mau hihia i ʻoi aku ka paʻakikī. Inā ma ka pae noiʻi logic e hilinaʻi ʻoe i kahi papahana sharding kūikawā, aia kēia mea kūʻai aku ma luna o ia a me kēlā shard, a hiki ke hoʻouna pololei ʻia ka noi ma laila, ʻaʻole i ka papa ʻaina Distributed. A i ʻole ke hoʻohana nei ʻoe i kahi mana hou loa o ClickHouse a ua hiki iā ʻoe ke hoʻonohonoho optimize skip unused shards. I kēia hihia, i ka wā o ka nīnau koho, e nānā ʻia ka ʻōlelo ma ka ʻāpana a e helu ʻia nā shards e pono e hoʻohana ʻia e like me ke ʻano sharding. Hāʻawi ʻia kēia hana e hoʻokaʻawale ʻia ka ʻikepili e like me kēia hoʻolālā sharding. Inā hoʻonohonoho lima ʻoe iā lākou, hiki ke loli ka leka.

No laila ʻo kēia ke ʻano helu ʻekahi. A ke kali nei au i kāu pane, inā he kūpono ke ʻano, a e neʻe paha kāua.

ʻO Vladimir Kolobaev, ke alakaʻi alakaʻi ʻōnaehana ma Avito: Alexey, ʻaʻole hana maikaʻi ke ʻano āu i ʻōlelo ai inā pono ʻoe e hoʻolaha i ka ukana, me ka heluhelu ʻana. Hiki iā mākou ke lawe i kahi ʻāpana i kēlā me kēia mahina a hiki ke lawe i ka mahina ma mua i kahi node ʻē aʻe, akā ke hiki mai kahi noi no kēia ʻikepili, e hoʻouka wale mākou. Akā, makemake mākou e hoʻouka i ka pūʻulu holoʻokoʻa, no ka mea, inā ʻaʻole, no kekahi manawa e hana ʻia ka ukana heluhelu holoʻokoʻa e ʻelua shards.

ʻO Alexey Milovidov: He mea ʻē ka pane ma aneʻi - ʻae, ʻino, akā hiki ke hana. E wehewehe pono wau pehea. He mea pono ke nānā aku i ke kūlana hoʻouka e hele mai ana ma hope o kāu ʻikepili. Inā ke nānā nei kēia i ka ʻikepili, a laila hiki iā mākou ke ʻōlelo i ka hapa nui o nā noi no ka ʻikepili hou.

Ua hoʻokomo ʻoe i nā kikowaena hou, ua neʻe i nā ʻāpana kahiko, akā ua hoʻololi pū i ka hoʻopaʻa ʻana o ka ʻikepili hou. A e hoʻolaha ʻia ka ʻikepili hou ma ka pūʻulu. No laila, ma hope o ʻelima mau minuke, e hoʻouka like nā noi no nā minuke ʻelima i ka hui; ma hope o kahi lā, e hoʻouka like nā noi no nā hola XNUMX i ka hui. A ʻo nā noi no ka mahina ma mua, ʻaʻole naʻe, e hele wale i kahi ʻāpana o nā kikowaena cluster.

Akā pinepine ʻaʻole ʻoe e loaʻa nā noi kūikawā no Pepeluali 2019. ʻO ka mea nui, inā hele nā ​​​​noi i 2019, a laila e lilo lākou no ka 2019 holoʻokoʻa - no ka manawa nui, ʻaʻole no kahi liʻiliʻi liʻiliʻi. A e hiki no ia mau noi ke hoʻouka like i ka hui. Akā ma ka laulā, pololei loa kāu ʻōlelo ʻana he hopena ad hoc kēia ʻaʻole e hoʻolaha like i ka ʻikepili.

He mau wahi hou aku ka'u e pane ai i ka ninau. ʻO kekahi o lākou e pili ana i ka hoʻolālā mua ʻana i kahi ʻōnaehana sharding i mea e emi ai ka ʻeha o ka sharding. ʻAʻole hiki kēia i nā manawa a pau.

No ka laʻana, loaʻa iā ʻoe ka ʻikepili nānā. Ke ulu nei ka ʻikepili nānā no ʻekolu kumu. ʻO ka mua ka hōʻiliʻili ʻana o ka ʻikepili mōʻaukala. ʻO ka lua ka ulu ʻana o ke kaʻa. A ʻo ke kolu ka hoʻonui ʻana i ka nui o nā mea e pili ana i ka nānā ʻana. Aia nā microservices hou a me nā metric e pono e mālama ʻia.

Hiki paha i kēia mau mea, pili ka piʻi nui loa me ke kumu ʻekolu - ka hoʻonui ʻana i ka hoʻohana ʻana i ka nānā. A i kēia hihia, pono e nānā i ke ʻano o ka ukana, he aha nā nīnau koho nui. E hoʻokumu ʻia nā nīnau koho maʻamau ma luna o kekahi ʻāpana o nā ana.

No ka laʻana, hoʻohana ʻia ka CPU ma kekahi mau kikowaena e kekahi lawelawe. ʻIke ʻia aia kekahi ʻāpana o nā kī e loaʻa ai kēia ʻikepili. A ʻo ka noi ponoʻī no kēia ʻikepili he mea maʻalahi loa ia a hoʻopau ʻia i loko o ʻumi mau milliseconds. Hoʻohana ʻia no ka nānā ʻana i nā lawelawe a me nā dashboards. Manaʻo wau ua maopopo iaʻu kēia.

ʻO Vladimir Kolobaev: ʻO ka mea ʻoiaʻiʻo, hoʻopiʻi pinepine mākou i ka ʻikepili mōʻaukala, ʻoiai mākou e hoʻohālikelike i ke kūlana o kēia manawa me ka mōʻaukala i ka manawa maoli. A he mea nui iā mākou ke komo wikiwiki i ka nui o ka ʻikepili, a he hana maikaʻi loa ʻo ClickHouse me kēia.

Ua pololei ʻoe, ʻike mākou i ka hapa nui o nā noi heluhelu i ka lā hope, e like me nā ʻōnaehana nānā. Akā i ka manawa like, ʻoi aku ka nui o ka ukana ma ka ʻikepili mōʻaukala. Mai kahi ʻōnaehana makaʻala e hele a puni kēlā me kēia kanakolu kekona a ʻōlelo iā ClickHouse: “E hāʻawi mai iaʻu i ka ʻikepili no nā pule ʻeono i hala. E kūkulu mai iaʻu i kekahi ʻano o ka neʻe ʻana mai o lākou, a e hoʻohālikelike kākou i ka waiwai o kēia manawa me ka mea mōʻaukala.

Makemake wau e ʻōlelo no ia mau noi hou loa he papaʻaina liʻiliʻi ʻē aʻe mākou e mālama ai i ʻelua mau lā o ka ʻikepili, a lele nā ​​noi nui i loko. Hoʻouna wale mākou i nā nīnau mōʻaukala nui i ka papaʻaina nui.

ʻO Alexey Milovidov: ʻO ka mea pōʻino, ua lilo ia i mea maikaʻi ʻole no kāu hiʻohiʻona, akā e haʻi wau iā ʻoe i ka wehewehe ʻana o ʻelua mau papa hana sharding maikaʻi ʻole a paʻakikī hoʻi ʻaʻole pono e hoʻohana ʻia, akā hoʻohana ʻia i ka lawelawe a kaʻu mau hoaaloha.

Aia kahi hui nui me nā hanana Yandex.Metrica. ʻO nā hanana he nānā ʻaoʻao, kaomi, a me ka hoʻololi ʻana. ʻO ka hapa nui o nā noi e hele i kahi pūnaewele kikoʻī. Wehe ʻoe i ka lawelawe Yandex.Metrica, loaʻa iā ʻoe kahi pūnaewele - avito.ru, e hele i ka hōʻike, a noi ʻia kāu pūnaewele.

Akā aia kekahi mau noi - analytical a me ka honua - i hana ʻia e nā mea loiloi kūloko. I ka hihia wale nō, ʻike wau e noi ana nā mea loiloi kūloko i nā noi no nā lawelawe Yandex. Akā naʻe, ʻo nā lawelawe ʻo Yandex ka mea nui o ka ʻikepili āpau. ʻAʻole kēia no nā helu kikoʻī, akā no ka kānana ākea.

Pehea e hoʻonohonoho ai i ka ʻikepili i mea e hana maikaʻi ai nā mea āpau no hoʻokahi counter, a me nā nīnau honua pū kekahi? ʻO kekahi pilikia ʻē aʻe, ʻo ka nui o nā noi ma ClickHouse no ka pūʻulu Metrics he mau tausani kekona. I ka manawa like, ʻaʻole hiki i hoʻokahi kikowaena ClickHouse ke mālama i nā noi mea ʻole, no ka laʻana, he mau tausani i kekona.

ʻO ka nui o ka pūʻulu he ʻeono haneli mau mea kikowaena. Inā ʻoe e huki wale i kahi papa ʻaina ma luna o kēia pūʻulu a hoʻouna i mau kaukani noi ma laila, e ʻoi aku ka hewa ma mua o ka hoʻouna ʻana iā lākou i hoʻokahi kikowaena. Ma ka ʻaoʻao ʻē aʻe, ʻo ke koho e hoʻolaha like ʻia ka ʻikepili, a hele mākou a noi mai nā kikowaena āpau, hoʻokuʻu koke ʻia.

Aia kekahi koho e kū'ē i ka diametrically. E noʻonoʻo inā e hoʻokaʻawale mākou i ka ʻikepili ma nā pūnaewele, a hele kahi noi no kahi pūnaewele i hoʻokahi shard. I kēia manawa, hiki i ka puʻupuʻu ke lawelawe i ʻumi kaukani noi i kēlā me kēia kekona, akā ma ka shard hoʻokahi e hana mālie kekahi noi. ʻAʻole e hoʻonui hou ʻia ma ke ʻano o ka throughput. ʻOi loa inā ʻo kēia ka pūnaewele avito.ru. ʻAʻole wau e hōʻike i ka mea huna inā wau e ʻōlelo ʻo Avito kekahi o nā pūnaewele i kipa ʻia ma RuNet. A ʻo ka hana ʻana ma ka ʻāpana hoʻokahi he pupule.

No laila, ua hoʻolālā ʻia ka hoʻolālā sharding ma kahi ʻano maalea. Hoʻokaʻawale ʻia ka pūʻulu holoʻokoʻa i kekahi mau pūʻulu, a mākou i kapa ai i nā papa. Loaʻa i kēlā me kēia puʻupuʻu mai kahi kakini a hiki i nā ʻumi kakini shards. He kanakolukumamāiwa ka huina o ia mau pūʻulu.

Pehea ka nui o keia? ʻAʻole loli ka helu o nā puʻupuʻu - ʻoiai he kanakolukumamāiwa mau makahiki i hala aku nei, e mau ana. Akā i loko o kēlā me kēia o lākou, hoʻonui mākou i ka nui o nā shards i ka wā e hōʻiliʻili ai mākou i ka ʻikepili. A ʻo ka hoʻolālā sharding holoʻokoʻa e like me kēia: ua māhele ʻia kēia mau pūʻulu i nā pūnaewele, a no ka hoʻomaopopo ʻana i ka pūnaewele ma luna o ka pūʻulu, hoʻohana ʻia kahi metabase ʻokoʻa ma MySQL. Hoʻokahi kahua - ma kahi pūʻulu. A i loko o laila, hiki ke sharding e like me nā ID malihini kipa.

I ka hoʻopaʻa ʻana, puʻunaue mākou iā lākou i ke koena o ka māhele o ka ID malihini kipa. Akā i ka hoʻohui ʻana i kahi shard hou, hoʻololi ke ʻano sharding; hoʻomau mākou i ka hoʻokaʻawale ʻana, akā me ke koena o ka mahele ma kahi helu ʻē aʻe. ʻO ia hoʻi, aia kahi malihini kipa ma nā kikowaena he nui, a ʻaʻole hiki iā ʻoe ke hilinaʻi i kēia. Hana ʻia kēia e hōʻoia i ka ʻoi aku ka maikaʻi o ka ʻikepili. A i ka hana ʻana i nā noi, hele mākou i ka papa ʻaina Distributed, e nānā ana i ka pūʻulu a komo i ka nui o nā kikowaena. He hana lapuwale kēia.

Akā ʻaʻole e piha kaʻu moʻolelo inā ʻaʻole wau e ʻōlelo ua haʻalele mākou i kēia papahana. Ma ka papahana hou, ua hoʻololi mākou i nā mea āpau a kope i nā ʻikepili āpau me ka hoʻohana ʻana i ka clickhouse-copier.

I ka papahana hou, ua māhele ʻia nā pūnaewele āpau i ʻelua mau ʻāpana - nui a liʻiliʻi. ʻAʻole maopopo iaʻu pehea i koho ʻia ai ka paepae, akā ʻo ka hopena ua hoʻopaʻa ʻia nā pūnaewele nui ma hoʻokahi puʻupuʻu, aia he 120 shards me ʻekolu replicas i kēlā me kēia - ʻo ia hoʻi, 360 mau kikowaena. A ʻo ka ʻōnaehana sharding ka mea e hele ai kēlā me kēia noi i nā shards i ka manawa hoʻokahi. Inā wehe ʻoe i kekahi ʻaoʻao hōʻike no avito.ru ma Yandex.Metrica, e hele ka noi i nā kikowaena 120. He liʻiliʻi nā pūnaewele nui ma RuNet. A ʻo nā noi ʻaʻole hoʻokahi tausani i kekona, akā ʻoi aku ka liʻiliʻi ma mua o hoʻokahi haneli. Hoʻopili mālie ʻia kēia mau mea āpau e ka papa ʻaina Distributed, kahi e hana ai kēlā me kēia me nā kikowaena 120.

A ʻo ka hui ʻelua no nā wahi liʻiliʻi. Eia kahi hoʻolālā sharding e pili ana i ka ID pūnaewele, a hele kēlā me kēia noi i hoʻokahi shard.

Loaʻa iā ClickHouse kahi mea hoʻohana clickhouse-copier. Hiki iā ʻoe ke haʻi iā mākou e pili ana iā ia?

E ʻōlelo koke wau ʻoi aku ka paʻakikī o kēia hoʻonā a ʻoi aku ka liʻiliʻi o ka huahana. ʻO ka pōmaikaʻi, ʻo ia ka hoʻoheheʻe ʻana i ka ʻikepili e like me ke ʻano āu i kuhikuhi ai. Akā ʻo ka drawback o ka pono ʻaʻole ia e reshard loa. Hoʻopili ʻo ia i ka ʻikepili mai hoʻokahi kumulāʻau puʻupuʻu a i kahi kumulāʻau puʻupuʻu ʻē aʻe.

'O ia ho'i, no ka hana 'ana, pono e loa'a iā 'oe nā pū'ulu 'elua. Hiki ke loaʻa iā lākou ma nā kikowaena like, akā naʻe, ʻaʻole e hoʻoneʻe ʻia ka ʻikepili, akā e kope ʻia.

No ka laʻana, ʻehā mau kikowaena, i kēia manawa ʻewalu. Hoʻokumu ʻoe i kahi papa ʻĀpana hou ma nā kikowaena āpau, nā papa kūloko hou a hoʻomaka i ka clickhouse-copier, e hōʻike ana i loko o ka papa hana e heluhelu ai ia mai laila, e ʻae i ka hoʻolālā sharding hou a hoʻoili i ka ʻikepili ma laila. A ma nā kikowaena kahiko e pono ai ʻoe i hoʻokahi a me ka hapalua manawa ʻoi aku ka nui ma mua o kēia manawa, no ka mea, pono e noho ka ʻikepili kahiko ma luna o lākou, a hiki i ka hapalua o nā ʻikepili kahiko ma luna o lākou. Inā ʻoe i manaʻo ma mua e pono e hoʻihoʻi hou ʻia ka ʻikepili a loaʻa kahi ākea, a laila kūpono kēia ʻano.

Pehea e hana ai ka clickhouse-copier i loko? Hoʻokaʻawale ia i nā hana a pau i hoʻonohonoho o nā hana no ka hoʻoponopono ʻana i hoʻokahi ʻāpana o ka papaʻaina hoʻokahi ma kahi shard. Hiki ke hoʻokō like ʻia kēia mau hana a pau, a hiki ke holo ʻia ka clickhouse-copier ma nā mīkini ʻokoʻa i nā manawa he nui, akā ʻo ka mea e hana ai no ka pā hoʻokahi ʻaʻohe mea ʻē aʻe ma kahi koho hoʻokomo. Heluhelu ʻia ka ʻikepili, hoʻokaʻawale ʻia, hoʻokaʻawale ʻia, a laila kaomi hou, kākau ʻia ma kahi, a hoʻonohonoho hou ʻia. He hoʻoholo paʻakikī kēia.

He mea hoʻokele kāu i kapa ʻia ʻo resharding. Pehea me ia?

I ka makahiki 2017, loaʻa iā ʻoe kahi mea hoʻokele i kapa ʻia ʻo resharding. Aia kekahi koho ma ClickHouse. E like me kaʻu i hoʻomaopopo ai, ʻaʻole i lele. Hiki iā ʻoe ke haʻi mai iaʻu i ke kumu o kēia hana? Me he mea lā pili loa.

ʻO ka pilikia holoʻokoʻa inā pono e hoʻihoʻi hou i ka ʻikepili ma kahi, pono ka synchronization paʻakikī e hana i kēia atomically. I ka wā i hoʻomaka ai mākou e nānā i ke ʻano o ka hana ʻana o kēia synchronization, ua ʻike ʻia aia nā pilikia kumu. A ʻo kēia mau pilikia koʻikoʻi ʻaʻole wale i ka theoretical, akā hoʻomaka koke e hōʻike iā lākou iho i ka hoʻomaʻamaʻa ma ke ʻano o kahi mea hiki ke wehewehe maʻalahi loa - ʻaʻohe hana.

Hiki paha ke hoʻohui i nā ʻāpana ʻikepili āpau ma mua o ka neʻe ʻana i nā disks lohi?

Nīnau e pili ana i ka TTL me ka neʻe ʻana i ka koho disk i ka pōʻaiapili o nā hui. Aia kekahi ala, ʻaʻole ma o cron, e hoʻohui i nā ʻāpana āpau i hoʻokahi ma mua o ka neʻe ʻana iā lākou e lohi i nā disks?

ʻO ka pane i ka nīnau hiki ke hoʻopili maʻalahi i nā ʻāpana āpau i hoʻokahi ma mua o ka hoʻoili ʻana iā lākou - ʻaʻole. Manaʻo wau ʻaʻole pono kēia. ʻAʻole pono ʻoe e hoʻohui i nā ʻāpana āpau i hoʻokahi, akā e helu wale i ka ʻoiaʻiʻo e hoʻoneʻe ʻia lākou i nā disks lohi.

Loaʻa iā mākou ʻelua mau kumu no nā lula hoʻoili. ʻO ka mea mua e like me ka hoʻopiha ʻia. Inā ʻoi aku ka liʻiliʻi o ka pae hoʻopaʻa i kēia manawa ma mua o kahi pākēneka o ka wahi kaʻawale, koho mākou i hoʻokahi puʻupuʻu a hoʻoneʻe iā ia i kahi waiho mālie. A i ʻole, ʻaʻole lohi, akā ʻo ka mea aʻe - i kāu hoʻonohonoho ʻana.

ʻO ka nui o ka lua. E pili ana i ka neʻe ʻana i nā ʻāpana nui. Hiki iā ʻoe ke hoʻololi i ka paepae e like me ka wahi kaʻawale ma ka disk wikiwiki, a e hoʻoili ʻia nā ʻikepili.

Pehea e neʻe ai i nā mana hou o ClickHouse inā ʻaʻohe ala e nānā i ka hoʻohālikelike ma mua?

Kūkākūkā mau ʻia kēia kumuhana i ke kamaʻilio telegrama ClickHouse me ka noʻonoʻo ʻana i nā ʻano like ʻole, a ʻoiai. Pehea ka palekana o ka hoʻonui ʻana mai ka mana 19.11 a i 19.16 a, no ka laʻana, mai 19.16 a i 20.3. He aha ke ala maikaʻi loa e neʻe ai i nā mana hou me ka hiki ʻole ke nānā mua i ka hoʻohālikelike ʻana i ka pahu one?

Aia kekahi mau lula "gula" maanei. Ka mua - heluhelu i ka changelog. Nui ia, akā aia nā paukū ʻokoʻa e pili ana i nā loli like ʻole i hope. Mai mālama i kēia mau kiko me he hae ʻulaʻula. ʻO kēia nā mea liʻiliʻi liʻiliʻi e pili ana i kekahi mau hana lihi āu e hoʻohana ʻole ai.

ʻO ka lua, inā ʻaʻohe ala e nānā i ka hoʻohālikelike ʻana i ka pahu one, a makemake ʻoe e hoʻonui koke i ka hana ʻana, ʻo ka ʻōlelo ʻana ʻaʻole pono ʻoe e hana i kēia. E hana mua i kahi pahu one a ho'āʻo. Inā ʻaʻohe wahi hoʻāʻo, a laila ʻaʻole paha ʻoe i kahi hui nui loa, ʻo ia ka mea hiki iā ʻoe ke kope i kekahi o nā ʻikepili i kāu kamepiula a e hōʻoia i ka hana pono o nā mea āpau. Hiki iā ʻoe ke hoʻāla i kekahi mau kope ma kāu mīkini. A i ʻole hiki iā ʻoe ke kiʻi i kahi mana hou ma kahi kokoke a hoʻouka i kekahi o nā ʻikepili ma laila - ʻo ia hoʻi, hana i kahi ʻano hoʻāʻo improvised.

ʻO kekahi lula ʻaʻole e hoʻonui i hoʻokahi pule ma hope o ka hoʻokuʻu ʻana o ka mana ma muli o ka hopu ʻana i nā pōpoki i ka hana ʻana a me nā hoʻoponopono wikiwiki. E noʻonoʻo kākou i ka helu o nā mana ClickHouse i ʻole e huikau.

Aia ka mana 20.3.4. Hōʻike ka helu 20 i ka makahiki o ka hana ʻana - 2020. Mai ka manaʻo o ka mea i loko, ʻaʻole pili kēia, no laila ʻaʻole mākou e hoʻolohe iā ia. Aʻe - 20.3. Hoʻonui mākou i ka helu lua - i kēia hihia 3 - i kēlā me kēia manawa e hoʻokuʻu mākou i kahi hoʻokuʻu me kekahi mau hana hou. Inā makemake mākou e hoʻohui i kekahi hiʻohiʻona i ClickHouse, pono mākou e hoʻonui i kēia helu. ʻO ia hoʻi, ma ka mana 20.4 ClickHouse e ʻoi aku ka maikaʻi. ʻO ka huahelu ʻekolu he 20.3.4. Eia ka 4 ka helu o ka hoʻokuʻu ʻana i ka patch ʻaʻole mākou i hoʻohui i nā hiʻohiʻona hou, akā ua hoʻoponopono i kekahi mau pōpoki. A ʻo 4 ʻo ia hoʻi mākou i hana ʻehā manawa.

Mai noʻonoʻo he mea weliweli kēia. Hiki i ka mea hoʻohana ke hoʻokomo i ka mana hou loa a e hana ia me ka pilikia ʻole me ka uptime i kēlā me kēia makahiki. Akā, e noʻonoʻo ʻoe i kekahi hana no ka hoʻoponopono ʻana i nā bitmaps, i hoʻohui ʻia e ko mākou mau hoa Kina, hāʻule ke kikowaena i ka wā e hāʻawi ai i nā hoʻopaʻapaʻa hewa. He kuleana ko mākou e hoʻoponopono i kēia. E hoʻokuʻu mākou i kahi mana patch hou a ʻoi aku ka paʻa o ClickHouse.

Inā loaʻa iā ʻoe ka ClickHouse e holo ana i ka hana, a puka mai kahi mana hou o ClickHouse me nā hiʻohiʻona hou - no ka laʻana, ʻo 20.4.1 ka mea mua loa, mai wikiwiki e hoʻokomo iā ia i ka hana ma ka lā mua loa. No ke aha e pono ai? Inā ʻaʻole ʻoe e hoʻohana i ka ClickHouse, a laila hiki iā ʻoe ke hoʻokomo iā ia, a ʻoi aku ka maikaʻi o nā mea āpau. Akā inā e hana paʻa ana ʻo ClickHouse, a laila e makaʻala i nā pale a me nā mea hou e ʻike ai i nā pilikia a mākou e hoʻoponopono nei.

ʻO Kirill Shvakov: Makemake au e hoʻohui iki e pili ana i nā kaiapuni hoʻāʻo. Makaʻu loa nā kānaka a pau i nā kaiapuni hoʻāʻo a no kekahi kumu ke manaʻoʻiʻo nei lākou inā loaʻa iā ʻoe kahi pūʻulu ClickHouse nui loa, a laila ʻaʻole e liʻiliʻi ka wahi hoʻāʻo a i ʻole he ʻumi mau manawa liʻiliʻi. ʻAʻole pēlā.

Hiki iaʻu ke haʻi iā ʻoe mai kaʻu hiʻohiʻona ponoʻī. He papahana kaʻu, a aia ʻo ClickHouse. ʻO kā mākou wahi hoʻāʻo no ia wale nō - he mīkini liʻiliʻi liʻiliʻi kēia ma Hetzner no iwakālua euros, kahi i kau ʻia ai nā mea āpau. No ka hana ʻana i kēia, loaʻa iā mākou ka automation piha i Ansible, a no laila, ma ke kumu, ʻaʻohe mea ʻokoʻa i kahi e hele ai - i nā kikowaena lako a i ʻole e kau wale i nā mīkini virtual.

He aha ka mea hiki ke hana? He mea maikaʻi e hāʻawi i kahi laʻana i ka palapala ClickHouse e pili ana i ka hoʻonohonoho ʻana i kahi puʻupuʻu liʻiliʻi i kou home ponoʻī - ma Docker, ma LXC, e hana paha i kahi puke pāʻani Ansible, no ka mea he ʻokoʻa nā kānaka ʻē aʻe. He mea maʻalahi kēia. Ke lawe ʻoe a kau i kahi hui i loko o ʻelima mau minuke, ʻoi aku ka maʻalahi o ka hoʻāʻo e noʻonoʻo i kekahi mea. ʻOi aku ka maʻalahi o kēia, no ka mea, ʻo ka ʻōwili ʻana i kahi mana hana āu i hoʻāʻo ʻole ai he ala i kahi ʻole. I kekahi manawa hana a i kekahi manawa ʻaʻole. A no laila, ʻino ka manaʻolana i ka holomua.

ʻO Maxim Kotyakov, ʻenehana hope hope ʻo Avito: E hoʻohui au i kahi mea liʻiliʻi e pili ana i nā kaiapuni hoʻāʻo mai ke ʻano o nā pilikia e kū nei e nā hui nui. Loaʻa iā mākou kahi puʻupuʻu ʻae ClickHouse piha piha; ma ke ʻano o nā ʻikepili a me nā hoʻonohonoho, he kope pololei ia o ka mea i hana ʻia. Hoʻokomo ʻia kēia puʻupuʻu i loko o nā ipu ʻōpala me ka liʻiliʻi o nā kumuwaiwai. Ke kākau nei mākou i kahi pākēneka o ka ʻikepili hana ma laila, ʻoi aku ka maikaʻi e hiki ke hana hou i ke kahawai ma Kafka. Hoʻonohonoho ʻia a hoʻonui ʻia nā mea āpau - ma ke ʻano o ka hiki a me ke kahe ʻana, a, ma ke kumumanaʻo, ua like nā mea ʻē aʻe a pau, pono ia e hana e like me ka hana ʻana ma ke ʻano o nā metric. ʻOka mua ʻia nā mea pahū a pau ma luna o kēia kū a waiho ʻia ma laila no kekahi mau lā a hiki i ka mākaukau. Akā ʻo ka mea maʻamau, he pipiʻi kēia hoʻonā, paʻakikī a loaʻa nā kumu kākoʻo ʻole zero.

ʻO Alexey Milovidov: E haʻi aku wau iā ʻoe i ke ʻano o ka hoʻāʻo ʻana o kā mākou mau hoaaloha mai Yandex.Metrica. He 600 mau puʻupuʻu ko kekahi puʻupuʻu, he 360 ​​ko kekahi, a aia ke kolu a he mau pūʻulu. ʻO ke kaiapuni hoʻāʻo no kekahi o lākou he ʻelua shards wale nō me ʻelua replicas i kēlā me kēia. No ke aha ʻelua ʻāpana? I ʻole ʻoe hoʻokahi. A pono e loaʻa nā kope. ʻO kahi liʻiliʻi liʻiliʻi e hiki iā ʻoe ke loaʻa.

Hāʻawi kēia kaiapuni hoʻāʻo iā ʻoe e nānā inā e hana ana kāu mau nīnau a inā ua haki kekahi mea nui. Akā pinepine nā pilikia i keʻano likeʻole, i ka wā e hana ai nā mea a pau, akā aia kekahi mau hoʻololi liʻiliʻi i ka ukana.

E hāʻawi wau i kumu hoʻohālike. Ua hoʻoholo mākou e hoʻokomo i kahi mana hou o ClickHouse. Ua kau ʻia ma kahi ʻano hoʻāʻo, ua hoʻopau ʻia nā hoʻokolohua automated ma Yandex.Metrica ponoʻī, e hoʻohālikelike i ka ʻikepili i ka mana kahiko a me ka mea hou, e holo ana i ka pipeline holoʻokoʻa. A ʻoiaʻiʻo, nā hoʻokolohua ʻōmaʻomaʻo o kā mākou CI. Inā ʻaʻole, ʻaʻole mākou i hoʻopuka i kēia mana.

Ua maikaʻi nā mea a pau. Ke hoʻomaka nei mākou e neʻe i ka hana. Loaʻa iaʻu kahi leka ua hoʻonui pinepine ʻia ka ukana ma nā pakuhi. Ke hoʻohuli nei mākou i ka mana. Nānā wau i ka pakuhi a ʻike: ua hoʻonui ʻia ka ukana i nā manawa he nui i ka wā o ka ʻōwili ʻana, a ua emi i hope i ka wā i ʻōwili ʻia ai. A laila hoʻomaka mākou e ʻōwili i hope i ka mana. A ma ke ano like ka mahuahua ana o ka ukana, a haule iho la ma ke ano hookahi. No laila ʻo ka hopena: ua hoʻonui ʻia ka ukana ma muli o ka hoʻolālā, ʻaʻohe mea kupanaha.

A laila paʻakikī ka hoʻohuli ʻana i nā hoa hana e hoʻokomo i ka mana hou. 'Ōlelo wau: "Ua maikaʻi, e holo i waho. E mālama i kou mau manamana lima, e hana nā mea a pau. I kēia manawa ua hoʻonui ka ukana ma nā pakuhi, akā maikaʻi nā mea a pau. E kau ma laila." Ma ka laulā, hana mākou i kēia, a ʻo ia - ua hoʻokuʻu ʻia ka mana no ka hana ʻana. Akā ʻaneʻane me kēlā me kēia hoʻolālā e kū mai nā pilikia like.

Manaʻo ʻia ʻo Kill query e pepehi i nā nīnau, akā ʻaʻole. No ke aha mai?

Ua hele mai kekahi mea hoʻohana, kekahi ʻano loiloi, a hana i kahi noi e kau i kaʻu hui ClickHouse. ʻO kekahi node a i ʻole pūʻulu holoʻokoʻa, ma muli o ke kope a i ʻole ka shard i hele ai ka noi. ʻIke wau aia nā kumuwaiwai CPU a pau ma kēia kikowaena i kahi papa, ʻulaʻula nā mea āpau. I ka manawa like, ua pane ʻo ClickHouse i nā noi. A kākau wau: "E ʻoluʻolu e hōʻike mai iaʻu, papa inoa kaʻina hana, he aha ka noi i hana ai i kēia pupule."

Loaʻa iaʻu kēia noi a kākau i ka pepehi iā ia. A ʻike wau ʻaʻohe mea e hana nei. Aia kaʻu kikowaena i kahi papa, a laila hāʻawi ʻo ClickHouse iaʻu i kekahi mau kauoha, e hōʻike ana i ke ola o ke kikowaena, a maikaʻi nā mea āpau. Akā, loaʻa iaʻu ka degradation i nā noi mea hoʻohana a pau, hoʻomaka ka degradation me nā moʻolelo ma ClickHouse, a ʻaʻole hana kaʻu nīnau pepehi. No ke aha mai? Manaʻo wau e pepehi ʻia nā nīnau e pepehi i nā nīnau, akā ʻaʻole.

I kēia manawa e loaʻa mai kahi pane ʻano ʻē. ʻO ka manaʻo, ʻaʻole pepehi ka nīnau pepehi i nā nīnau.

Kill query nānā i kahi pahu liʻiliʻi i kapa ʻia "Makemake au e pepehi ʻia kēia nīnau." A ke nānā nei ka noi ponoʻī i kēia hae i ka wā e hoʻoponopono ai i kēlā me kēia poloka. Inā hoʻonohonoho ʻia, pau ka hana ʻana o ke noi. ʻIke ʻia ʻaʻohe mea pepehi i ka noi, pono ʻo ia e nānā i nā mea āpau a kū. A pono e hana kēia i nā hihia a pau kahi o ka noi i ke kūlana o ka hoʻoponopono ʻana i nā poloka o ka ʻikepili. E hana ia i ka poloka ʻikepili aʻe, e nānā i ka hae, a kū.

ʻAʻole hana kēia i nā hihia i pāpā ʻia ka noi ma kekahi hana. ʻOiaʻiʻo, ʻaʻole paha kēia i kāu hihia, no ka mea, e like me kāu, hoʻohana ia i kahi ton o nā kumuwaiwai server. ʻAʻole hiki ke hana i kēia ma ke ʻano o ka hoʻokaʻawale ʻana i waho a i kekahi mau kikoʻī ʻē aʻe. Akā ma ka laulā, ʻaʻole pono kēia e hana, he bug. A ʻo ka mea wale nō aʻu e ʻōlelo aku ai, ʻo ia ka hoʻonui ʻana iā ClickHouse.

Pehea e helu ai i ka manawa pane ma lalo o ka ukana heluhelu?

Aia kahi papaʻaina e mālama ai i nā ʻāpana helu - nā helu helu like ʻole. ʻO ka helu o nā laina ma kahi o hoʻokahi haneli miliona. Hiki ke helu i ka manawa pane wānana inā e ninini ʻoe i 1K RPS no nā mea 1K?

Ma ka hoʻoholo ʻana i ka pōʻaiapili, ke kamaʻilio nei mākou e pili ana i ka ukana heluhelu, no ka mea, ʻaʻohe pilikia me ke kākau ʻana - a hiki i hoʻokahi tausani, a i hoʻokahi haneli tausani, a i kekahi manawa hiki ke hoʻokomo ʻia he mau lālani miliona.

He ʻokoʻa loa nā noi heluhelu. Ma ka koho 1, hiki i ka ClickHouse ke hana ma kahi o ʻumi kaukani o nā noi i kēlā me kēia kekona, no laila ʻo nā noi no hoʻokahi kī e koi mua i kekahi mau kumuwaiwai. A e ʻoi aku ka paʻakikī o ia mau nīnau kikoʻī ma mua o kekahi mau waihona waiwai kī, no ka mea no kēlā me kēia heluhelu pono ʻia e heluhelu i kahi poloka o ka ʻikepili ma ka index. ʻAʻole kā mākou papa kuhikuhi i kēlā me kēia moʻolelo, akā i kēlā me kēia pae. ʻO ia hoʻi, pono ʻoe e heluhelu i ka laulā holoʻokoʻa - ʻo ia nā laina 8192 ma ka paʻamau. A pono ʻoe e hoʻokaʻawale i ka poloka data compressed mai 64 KB a i 1 MB. ʻO ka maʻamau, ʻo ia mau nīnau i manaʻo ʻia e lawe i kekahi mau milliseconds e hoʻopau. Akā ʻo kēia ka koho maʻalahi.

E ho'āʻo kākou i kekahi helu helu maʻalahi. Inā hoʻonui ʻoe i kekahi mau milliseconds me ka tausani, loaʻa iā ʻoe kekahi mau kekona. Me he mea lā ʻaʻole hiki ke hoʻomau i hoʻokahi kaukani noi i kēlā me kēia kekona, akā ʻoiaʻiʻo hiki nō ia, no ka mea he nui nā cores processor. No laila, ma ke kumu, hiki i ka ClickHouse ke hoʻopaʻa i ka 1000 RPS i kekahi manawa, akā no nā noi pōkole, nā mea i kuhikuhi ʻia.

Inā pono ʻoe e hoʻonui i kahi hui ClickHouse ma ka helu o nā noi maʻalahi, a laila paipai wau i ka mea maʻalahi loa - e hoʻonui i ka helu o nā replicas a hoʻouna i nā noi i kahi replica random. Inā loaʻa i hoʻokahi kope i ʻelima haneli mau noi i kēlā me kēia kekona, he ʻoiaʻiʻo maoli nō ia, a laila ʻekolu mau kope e lawelawe i hoʻokahi tausani a me ka hapa.

I kekahi manawa, ʻoiaʻiʻo, hiki iā ʻoe ke hoʻonohonoho i ka ClickHouse no ka helu kiʻekiʻe o nā helu helu helu. He aha ka mea e pono ai no kēia? ʻO ka mea mua e hoʻemi i ka granularity o ka index. I kēia hihia, ʻaʻole pono e hoʻemi ʻia i hoʻokahi, akā ma ke kumu o ka helu o nā helu i loko o ka index he mau miliona a ʻumi paha miliona ma kēlā me kēia kikowaena. Inā he haneli miliona lālani ka papaʻaina, a laila hiki ke hoʻonohonoho ʻia ka granularity i 64.

Hiki iā ʻoe ke hoʻemi i ka nui o ka poloka i hoʻopili ʻia. Aia nā hoʻonohonoho no kēia min compress block nui, ka nui o ka poloka compress. Hiki ke hōʻemi ʻia, hoʻopiha hou ʻia me ka ʻikepili, a laila ʻoi aku ka wikiwiki o nā nīnau i kuhikuhi ʻia. Akā naʻe, ʻaʻole ʻo ClickHouse kahi waihona waiwai nui. ʻO ka nui o nā noi liʻiliʻi he antipattern hoʻouka.

ʻO Kirill Shvakov: E hāʻawi wau i ka ʻōlelo aʻo inā loaʻa nā moʻolelo maʻamau ma laila. He kūlana maʻamau kēia i ka wā e kūʻai ai ʻo ClickHouse i kekahi ʻano counter. Loaʻa iaʻu kahi mea hoʻohana, no ka ʻāina ʻo ia a me kēlā ʻano, a ʻo ke kolu o ka māla, a pono wau e hoʻonui i kekahi mea. E lawe i MySQL, e hana i kahi kī kū hoʻokahi - ma MySQL he kī pālua, a ma PostgreSQL he hakakā - a hoʻohui i kahi hōʻailona hoʻohui. E ʻoi aku ka maikaʻi o kēia.

Inā ʻaʻole nui kāu ʻikepili, ʻaʻohe kumu nui o ka hoʻohana ʻana iā ClickHouse. Aia nā waihona maʻamau a hana maikaʻi lākou i kēia.

He aha kaʻu e hiki ai ke hoʻololi i ClickHouse i ʻoi aku ka nui o ka ʻikepili i loko o ka cache?

E noʻonoʻo kākou i kahi kūlana - aia nā kikowaena 256 GB o RAM, i ka hana maʻamau o kēlā me kēia lā ClickHouse e pili ana i 60-80 GB, ma ka piko - a hiki i 130. He aha ka mea hiki ke hoʻololi a hoʻololi i ka nui o nā ʻikepili i loko o ka cache a, no laila, he liʻiliʻi nā huakaʻi i ka disk?

ʻO ka maʻamau, hana maikaʻi ka cache ʻaoʻao o ka ʻōnaehana hana i kēia. Inā wehe wale ʻoe i luna, e nānā i laila i hūnā ʻia a manuahi paha - ʻōlelo pū ʻia ka nui o ka hūnā - a laila e ʻike ʻoe ua hoʻohana ʻia ka hoʻomanaʻo manuahi āpau no ka cache. A i ka heluhelu ʻana i kēia ʻikepili, e heluhelu ʻia ʻaʻole mai ka disk, akā mai ka RAM. I ka manawa like, hiki iaʻu ke ʻōlelo ua hoʻohana pono ʻia ka cache no ka mea ʻo ia ka ʻikepili i hoʻopaʻa ʻia.

Eia nō naʻe, inā makemake ʻoe e wikiwiki i kekahi mau nīnau maʻalahi, hiki ke hoʻololi i kahi huna i ka ʻikepili decompressed i loko o ClickHouse. Ua kapa ʻia huna huna ʻole ʻia. Ma ka waihona hoʻonohonoho config.xml, e hoʻonohonoho i ka nui cache uncompressed i ka waiwai āu e pono ai - ʻaʻole wau e ʻoi aku ma mua o ka hapalua o ka RAM manuahi, no ka mea, e hele ke koena ma lalo o ka cache ʻaoʻao.

Eia kekahi, ʻelua mau hoʻonohonoho pae noi. Hoʻonohonoho mua - hoʻohana i kahi huna huna ʻole - me kona hoʻohana. Manaʻo ʻia e hiki iā ia no nā noi āpau, koe wale nā ​​​​mea kaumaha, hiki ke heluhelu i nā ʻikepili āpau a holoi i ka cache. A ʻo ka lua o ka hoʻonohonoho ʻana he mea like ia me ka nui o nā laina e hoʻohana ai i ka cache. Hoʻopaʻa maʻalahi ia i nā nīnau nui i hiki iā lākou ke kāʻalo i ka cache.

Pehea e hiki ai iaʻu ke hoʻonohonoho i ka storage_configuration no ka mālama ʻana ma RAM?

Ma ka palapala ClickHouse hou ua heluhelu au i ka pauku pili me ka waihona ʻikepili. Aia ka wehewehe ʻana i kahi laʻana me SSD wikiwiki.

Manaʻo wau pehea e hiki ai ke hoʻonohonoho ʻia ka mea like me ka volume hot memory. A hoʻokahi nīnau hou. Pehea e koho ai i ka hana me kēia hui ʻikepili, e heluhelu anei ia i ka pūʻulu holoʻokoʻa a i ʻole ka mea wale nō ma ka disk, a ua hoʻopaʻa ʻia kēia ʻikepili i ka hoʻomanaʻo? A pehea e hana ai ka ʻāpana prewhere me kēlā hui ʻikepili?

Hoʻopili kēia hoʻonohonoho i ka mālama ʻana i nā ʻāpana ʻikepili, a ʻaʻole loli ko lākou ʻano ma kekahi ʻano.
E nānā pono kākou.

Hiki iā ʻoe ke hoʻonohonoho i ka mālama ʻikepili ma RAM. ʻO nā mea a pau i hoʻonohonoho ʻia no ka diski kona ala. Hana ʻoe i kahi ʻāpana tmpfs i kau ʻia i kekahi ala i ka ʻōnaehana faila. Hoʻomaopopo ʻoe i kēia ala e like me ke ala no ka mālama ʻana i ka ʻikepili no ka ʻāpana wela loa, hoʻomaka nā ʻāpana ʻikepili e hiki mai a kākau ʻia ma laila, ua maikaʻi nā mea a pau.

Akā ʻaʻole wau e ʻōlelo i ka hana ʻana i kēia no ka haʻahaʻa haʻahaʻa, ʻoiai inā loaʻa iā ʻoe ʻekolu mau replicas ma nā kikowaena data like ʻole, a laila hiki. Inā loaʻa kekahi mea, e hoʻihoʻi ʻia ka ʻikepili. E noʻonoʻo kākou ua pio koke ke kikowaena a ua hoʻi hou. Ua kau hou ʻia ka pā, akā ʻaʻohe mea ma laila. I ka hoʻomaka ʻana o ka server ClickHouse, ʻike ʻo ia ʻaʻole i loaʻa kēia mau ʻāpana, ʻoiai, e like me ka ZooKeeper metadata, pono lākou ma laila. Nānā ʻo ia i nā replicas i loaʻa iā lākou, noi a hoʻoiho iā lākou. Ma kēia ala e hoʻihoʻi ʻia ka ʻikepili.

Ma kēia manaʻo, ʻaʻole ʻokoʻa ka mālama ʻana i ka ʻikepili i ka RAM mai ka mālama ʻana iā ia ma ka disk, no ka mea ke kākau ʻia ka ʻikepili i ka disk, hoʻopau mua ia i ka cache ʻaoʻao a kākau kino ʻia ma hope. Pili kēia i ke koho kau ʻana o ka ʻōnaehana faila. Akā i ka hihia, e ʻōlelo wau ʻaʻole ʻo ClickHouse e fsync i ka wā e hoʻokomo ai.

I kēia hihia, mālama ʻia ka ʻikepili i ka RAM ma ke ʻano like me ka disk. ʻO ka nīnau koho ma keʻano like e koho i nā'āpana pono e heluheluʻia, koho i nā paeʻikepili kūpono i nā'āpana, a heluhelu iā lākou. A hana like ka prewhere, me ka nānā ʻole i ka RAM a i ʻole ka ʻikepili.

A hiki i ka helu o nā waiwai kūʻokoʻa e pono ai ka Low Cardinality?

Hoʻolālā akamai ʻia ʻo Low Cardinality. Hoʻopili ʻo ia i nā puke wehewehe ʻikepili, akā kūloko lākou. ʻO ka mua, aia nā puke wehewehe ʻokoʻa no kēlā me kēia ʻāpana, a ʻo ka lua, ʻoiai i loko o kahi ʻāpana hiki ke ʻokoʻa lākou no kēlā me kēia ʻāpana. Ke piʻi ka helu o nā waiwai kūʻokoʻa i ka helu paepae-hoʻokahi miliona, manaʻo wau-ua hoʻopaʻa wale ʻia ka puke wehewehe ʻōlelo a hana ʻia kahi mea hou.

ʻO ka pane ma ka laulā: no kēlā me kēia ʻāpana kūloko - e ʻōlelo, no kēlā me kēia lā - ma kahi a hiki i kahi miliona mau waiwai kūʻokoʻa ʻo Low Cardinality ka hopena. Ma hope, he hāʻule wale, kahi e hoʻohana ʻia ai nā puke wehewehe ʻokoʻa, ʻaʻole hoʻokahi wale nō. E hana like ia me ke kolamu kaula maʻamau, emi iki paha ka maikaʻi, akā, ʻaʻohe hōʻino koʻikoʻi o ka hana.

He aha nā hana maikaʻi loa no ka huli kikokikona piha i ka papaʻaina me nā lālani ʻelima piliona?

He mau pane ʻokoʻa. ʻO ka mea mua, ʻo ia ʻo ClickHouse ʻaʻole ia he ʻimi ʻimi kikokikona piha. Aia nā ʻōnaehana kūikawā no kēia, no ka laʻana, Elasticsearch и sphinx. Eia naʻe, ke ʻike nui nei au i ka poʻe e ʻōlelo nei ke hoʻololi nei lākou mai Elasticsearch i ClickHouse.

No ke aha la keia? Ua wehewehe lākou i kēia ma ka ʻoiaʻiʻo ua pau ʻo Elasticsearch i ka hoʻokō ʻana i ka ukana ma kekahi mau puke, e hoʻomaka ana me ke kūkulu ʻana i nā kuhikuhi. He mea paʻakikī loa ka helu ʻana, a inā e hoʻololi wale ʻoe i ka ʻikepili i ClickHouse, ua ʻike ʻia ua mālama ʻia lākou i nā manawa he nui ma ke ʻano o ka nui. I ka manawa like, ʻaʻole pinepine nā nīnau hulina e pono e ʻimi i kekahi mau huaʻōlelo i ka nui o ka ʻikepili, me ka noʻonoʻo ʻana i ka morphology, akā ʻokoʻa loa. No ka laʻana, e ʻimi i ka hope o nā bytes i nā lāʻau i nā hola i hala.

I kēia hihia, hana ʻoe i kahi kuhikuhi ma ClickHouse, ʻo ka mahina mua o ia ka lā a me ka manawa. A e hoʻokumu ʻia ka ʻoki ʻikepili nui loa ma ka pae lā. I loko o ka lā i koho ʻia, ma ke ʻano he lula, hiki ke hana i kahi ʻimi kikokikona piha, ʻoiai me ka hoʻohana ʻana i ke ʻano brute force me ka like. ʻO ka mea hoʻohana like ma ClickHouse ʻo ia ka mea ʻoi loa e like me ka mea hoʻohana āu e loaʻa ai. Inā loaʻa iā ʻoe kahi mea maikaʻi aʻe, e haʻi mai iaʻu.

Akā naʻe, e like me ka scan piha. A hiki ke lohi ka scan piha ʻaʻole wale ma ka CPU, akā ma ka disk. Inā loaʻa koke iā ʻoe hoʻokahi terabyte o ka ʻikepili i kēlā me kēia lā, a ʻimi ʻoe i kahi huaʻōlelo i ka lā, a laila pono ʻoe e nānā i ka terabyte. A aia paha ia ma nā pahu paʻakikī maʻamau, a i ka hopena e hoʻouka ʻia lākou i ke ala e hiki ʻole ai iā ʻoe ke komo i kēia kikowaena ma o SSH.

I kēia hihia, ua mākaukau wau e hāʻawi i hoʻokahi mea hoʻopunipuni liʻiliʻi. He hoʻokolohua - hiki ke hana, ʻaʻole paha. Loaʻa i ka ClickHouse nā kikoʻī kikoʻī piha i ke ʻano o nā kānana trigram Bloom. Ua hoʻāʻo mua kā mākou mau hoa hana ma Arenadata i kēia mau kuhikuhi, a hana pinepine lākou e like me ka mea i manaʻo ʻia.

I mea e hoʻohana pono ai iā lākou, pono ʻoe e hoʻomaopopo pono i ke ʻano o kā lākou hana: he aha ka trigram Bloom kānana a pehea e koho ai i kona nui. Hiki iaʻu ke ʻōlelo e kōkua lākou i nā nīnau ma kekahi mau huaʻōlelo laha ʻole, nā substrings i loaʻa ʻole i ka ʻikepili. I kēia hihia, e koho ʻia nā subranges e nā indexes a e heluhelu ʻia nā ʻikepili liʻiliʻi.

I kēia mau lā, ua hoʻohui ʻo ClickHouse i nā hana kiʻekiʻe loa no ka ʻimi kikokikona piha. ʻO kēia, ʻo ka mea mua, he ʻimi no ka pūʻulu o nā substrings i ka manawa hoʻokahi i ka pass hoʻokahi, me nā koho e pili ana i ka hihia, case-insensitive, me ke kākoʻo no UTF-8 a i ʻole ASCII wale nō. E koho i ka mea e pono ai.

Ua ʻike ʻia ka ʻimi no nā ʻōlelo maʻamau he nui i hoʻokahi pass. ʻAʻole pono ʻoe e kākau X e like me hoʻokahi substring a i ʻole X e like me kahi substring ʻē aʻe. Kākau koke ʻoe, a hana ʻia nā mea a pau e like me ka hiki.

ʻO ke kolu, aia i kēia manawa kahi hulina pili no regexps a me kahi hulina pili no nā substrings. Inā kuhi hewa kekahi i ka huaʻōlelo, e ʻimi ʻia ia no ka hoʻohālikelike ʻoi loa.

He aha ke ala maikaʻi loa e hoʻonohonoho ai i ke komo ʻana i ClickHouse no ka nui o nā mea hoʻohana?

E haʻi mai iā mākou pehea e hoʻonohonoho maikaʻi ai i ke komo ʻana no ka nui o nā mea kūʻai aku a me nā loiloi. Pehea e hana ai i kahi queue, e hoʻokahua i ka nui o nā nīnau like ʻole, a me nā mea hana?

Inā nui ka puʻupuʻu, a laila ʻo kahi hopena maikaʻi e hoʻāla i ʻelua mau kikowaena hou aʻe, e lilo ia i wahi komo no nā mea loiloi. ʻO ia hoʻi, mai ʻae i nā mea loiloi e komo i nā shards kikoʻī i loko o ka pūʻulu, akā e hana wale i ʻelua mau kikowaena manuahi, me ka ʻole o ka ʻikepili, a hoʻonohonoho i nā kuleana komo ma luna o lākou. I kēia hihia, hoʻololi ʻia nā hoʻonohonoho mea hoʻohana no nā noi i hoʻokaʻawale ʻia i nā kikowaena mamao. ʻO ia hoʻi, hoʻonohonoho ʻoe i nā mea āpau ma kēia mau kikowaena ʻelua, a he hopena nā hoʻonohonoho i ka hui holoʻokoʻa.

Ma ke kumu, ʻaʻohe ʻikepili o kēia mau kikowaena, akā nui ka nui o ka RAM ma luna o lākou no ka hoʻokō ʻana i nā noi. Hiki ke hoʻohana ʻia ka disk no ka ʻikepili pōkole inā hiki ke hoʻohui ʻia i waho a i ʻole ka hoʻokaʻawale ʻana i waho.

He mea nui e nānā i nā hoʻonohonoho e pili ana i nā palena āpau. Inā hele wau i kēia manawa i ka hui Yandex.Metrica ma ke ʻano he loiloi a noi i kahi noi koho i ka helu mai nā hits, a laila e hāʻawi koke ʻia iaʻu kahi ʻokoʻa ʻaʻole hiki iaʻu ke hoʻokō i ka noi. ʻO ka helu kiʻekiʻe loa o nā lālani i ʻae ʻia iaʻu e scan he hoʻokahi haneli piliona, a ʻo ka huina he kanalima trillion o lākou i ka papa hoʻokahi ma ka hui. ʻO kēia ka palena mua.

E ʻōlelo kākou e wehe au i ka palena o ka lālani a holo hou i ka nīnau. A laila e ʻike wau i kēia ʻokoʻa - hoʻonohonoho ʻia kaha kuhikuhi ma ka lā. ʻAʻole hiki iaʻu ke hoʻopau i ka nīnau inā ʻaʻole au i kuhikuhi i ka lā. ʻAʻole pono ʻoe e hilinaʻi ma luna o nā mea loiloi e hoʻomaopopo iā ia me ka lima. ʻO kahi hihia maʻamau ke kākau ʻia kahi lā i kahi lā hanana ma waena o ka pule. A laila ua kuhikuhi wale lākou i kahi bracket ma kahi hewa, a ma kahi o a ua hoʻololi ʻia a i ʻole - a i ʻole URL match. Inā ʻaʻohe palena, e kolo ia i ke kolamu URL a hoʻopau wale i ka nui o nā kumuwaiwai.

Eia kekahi, ʻelua mau hoʻonohonoho koʻikoʻi ʻo ClickHouse. ʻO ka mea pōʻino, he primitive loa lākou. Ua kapa ʻia kekahi makakoho. Inā hoʻokō ʻia ka mea nui ≠ 0, a me nā noi me kahi mea nui, akā e hoʻokō ʻia kahi noi me ka waiwai nui ma mua o, ʻo ia hoʻi ka mea i ʻoi aku ka mea nui, a laila e hoʻokō ʻia kahi noi me ka waiwai nui, ʻo ia hoʻi ka haʻahaʻa haʻahaʻa. , ua hoʻokuʻu wale ʻia a ʻaʻole e hana i kēia manawa.

He hoʻonohonoho ʻino loa kēia a ʻaʻole kūpono i nā hihia i loaʻa i ka puʻupuʻu ka ukana mau. Akā inā loaʻa iā ʻoe nā noi pōkole a me nā mea koʻikoʻi, a ʻo ka puʻupuʻu i ka hapa nui, kūpono kēia hoʻonohonoho.

Kāhea ʻia ka hoʻonohonoho mua aʻe ʻO ka pae mua o ka OS. Hoʻonohonoho wale ia i ka waiwai maikaʻi no nā noi hoʻokō āpau no ka mea hoʻonohonoho Linux. Ke hana nei ia pela, aka e hana mau ana. Inā hoʻonoho ʻoe i ka waiwai maikaʻi liʻiliʻi loa - ʻo ia ka mea nui loa i ka waiwai, a no laila ʻo ka mea haʻahaʻa haʻahaʻa - a hoʻonohonoho -19 no nā noi me ka mea nui, a laila e ʻai ka CPU i nā noi haʻahaʻa haʻahaʻa e pili ana i ʻehā mau manawa ma mua o nā mea kiʻekiʻe.

Pono ʻoe e hoʻonohonoho i ka manawa hoʻokō noi nui loa - e ʻōlelo, ʻelima mau minuke. ʻO ka māmā liʻiliʻi o ka hoʻokō ʻana i ka nīnau ka mea ʻoluʻolu loa. Ua puni kēia hoʻonohonoho no ka manawa lōʻihi, a koi ʻia ʻaʻole wale e ʻōlelo ʻaʻole lohi ʻo ClickHouse, akā e koi.

E noʻonoʻo, ua hoʻonohonoho ʻoe: inā ʻaʻole hiki iā ʻoe ke hana i kēlā. Hoʻohilahila kēia i ko mākou inoa maikaʻi, kā mākou waihona maikaʻi. E pāpā wale kākou i kēia. ʻElua mau hoʻonohonoho maoli. Ua kapa ʻia kekahi min hoʻokō wikiwiki - ma nā laina i kēlā me kēia kekona, a ua kapa ʻia ka lua i ka manawa pau ma mua o ka nānā ʻana i ka wikiwiki hoʻokō min - ʻumikumamālima kekona ma ke ʻano maʻamau. ʻO ia, he ʻumikūmālima kekona hiki, a laila, inā lohi, a laila e hoʻolei wale i kahi ʻokoʻa a hoʻopau i ka noi.

Pono ʻoe e hoʻonohonoho i nā quota. Loaʻa i ka ClickHouse kahi hiʻohiʻona i kūkulu ʻia e helu i ka hoʻohana waiwai. Akā, ʻaʻole naʻe, ʻaʻole nā ​​kumuwaiwai e like me ka CPU, nā disks, akā nā mea kūpono - ka helu o nā noi i hoʻoponopono ʻia, nā laina a me nā bytes heluhelu. A hiki iā ʻoe ke hoʻonohonoho, no ka laʻana, ka nui o hoʻokahi haneli noi i loko o ʻelima mau minuke a me hoʻokahi kaukani noi i kēlā me kēia hola.

No ke aha he mea nui? No ka mea, e hana lima ʻia kekahi mau nīnau noiʻi mai ka mea kūʻai aku ʻo ClickHouse. A e maikaʻi nā mea a pau. Akā inā loaʻa iā ʻoe nā loiloi holomua i kāu ʻoihana, e kākau lākou i kahi palapala, a aia paha kahi hewa i ka palapala. A ʻo kēia hewa e hoʻokō ʻia ka noi ma kahi loop palena ʻole. ʻO kēia ka mea e pono ai mākou e pale iā mākou iho.

Hiki ke hāʻawi i nā hopena o hoʻokahi nīnau i nā mea kūʻai he ʻumi?

Loaʻa iā mākou nā mea hoʻohana e makemake e komo me nā noi nui loa i ka manawa like. Nui ka noi a, ma ke kumu, hoʻokō koke ʻia, akā ma muli o ka nui o nā noi like i ka manawa like, lilo ia i mea ʻeha loa. Hiki ke hoʻokō i ka noi like, i hiki mai he ʻumi manawa i ka lālani, hoʻokahi, a hāʻawi i ka hopena i nā mea kūʻai aku he ʻumi?

ʻO ka pilikia ʻaʻole i loaʻa iā mākou nā hopena o ka cache a i ʻole cache o ka ʻikepili waena. Aia kahi ʻaoʻao cache o ka ʻōnaehana hana, e pale iā ʻoe mai ka heluhelu ʻana i ka ʻikepili mai ka disk, akā, ʻaʻole naʻe, e hoʻopau ʻia ka ʻikepili, deserialized a reprocessed.

Makemake au e pale i kēia, ma ka hoʻopaʻa ʻana i ka ʻikepili waena, a i ʻole ma ka hoʻopaʻa ʻana i nā nīnau like i kekahi ʻano pila a hoʻohui i kahi huna hopena. Loaʻa iā mākou hoʻokahi noi huki i ka hoʻomohala ʻana e hoʻohui i kahi cache noi, akā no nā subqueries i loko a hui pū i nā ʻāpana - ʻo ia hoʻi, ʻaʻole i pau ka hopena.

Eia nō naʻe, ke kū nei mākou i kēlā kūlana. ʻO kahi hiʻohiʻona canonical ʻo ia nā nīnau paginated. Aia kekahi hōʻike, he nui nā ʻaoʻao, a aia kahi noi no ka palena 10. A laila ka mea like, akā palena 10,10. A laila ʻaoʻao ʻē aʻe. A ʻo ka nīnau, no ke aha mākou e helu ai i kēia mau mea a pau i kēlā me kēia manawa? Akā i kēia manawa ʻaʻohe hopena, ʻaʻohe ala e pale aku ai.

Aia kahi hopena ʻē aʻe i waiho ʻia ma ke ʻano he kaʻa ʻaoʻao ma hope o ClickHouse - ClickHouse Proxy.

ʻO Kirill Shvakov: Loaʻa i ka ClickHouse Proxy kahi palena palena i kūkulu ʻia a me kahi hūnā hopena i kūkulu ʻia. Nui nā hoʻonohonoho i hana ʻia ma laila no ka hoʻoponopono ʻana i kahi pilikia like. Hāʻawi ka Proxy iā ʻoe e kaupalena i nā noi ma ka hoʻonohonoho ʻana iā lākou a hoʻonohonoho i ka lōʻihi o ke ola ʻana o ka cache noi. Inā like maoli nā noi, hoʻouna ʻo Proxy iā lākou i nā manawa he nui, akā e hele i ClickHouse hoʻokahi wale nō.

Loaʻa iā Nginx kahi cache i ka mana manuahi, a e hana pū kēia. Loaʻa iā Nginx nā hoʻonohonoho inā hiki mai nā noi i ka manawa like, e hoʻolōʻihi ia i nā mea ʻē aʻe a hiki i ka pau ʻana o kekahi. Akā aia ma ClickHouse Proxy i ʻoi aku ka maikaʻi o ka hoʻonohonoho. Ua hana kūikawā ʻia no ClickHouse, kūikawā no kēia mau noi, no laila ʻoi aku ka kūpono. ʻAe, maʻalahi ke hoʻouka.

Pehea e pili ana i nā hana asynchronous a me nā manaʻo maoli?

Aia ka pilikia o ka hana ʻana me ka ʻenekini replay he asynchronous - kākau mua ka ʻikepili, a laila hāʻule. Inā noho ka papa i hoʻopaʻa ʻia me kekahi mau mea hōʻuluʻulu ma lalo o ka hōʻailona, ​​a laila e kākau ʻia nā kope iā ia. A inā ʻaʻohe manaʻo paʻakikī, a laila e kope ʻia ka ʻikepili. He aha kāu e hana ai no ia mea?

Aia kahi hoʻonā maopopo - e hoʻokō i kahi hoʻoiho ma kekahi papa o matviews i ka wā o kahi hana hāʻule asynchronous. Aia kekahi mau pōkā kala a i ʻole hoʻolālā e hoʻokō i nā hana like?

Pono e hoʻomaopopo i ka hana ʻana o ka unuhi ʻana. ʻO kaʻu e haʻi aku ai iā ʻoe i kēia manawa ʻaʻole pili i ka nīnau, akā inā pono e hoʻomanaʻo.

Ke hoʻokomo ʻia i loko o ka papa ʻaina i hoʻopili ʻia, aia ka unuhi ʻana o nā poloka a pau i hoʻokomo ʻia. Inā ʻoe e hoʻokomo hou i ka poloka hoʻokahi i loaʻa ka helu like o nā lālani like i ka hoʻonohonoho like, a laila hoʻopau ʻia ka ʻikepili. E loaʻa iā ʻoe ka "Ok" ma ka pane ʻana i ka hoʻokomo ʻana, akā ʻoiaʻiʻo e kākau ʻia hoʻokahi paʻi ʻikepili, ʻaʻole e hoʻopā ʻia.

Pono kēia no ka maopopo. Inā loaʻa iā ʻoe ka "Ok" i ka wā hoʻokomo, a laila ua hoʻokomo ʻia kāu ʻikepili. Inā loaʻa iā ʻoe kahi hewa mai ClickHouse, ʻo ia ka mea ʻaʻole i hoʻokomo ʻia a pono ʻoe e hana hou i ka hoʻokomo. Akā inā ua haki ka pilina i ka wā hoʻokomo, a laila ʻaʻole ʻoe i ʻike inā ua hoʻokomo ʻia ka ʻikepili a i ʻole. ʻO ke koho wale nō e hana hou i ka hoʻokomo. Inā hoʻokomo maoli ʻia ka ʻikepili a hoʻokomo hou ʻoe iā ia, aia ka block deduplication. Pono kēia i mea e pale aku ai i nā lua.

A he mea nui hoʻi pehea e hana ai no nā manaʻo materialized. Inā hoʻokaʻawale ʻia ka ʻikepili i ka wā i hoʻokomo ʻia i ka papa nui, a laila ʻaʻole ia e hele i ka ʻike materialized.

I kēia manawa e pili ana i ka nīnau. ʻOi aku ka paʻakikī o kou kūlana no ka mea ke hoʻopaʻa nei ʻoe i nā lua o nā laina pākahi. ʻO ia hoʻi, ʻaʻole ʻo ka pūʻulu holoʻokoʻa i kope ʻia, akā nā laina kikoʻī, a hāʻule lākou i ke kua. ʻOiaʻiʻo, e hāʻule nā ​​​​ʻikepili i ka papa nui, akā e hele nā ​​​​ʻikepili i ʻike ʻole ʻia i ka ʻike materialized, a i ka wā o ka hui ʻana, ʻaʻohe mea e hiki mai i nā manaʻo materialized. No ka mea, ʻaʻole i ʻoi aku ka manaʻo i hoʻokomo ʻia. I ka wā o nā hana ʻē aʻe, ʻaʻohe mea ʻē aʻe i loaʻa iā ia.

A ʻaʻole hiki iaʻu ke hoʻohauʻoli iā ʻoe ma ʻaneʻi. Pono ʻoe e ʻimi i kahi hoʻonā kikoʻī no kēia hihia. No ka laʻana, hiki ke hoʻokani hou iā ia ma kahi ʻike maoli, a hiki ke hana like ke ʻano deduplication. Akā naʻe, ʻaʻole i nā manawa a pau. Inā hoʻohui ʻia, ʻaʻole ia e hana.

ʻO Kirill Shvakov: Ua kūkulu ʻia nō hoʻi mākou i ka lā. He pilikia ka loaʻa ʻana o nā manaʻo hoʻolaha, a aia kekahi mau ʻikepili i hiki iā mākou ke hōʻike i ka manawa maoli - he mau manaʻo wale nō kēia. ʻAʻole hiki ke kope kope ʻia, akā inā hiki mai kēia, e hāʻule mākou iā lākou ma hope. A aia kekahi mau mea i hiki ʻole ke hoʻololi - kaomi a me kēia moʻolelo holoʻokoʻa. Akā, ua makemake au e hōʻike koke iā lākou.

Pehea i hana ʻia ai nā manaʻo pilikino? Aia nā manaʻo ma kahi i kākau pololei ʻia - ua kākau ʻia i ka ʻikepili maka, a kākau ʻia i nā manaʻo. Ma laila, i kekahi manawa ʻaʻole pololei loa ka ʻikepili, ua paʻi ʻia, a pēlā aku. A aia kahi ʻāpana ʻelua o ka papaʻaina, kahi e nānā like ai lākou me nā hiʻohiʻona materialized, ʻo ia hoʻi, ua like loa lākou i ke ʻano. Hoʻokahi manawa mākou e helu hou i ka ʻikepili, helu i ka ʻikepili me ka ʻole o ka lua, e kākau i kēlā mau papa.

Ua hele mākou ma ka API - ʻaʻole e hana kēia ma ClickHouse me ka lima. A ke nānā aku nei ka API: ke loaʻa iaʻu ka lā o ka hoʻohui hope loa i ka papaʻaina, kahi e hōʻoiaʻiʻo ʻia ai ua helu ʻia ka ʻikepili pololei, a noi ia i kahi papaʻaina a i kahi papa ʻē aʻe. Mai kekahi e koho ka noi a hiki i kekahi manawa, a mai kekahi e loaʻa i ka mea i helu ʻole ʻia. A hana ia, akā ʻaʻole ma o ClickHouse wale nō.

Inā loaʻa iā ʻoe kekahi ʻano API - no nā mea loiloi, no nā mea hoʻohana - a laila, ma ke kumu, he koho kēia. Helu mau ʻoe, helu mau. Hiki ke hana i hoʻokahi manawa i ka lā a i ʻole i kekahi manawa ʻē aʻe. Koho ʻoe no ʻoe iho i kahi laulā āu e pono ʻole ai a ʻaʻole koʻikoʻi.

Loaʻa i ka ClickHouse nā lāʻau he nui. Pehea e hiki ai iaʻu ke ʻike i nā mea a pau e pili ana i ke kikowaena i ka maka?

Loaʻa i ka ClickHouse ka nui o nā lāʻau like ʻole, a ke piʻi nei kēia helu. Ma nā mana hou, hiki ke hoʻohana ʻia kekahi o lākou ma ke ʻano paʻamau; ma nā mana kahiko pono lākou e hoʻā i ka wā e hoʻonui ai. Eia naʻe, ʻoi aku ka nui o lākou. ʻO ka hope, makemake au e ʻike i ka mea e hana nei me kaʻu kikowaena i kēia manawa, aia paha ma kekahi ʻano dashboard hōʻuluʻulu.

Loaʻa iā ʻoe kahi hui ClickHouse, a i ʻole nā ​​hui o kāu mau hoaaloha, e kākoʻo ana i kekahi mau hana o nā dashboards mākaukau e hōʻike i kēia mau lāʻau ma ke ʻano he huahana pau? ʻO ka hope loa, ʻo ka nānā wale ʻana i nā lāʻau i ClickHouse maikaʻi loa. Akā, e ʻoluʻolu loa inā ua hoʻomākaukau mua ʻia ma ke ʻano o kahi dashboard. E loaʻa iaʻu kahi kīkē mai ia mea.

Aia nā dashboards, ʻoiai ʻaʻole i hoʻohālikelike ʻia. I loko o kā mākou hui, ma kahi o 60 mau hui e hoʻohana nei i ka ClickHouse, a ʻo ka mea ʻē aʻe, ʻo ka nui o lākou he dashboards a lākou i hana ai no lākou iho, a ʻokoʻa iki. Hoʻohana kekahi mau hui i kahi hoʻokomo Yandex.Cloud i loko. Aia kekahi mau hōʻike i hoʻomākaukau ʻia, ʻoiai ʻaʻole nā ​​​​mea pono a pau. Loaʻa i nā poʻe ʻē aʻe kā lākou ponoʻī.

Loaʻa i kaʻu mau hoa hana mai Metrica kā lākou dashboard ponoʻī ma Grafana, a loaʻa iaʻu kaʻu no kā lākou hui. Ke nānā nei au i nā mea e like me ka cache hit no ka serif cache. A ʻoi aku ka paʻakikī o ka hoʻohana ʻana i nā mea hana like ʻole. Ua hana au i kaʻu dashboard me kahi mea hana kahiko loa i kapa ʻia ʻo Graphite-web. He ino loa ia. A ke hoʻohana mau nei au i kēia ala, ʻoiai ʻoi aku ka maʻalahi a me ka nani o Grafana.

ʻO ka mea maʻamau i nā dashboards like. ʻO kēia nā ʻōnaehana ʻōnaehana no ka hui: CPU, hoʻomanaʻo, disk, pūnaewele. ʻO nā mea ʻē aʻe - ka helu o nā noi like, ka helu o nā hui like, ka helu o nā noi i kekona, ka helu kiʻekiʻe o nā chunks no nā ʻāpana papa ʻo MergeTree, lag replication, ka nui o ka queue replication, ka helu o nā lālani i hoʻokomo ʻia i kekona, ka helu o nā poloka i hoʻokomo ʻia i kekona. ʻO kēia wale nō ka mea i loaʻa ʻaʻole mai nā lāʻau, akā mai nā metric.

ʻO Vladimir Kolobaev: Alexey, makemake wau e hoʻoponopono iki. Aia ʻo Grafana. Loaʻa iā Grafana kahi ʻikepili, ʻo ia ʻo ClickHouse. ʻO ia, hiki iaʻu ke hana i nā noi mai Grafana pololei iā ClickHouse. Loaʻa i ka ClickHouse kahi papa me nā lāʻau, ua like ia no kēlā me kēia. ʻO ka hopena, makemake wau e komo i kēia papa kuhikuhi ma Grafana a ʻike i nā noi a kaʻu kikowaena i hana ai. He mea maikaʻi ka loaʻa ʻana o kahi dashboard e like me kēia.

Ua holo au ia'u iho. Akā he nīnau kaʻu - inā ua hoʻohālikelike ʻia, a hoʻohana ʻia ʻo Grafana e nā mea a pau, no ke aha ʻaʻole i loaʻa iā Yandex kahi dashboard mana?

ʻO Kirill Shvakov: ʻO kaʻoiaʻiʻo, ke kākoʻo nei ka ʻikepili e hele ana i ClickHouse i kēia manawa iā Altinity. A makemake wale au e hāʻawi i kahi vector o kahi e ʻeli ai a ʻo wai e pana. Hiki iā ʻoe ke nīnau iā lākou, no ka mea, hana ʻo Yandex i ClickHouse, ʻaʻole ka moʻolelo a puni. ʻO Altinity ka hui nui e hoʻolaha nei i ka ClickHouse. ʻAʻole lākou e haʻalele iā ia, akā e kākoʻo iā ia. No ka mea, ma ke kumu, e hoʻouka i kahi dashboard i ka pūnaewele Grafana, pono ʻoe e hoʻopaʻa inoa a hoʻouka - ʻaʻohe pilikia kūikawā.

ʻO Alexey Milovidov: I ka makahiki i hala iho nei, ua hoʻohui ʻo ClickHouse i nā mea hiki ke noiʻi noiʻi. Aia nā ana no kēlā me kēia noi i ka hoʻohana waiwai. A i kēia manawa, ua hoʻohui mākou i kahi mea hoʻopuka hulina haʻahaʻa haʻahaʻa e ʻike i kahi e hoʻolilo ai kahi nīnau i kēlā me kēia millisecond. Akā no ka hoʻohana ʻana i kēia hana, pono iaʻu e wehe i ka mea kūʻai console a kākau i kahi noi, aʻu e poina mau ai. Ua mālama au ia ma kahi a poina au i hea pono.

Manaʻo wau aia kahi mea hana i ʻōlelo wale nei, eia kāu mau nīnau koʻikoʻi, i hui pū ʻia e ka papa nīnau. Ua kaomi au i kekahi, a e haʻi mai lākou iaʻu ʻo ia ke kumu kaumaha. ʻAʻohe mea like i kēia manawa. A he mea kupanaha loa ke nīnau mai ka poʻe iaʻu: "E haʻi mai iaʻu, aia kekahi mau papa kuhikuhi i hana ʻia no Grafana?", ʻōlelo wau: "E hele i ka pūnaewele Grafana, aia kahi kaiāulu "Dashboards", a aia kahi dashboard. mai Dimka, aia kahi dashboard mai Kostyan. ʻAʻole maopopo iaʻu he aha ia, ʻaʻole wau i hoʻohana iaʻu iho. "

Pehea e hoʻohuli ai i nā hui i ʻole e hāʻule ke kikowaena i ka OOM?

He papaʻaina kaʻu, hoʻokahi wale nō ʻāpana o ka pākaukau, ʻo ia ʻo ReplacingMergeTree. Ua kākau au i ka ʻikepili i loko o ia no ʻehā makahiki. Pono wau e hoʻololi i loko o ia mea a holoi i kekahi mau ʻikepili.

Ua hana au i kēia, a i ka wā o ka hoʻoponopono ʻana i kēia noi, ua pau ka hoʻomanaʻo ʻana i nā kikowaena āpau o ka hui, a ua hele nā ​​kikowaena a pau o ka hui i OOM. A laila, ala aʻela lākou a pau, hoʻomaka e hoʻohui i kēia hana hoʻokahi, kēia poloka data, a hāʻule hou i loko o OOM. A laila, ala hou lākou a hāʻule hou. A ʻaʻole i pau kēia mea.

A laila ua ʻike ʻia ʻo ia ka bug i hoʻoponopono ʻia e nā kāne. Maikaʻi loa kēia, mahalo nui. Akā, he koena i koe. A i kēia manawa, ke noʻonoʻo nei au e hana i kekahi ʻano hui i ka papaʻaina, he nīnau kaʻu - no ke aha e hiki ʻole ai iaʻu ke hoʻohuli i kēia mau hui? No ka laʻana, e kaupalena iā lākou e ka nui o ka RAM e pono ai, a i ʻole, ma ke kumu, e ka nui e hana ai i kēia papa.

He papaʻaina koʻu i kapa ʻia ʻo "Metrics", e ʻoluʻolu e hana ia iaʻu i ʻelua mau pae. ʻAʻole pono e hana i ʻumi a ʻelima paha hui like, e hana i ʻelua. Manaʻo wau ua lawa kaʻu hoʻomanaʻo no ʻelua, akā ʻaʻole lawa paha ka hana ʻana he ʻumi. No ke aha e mau ai ka makaʻu? No ka mea, ke ulu nei ka papaʻaina, a i kekahi lā e ʻike au i kahi kūlana, ma ke kumu, ʻaʻole ia ma muli o kahi bug, akā no ka loli ʻana o ka ʻikepili i ka nui nui a ʻaʻole lawa iaʻu ka hoʻomanaʻo ma ka kikowaena. A laila e hāʻule ke kikowaena i OOM ke hoʻohui ʻia. Eia kekahi, hiki iaʻu ke hoʻopau i ka mutation, akā ʻaʻole ʻo Merji ma laila.

ʻIke ʻoe, i ka hoʻohui ʻana, ʻaʻole e hāʻule ke kikowaena i ka OOM, no ka mea i ka hui ʻana, hoʻohana ʻia ka nui o ka RAM no kahi liʻiliʻi liʻiliʻi o ka ʻikepili. No laila e maikaʻi nā mea a pau me ka nānā ʻole i ka nui o ka ʻikepili.

ʻO Vladimir Kolobaev: Maikaʻi. Eia ka manawa ma hope o ka hoʻopaʻa ʻia ʻana o ka bug, ua hoʻoiho wau i kahi mana hou noʻu iho, a ma kahi papa ʻē aʻe, kahi liʻiliʻi, kahi i nui nā ʻāpana, hana wau i kahi hana like. A i ka wā o ka hui ʻana, ua puhi ʻia ma kahi o 100 GB o RAM ma ke kikowaena. He 150 kaʻu i noho ai, 100 i ʻai, a he 50 GB pukaaniani i koe, no laila ʻaʻole au i hāʻule i ka OOM.

He aha ka mea e pale ai iaʻu mai ka hāʻule ʻana i ka OOM inā e hoʻopau maoli ʻo ia i ka 100 GB o RAM? He aha ka hana inā pau ka RAM ma nā hui?

ʻO Alexey Milovidov: Aia kekahi pilikia ʻaʻole i kaupalena ʻia ka hoʻohana ʻana o RAM no ka hoʻohui ʻana. A ʻo ka pilikia ʻelua, inā ua hoʻonohonoho ʻia kekahi ʻano hui, a laila pono e hoʻokō ʻia no ka mea ua hoʻopaʻa ʻia i loko o ka log replication. ʻO ka log replication nā hana e pono ai e lawe i ka replica i kahi kūlana kūlike. Inā ʻaʻole ʻoe e hana i nā manipulation manual e hoʻihoʻi i kēia log replication, pono e hana ʻia ka hui ʻana i kekahi ala a i ʻole.

ʻOiaʻiʻo, ʻaʻole ia he mea nui loa ka loaʻa ʻana o kahi palena RAM e "pono ​​​​i ka hihia" e pale aku iā OOM. ʻAʻole ia e kōkua i ka hui ʻana e hoʻopau, e hoʻomaka hou ia, e hōʻea i kahi paepae, e hoʻolei i kahi ʻokoʻa, a laila hoʻomaka hou - ʻaʻohe mea maikaʻi e hiki mai i kēia. Akā ma ke kumu, pono e hoʻokomo i kēia palena.

Pehea e hoʻomohala ʻia ai ka mea hoʻokele Golang no ClickHouse?

ʻO ka mea hoʻokele Golang, i kākau ʻia e Kirill Shvakov, i kēia manawa i kākoʻo ʻia e ka hui ClickHouse. He ma ka waihona ClickHouse, ua nui ʻo ia a ʻoiaʻiʻo.

He palapala liʻiliʻi. Aia kahi waihona nani a aloha ʻia o nā ʻano maʻamau o ke kauoha pau ʻole - ʻo Vertica kēia. Loaʻa iā lākou kā lākou mea hoʻokele python mana, i kākoʻo ʻia e nā mea hoʻomohala Vertica. A i kekahi mau manawa ua hoʻokaʻawale loa nā ʻano waihona a me nā ʻano hoʻokele, a ua hoʻōki ka mea hoʻokele i ka hana. A ʻo ka helu ʻelua. ʻO ke kākoʻo no kēia kaʻa hoʻokele, me he mea lā iaʻu, ua hoʻokō ʻia e ka ʻōnaehana "nipple" - kākau ʻoe iā lākou i kahi pilikia, a kau mau ia.

ʻElua aʻu nīnau. I kēia manawa ʻo Kirill's Golang mea hoʻokele ka mea kokoke i ke ala maʻamau e kamaʻilio mai Golang me ClickHouse. Inā ʻaʻole e kamaʻilio kekahi ma o ka interface http no ka mea makemake ʻo ia pēlā. Pehea ka hoʻomohala ʻana o kēia mea hoʻokele? E hui pū ʻia me nā hoʻololi hoʻololi i ka waihona ponoʻī? A he aha ke kaʻina hana no ka noʻonoʻo ʻana i kahi pilikia?

ʻO Kirill Shvakov: ʻO ka mea mua ke ʻano o ka hoʻonohonoho ʻana i nā mea āpau. ʻAʻole i kūkākūkā ʻia kēia manaʻo, no laila ʻaʻohe aʻu mea e pane aku ai.

No ka pane ʻana i ka nīnau e pili ana i ka pilikia, pono mākou i kahi moʻolelo liʻiliʻi o ka mea hoʻokele. Ua hana au no kahi hui i nui ka ʻikepili. He mea wili hoʻolaha me ka nui o nā hanana e pono e mālama ʻia ma kahi. A i kekahi manawa ua puka mai ʻo ClickHouse. Hoʻopiha mākou iā ia me ka ʻikepili, a i ka manawa mua ua maikaʻi nā mea a pau, akā ua hāʻule ʻo ClickHouse. I kēlā manawa ua hoʻoholo mākou ʻaʻole pono mākou.

I hoʻokahi makahiki ma hope mai, ua hoʻi mākou i ka manaʻo o ka hoʻohana ʻana iā ClickHouse, a pono mākou e kākau i ka ʻikepili ma laila. ʻO ka ʻōlelo hoʻolauna ʻo ia kēia: nāwaliwali loa ka hāmeʻa, liʻiliʻi nā kumuwaiwai. Akā ua hana mau mākou i kēia ala, a no laila ua nānā mākou i ka protocol maoli.

Ma muli o ko mākou hana ʻana ma Go, ua maopopo ka pono o kahi mea hoʻokele Go. Hana au i ka manawa piha - ʻo ia kaʻu hana hana. Ua lawe mākou iā ia i kahi manawa, a ma ke kumu ʻaʻohe mea i manaʻo e hoʻohana kekahi ma mua o mākou. A laila hele mai ʻo CloudFlare me ka pilikia like, a no kekahi manawa ua hana maʻalahi mākou me lākou, no ka mea, ua like nā hana like. Eia kekahi, ua hana mākou i kēia ma ClickHouse iā mākou iho a i ka mea hoʻokele.

I kekahi manawa, ua ho'ōki wale au i ka hanaʻana, no ka mea, ua loli iki kaʻu hana ma keʻano o ClickHouse a me ka hana. No laila ʻaʻole i pani ʻia nā pilikia. I kēlā me kēia manawa, hoʻokomo ka poʻe i makemake i kahi mea i ka waihona. A laila nānā wau i ka noi huki a i kekahi manawa hoʻoponopono wau i kekahi mea iaʻu iho, akā hiki ʻole kēia.

Makemake au e hoʻi i ke kalaiwa. I kekahi mau makahiki i hala aku nei, i ka wā i hoʻomaka ai kēia mea holoʻokoʻa, ua ʻokoʻa ʻo ClickHouse a me nā mana like ʻole. I kēia manawa ua maopopo iā mākou pehea e hana hou ai i ka mea hoʻokele i hana maikaʻi ia. Inā hiki kēia, a laila ʻaʻole kūpono ka mana 2 i kekahi hihia ma muli o nā koʻokoʻo i hōʻiliʻili ʻia.

ʻAʻole maopopo iaʻu pehea e hoʻonohonoho ai i kēia mea. ʻAʻohe oʻu manawa nui iaʻu iho. Inā hoʻopau kekahi poʻe i ka mea hoʻokele, hiki iaʻu ke kōkua iā lākou a haʻi iā lākou i ka mea e hana ai. Akā ʻaʻole i kūkākūkā ʻia ke komo ʻana o Yandex i ka hoʻomohala ʻana i ka papahana.

ʻO Alexey Milovidov: ʻO ka ʻoiaʻiʻo, ʻaʻohe ʻoihana e pili ana i kēia mau mea hoʻokele. ʻO ka mea wale nō, ua waiho ʻia lākou i kahi hui kūhelu, ʻo ia hoʻi, ʻike ʻia kēia mea hoʻokele ma ke ʻano he hopena paʻamau no Go. Aia kekahi mau mea hoʻokele, akā hele kaʻawale lākou.

ʻAʻohe o mākou hoʻomohala kūloko no kēia mau mea hoʻokele. ʻO ka nīnau inā hiki iā mākou ke hoʻolimalima i kahi kanaka hoʻokahi, ʻaʻole no kēia mea hoʻokele kūikawā, akā no ka hoʻomohala ʻana i nā mea hoʻokele kaiaulu āpau, a i ʻole hiki iā mākou ke loaʻa kekahi mai waho.

ʻAʻole hoʻouka ʻia ka puke wehewehe ʻōlelo waho ma hope o ka hoʻomaka hou ʻana me ka hoʻonohonoho lazy_load. He aha ka hana?

Loaʻa iā mākou ka lazy_load hoʻonohonoho, a ma hope o ka hoʻomaka hou ʻana o ke kikowaena, ʻaʻole hoʻouka ka puke wehewehe ʻōlelo iā ia iho. Hoʻokiʻekiʻe ʻia ma hope o ke komo ʻana o ka mea hoʻohana i kēia puke wehewehe. A ʻo ka manawa mua aʻu e komo ai, hāʻawi ia i kahi hewa. Hiki paha ke hoʻouka maʻalahi i nā puke wehewehe ʻōlelo me ka hoʻohana ʻana i ClickHouse, a i ʻole pono ʻoe e hoʻomalu mau i ko lākou mākaukau iā ʻoe iho i ʻole e loaʻa nā mea hoʻohana i nā hewa?

Loaʻa paha iā mākou kahi mana kahiko o ClickHouse, no laila ʻaʻole i hoʻouka maʻalahi ka puke wehewehe. ʻO kēia paha ka hihia?

ʻO ka mea mua, hiki ke hoʻouka ʻia nā puke wehewehe ʻōlelo me ka hoʻohana ʻana i kahi nīnau ʻōnaehana hoʻouka hou i nā puke wehewehe ʻōlelo. ʻO ka lua, e pili ana i ka hewa - inā ua hoʻouka mua ʻia ka puke wehewehe ʻōlelo, a laila e hana nā nīnau ma muli o ka ʻikepili i hoʻouka ʻia. Inā ʻaʻole i hoʻouka ʻia ka puke wehewehe ʻōlelo, e hoʻouka pololei ʻia i ka wā o ke noi.

ʻAʻole kūpono kēia no nā puke wehewehe ʻōlelo koʻikoʻi. No ka laʻana, pono ʻoe e huki i kahi miliona mau lālani mai MySQL. Hana kekahi i kahi koho maʻalahi, akā e kali kēia koho no nā lālani miliona like. ʻElua mau hoʻonā ma aneʻi. ʻO ka mea mua e hoʻopau i ka lazy_load. ʻO ka lua, ke paʻa ke kikowaena, ma mua o ka kau ʻana i ka ukana ma luna, e hana ʻōnaehana hoʻoili puke wehewehe ʻōlelo a i ʻole e hana i kahi nīnau e hoʻohana ana i ka puke wehewehe. A laila e hoʻouka ʻia ka puke wehewehe. Pono ʻoe e hoʻomalu i ka loaʻa ʻana o nā puke wehewehe ʻōlelo me ka hoʻonohonoho lazy_load, no ka mea ʻaʻole hoʻouka ʻo ClickHouse iā lākou.

ʻO ka pane i ka nīnau hope loa he kahiko paha ka mana a i ʻole pono e hoʻopau ʻia.

He aha ka mea e hana ai me ka ʻoiaʻiʻo ʻaʻole hoʻouka ʻia nā puke wehewehe ʻōlelo hoʻoili i kekahi o nā puke wehewehe ʻōlelo he nui inā hāʻule kekahi o lākou me ka hewa?

Aia kekahi nīnau e pili ana i nā puke wehewehe ʻōlelo hoʻouka hou. ʻElua kā mākou puke wehewehe ʻōlelo - ʻaʻole hoʻouka ʻia kekahi, hoʻouka ʻia ka lua. I kēia hihia, ʻaʻole hoʻouka ʻia nā puke wehewehe ʻōlelo System reload i kekahi puke wehewehe ʻōlelo, a pono ʻoe e hoʻouka i kēlā me kēia helu i kahi kikoʻī ma kona inoa me ka hoʻohana ʻana i ka puke wehewehe ʻōnaehana. Ua pili pū kēia me ka ClickHouse version?

Makemake wau e hauʻoli ʻoe. Ua loli kēia ʻano. 'O ia ho'i, inā ho'ololi 'oe i ka ClickHouse, e ho'ololi pū ia. Inā ʻaʻole ʻoe hauʻoli i kāu ʻano o kēia manawa ʻōnaehana hoʻouka hou i nā puke wehewehe ʻōlelo, hōʻano hou, a manaʻolana kākou e loli ana ia no ka maikaʻi.

Aia kahi ala e hoʻonohonoho ai i nā kikoʻī ma ka ClickHouse config, akā ʻaʻole e hōʻike iā lākou inā he hewa?

ʻO ka nīnau aʻe e pili ana i nā hewa e pili ana i ka puke wehewehe ʻōlelo, ʻo ia hoʻi nā kikoʻī. Ua kuhikuhi mākou i nā kikoʻī pili i ka ClickHouse config no ka puke wehewehe ʻōlelo, a inā he hewa, loaʻa iā mākou kēia mau kikoʻī a me ka ʻōlelo huna ma ka pane.

Ua hoʻopau mākou i kēia hewa ma ka hoʻohui ʻana i nā kikoʻī i ka hoʻonohonoho hoʻokele ODBC. Aia kekahi ala e hoʻonohonoho ai i nā kikoʻī ma ka ClickHouse config, akā ʻaʻole e hōʻike i kēia mau kikoʻī inā he hewa?

ʻO ka hoʻonā maoli ma aneʻi ʻo ia ke kuhikuhi ʻana i kēia mau hōʻoia ma odbc.ini, a ma ClickHouse ponoʻī e kuhikuhi wale i ka inoa ODBC Data Source. ʻAʻole e hana ʻia kēia no nā kumu puke wehewehe ʻē aʻe - ʻaʻole no ka puke wehewehe ʻōlelo me MySQL, ʻaʻole no nā mea ʻē aʻe, ʻaʻole pono ʻoe e ʻike i ka ʻōlelo huna ke loaʻa iā ʻoe kahi memo hewa. No ODBC, e nānā au - inā loaʻa, pono ʻoe e wehe.

Bonus: nā kumu no Zoom mai nā hui

Ma ke kaomi ʻana i ke kiʻi, e wehe ʻia nā ʻaoʻao bonus mai nā hōʻuluʻulu no ka poʻe heluhelu hoʻomau. Hoʻopau mākou i ke ahi me nā mascots ʻenehana Avito, kamaʻilio mākou me nā hoa hana mai ka lumi o ka luna ʻōnaehana a i ʻole ka hui kamepiula kula kahiko, a ke alakaʻi nei mākou i nā hālāwai i kēlā me kēia lā ma lalo o ke alahaka ma ke ʻano o ka graffiti.

ClickHouse no nā mea hoʻohana kiʻekiʻe i nā nīnau a me nā pane

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka