{"id":89878,"date":"2020-07-27T01:42:42","date_gmt":"2020-07-26T23:42:42","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-clickhouse-v-realnyh-prilozheniyah-aleksandr-zajczev-2018g"},"modified":"2020-07-27T01:42:42","modified_gmt":"2020-07-26T23:42:42","slug":"teoriya-i-praktika-ispolzovaniya-clickhouse-v-realnyh-prilozheniyah-aleksandr-zajczev-2018g","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-clickhouse-v-realnyh-prilozheniyah-aleksandr-zajczev-2018g","title":{"rendered":"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/b46b964324a3311157d5df737526b1d1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Megjith\u00ebse t\u00eb dh\u00ebnat tani ka shum\u00eb p\u00ebrgjith\u00ebsisht, BD analitike ende mbeten mjaft ekzotike. Ato njihen pak dhe p\u00ebrdoren edhe m\u00eb keq me efektivitet. Shum\u00eb vazhdojn\u00eb t\u00eb \"han\u00eb kaktus\" me MySQL ose PostgreSQL, t\u00eb cilat jan\u00eb projektuar p\u00ebr skenar\u00eb t\u00eb ndrysh\u00ebm, t\u00eb vuajn\u00eb me NoSQL ose t\u00eb paguajn\u00eb shum\u00eb p\u00ebr zgjidhje komerciale. ClickHouse ndryshon rregullat e loj\u00ebs dhe ul ndjesh\u00ebm pragun p\u00ebr t'u futur n\u00eb bot\u00ebn e DBMS analitik.<\/p>\n<p><\/p>\n<p>Raporti nga BackEnd Conf 2018 dhe ai \u00ebsht\u00eb botuar me lejen e referuesit.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"9MwKE30aUPs\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/9MwKE30aUPs\/hqdefault.jpg\" alt=\"Luaj videon\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/6c55b639d9703f460d99e0b0b1194507.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKush jam un\u00eb dhe pse po flas p\u00ebr ClickHouse? Un\u00eb jam drejtori i zhvillimit n\u00eb kompanin\u00eb LifeStreet, e cila p\u00ebrdor ClickHouse. P\u00ebrve\u00e7 k\u00ebsaj, un\u00eb jam themeluesi i Altinity. Kjo \u00ebsht\u00eb nj\u00eb partner i Yandex, q\u00eb promovon ClickHouse dhe ndihmon Yandex-in ta b\u00ebj\u00eb ClickHouse m\u00eb t\u00eb suksessh\u00ebm. Gjithashtu, jam i gatsh\u00ebm t\u00eb ndaj njohurit\u00eb mbi ClickHouse. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/36af6acba62271f7aa19dda2eb470870.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe akoma nuk jam v\u00ebllai i Pet\u00ebs Zaitsev. Shpesh m\u00eb pyesin p\u00ebr k\u00ebt\u00eb. Jo, ne nuk jemi v\u00ebllez\u00ebr.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/6ca605f97619a1373bb8a92f88d480d5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00abE gjith\u00eb bota e di\u00bb, q\u00eb ClickHouse:<\/p>\n<p><\/p>\n<ul>\n<li>Shum\u00eb i shpejt\u00eb,<\/li>\n<li>Shum\u00eb i p\u00ebrshtatsh\u00ebm, <\/li>\n<li>P\u00ebrdoret n\u00eb Yandex. <\/li>\n<\/ul>\n<p><\/p>\n<p>Pak m\u00eb pak e njohur \u00ebsht\u00eb se n\u00eb cilat kompani dhe si p\u00ebrdoret. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/c097b003bf8ea13b8a3bb765270e99c8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Do t'ju tregoj p\u00ebr \u00e7far\u00eb, ku dhe si p\u00ebrdoret ClickHouse, p\u00ebrve\u00e7 Yandex. <\/p>\n<p><\/p>\n<p>Do t'ju tregoj si zgjidhen detyrat konkrete me ndihm\u00ebn e ClickHouse n\u00eb kompani t\u00eb ndryshme, cilat mjete t\u00eb ClickHouse mund t\u00eb p\u00ebrdorni p\u00ebr detyrat tuaja dhe si jan\u00eb p\u00ebrdorur n\u00eb kompani t\u00eb ndryshme.<\/p>\n<p><\/p>\n<p>Kam p\u00ebrzgjedhur tre shembuj q\u00eb tregojn\u00eb ClickHouse nga ana t\u00eb ndryshme. Mendoj se do t\u00eb jet\u00eb interesante.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/d3cab92ceccd6c7d01ca1f28b028803f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pyetja e par\u00eb: \u00abP\u00ebrse nevojitet ClickHouse?\u00bb. Duket si nj\u00eb pyetje e zakonshme, por p\u00ebrgjigjet p\u00ebr t\u00eb jan\u00eb m\u00eb shum\u00eb se nj\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/1a4e14cc041a3c01ad0fd2a305aeeab0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>P\u00ebrgjigja e par\u00eb \u2013 p\u00ebr shkak t\u00eb performanc\u00ebs. ClickHouse \u00ebsht\u00eb shum\u00eb i shpejt\u00eb. Analizat n\u00eb ClickHouse gjithashtu jan\u00eb shum\u00eb t\u00eb shpejta. Ai shpesh mund t\u00eb p\u00ebrdoret atje ku di\u00e7ka tjet\u00ebr funksionon shum\u00eb ngadal\u00eb ose shum\u00eb keq. <\/li>\n<li>P\u00ebrgjigja e dyt\u00eb \u2013 \u00ebsht\u00eb costoja. Dhe n\u00eb radh\u00eb t\u00eb par\u00eb, costoja e shkall\u00ebzimit. P\u00ebr shembull, Vertica \u00ebsht\u00eb nj\u00eb baz\u00eb t\u00eb dh\u00ebnash krejt e shk\u00eblqyer. Ajo punon shum\u00eb mir\u00eb, n\u00ebse keni m\u00eb shum\u00eb se disa terabajt\u00eb t\u00eb dh\u00ebnash. Por kur b\u00ebhet fjal\u00eb p\u00ebr qindra terabajt\u00ebsh ose petabajt\u00eb, at\u00ebher\u00eb kostoja e licenc\u00ebs dhe mb\u00ebshtetjes arrin n\u00eb nj\u00eb shum\u00eb t\u00eb konsiderueshme. Dhe kjo \u00ebsht\u00eb e shtrenjt\u00eb. Nd\u00ebrsa ClickHouse \u00ebsht\u00eb falas. <\/li>\n<li>P\u00ebrgjigjja e tret\u00eb \u00ebsht\u00eb kostoja operacionale. Ky \u00ebsht\u00eb nj\u00eb qasje pak nga nj\u00eb k\u00ebndv\u00ebshtrim tjet\u00ebr. RedShift \u00ebsht\u00eb nj\u00eb alternativ\u00eb e shk\u00eblqyer. N\u00eb RedShift mund t\u00eb realizoni nj\u00eb zgjidhje shum\u00eb shpejt. Ajo do t\u00eb funksionoj\u00eb mir\u00eb, por \u00e7do or\u00eb, \u00e7do dit\u00eb dhe \u00e7do muaj do t\u00eb paguani mjaft shtrenjt\u00eb Amazon, pasi \u00ebsht\u00eb nj\u00eb sh\u00ebrbim shum\u00eb i kushtuesh\u00ebm. Google BigQuery gjithashtu. N\u00ebse dikush e ka p\u00ebrdorur, ai e di se atje mund t\u00eb nisni disa k\u00ebrkesa dhe t\u00eb merrni fatur\u00eb p\u00ebr qindra dollar\u00eb papritur. <\/li>\n<\/ul>\n<p><\/p>\n<p>N\u00eb ClickHouse nuk ka k\u00ebto probleme. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/3084a8bd9271f14726d73989946816c5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ku p\u00ebrdoret tani ClickHouse? P\u00ebrve\u00e7 Yandex, ClickHouse p\u00ebrdoret n\u00eb shum\u00eb biznese dhe kompani t\u00eb ndryshme. <\/p>\n<p><\/p>\n<ul>\n<li>K\u00ebtu p\u00ebrfshihet kryesisht analizimi i aplikacioneve web, pra \u00ebsht\u00eb nj\u00eb rast p\u00ebrdorimi q\u00eb ka ardhur nga Yandex.<\/li>\n<li>Shum\u00eb kompani AdTech p\u00ebrdorin ClickHouse. <\/li>\n<li>Shum\u00eb kompani q\u00eb kan\u00eb nevoj\u00eb t\u00eb analizojn\u00eb logjet operative nga burime t\u00eb ndryshme.<\/li>\n<li>Disa kompani p\u00ebrdorin ClickHouse p\u00ebr monitorimin e logjeve t\u00eb siguris\u00eb. Ato i ngarkojn\u00eb n\u00eb ClickHouse, b\u00ebjn\u00eb raporte, marrin rezultate q\u00eb u nevojiten.<\/li>\n<li>Kompanit\u00eb fillojn\u00eb ta p\u00ebrdorin n\u00eb analiz\u00ebn financiare, pra p\u00ebr pak koh\u00eb, bizneset e m\u00ebdha po i afrohen gjithashtu ClickHouse. <\/li>\n<li>CloudFlare. N\u00ebse dikush ndjek ClickHouse, sigurisht ka d\u00ebgjuar emrin e k\u00ebsaj kompanie. \u00cbsht\u00eb nj\u00eb nga kontribuesit e duksh\u00ebm nga komuniteti. Dhe ata kan\u00eb nj\u00eb instalim t\u00eb r\u00ebnd\u00ebsish\u00ebm t\u00eb ClickHouse. P\u00ebr shembull, ata krijuan Kafka Engine p\u00ebr ClickHouse. <\/li>\n<li>Kompani telekomunikacionesh kan\u00eb filluar ta p\u00ebrdorin. Disa kompani e p\u00ebrdorin ClickHouse ose si nj\u00eb prov\u00eb koncepti, ose tashm\u00eb n\u00eb prodhim.<\/li>\n<li>Nj\u00eb kompani p\u00ebrdor ClickHouse p\u00ebr monitorimin e proceseve prodhuese. Ata testojn\u00eb \u00e7ipa, regjistrojn\u00eb nj\u00eb s\u00ebr\u00eb parametrash, rreth 2,000 karakteristika. Dhe m\u00eb pas analizojn\u00eb \u2013 a \u00ebsht\u00eb nj\u00eb ngarkes\u00eb e mir\u00eb apo nj\u00eb ngarkes\u00eb e keqe.<\/li>\n<li>Analitika e blockchain. Ka nj\u00eb kompani ruse si Bloxy.info. Kjo \u00ebsht\u00eb analiza e rrjetit ethereum. K\u00ebt\u00eb e b\u00ebn\u00eb gjithashtu n\u00eb ClickHouse. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/8a0c1924a20ed2d15cd0f959e9b3e499.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, madh\u00ebsia nuk ka r\u00ebnd\u00ebsi. Ka shum\u00eb kompani q\u00eb p\u00ebrdorin nj\u00eb server t\u00eb vog\u00ebl. Dhe ai u lejon t\u00eb zgjidhin problemet e tyre. Dhe gjithashtu, m\u00eb shum\u00eb kompani p\u00ebrdorin klastere t\u00eb m\u00ebdha me shum\u00eb <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sq\/server\/\"   title=\"server\u00ebsh\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1513\">server\u00ebsh<\/a> apo dhjet\u00ebra servera. <\/p>\n<p><\/p>\n<p>Dhe n\u00ebse shikoni rekordet, at\u00ebher\u00eb:<\/p>\n<p><\/p>\n<ul>\n<li>Yandex: 500+ servera, 25 miliard\u00eb regjistrime n\u00eb dit\u00eb i ruajn\u00eb atje.<\/li>\n<li>LifeStreet: 60 servera, rreth 75 miliard\u00eb regjistrime n\u00eb dit\u00eb. M\u00eb pak servera, m\u00eb shum\u00eb regjistrime se n\u00eb Yandex. <\/li>\n<li>CloudFlare: 36 servera, ata ruajn 200 miliard\u00eb sh\u00ebnimesh n\u00eb dit\u00eb. Ata kan\u00eb edhe m\u00eb pak servera dhe ruajn\u00eb edhe m\u00eb shum\u00eb t\u00eb dh\u00ebna. <\/li>\n<li>Bloomberg: 102 <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sq\/server\/dts-los-angeles\/\"   title=\"server\u00eb\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3643\">server\u00eb<\/a>, rreth nj\u00eb trilion sh\u00ebnimesh n\u00eb dit\u00eb. Rekordmeni n\u00eb regjistrime.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/49194030b6586221cb17029889ce33da.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Gjeografikisht \u2013 kjo \u00ebsht\u00eb gjithashtu shum\u00eb. Ky hart\u00eb tregon heatmap, ku ClickHouse p\u00ebrdoret n\u00eb bot\u00eb. K\u00ebtu p\u00ebrfaq\u00ebsohet me ngjyra Rusi, Kin\u00eb, Amerik\u00eb. Ka shum\u00eb pak vende evropiane. Mund t\u00eb identifikohen 4 klaster\u00eb.<\/p>\n<p><\/p>\n<p>Ky \u00ebsht\u00eb nj\u00eb analiz\u00eb krahasuese, k\u00ebtu nuk duhet t\u00eb k\u00ebrkoni shifra absolute. Ky \u00ebsht\u00eb analiza e vizitor\u00ebve q\u00eb lexojn\u00eb materiale n\u00eb anglisht n\u00eb faqen e Altinity, sepse nuk ka material n\u00eb rusisht aty. Dhe Rusia, Ukraina, Bjellorusia, pra pjesa rusisht-fol\u00ebse e komunitetit, jan\u00eb p\u00ebrdoruesit m\u00eb t\u00eb shumt\u00eb. Pas tyre vijn\u00eb SHBA dhe Kanada. Kina po e ndjek nga pas shum\u00eb fort. Para gjasht\u00eb muajve Kina pothuajse nuk ishte aty, tani Kina ka kaluar Evrop\u00ebn dhe vazhdon t\u00eb rritet. Vjet\u00ebrja Evrop\u00eb gjithashtu nuk mbetet prapa, madje lideri i p\u00ebrdorimit t\u00eb ClickHouse \u00ebsht\u00eb, si\u00e7 duket, Franca. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/3a8305c51b1bd62f3467b795402df4ed.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><strong>Pse po e tregoj gjith k\u00ebt\u00eb? P\u00ebr t\u00eb treguar se ClickHouse po b\u00ebhet zgjidhja standarde p\u00ebr analiz\u00ebn e t\u00eb dh\u00ebnave t\u00eb m\u00ebdha dhe tashm\u00eb p\u00ebrdoret shum\u00eb vende.<\/strong> N\u00ebse e p\u00ebrdorni, jeni n\u00eb trendin e duhur. N\u00ebse nuk e keni p\u00ebrdorur ende, mund t\u00eb mos keni frik\u00eb se do t\u00eb mbeteni t\u00eb vetmuar dhe askush nuk do t'ju ndihmoj\u00eb, sepse tashm\u00eb shum\u00eb njer\u00ebz po e p\u00ebrdorin k\u00ebt\u00eb.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/6aa635f3a35034d3af837c78b2c8fe60.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00ebto jan\u00eb shembuj konkret\u00eb t\u00eb p\u00ebrdorimit t\u00eb ClickHouse n\u00eb disa kompani. <\/p>\n<p><\/p>\n<ul>\n<li>Shembulli i par\u00eb \u2013 \u00ebsht\u00eb nj\u00eb rrjet reklamash: migrimi nga Vertica n\u00eb ClickHouse. Dhe un\u00eb njoh disa kompani q\u00eb kan\u00eb kaluar nga Vertica ose jan\u00eb n\u00eb procesin e kalimit. <\/li>\n<li>Shembulli i dyt\u00eb \u2013 hap\u00ebsira transaksionale n\u00eb ClickHouse. Ky \u00ebsht\u00eb nj\u00eb shembull q\u00eb \u00ebsht\u00eb nd\u00ebrtuar mbi antipaterns. T\u00eb gjitha, \u00e7ka nuk duhet b\u00ebr\u00eb n\u00eb ClickHouse sipas k\u00ebshillave t\u00eb zhvilluesve, k\u00ebtu \u00ebsht\u00eb b\u00ebr\u00eb. Dhe megjithat\u00eb \u00ebsht\u00eb b\u00ebr\u00eb kaq efektivisht, sa q\u00eb funksionon. Dhe funksionon shum\u00eb m\u00eb mir\u00eb se nj\u00eb zgjidhje tipike transaksionale. <\/li>\n<li>Shembulli i tret\u00eb \u2013 jan\u00eb llogarit\u00eb e shp\u00ebrndara n\u00eb ClickHouse. Kishte nj\u00eb pyetje se si mund t\u00eb integrohet ClickHouse n\u00eb ekosistemin Hadoop. Do t\u00eb tregoj nj\u00eb shembull, si nj\u00eb kompani b\u00ebri n\u00eb ClickHouse di\u00e7ka si nj\u00eb analog t\u00eb containerit map reduce, duke i ndjekur lokalizimet e t\u00eb dh\u00ebnave etj., p\u00ebr t\u00eb llogaritur nj\u00eb detyr\u00eb shum\u00eb jo triviale. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/e08ab5418500599f08d40324ccdfbcd0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>LifeStreet \u2013 \u00ebsht\u00eb nj\u00eb kompani Ad Tech, e cila ka t\u00eb gjitha teknologjit\u00eb e nevojshme p\u00ebr nj\u00eb rrjet reklamash. <\/li>\n<li>Ajo merret me optimizimin e reklama, programmatic bidding. <\/li>\n<li>Shum\u00eb t\u00eb dh\u00ebna: rreth 10 miliard ngjarjesh n\u00eb dit\u00eb. Gjithashtu, ngjarjet mund t\u00eb p\u00ebrfshijn\u00eb disa n\u00ebn-ngjarje.<\/li>\n<li>Shum\u00eb klient\u00eb kan\u00eb nevoj\u00eb p\u00ebr k\u00ebto t\u00eb dh\u00ebna, dhe kjo nuk jan\u00eb vet\u00ebm njer\u00ebz, por shum\u00eb m\u00eb tep\u00ebr \u2013 jan\u00eb algoritme t\u00eb ndryshme q\u00eb merren me programimin e ofertave. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/2da99b53eb25f675a2431027f86db934.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kompania ka kaluar nj\u00eb rrug\u00eb t\u00eb gjat\u00eb dhe t\u00eb v\u00ebshtir\u00eb. E kam folur p\u00ebr k\u00ebt\u00eb n\u00eb HighLoad. Fillimisht, LifeStreet kaloi nga MySQL (me nj\u00eb ndales\u00eb t\u00eb vog\u00ebl n\u00eb Oracle) te Vertica. Mund t\u00eb gjeni edhe tregimin p\u00ebr k\u00ebt\u00eb. <\/p>\n<p><\/p>\n<p>Dhe gjith\u00e7ka shkoi shum\u00eb mir\u00eb, por shpejt u kuptua se t\u00eb dh\u00ebnat po rriteshin dhe Vertica \u00ebsht\u00eb e shtrenjt\u00eb. Prandaj, ishim n\u00eb k\u00ebrkim t\u00eb alternativave t\u00eb ndryshme. Disa prej tyre jan\u00eb p\u00ebrmendur k\u00ebtu. N\u00eb fakt, ne b\u00ebm\u00eb prova koncepti ose ndonj\u00ebher\u00eb teste performanc\u00ebs p\u00ebr pothuajse t\u00eb gjitha sistemet e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave q\u00eb ishin n\u00eb treg nga viti 2013 deri n\u00eb vitin 2016 dhe q\u00eb ishin t\u00eb p\u00ebrshtatshme p\u00ebr funksionalitetin. Disa prej tyre i kam folur gjithashtu n\u00eb HighLoad.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/4bebd2f43892cbef9249ddded1b8a70a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ishte e nevojshme t\u00eb migronim nga Vertica p\u00ebrpar\u00ebsisht, sepse t\u00eb dh\u00ebnat po rriteshin. Dhe ato rriteshin eksponencial p\u00ebr disa vite. M\u00eb pas arrit\u00ebn n\u00eb nj\u00eb nivel, por sidoqoft\u00eb. Duke parashikuar k\u00ebt\u00eb rritje dhe k\u00ebrkesat e biznesit p\u00ebr sasin\u00eb e t\u00eb dh\u00ebnave p\u00ebr t\u00eb cilat nevojitej t\u00eb kryhej ndonj\u00eb analiz\u00eb, ishte e qart\u00eb se s\u00eb shpejti do t\u00eb flasim p\u00ebr petabajt\u00eb. Dhe p\u00ebr petabajt\u00eb, \u00ebsht\u00eb shum\u00eb e shtrenjt\u00eb t\u00eb paguash, prandaj po k\u00ebrkonim nj\u00eb alternativ\u00eb p\u00ebr t\u00eb kaluar. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/f170a4307168e8560122966eab85c24e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ku t\u00eb shkojm\u00eb? Dhe p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb nuk ishte e qart\u00eb se ku t\u00eb shkonim, sepse nga nj\u00ebra an\u00eb ekzistojn\u00eb sistemet e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave komerciale, t\u00eb cilat duket se funksionojn\u00eb mir\u00eb. Disa funksionojn\u00eb pothuajse aq mir\u00eb sa Vertica, disa m\u00eb keq. Por t\u00eb gjitha jan\u00eb t\u00eb shtrenjta, nuk arrit\u00ebm t\u00eb gjenim asgj\u00eb m\u00eb t\u00eb lir\u00eb dhe m\u00eb t\u00eb mir\u00eb. <\/p>\n<p><\/p>\n<p>Nga ana tjet\u00ebr, ekzistojn\u00eb zgjidhje open source, t\u00eb cilat nuk jan\u00eb shum\u00eb, pra, p\u00ebr analiz\u00eb, mund t\u2019i num\u00ebrosh me gishta. Ato jan\u00eb falas ose t\u00eb lira, por funksionojn\u00eb ngadal\u00eb. Dhe shpesh u mungon funksionaliteti i nevojsh\u00ebm dhe t\u00eb dobish\u00ebm.<\/p>\n<p><\/p>\n<p>Dhe k\u00ebshtu, nuk kishte asgj\u00eb q\u00eb t\u00eb kombininte at\u00eb q\u00eb \u00ebsht\u00eb e mir\u00eb n\u00eb sistemet komerciale t\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave dhe gjith\u00e7ka q\u00eb \u00ebsht\u00eb falas n\u00eb open source. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/abbefbf0d9578b554f81579b87213a50.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nuk kishte asgj\u00eb derisa papritur Yandex e nxori, si nj\u00eb krimb nga nj\u00eb kapel\u00eb magjistari, ClickHouse. Dhe kjo ishte nj\u00eb zgjidhje e papritur, ende pyetet: \"Pse?\", por sidoqoft\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/c88981aace9d5925396ca5171241b7d2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe n\u00eb ver\u00ebn e vitit 2016, filluam t\u00eb shqyrtojm\u00eb se \u00e7far\u00eb \u00ebsht\u00eb ClickHouse. Dhe rezultoi se ndonj\u00ebher\u00eb ai mund t\u00eb jet\u00eb m\u00eb i shpejt\u00eb se Vertica. Testuam skenar\u00eb t\u00eb ndrysh\u00ebm n\u00eb k\u00ebrkesa t\u00eb ndryshme. Dhe n\u00ebse k\u00ebrkesa p\u00ebrdorte vet\u00ebm nj\u00eb tabel\u00eb, dmth pa ndonj\u00eb bashkim (join), at\u00ebher\u00eb ClickHouse ishte dy her\u00eb m\u00eb i shpejt\u00eb se Vertica. <\/p>\n<p><\/p>\n<p>Nuk u lodha dhe shqyrtova gjithashtu testet e Yandex-it para disa dit\u00ebsh. Aty \u00ebsht\u00eb e nj\u00ebjta gj\u00eb: ClickHouse \u00ebsht\u00eb dy her\u00eb m\u00eb i shpejt\u00eb se Vertica, prandaj ata shpesh flasin p\u00ebr k\u00ebt\u00eb. <\/p>\n<p><\/p>\n<p>Por n\u00ebse k\u00ebrkesat kan\u00eb bashkime (join), at\u00ebher\u00eb gjith\u00e7ka b\u00ebhet e paqart\u00eb. Dhe ClickHouse mund t\u00eb jet\u00eb m\u00eb i ngadalt\u00eb se Vertica deri n\u00eb dy her\u00eb. Por n\u00ebse pak e ndryshojm\u00eb k\u00ebrkes\u00ebn dhe e riformulojm\u00eb, at\u00ebher\u00eb ato jan\u00eb af\u00ebrsisht t\u00eb barabarta. Jo keq. Dhe falas. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/188bf56b72123175a18d2cb97d989a47.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe duke marr\u00eb rezultatet e testeve dhe duke e par\u00eb nga k\u00ebndv\u00ebshtrime t\u00eb ndryshme, LifeStreet kaloi n\u00eb ClickHouse.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/1183b9b7681916686c52786fc95ccb45.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kjo \u00ebsht\u00eb viti 2016, m\u00eb kujtohet. Ishte si n\u00eb anekdot\u00ebn p\u00ebr miu, t\u00eb cil\u00ebt qan\u00eb dhe u g\u00ebrvisht\u00ebn, por vazhduan t\u00eb han\u00eb kaktus. Dhe p\u00ebr k\u00ebt\u00eb \u00ebsht\u00eb folur n\u00eb detaje, ka video p\u00ebr k\u00ebt\u00eb, etj. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/993052ed83dc295c3777e614c7703456.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Prandaj nuk do t\u00eb flas n\u00eb detaje p\u00ebr k\u00ebt\u00eb, do t\u00eb flas vet\u00ebm p\u00ebr rezultatet dhe mbi disa gj\u00ebra interesante q\u00eb nuk kam treguar at\u00ebher\u00eb. <\/p>\n<p><\/p>\n<p>Rezultatet jan\u00eb:<\/p>\n<p><\/p>\n<ul>\n<li>Migrimi i suksessh\u00ebm dhe sistemi tashm\u00eb funksionon n\u00eb prodhim p\u00ebr m\u00eb shum\u00eb se nj\u00eb vit. <\/li>\n<li>Performanca dhe fleksibiliteti jan\u00eb rritur. Nga 10 miliard\u00eb regjistrime, q\u00eb mund t\u00eb lejonim t\u00eb ruheshin p\u00ebr nj\u00eb dit\u00eb dhe p\u00ebr nj\u00eb koh\u00eb t\u00eb shkurt\u00ebr, tani LifeStreet ruan 75 miliard\u00eb regjistrime n\u00eb dit\u00eb dhe mund ta b\u00ebj\u00eb k\u00ebt\u00eb p\u00ebr 3 muaj e m\u00eb shum\u00eb. N\u00eb kulm, kjo \u00ebsht\u00eb deri n\u00eb nj\u00eb milion ngjarje n\u00eb sekond\u00eb q\u00eb ruhen. M\u00eb shum\u00eb se nj\u00eb milion SQL-k\u00ebrkesa n\u00eb dit\u00eb vijn\u00eb n\u00eb k\u00ebt\u00eb sistem, kryesisht nga robot\u00eb t\u00eb ndrysh\u00ebm. <\/li>\n<li>Pavar\u00ebsisht se p\u00ebr ClickHouse filluan t\u00eb p\u00ebrdoren m\u00eb shum\u00eb server\u00eb se p\u00ebr Vertica, kursimi ndodhi edhe n\u00eb metal, sepse n\u00eb Vertica ishin p\u00ebrdorur disqe SAS mjaft t\u00eb shtrenjta. N\u00eb ClickHouse ishin p\u00ebrdorur SATA. Pse? Sepse n\u00eb Vertica, inserti \u00ebsht\u00eb sinkron. Dhe sinkronizimi k\u00ebrkon q\u00eb disqet t\u00eb mos ngadal\u00ebsohen shum\u00eb, si dhe q\u00eb rrjeti t\u00eb mos ngadal\u00ebsohet, dmth, nj\u00eb operacion mjaft i shtrenjt\u00eb. Nd\u00ebrsa n\u00eb ClickHouse, inserti \u00ebsht\u00eb asinkron. P\u00ebr m\u00eb tep\u00ebr, gjithmon\u00eb mund t\u00eb shkruani gjith\u00e7ka lokal, nuk ka shpenzime shtes\u00eb p\u00ebr k\u00ebt\u00eb, prandaj t\u00eb dh\u00ebnat n\u00eb ClickHouse mund t\u00eb futen shum\u00eb m\u00eb shpejt se n\u00eb Vertica, edhe n\u00eb disqe q\u00eb nuk jan\u00eb nga m\u00eb t\u00eb shpejtit. Nd\u00ebrsa n\u00eb lexim, ato jan\u00eb af\u00ebrsisht t\u00eb nj\u00ebjta. Leximi n\u00eb SATA, n\u00ebse ato jan\u00eb n\u00eb RAID, at\u00ebher\u00eb gjith\u00e7ka \u00ebsht\u00eb mjaft e shpejt\u00eb. <\/li>\n<li>Nuk ka kufizime p\u00ebr licenc\u00ebn, dmth 3 petabayta t\u00eb dh\u00ebnash n\u00eb 60 server\u00eb (20 server\u00eb jan\u00eb nj\u00eb replik\u00eb) dhe 6 trilion t\u00eb dh\u00ebna n\u00eb fakte dhe agregat\u00eb. Asgj\u00eb e till\u00eb nuk mund t\u00eb lejohej n\u00eb Vertica. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/f461cdc12917ee655655dd7eb9c32bb2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tani po kaloj n\u00eb gj\u00ebrat praktike n\u00eb k\u00ebt\u00eb shembull.<\/p>\n<p><\/p>\n<ul>\n<li>E para \u00ebsht\u00eb nj\u00eb skem\u00eb efikase. Shum\u00eb gj\u00ebra varen nga skema. <\/li>\n<li>E dyta \u00ebsht\u00eb gjenerimi i SQL efikas.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/e7dc2a217e77c8794ff6e8a754e78c85.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nj\u00eb pyetje tipike OLAP \u00ebsht\u00eb nj\u00eb select. Nj\u00eb pjes\u00eb e koloneve shkon n\u00eb group by, nj\u00eb pjes\u00eb e koloneve shkon n\u00eb funksionet agregate. Ka nj\u00eb where, t\u00eb cil\u00ebn mund ta p\u00ebrfaq\u00ebsojm\u00eb si nj\u00eb prerje kubi. E gjith\u00eb group by mund t\u00eb p\u00ebrfaq\u00ebsohet si nj\u00eb projektim. Dhe prandaj kjo quhet analiz\u00eb shum\u00ebdimensionale e t\u00eb dh\u00ebnave. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/a03a2d7fd28905ae83183346f0c673e2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe shpesh kjo modelizohet n\u00eb form\u00ebn e nj\u00eb skeme star, kur ka nj\u00eb fakt qendror dhe karakteristikat e k\u00ebtij fakti n\u00eb an\u00ebt, n\u00eb rrethe. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/d9671af4b39cc83e1ae49e6fd75d0e02.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe nga pik\u00ebpamja e dizajnit fizik, se si bazohet n\u00eb tabel\u00eb, zakonisht b\u00ebhet nj\u00eb paraqitje e normalizuar. Mund ta denormalizoni, por kjo \u00ebsht\u00eb e shtrenjt\u00eb p\u00ebr disku dhe nuk \u00ebsht\u00eb shum\u00eb efikase p\u00ebr k\u00ebrkesat. Prandaj zakonisht b\u00ebhet nj\u00eb paraqitje e normalizuar, dmth nj\u00eb tabel\u00eb fakti dhe shum\u00eb shum\u00eb tabela masash. <\/p>\n<p><\/p>\n<p>Por n\u00eb ClickHouse kjo funksionon keq. Ka dy arsye: <\/p>\n<p><\/p>\n<ul>\n<li>E para \u00ebsht\u00eb sepse n\u00eb ClickHouse nuk ka gj\u00ebra t\u00eb mira p\u00ebr bashkim (join), dmth ka bashkime (join), por ato jan\u00eb t\u00eb k\u00ebqija. Me sa duket, ende t\u00eb k\u00ebqija. <\/li>\n<li>E dyta \u00ebsht\u00eb q\u00eb tabelat nuk p\u00ebrdit\u00ebsohen. Zakonisht n\u00eb k\u00ebto tabela, q\u00eb jan\u00eb rreth skem\u00ebs star, duhet t\u00eb ndryshohet di\u00e7ka. P\u00ebr shembull, emri i klientit, emri i kompanis\u00eb dhe t\u00eb tjera. Dhe kjo nuk funksionon. <\/li>\n<\/ul>\n<p><\/p>\n<p>Dhe ka nj\u00eb zgjidhje p\u00ebr k\u00ebt\u00eb n\u00eb ClickHouse. madje dy t\u00eb plota: <\/p>\n<p><\/p>\n<ul>\n<li>E para \u00ebsht\u00eb p\u00ebrdorimi i fjalor\u00ebve. Fjal\u00ebt e Jashtme \u2013 jan\u00eb ato q\u00eb ndihmojn\u00eb t\u00eb zgjidhin 99% t\u00eb problemit me skem\u00ebn star, me p\u00ebrdit\u00ebsimet dhe t\u00eb tjera. <\/li>\n<li>E dyta \u00ebsht\u00eb p\u00ebrdorimi i masiv\u00ebve. Masiv\u00ebt gjithashtu ndihmojn\u00eb t\u00eb heqin dor\u00eb nga bashkimet (join) dhe nga problemet e normalizimit. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/775972cc412651600799173407384492.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Nuk nevojitet bashkim (join). <\/li>\n<li>T\u00eb p\u00ebrdit\u00ebsueshme. Q\u00eb nga marsi i vitit 2018 u shfaq nj\u00eb mund\u00ebsi e pa dokumentuar (n\u00eb dokumentacion nuk do ta gjeni k\u00ebt\u00eb) p\u00ebr t\u00eb p\u00ebrdit\u00ebsuar pjes\u00ebrisht fjalor\u00ebt, dmth ato t\u00eb dh\u00ebna q\u00eb jan\u00eb nd\u00ebrruar. Praktikisht, kjo \u00ebsht\u00eb si nj\u00eb tabel\u00eb.<\/li>\n<li>Gjithmon\u00eb n\u00eb memorje, prandaj bashkimet (join) me fjalorin punojn\u00eb m\u00eb shpejt sesa, n\u00ebse do t\u00eb ishte nj\u00eb tabel\u00eb q\u00eb ndodhet n\u00eb disk dhe nuk \u00ebsht\u00eb fakt q\u00eb \u00ebsht\u00eb n\u00eb cache, me siguri q\u00eb jo. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/f73176a650b6d885011e3265c2af2fc3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Asnj\u00ebher\u00eb nuk nevojitet bashkim (join).<\/li>\n<li>Kjo \u00ebsht\u00eb nj\u00eb paraqitje kompakte 1 me shum\u00eb. <\/li>\n<li>Dhe n\u00eb mendimin tim, masiv\u00ebt jan\u00eb b\u00ebr\u00eb p\u00ebr gjer\u00eb. K\u00ebto jan\u00eb funksionet lambda dhe t\u00eb tjera. <\/li>\n<\/ul>\n<p><\/p>\n<p>Kjo nuk \u00ebsht\u00eb p\u00ebr t\u00eb b\u00ebr\u00eb show. Kjo \u00ebsht\u00eb nj\u00eb funksionalitet shum\u00eb i fuqish\u00ebm q\u00eb lejon t\u00eb b\u00ebni shum\u00eb gj\u00ebra shum\u00eb thjesht dhe me eleganc\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/5d813952ca8f3da7a74c6f2a15d80a9b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Shembuj tipik\u00eb q\u00eb ndihmojn\u00eb n\u00eb zgjidhjen e masave. K\u00ebta shembuj jan\u00eb t\u00eb thjesht\u00eb dhe mjaft ilustrues:<\/p>\n<p><\/p>\n<ul>\n<li>K\u00ebrkimi sipas etiketave. N\u00ebse keni hashtag dhe d\u00ebshironi t\u00eb gjeni disa sh\u00ebnime sipas hashtagut. <\/li>\n<li>K\u00ebrkimi sipas \u00e7ifteve key-value. Igjithashtu ka disa atribute me vlera. <\/li>\n<li>Ruajtja e listave t\u00eb \u00e7el\u00ebsave q\u00eb duhet t'i p\u00ebrktheni n\u00eb di\u00e7ka tjet\u00ebr.<\/li>\n<\/ul>\n<p><\/p>\n<p>T\u00eb gjitha k\u00ebto detyra mund t\u00eb zgjidhen pa masa. Etiketat mund t\u00eb vendosen n\u00eb nj\u00eb rresht dhe t\u00eb zgjidhen me nj\u00eb shprehje t\u00eb rregullt ose n\u00eb nj\u00eb tabel\u00eb t\u00eb ve\u00e7ant\u00eb, por at\u00ebher\u00eb do t'ju duhet t\u00eb b\u00ebni bashkime (join).<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/dbbf90eee098c4564206532f24156823.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00eb ClickHouse nuk keni nevoj\u00eb t\u00eb b\u00ebni asgj\u00eb, \u00ebsht\u00eb mjaft t\u00eb p\u00ebrshkruani nj\u00eb mas\u00eb string p\u00ebr hashtag-et ose t\u00eb b\u00ebni nj\u00eb struktur\u00eb t\u00eb thell\u00eb p\u00ebr sisteme t\u00eb tipit key-value.<\/p>\n<p><\/p>\n<p>Struktura e thell\u00eb \u2013 ndoshta nuk \u00ebsht\u00eb emri m\u00eb i mir\u00eb. K\u00ebto jan\u00eb dy masa q\u00eb kan\u00eb nj\u00eb pjes\u00eb t\u00eb p\u00ebrbashk\u00ebt n\u00eb em\u00ebr dhe disa karakteristika t\u00eb lidhura. <\/p>\n<p><\/p>\n<p>Dhe t\u00eb k\u00ebrkosh sipas etiket\u00ebs \u00ebsht\u00eb shum\u00eb e thjesht\u00eb. Ka nj\u00eb funksion <code>ka<\/code>, i cili kontrollon se a ka nj\u00eb element n\u00eb mas\u00eb. T\u00eb gjitha, e gjet\u00ebm t\u00eb gjitha sh\u00ebnimet q\u00eb i p\u00ebrkasin konferenc\u00ebs ton\u00eb.<\/p>\n<p><\/p>\n<p>K\u00ebrkimi sipas subid \u00ebsht\u00eb pak m\u00ebNd\u00ebrmjet\u00ebs nd\u00ebrsa duhet t\u00eb gjejm\u00eb fillimisht indeksin e \u00e7el\u00ebsit, dhe pastaj t\u00eb marim elementin me at\u00eb indeks dhe t\u00eb kontrollojm\u00eb n\u00ebse vlera \u00ebsht\u00eb ajo q\u00eb na nevojitet. Por gjithsesi, \u00ebsht\u00eb shum\u00eb e thjesht\u00eb dhe kompakte.<\/p>\n<p><\/p>\n<p>Shprehja e rregullt, q\u00eb do t\u00eb d\u00ebshironit t\u00eb shkruani, n\u00ebse do ta mbanit gjith\u00e7ka n\u00eb nj\u00eb rresht, do t\u00eb ishte, s\u00eb pari, e \u00e7uditshme. Dhe, s\u00eb dyti, do t\u00eb funksiononte shum\u00eb m\u00eb gjat\u00eb se dy masa. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/17664c3121b2b0d33188adbfaa653d4e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nj\u00eb shembull tjet\u00ebr. Keni nj\u00eb mas\u00eb ku ruani ID-t\u00eb. Dhe mund t'i p\u00ebrktheni ato n\u00eb emra. Funksioni <code>arrayMap<\/code>. Kjo \u00ebsht\u00eb nj\u00eb funksion tipik lambda. Ju e kaloni atje shprehjen lambda. Dhe ajo nxjerr vler\u00ebn e emrit p\u00ebr \u00e7do ID nga fjalori.<\/p>\n<p><\/p>\n<p>Gjithashtu mund t\u00eb b\u00ebni k\u00ebrkimin. Kaloni nj\u00eb funksion predikat, i cili kontrollon se \u00e7far\u00eb i p\u00ebrgjigjen elementet. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/146917b71a35d38a550cd9accf6ab2f7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00ebto gj\u00ebra thjeshtojn\u00eb ndjesh\u00ebm skem\u00ebn dhe zgjidhin shum\u00eb probleme. <\/p>\n<p><\/p>\n<p>Por problemi tjet\u00ebr, me t\u00eb cilin ishim ballafaquar dhe p\u00ebr t\u00eb cilin do doja t\u00eb flisja, jan\u00eb k\u00ebrkesat efikase. <\/p>\n<p><\/p>\n<ul>\n<li>N\u00eb ClickHouse nuk ka planifikues t\u00eb k\u00ebrkesave. N\u00eb p\u00ebrgjith\u00ebsi, nuk ka. <\/li>\n<li>Por megjithat\u00eb k\u00ebrkesat e komplikuara duhet t\u00eb planifikohen. N\u00eb cilat raste? <\/li>\n<li>N\u00ebse k\u00ebrkesa ka disa bashkime (join), t\u00eb cilat i mbuloni me n\u00ebnk\u00ebrkesa. Dhe renditja n\u00eb t\u00eb cil\u00ebn ato ekzekutohen ka r\u00ebnd\u00ebsi. <\/li>\n<li>Dhe e dyta \u00ebsht\u00eb n\u00ebse k\u00ebrkesa \u00ebsht\u00eb e distribuar. Sepse n\u00eb k\u00ebrkesat e distribuuara vet\u00ebm n\u00ebnk\u00ebrkesa m\u00eb e brendshme ekzekutohet n\u00eb m\u00ebnyr\u00eb distribuar, nd\u00ebrsa t\u00eb gjitha t\u00eb tjera kalojn\u00eb n\u00eb nj\u00eb server t\u00eb vet\u00ebm, me t\u00eb cilin jeni lidhur dhe ekzekutohen atje. Pra, n\u00ebse keni k\u00ebrkesa t\u00eb distribuuara me shum\u00eb bashkime (join), duhet t\u00eb zgjidhni rendin. <\/li>\n<\/ul>\n<p><\/p>\n<p>Edhe n\u00eb raste m\u00eb t\u00eb thjeshta ndonj\u00ebher\u00eb duhet t\u00eb kryeni pun\u00ebn e planifikuesit dhe t\u00eb rishkruani pak k\u00ebrkesat. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/217d422b429e8b4bc13abbf0efdf6be1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja nj\u00eb shembull. N\u00eb pjes\u00ebn e majt\u00eb, k\u00ebrkesa q\u00eb tregon 5 vendet m\u00eb t\u00eb mira. Dhe ai ekzekutohet p\u00ebr 2.5 sekonda, mendoj. Nd\u00ebrsa n\u00eb pjes\u00ebn e djatht\u00eb \u00ebsht\u00eb e nj\u00ebjta k\u00ebrkes\u00eb, por e rishkruar pak. Ne, n\u00eb vend q\u00eb t\u00eb grupojm\u00eb sipas rreshtit, filluam t\u00eb grupojm\u00eb sipas \u00e7el\u00ebsit (int). Dhe kjo \u00ebsht\u00eb m\u00eb e shpejt\u00eb. Pastaj, i lidh\u00ebm rezultatet me nj\u00eb fjalor. N\u00eb vend t\u00eb 2.5 sekondave, k\u00ebrkesa ekzekutohet p\u00ebr 1.5 sekonda. Kjo \u00ebsht\u00eb e mir\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/f19fb7d7f0397a3b38b2a3bd179c156b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nj\u00eb shembull i ngjash\u00ebm me rishkrimin e filtrave. K\u00ebtu \u00ebsht\u00eb nj\u00eb k\u00ebrkes\u00eb p\u00ebr Rusi. Ajo ekzekutohet p\u00ebr 5 sekonda. N\u00ebse e rishkruajm\u00eb n\u00eb nj\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb krahasojm\u00eb p\u00ebrs\u00ebri, jo rreshtin, por numrat me nj\u00eb grup t\u00eb atyre \u00e7el\u00ebsave q\u00eb p\u00ebrkasin p\u00ebr Rusin\u00eb, at\u00ebher\u00eb kjo do t\u00eb jet\u00eb shum\u00eb m\u00eb e shpejt\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/0c1dd1f317133d1d106ffef85f337079.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ka shum\u00eb truke t\u00eb tilla. Dhe ato lejojn\u00eb t\u00eb p\u00ebrshpejtojn\u00eb ndjesh\u00ebm k\u00ebrkesat q\u00eb ju duket se funksionojn\u00eb tashm\u00eb shpejt, ose, p\u00ebrkundrazi, funksionojn\u00eb ngadal\u00eb. Ato mund t\u00eb b\u00ebhen edhe m\u00eb t\u00eb shpejta.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/25b132790b03f239e38237af5e92ab63.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Maksimumi i pun\u00ebs n\u00eb m\u00ebnyr\u00eb distribuar. <\/li>\n<li>Renditja sipas llojeve minimale, si\u00e7 e kam b\u00ebr\u00eb p\u00ebr int. <\/li>\n<li>N\u00ebse ka ndonj\u00eb bashkim (join), fjalor\u00eb, \u00ebsht\u00eb m\u00eb mir\u00eb t\u00eb b\u00ebhen n\u00eb fund t\u00eb fundit, kur keni t\u00eb dh\u00ebna s\u00eb paku pjes\u00ebrisht t\u00eb grupuara, at\u00ebher\u00eb operacioni i bashkimit (join) ose thirrja e fjalorit do t\u00eb k\u00ebrkohet m\u00eb pak her\u00eb dhe do t\u00eb jet\u00eb m\u00eb e shpejt\u00eb. <\/li>\n<li>Z\u00ebvend\u00ebsimi i filtrave. <\/li>\n<\/ul>\n<p><\/p>\n<p>Ka edhe teknika t\u00eb tjera, dhe jo vet\u00ebm ato q\u00eb un\u00eb demonstrova. T\u00eb gjitha ato ndonj\u00ebher\u00eb lejojn\u00eb t\u00eb p\u00ebrshpejtojn\u00eb ndjesh\u00ebm ekzekutimin e k\u00ebrkesave.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/175832796bee525909d8875bd723a881.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u00eb kalojm\u00eb n\u00eb shembullin tjet\u00ebr. Kompania X nga SHBA. \u00c7far\u00eb b\u00ebn ajo? <\/p>\n<p><\/p>\n<p>Ishte nj\u00eb detyr\u00eb: <\/p>\n<p><\/p>\n<ul>\n<li>Lidhja offline e transaksioneve t\u00eb reklamave. <\/li>\n<li>Modelimi i modeleve t\u00eb ndryshme t\u00eb lidhjes. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/0136b71a1205512d86f13e86761146f4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c7far\u00eb p\u00ebrfshin skenari?<\/p>\n<p><\/p>\n<p>Nj\u00eb vizitor i zakonsh\u00ebm hyn n\u00eb faqen e internetit, p\u00ebr shembull, 20 her\u00eb n\u00eb muaj nga reklama t\u00eb ndryshme ose ndonj\u00ebher\u00eb thjesht vjen pa ndonj\u00eb reklam\u00eb, sepse e mban mend k\u00ebt\u00eb faqe. Ai shikon disa produkte, i vendos ato n\u00eb shport\u00eb, i heq ato nga shporta dhe, n\u00eb fund, di\u00e7ka blen. <\/p>\n<p><\/p>\n<p>Pyetje t\u00eb arsyeshme: \"K\u00eb duhet t\u00eb paguaj p\u00ebr reklam\u00ebn, n\u00ebse duhet?\" dhe \"Cila reklam\u00eb e ndikoi, n\u00ebse e ndikoi?\" Dometh\u00ebn\u00eb, pse e bleu dhe si ta b\u00ebjm\u00eb q\u00eb njer\u00ebz t\u00eb ngjash\u00ebm me k\u00ebt\u00eb person t\u00eb blejn\u00eb gjithashtu?<\/p>\n<p><\/p>\n<p>P\u00ebr t\u00eb zgjidhur k\u00ebt\u00eb detyr\u00eb, \u00ebsht\u00eb e nevojshme t\u00eb lidhim ngjarjet q\u00eb ndodhin n\u00eb faqen e internetit n\u00eb m\u00ebnyr\u00ebn e duhur, dometh\u00ebn\u00eb, t\u00eb krijojm\u00eb nj\u00eb lidhje nd\u00ebrmjet tyre. Pastaj, t'i d\u00ebrgojm\u00eb ato p\u00ebr analiz\u00eb n\u00eb DWH. Dhe mbi baz\u00ebn e k\u00ebsaj analize t\u00eb nd\u00ebrtosh modele se kujt dhe cil\u00ebn reklam\u00eb duhet t\u00eb shfaq\u00ebsh.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/e53ec81ce89150697d0eca4d72886638.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Transaksioni reklamor \u00ebsht\u00eb nj\u00eb grup ngjarjesh t\u00eb lidhura me p\u00ebrdoruesin, q\u00eb fillon nga shfaqja e reklam\u00ebs, pastaj ndodh di\u00e7ka, dhe ndoshta blerja, e m\u00eb pas mund t\u00eb ndodhin blerje brenda blerjes. P\u00ebr shembull, n\u00ebse \u00ebsht\u00eb nj\u00eb aplikacion mobil ose nj\u00eb loj\u00eb mobile, instalimi i aplikacionit nganj\u00ebher\u00eb \u00ebsht\u00eb falas, dhe n\u00ebse b\u00ebhet di\u00e7ka m\u00eb tutje, at\u00ebher\u00eb mund t\u00eb nevojiten para. Dhe sa m\u00eb shum\u00eb nj\u00eb person t\u00eb shpenzoj\u00eb n\u00eb aplikacion, aq m\u00eb i vlefsh\u00ebm \u00ebsht\u00eb. Por p\u00ebr k\u00ebt\u00eb, duhet t'i lidhim t\u00eb gjitha. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/a2213613f1ef660409124ef8bcdd4fe3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ka shum\u00eb modele lidhjeje. <\/p>\n<p><\/p>\n<p>Modelet m\u00eb t\u00eb njohura jan\u00eb:<\/p>\n<p><\/p>\n<ul>\n<li>Interaksioni i fundit, ku interaksioni \u00ebsht\u00eb ose klikimi, ose shfaqja.<\/li>\n<li>Interaksioni i par\u00eb, dometh\u00ebn\u00eb, e para q\u00eb e \u00e7oi njeriun n\u00eb faqe.<\/li>\n<li>Kombinimi linear \u2013 t\u00eb gjith\u00eb p\u00ebr nj\u00ebsoj. <\/li>\n<li>Zgjatja.<\/li>\n<li>Dhe t\u00eb tjera. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/9523307d557e094d981da5b525ed0b59.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe si funksiononte gjith\u00e7ka fillimisht? Kishim Runtime dhe Cassandra. Cassandra p\u00ebrdorej si ruajtje transaksionesh, dometh\u00ebn\u00eb, aty ruheshin t\u00eb gjitha transaksionet e lidhura. Dhe kur ndodhte nj\u00eb ngjarje n\u00eb Runtime, p\u00ebr shembull, shfaqja e ndonj\u00eb faqeje ose ndonj\u00eb gj\u00eb tjet\u00ebr, b\u00ebhej nj\u00eb k\u00ebrkes\u00eb n\u00eb Cassandra \u2013 a \u00ebsht\u00eb ky person apo jo. Pastaj nxirreshin transaksionet q\u00eb b\u00ebheshin lidhur me t\u00eb dhe lidhej.<\/p>\n<p><\/p>\n<p>Dhe n\u00ebse kishte fat q\u00eb n\u00eb k\u00ebrkes\u00eb t\u00eb ishte id e transaksionit, at\u00ebher\u00eb ishte e leht\u00eb. Por zakonisht nuk ka fat. Prandaj, duhej t\u00eb gjehej transaksioni i fundit ose transaksioni me klikimin e fundit etj. <\/p>\n<p><\/p>\n<p>Dhe kjo ka funksionuar shum\u00eb mir\u00eb, derisa lidhi me klikimin e fundit. Sepse kishte, le t\u00eb themi, 10 milion klikime n\u00eb dit\u00eb, 300 milion n\u00eb muaj, n\u00ebse vendosim nj\u00eb dritare mujor. Dhe duke qen\u00eb se n\u00eb Cassandra gjith\u00e7ka duhet t\u00eb jet\u00eb n\u00eb kujtes\u00eb p\u00ebr t\u00eb funksionuar shpejt, sepse Runtime k\u00ebrkon t\u00eb p\u00ebrgjigjet shpejt, ne kishte nevoj\u00eb p\u00ebr rreth 10-15 servera. <\/p>\n<p><\/p>\n<p>Por kur desh\u00ebn t\u00eb lidhnin transaksionin me shfaqjen, menj\u00ebher\u00eb nuk doli ashtu si\u00e7 pritej. Pse? \u00cbsht\u00eb e dukshme se duhet ruajtur 30 her\u00eb m\u00eb shum\u00eb ngjarje. Dhe, p\u00ebr pasoj\u00eb, duhen gjithashtu 30 her\u00eb m\u00eb shum\u00eb servera. Dhe rezulton se kjo \u00ebsht\u00eb nj\u00eb shif\u00ebr astronomike. T\u00eb mbash deri n\u00eb 500 servera p\u00ebr t\u00eb b\u00ebr\u00eb k\u00ebt\u00eb lidhje, nd\u00ebrsa n\u00eb Runtime ka ndjesh\u00ebm m\u00eb pak servera, kjo \u00ebsht\u00eb nj\u00eb shif\u00ebr e pap\u00ebrshtatshme. Dhe filluan t\u00eb mendojn\u00eb, \u00e7far\u00eb t\u00eb b\u00ebjn\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/7af35f1ade680232cc83a6887891bc5c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe dol\u00ebn te ClickHouse. Si mund t\u00eb veprohet me ClickHouse? N\u00eb shikim t\u00eb par\u00eb duket si nj\u00eb grup antipatish. <\/p>\n<p><\/p>\n<ul>\n<li>Transaksioni rritet, ne i lidhen gjithnj\u00eb e m\u00eb shum\u00eb ngjarje, dmth. \u00ebsht\u00eb mutable, nd\u00ebrsa ClickHouse nuk punon shum\u00eb mir\u00eb me objekte mutable. <\/li>\n<li>Kur na vjen nj\u00eb vizitor, ne duhet t\u00eb nxjerrim transaksionet e tij sipas \u00e7el\u00ebsit, sipas visit id. Kjo gjithashtu \u00ebsht\u00eb nj\u00eb k\u00ebrkes\u00eb point, n\u00eb ClickHouse nuk b\u00ebhet k\u00ebshtu. Zakonisht n\u00eb ClickHouse ka skane t\u00eb m\u00ebdha, nd\u00ebrsa k\u00ebtu na nevojitet t\u00eb nxjerrim disa regjistra. Kjo \u00ebsht\u00eb po ashtu nj\u00eb antipat. <\/li>\n<li>P\u00ebr m\u00eb tep\u00ebr, transaksioni ishte n\u00eb json, por nuk donin ta riletronin, k\u00ebshtu q\u00eb donin t\u00eb ruanin json t\u00eb pa strukturuar, dhe n\u00ebse ishte e nevojshme, t\u00eb nxirrnin di\u00e7ka nga ai. Edhe kjo \u00ebsht\u00eb nj\u00eb antipat. <\/li>\n<\/ul>\n<p><\/p>\n<p>Dmth. nj\u00eb grup antipatish. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/2473129a5880ee3172b8ab7bf4afc376.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Megjithat\u00eb, arrit\u00ebn t\u00eb krijonin nj\u00eb sistem q\u00eb funksiononte shum\u00eb mir\u00eb. <\/p>\n<p><\/p>\n<p>\u00c7far\u00eb u b\u00eb? U shfaq ClickHouse, n\u00eb t\u00eb cilin u hodh\u00ebn logjet, t\u00eb ndara n\u00eb regjistra. U shfaq nj\u00eb sh\u00ebrbim atribues, i cili merrte logjet nga ClickHouse. Pas k\u00ebsaj, p\u00ebr \u00e7do regjist\u00ebr sipas visit id merrte transaksionet, t\u00eb cilat mund t\u00eb ishin ende t\u00eb pa p\u00ebrpunuara, dhe plus snapshotet, dmth. transaksionet tashm\u00eb t\u00eb lidhura, e sakt\u00ebsisht rezultati i pun\u00ebs s\u00eb m\u00ebparshme. Nga ato p\u00ebrgatit logjik\u00ebn, zgjidhte transaksionin e duhur, lidhen ngjarje t\u00eb reja. S\u00ebrish e regjistronte n\u00eb log. Logu shkonte s\u00ebrish n\u00eb ClickHouse, dmth. kjo \u00ebsht\u00eb nj\u00eb sistem vazhdimisht ciklik. Dhe p\u00ebr m\u00eb tep\u00ebr, shkonte n\u00eb DWH p\u00ebr ta analizuar atje. <\/p>\n<p><\/p>\n<p>N\u00eb k\u00ebt\u00eb form\u00eb, kjo nuk funksiononte shum\u00eb mir\u00eb. Dhe q\u00eb ClickHouse t\u00eb kishte m\u00eb leht\u00ebsi, kur b\u00ebhej k\u00ebrkesa p\u00ebr id vizite, ato k\u00ebrkesa grupoheshin n\u00eb blloqe prej 1,000 deri n\u00eb 2,000 id vizite dhe p\u00ebr 1,000-2,000 njer\u00ebz nxirrnin t\u00eb gjitha transaksionet. Dhe at\u00ebher\u00eb gjith\u00e7ka funksionoi.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/d920ce231e6e4b5fd5b27ab28f848aed.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00ebse shikoni brenda ClickHouse, ka vet\u00ebm 3 tabela kryesore q\u00eb e sh\u00ebrbejn\u00eb k\u00ebt\u00eb. <\/p>\n<p><\/p>\n<p>Tabela e par\u00eb, ku ngarkohen log-et, ngarkohet pothuajse pa p\u00ebrpunim.<\/p>\n<p><\/p>\n<p>Tabela e dyt\u00eb. P\u00ebrmes materialized view, k\u00ebto log-e p\u00ebrmbajn\u00eb ngjarje q\u00eb ende nuk jan\u00eb atribuuar, dmth, t\u00eb pa lidhura. Dhe p\u00ebrmes materialized view nxirreshin transaksionet p\u00ebr nd\u00ebrtimin e snapshot-it. Dmth, nj\u00eb materialized view ndihmon n\u00eb nd\u00ebrtimin e snapshot-it, konkretisht gjendja m\u00eb e fundit e grumbulluar e transaksionit. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/12b0adb691f483923a6c35bb6e4a5017.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00ebtu \u00ebsht\u00eb shkruar nj\u00eb tekst n\u00eb SQL. Do doja t\u00eb komentoj disa gj\u00ebra t\u00eb r\u00ebnd\u00ebsishme n\u00eb t\u00eb. <\/p>\n<p><\/p>\n<p>Gj\u00ebja e par\u00eb e r\u00ebnd\u00ebsishme \u00ebsht\u00eb mund\u00ebsia n\u00eb ClickHouse p\u00ebr t\u00eb nxjerr\u00eb kolona nga json, pra, n\u00eb ClickHouse ka disa metoda p\u00ebr t\u00eb punuar me json. Ato jan\u00eb shum\u00eb, shum\u00eb primitive. <\/p>\n<p><\/p>\n<p>visitParamExtractInt lejon nxjerrjen e atributeve nga json, dmth, hera e par\u00eb kur ndodh aktivizohet. Dhe k\u00ebshtu mund t\u00eb nxirren id transaksioni ose id vizite. Kjo \u00ebsht\u00eb nj\u00eb. <\/p>\n<p><\/p>\n<p>E dyta - k\u00ebtu \u00ebsht\u00eb p\u00ebrdorur nj\u00eb fush\u00eb materialized e men\u00e7ur. \u00c7far\u00eb do t\u00eb thot\u00eb kjo? Kjo do t\u00eb thot\u00eb se nuk mund ta vendosni n\u00eb tabel\u00eb, dmth, nuk futet, por llogaritet dhe ruhet gjat\u00eb vendosjes. Gjat\u00eb vendosjes, ClickHouse b\u00ebn pun\u00ebn p\u00ebr ju. Dhe tashm\u00eb nxirret nga json ajo q\u00eb do t'ju nevojitet m\u00eb von\u00eb.<\/p>\n<p><\/p>\n<p>N\u00eb k\u00ebt\u00eb rast, materialized view \u00ebsht\u00eb p\u00ebr rreshtat e pa p\u00ebrpunuara. Dhe p\u00ebrdoret tabela e par\u00eb me log-et praktikisht t\u00eb pap\u00ebrpunuara. \u00c7far\u00eb b\u00ebn? S\u00eb pari, ndryshon renditjen, dmth, renditja tani b\u00ebhet sipas id vizite, sepse na nevojitet t\u00eb nxjerrim shpejt transaksionin e nj\u00eb personi t\u00eb caktuar. <\/p>\n<p><\/p>\n<p>Gj\u00ebja tjet\u00ebr e r\u00ebnd\u00ebsishme \u00ebsht\u00eb index_granularity. N\u00ebse keni par\u00eb MergeTree, zakonisht n\u00eb m\u00ebnyr\u00eb parazgjedh\u00ebse \u00ebsht\u00eb 8,192 p\u00ebr index_granularity. \u00c7far\u00eb \u00ebsht\u00eb kjo? Ky \u00ebsht\u00eb parametri i holl\u00ebsive t\u00eb indeksit. N\u00eb ClickHouse indeksi \u00ebsht\u00eb i holl\u00eb, ai kurr\u00eb nuk indekson \u00e7do regjistrim. E b\u00ebn k\u00ebt\u00eb \u00e7do 8,192. Dhe kjo \u00ebsht\u00eb mir\u00eb kur nevojiten shum\u00eb t\u00eb dh\u00ebna p\u00ebr t\u00eb b\u00ebr\u00eb llogaritje, por e keqe kur \u00ebsht\u00eb pak, sepse ka shum\u00eb overhead. Dhe n\u00ebse e uleni index granularity, at\u00ebher\u00eb ne e ulim overhead-in. Nuk mund ta uleni n\u00eb 1, sepse mund t\u00eb mos ket\u00eb mjaft memorie. Indeksi ruhet gjithmon\u00eb n\u00eb memorie. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/5fe303061977cad64e6c0333b125d595.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe snapshoti p\u00ebrdor disa funksione interesante t\u00eb tjera t\u00eb ClickHouse.<\/p>\n<p><\/p>\n<p>S\u00eb pari, \u00ebsht\u00eb AggregatingMergeTree. N\u00eb AggregatingMergeTree ruhet argMax, q\u00eb do t\u00eb thot\u00eb se ky \u00ebsht\u00eb gjendja e transaksionit q\u00eb p\u00ebrputhet me timestamp-in e fundit. Transaksionet gjithnj\u00eb e m\u00eb t\u00eb reja gjenerohen p\u00ebr k\u00ebt\u00eb vizitor. Dhe n\u00eb gjendjen m\u00eb t\u00eb fundit t\u00eb k\u00ebtij transaksioni ne shtuam nj\u00eb ngjarje dhe fituam nj\u00eb gjendje t\u00eb re. Ajo s\u00ebrish u fut n\u00eb ClickHouse. Dhe n\u00ebp\u00ebrmjet argMax n\u00eb k\u00ebt\u00eb prezantim t\u00eb materializuar ne gjithmon\u00eb mund t\u00eb marrim gjendjen aktuale.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/d1b87301ab5206a36bf035679f79d35a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Lidhja \"keqkuptohet\" nga Runtime. <\/li>\n<li>Ruhet dhe p\u00ebrpunohet deri n\u00eb 3 miliard\u00eb transaksione n\u00eb muaj. Ky \u00ebsht\u00eb nj\u00eb rend tjet\u00ebr m\u00eb shum\u00eb se \u00e7far\u00eb ishte n\u00eb Cassandra, do t\u00eb thot\u00eb n\u00eb nj\u00eb sistem tipik transaksionesh. <\/li>\n<li>Klusteri i 2x5 server\u00ebve ClickHouse. 5 server\u00eb dhe \u00e7do server ka nj\u00eb replik\u00eb. Kjo \u00ebsht\u00eb edhe m\u00eb pak se \u00e7far\u00eb kishte n\u00eb Cassandra p\u00ebr t\u00eb realizuar atribucionin e bazuar n\u00eb klikim, dhe k\u00ebtu kemi atribucion t\u00eb bazuar n\u00eb impresion. Do t\u00eb thot\u00eb, n\u00eb vend q\u00eb t\u00eb rritet numri i server\u00ebve 30 her\u00eb, ata arrit\u00ebn t'i zvog\u00eblojn\u00eb. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/583779fe9e133df519411e2256401eb3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe shembulli i fundit \u00ebsht\u00eb kompania financiare Y, e cila analizonte korrelacionet e ndryshimeve t\u00eb \u00e7mimeve t\u00eb aksioneve. <\/p>\n<p><\/p>\n<p>Dhe detyra ishte si vijon:<\/p>\n<p><\/p>\n<ul>\n<li>Ka rreth 5,000 aksione. <\/li>\n<li>\u00c7mimet jan\u00eb t\u00eb njohura \u00e7do 100 milisekonda. <\/li>\n<li>T\u00eb dh\u00ebnat jan\u00eb grumbulluar p\u00ebr 10 vjet. Duket se p\u00ebr disa kompani m\u00eb shum\u00eb, p\u00ebr disa m\u00eb pak. <\/li>\n<li>N\u00eb total ka rreth 100 miliard\u00eb rreshta. <\/li>\n<\/ul>\n<p><\/p>\n<p>Dhe duhej t\u00eb llogaritej korrelacioni i ndryshimeve. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/b02051e6cadec8c51e7f6e351ef903f9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00ebtu ka dy aksione dhe \u00e7mimet e tyre. N\u00ebse nj\u00ebra shkon lart, dhe tjetra shkon lart, at\u00ebher\u00eb kjo \u00ebsht\u00eb nj\u00eb korrelacion pozitiv, do t\u00eb thot\u00eb nj\u00ebra rritet dhe tjetra rritet. N\u00ebse nj\u00ebra shkon lart, si n\u00eb fund t\u00eb grafik\u00ebt, dhe tjetra posht\u00eb, at\u00ebher\u00eb kjo \u00ebsht\u00eb nj\u00eb korrelacion negativ, do t\u00eb thot\u00eb kur nj\u00ebra rritet, tjetra bie. <\/p>\n<p><\/p>\n<p>Duke analizuar k\u00ebto ndryshime reciproke mund t\u00eb b\u00ebhen parashikime n\u00eb tregun financiar. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/31329cf7523eef6a167632d281a634ce.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Por detyra \u00ebsht\u00eb e v\u00ebshtir\u00eb. \u00c7far\u00eb b\u00ebhet p\u00ebr k\u00ebt\u00eb? Ne kemi 100 miliard\u00eb t\u00eb dh\u00ebna, ku kemi: koh\u00eb, aksion dhe \u00e7mim. Na nevojitet t\u00eb llogarisim fillimisht 100 miliard\u00eb her\u00eb runningDifference t\u00eb algoritmit t\u00eb \u00e7mimit. RunningDifference \u00ebsht\u00eb nj\u00eb funksion n\u00eb ClickHouse q\u00eb llogarit diferenc\u00ebn midis dy rreshtave n\u00eb m\u00ebnyr\u00eb t\u00eb vazhdueshme. <\/p>\n<p><\/p>\n<p>Dhe pas k\u00ebsaj duhet llogaritur korrelacioni, dhe duhet llogaritur korrelacioni p\u00ebr \u00e7do \u00e7ift. P\u00ebr 5,000 aksione kemi 12.5 milion \u00e7ifte. Dhe kjo \u00ebsht\u00eb shum\u00eb, do t\u00eb thot\u00eb 12.5 her\u00eb duhet t\u00eb llogaritet nj\u00eb funksion t\u00eb till\u00eb korrelacioni. <\/p>\n<p><\/p>\n<p>Dhe n\u00ebse dikush e ka harruar, \u035ex dhe \u035ey \u2013 jan\u00eb pritet matimore p\u00ebr mostrat. Pra, duhet t\u00eb llogaritni jo vet\u00ebm rr\u00ebnj\u00ebt dhe shumat, por gjithashtu brenda k\u00ebtyre shumave edhe nj\u00eb her\u00eb shumat e tjera. Duhet t\u00eb kryhen shum\u00eb kalkulime 12.5 milion her\u00eb, dhe gjithashtu duhet t\u00eb grumbullohen sipas or\u00ebve. Dhe kemi shum\u00eb or\u00eb. Dhe duhet ta b\u00ebjm\u00eb brenda 60 sekondave. \u00cbsht\u00eb nj\u00eb shak\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/567a07f586a824c91671820fe21ec305.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Duhej t\u00eb arrinim ndonj\u00eb gj\u00eb, sepse gjith\u00e7ka po funksiononte shum\u00eb, shum\u00eb ngadal\u00eb, para se t\u00eb vinte ClickHouse.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/3eca1af4c3f25ff4b23fce9b84e16659.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ata provuan ta llogarisin k\u00ebt\u00eb n\u00eb Hadoop, n\u00eb Spark, n\u00eb Greenplum. Dhe gjith\u00e7ka ishte shum\u00eb ngadal\u00eb ose e shtrenjt\u00eb. Pra, mund t\u00eb ishte llogaritur n\u00eb nj\u00ebfar\u00eb m\u00ebnyre, por m\u00eb pas b\u00ebhej e shtrenjt\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/37608c7e87ddb9a7d54854643044c369.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe pastaj erdhi ClickHouse dhe gjith\u00e7ka u b\u00eb shum\u00eb m\u00eb mir\u00eb. <\/p>\n<p><\/p>\n<p>Dua t\u00eb kujtoj, problemi yn\u00eb \u00ebsht\u00eb me lokalitetin e t\u00eb dh\u00ebnave, prandaj korelacionet nuk mund t\u00eb lokalizohen. Ne nuk mund ta mbledhim nj\u00eb pjes\u00eb t\u00eb t\u00eb dh\u00ebnave n\u00eb nj\u00eb server, nj\u00eb pjes\u00eb n\u00eb nj\u00eb tjet\u00ebr dhe t\u2019i llogarisim, duhet t\u00eb kemi t\u00eb dh\u00ebnat gjithmon\u00eb kudo. <\/p>\n<p><\/p>\n<p>\u00c7far\u00eb b\u00ebn\u00eb ata? Fillimisht, t\u00eb dh\u00ebnat ishin t\u00eb lokalizuara. N\u00eb secilin nga server\u00ebt ruhen t\u00eb dh\u00ebnat p\u00ebr \u00e7mimet e nj\u00eb grupi t\u00eb caktuar aksionesh. Dhe ato nuk p\u00ebrputhen. Pra, mund t\u00eb llogarisim paralelisht dhe n\u00eb m\u00ebnyr\u00eb t\u00eb pavarur logReturn, gjith\u00e7ka ndodh nd\u00ebrkoh\u00eb paralelisht dhe e shp\u00ebrndar\u00eb. <\/p>\n<p><\/p>\n<p>M\u00eb pas, ata vendos\u00ebn q\u00eb t\u00eb reduktonin k\u00ebto t\u00eb dh\u00ebna, pa humbur shprehshm\u00ebrin\u00eb. T\u00eb reduktojn\u00eb p\u00ebrmes masivave, pra, p\u00ebr \u00e7do segment kohor t\u00eb krijojn\u00eb nj\u00eb masiv aksionesh dhe nj\u00eb masiv \u00e7mimesh. K\u00ebshtu, kjo merr shum\u00eb m\u00eb pak hap\u00ebsir\u00eb dhe \u00ebsht\u00eb m\u00eb e leht\u00eb p\u00ebr t\u2019u punuar me to. K\u00ebto jan\u00eb operacione pothuajse paralel, pra ne llogarisim pjes\u00ebrisht paralelisht dhe pastaj regjistrojm\u00eb n\u00eb server. <\/p>\n<p><\/p>\n<p>Pas k\u00ebsaj, ato mund t\u00eb replikohen. Shkronja \u00abr\u00bb do t\u00eb thot\u00eb se k\u00ebto t\u00eb dh\u00ebna ne i kemi replikuar. Pra, ne kemi t\u00eb dh\u00ebna t\u00eb nj\u00ebjta n\u00eb t\u00eb tre serverat \u2013 k\u00ebto masiva. <\/p>\n<p><\/p>\n<p>Dhe m\u00eb pas me nj\u00eb script t\u00eb ve\u00e7ant\u00eb nga ky grup prej 12.5 milion korelacionesh q\u00eb duhen llogaritur, mund t\u00eb krijojm\u00eb paketa. Pra, 2,500 detyra me 5,000 \u00e7ifte korelacionesh. Dhe k\u00ebt\u00eb detyr\u00eb t\u00eb llogaritim n\u00eb nj\u00eb server t\u00eb caktuar ClickHouse. T\u00eb gjitha t\u00eb dh\u00ebnat i ka, sepse t\u00eb dh\u00ebnat jan\u00eb t\u00eb nj\u00ebjta dhe ai mund t\u2019i llogaris\u00eb ato n\u00eb m\u00ebnyr\u00eb radhit\u00ebse. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/587c6d587a48f2407dd2687f5423d44a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebr her\u00eb t\u00eb dyt\u00eb, si duket kjo. S\u00eb pari, ne kemi t\u00eb gjitha t\u00eb dh\u00ebnat n\u00eb k\u00ebt\u00eb struktur\u00eb: koha, aksionet, \u00e7mimi. Pastaj ne llogarit\u00ebm logReturn, dmth. t\u00eb dh\u00ebnat e s\u00eb nj\u00ebjt\u00ebs struktur\u00eb, vet\u00ebm se p\u00ebr \u00e7mimin tani kemi logReturn. M\u00eb pas, i p\u00ebrpunuam, dmth. na dol\u00ebn koha dhe groupArray sipas aksioneve dhe \u00e7mimeve. I bashkuam. Dhe pas k\u00ebsaj, gjeneruam nj\u00eb s\u00ebr\u00eb detyrash dhe ua dham\u00eb ClickHouse-it q\u00eb t\u2019i llogaris\u00eb ato. Dhe kjo funksionon. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/434e7385aebcffcc03d1bd1a2020c8bf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00eb prov\u00ebn e konceptit, detyra ishte nj\u00eb n\u00ebndetyre, dmth. mor\u00ebm m\u00eb pak t\u00eb dh\u00ebna. Dhe gjith\u00e7ka n\u00eb tre server\u00eb.<\/p>\n<p><\/p>\n<p>K\u00ebta dy etapa t\u00eb para: llogaritja e Log_return dhe mb\u00ebshtjella n\u00eb array, zuri rreth nj\u00eb or\u00eb secila. <\/p>\n<p><\/p>\n<p>Por llogaritja e korrelacionit zgjati dikur 50 or\u00eb. Por 50 or\u00eb \u00ebsht\u00eb pak, sepse m\u00eb par\u00eb atyre iu duhej jav\u00eb. Kjo ishte nj\u00eb sukses i madh. Dhe n\u00ebse llogaritet, gjith\u00e7ka u llogarit 70 her\u00eb n\u00eb sekond\u00eb n\u00eb k\u00ebt\u00eb klaster.<\/p>\n<p><\/p>\n<p>Por gj\u00ebja m\u00eb e r\u00ebnd\u00ebsishme \u00ebsht\u00eb q\u00eb ky sistem \u00ebsht\u00eb praktikisht pa ngushtica, dmth. ai shkall\u00ebzohet praktikisht n\u00eb m\u00ebnyr\u00eb lineare. Dhe ata e verifikuan at\u00eb. E skaluan me sukses. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/5a595a84897e492b49dccfb0f058b1b8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Schema e sakt\u00eb \u00ebsht\u00eb gjysma e suksesit. Dhe schema e sakt\u00eb \u00ebsht\u00eb p\u00ebrdorimi i t\u00eb gjitha teknologjive t\u00eb nevojshme t\u00eb ClickHouse. <\/li>\n<li>Summing\/AggregatingMergeTrees jan\u00eb teknologji q\u00eb lejojn\u00eb t\u00eb agregohen ose llogariten snapshot state si nj\u00eb rast t\u00eb ve\u00e7ant\u00eb. Dhe kjo e thjeshton ndjesh\u00ebm shum\u00eb gj\u00ebra. <\/li>\n<li>Materialized Views lejojn\u00eb t\u00eb anashkalosh kufizimin n\u00eb nj\u00eb indeks. Ndoshta nuk e kam shpjeguar shum\u00eb qart\u00eb, por kur ngarkonim log\u00ebt, log\u00ebt e pap\u00ebrpunuar ishin n\u00eb nj\u00eb tabel\u00eb me nj\u00eb indeks, nd\u00ebrsa log\u00ebt e atributeve ishin n\u00eb tabel\u00eb, dmth. t\u00eb nj\u00ebjtat t\u00eb dh\u00ebna, vet\u00ebm t\u00eb filtruar, por indekset ishin plot\u00ebsisht t\u00eb ndryshme. Duket se jan\u00eb t\u00eb nj\u00ebjtat t\u00eb dh\u00ebna, por p\u00ebrpunimi \u00ebsht\u00eb ndryshe. Dhe Materialized Views lejon, n\u00ebse \u00ebsht\u00eb e nevojshme, t\u00eb anashkalosh nj\u00eb kufizim t\u00eb till\u00eb t\u00eb ClickHouse. <\/li>\n<li>Reduktoni granularitetin e indeksit p\u00ebr k\u00ebrkesa t\u00eb sakt\u00eb. <\/li>\n<li>Dhe shp\u00ebrndani t\u00eb dh\u00ebnat n\u00eb m\u00ebnyr\u00eb t\u00eb men\u00e7ur, p\u00ebrpiquni t\u00eb lokalizoni sa m\u00eb shum\u00eb t\u00eb dh\u00ebna brenda serverit. Dhe p\u00ebrpiquni q\u00eb k\u00ebrkesat t\u00eb p\u00ebrdorin gjithashtu lokalizimin atje ku \u00ebsht\u00eb maksimalisht e mundur. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/c0fc1737986e3f18ed1d3c53df9f0252.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dhe n\u00eb p\u00ebrfundim t\u00eb k\u00ebsaj prezantimi t\u00eb vog\u00ebl, mund t\u00eb thuhet se ClickHouse tani ka pushtuar qart\u00eb territorin e bazave t\u00eb t\u00eb dh\u00ebnave komerciale dhe atyre open source, dmth p\u00ebr analitik\u00eb. Ai \u00ebsht\u00eb integruar mjaft mir\u00eb n\u00eb k\u00ebt\u00eb peizazh. Dhe m\u00eb shum\u00eb, ai ngadal\u00eb po fillon t\u00eb z\u00ebvend\u00ebsoj\u00eb t\u00eb tjer\u00eb, sepse kur keni ClickHouse, nuk keni nevoj\u00eb p\u00ebr InfiniDB. Vertica, ndoshta s\u00eb shpejti nuk do t\u00eb jet\u00eb e nevojshme, n\u00ebse ata b\u00ebjn\u00eb mb\u00ebshtetje t\u00eb mir\u00eb p\u00ebr SQL. P\u00ebrdorni!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione t\u00eb v\u00ebrteta. Aleksand\u00ebr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/6e9a65d32eb6de7f9f139a30e7ab0d25.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u2014<em>Faleminderit p\u00ebr raportin! Mjaft interesante! A pati ndonj\u00eb krahasim me Apache Phoenix?<\/em><\/p>\n<p><\/p>\n<p>-Jo, nuk kam d\u00ebgjuar q\u00eb dikush ka b\u00ebr\u00eb krahasim. Ne dhe Yandex p\u00ebrpiqemi t\u00eb ndjekim t\u00eb gjitha krahasimet e ClickHouse me bazat e t\u00eb dh\u00ebnave t\u00eb ndryshme. Sepse n\u00ebse ndonj\u00ebher\u00eb ndodh q\u00eb di\u00e7ka t\u00eb jet\u00eb m\u00eb e shpejt\u00eb se ClickHouse, Aleksei Milovidov nuk mund t\u00eb fle\u00eb nat\u00ebn dhe fillon ta p\u00ebrshpejtoj\u00eb shpejt. Nuk kam d\u00ebgjuar p\u00ebr nj\u00eb krahasim t\u00eb till\u00eb. <\/p>\n<p><\/p>\n<ul>\n<li>\n<p><em>(Aleksei Milovidov) Apache Phoenix \u00ebsht\u00eb nj\u00eb motor SQL p\u00ebr Hbase. Hbase kryesisht \u00ebsht\u00eb menduar p\u00ebr skenar\u00eb pune t\u00eb tipit key-value. N\u00eb \u00e7do rresht mund t\u00eb ket\u00eb nj\u00eb num\u00ebr t\u00eb rast\u00ebsish\u00ebm kolonash me emra t\u00eb rast\u00ebsish\u00ebm. Kjo mund t\u00eb thuhet p\u00ebr sisteme t\u00eb tilla si Hbase, Cassandra. Dhe p\u00ebr to, k\u00ebrkesat analitike t\u00eb r\u00ebnda nuk do t\u00eb funksionojn\u00eb mir\u00eb. Ose mund t\u00eb mendoni se ato funksionojn\u00eb mir\u00eb, n\u00ebse nuk keni pasur ndonj\u00eb p\u00ebrvoj\u00eb pune me ClickHouse.<\/em><\/p>\n<p>\n<\/li>\n<li>\n<p>anonim kommentatorit<\/p>\n<p><\/p>\n<ul>\n<li>\n<p><em>Mir\u00ebdita! Un\u00eb kam b\u00ebr\u00eb mjaft hulumtime n\u00eb k\u00ebt\u00eb tem\u00eb, sepse kam nj\u00eb n\u00ebn-sistem analitik. Por kur shikoj n\u00eb ClickHouse, kam ndjenj\u00ebn se ClickHouse \u00ebsht\u00eb shum\u00eb i p\u00ebrshtatsh\u00ebm p\u00ebr analizimin e eventeve, mutable. Dhe n\u00ebse m\u00eb duhet t\u00eb analizoj shum\u00eb t\u00eb dh\u00ebna biznesi me shum\u00eb tabela t\u00eb m\u00ebdha, at\u00ebher\u00eb ClickHouse, sa po kuptoj, nuk m\u00eb p\u00ebrshtatet shum\u00eb? Sidomos n\u00ebse ato ndryshojn\u00eb. A \u00ebsht\u00eb e sakt\u00eb kjo apo ka shembuj q\u00eb mund ta mohojn\u00eb k\u00ebt\u00eb?<\/em><\/p>\n<p>\n<\/li>\n<li>\n<p>Kjo \u00ebsht\u00eb e sakt\u00eb. Dhe kjo \u00ebsht\u00eb e v\u00ebrtet\u00eb p\u00ebr shumic\u00ebn e bazave t\u00eb dh\u00ebnash analitike t\u00eb specializuara. Ato jan\u00eb t\u00eb p\u00ebrshtatura p\u00ebr at\u00eb q\u00eb ekziston nj\u00eb ose disa tabela t\u00eb m\u00ebdha, t\u00eb cilat jan\u00eb mutable, dhe shum\u00eb t\u00eb vogla, t\u00eb cilat ndryshojn\u00eb ngadal\u00eb. K\u00ebshtu, ClickHouse nuk \u00ebsht\u00eb si Oracle, ku mund t\u00eb vendosni gjith\u00e7ka dhe t\u00eb nd\u00ebrttoni disa k\u00ebrkesa shum\u00eb t\u00eb komplikuara. P\u00ebr t\u00eb p\u00ebrdorur ClickHouse n\u00eb m\u00ebnyr\u00eb efektive, duhet t\u00eb strukturohet skema n\u00eb nj\u00eb m\u00ebnyr\u00eb q\u00eb funksionon mir\u00eb n\u00eb ClickHouse. Kjo do t\u00eb thot\u00eb q\u00eb t\u00eb evitoni normalizimin e tepruar, t\u00eb p\u00ebrdorni fjalor\u00eb, dhe t\u00eb p\u00ebrpiqeni t\u00eb krijoni sa m\u00eb pak lidhje t\u00eb gjata. N\u00ebse skema strukturohet k\u00ebshtu, at\u00ebher\u00eb detyra t\u00eb ngjashme biznesi n\u00eb ClickHouse mund t\u00eb zgjidhen shum\u00eb m\u00eb efikasitet se n\u00eb nj\u00eb baz\u00eb t\u00eb dh\u00ebnash tradicionale relationale. <\/p>\n<p>\n<\/li>\n<\/ul>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p><em>Faleminderit p\u00ebr raportin! Kam nj\u00eb pyetje p\u00ebr rastin e fundit financiar. Ata kishin analitik\u00eb. Duhej t\u00eb krahasoheshin, si shkojn\u00eb lart-posht\u00eb. Dhe e kuptoj q\u00eb ju e nd\u00ebrtuat sistemin pik\u00ebrisht p\u00ebr k\u00ebt\u00eb analitik\u00eb? N\u00ebse ata nes\u00ebr, p\u00ebr shembull, kan\u00eb nevoj\u00eb p\u00ebr nj\u00eb raport tjet\u00ebr mbi k\u00ebto t\u00eb dh\u00ebna, duhet t\u00eb rind\u00ebrtojn\u00eb p\u00ebrs\u00ebri skem\u00ebn dhe t\u00eb ngarkojn\u00eb t\u00eb dh\u00ebnat? K\u00ebshtu, a duhet t\u00eb b\u00ebni ndonj\u00eb p\u00ebrpunim paraprak p\u00ebr t\u00eb marr\u00eb k\u00ebrkes\u00ebn?<\/em><\/p>\n<p><\/p>\n<p>Sigurisht, kjo \u00ebsht\u00eb p\u00ebrdorimi i ClickHouse p\u00ebr nj\u00eb detyr\u00eb t\u00eb caktuar. Ajo tradicionalisht mund t\u00eb zgjidhet brenda Hadoop. P\u00ebr Hadoop \u2013 kjo \u00ebsht\u00eb nj\u00eb detyr\u00eb ideale. Por n\u00eb Hadoop \u00ebsht\u00eb shum\u00eb e ngadalshme. Dhe q\u00ebllimi im \u00ebsht\u00eb t\u00eb demonstrohet se n\u00eb ClickHouse mund t\u00eb zgjidhen detyra q\u00eb zakonisht zgjidhen me mjete krejt\u00ebsisht t\u00eb tjera, por me shum\u00eb efikasitet m\u00eb t\u00eb madh. Kjo \u00ebsht\u00eb e fokusuar p\u00ebr nj\u00eb detyr\u00eb specifike. E qart\u00eb \u00ebsht\u00eb q\u00eb n\u00ebse ka nj\u00eb detyr\u00eb t\u00eb ngjashme, at\u00ebher\u00eb mund t\u00eb zgjidhet n\u00eb nj\u00eb m\u00ebnyr\u00eb t\u00eb ngjashme. <\/p>\n<p><\/p>\n<p><em>E kuptoj. Ju that\u00eb se u procesuan 50 or\u00eb. A ka filluar nga fillimi, kur ngarkuat t\u00eb dh\u00ebnat apo mor\u00ebt rezultatet?<\/em><\/p>\n<p><\/p>\n<p>Po-po.<\/p>\n<p><\/p>\n<p><em>Mir\u00eb, faleminderit shum\u00eb.<\/em><\/p>\n<p><\/p>\n<p>Kjo ndodhi n\u00eb nj\u00eb klaster me 3 server\u00eb. <\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! Faleminderit p\u00ebr raportin! Gjith\u00e7ka \u00ebsht\u00eb shum\u00eb interesante. Po pyes pak p\u00ebr funksionimin, jo p\u00ebr funksionalitetin, por p\u00ebr p\u00ebrdorimin e ClickHouse nga pik\u00ebpamja e stabilitetit. A ka ndodhur ndonj\u00ebher\u00eb q\u00eb ju t\u00eb keni pasur nevoj\u00eb t\u00eb rikuperoni? Si sillet ClickHouse gjat\u00eb k\u00ebsaj? D\u00ebshiruam t\u00eb dija n\u00ebse ka ndodhur q\u00eb edhe replika ka r\u00ebn\u00eb? Ne, p\u00ebr shembull, kemi hasur n\u00eb nj\u00eb problem me ClickHouse, kur ai papritmas kalon limitin e tij dhe bie.<\/em><\/p>\n<p><\/p>\n<p>Sigurisht, nuk ka sisteme perfekte. Edhe ClickHouse ka problemet e tij. Por a keni d\u00ebgjuar ndonj\u00ebher\u00eb q\u00eb Yandex.Metrica t\u00eb mos funksiononte p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb? Ndoshta jo. Ajo funksionon besnik\u00ebrisht q\u00eb nga viti 2012-2013 n\u00eb ClickHouse. Mund t\u00eb flas edhe p\u00ebr p\u00ebrvoj\u00ebn time. Kurr\u00eb nuk kemi pasur ndalime t\u00eb plota. Disa \u00e7\u00ebshtje pjesore mund t\u00eb ndodhnin, por kurr\u00eb nuk kan\u00eb qen\u00eb kaq kritike sa t\u00eb ndikojn\u00eb seriozisht n\u00eb biznes. Kurr\u00eb nuk ka ndodhur nj\u00eb gj\u00eb e till\u00eb. ClickHouse \u00ebsht\u00eb mjaft i besuesh\u00ebm dhe nuk bie rast\u00ebsisht. Nuk keni arsye t\u00eb shqet\u00ebsoheni p\u00ebr k\u00ebt\u00eb. Nuk \u00ebsht\u00eb nj\u00eb gj\u00eb e pap\u00ebrfunduar. Kjo \u00ebsht\u00eb provuar nga shum\u00eb kompani. <\/p>\n<p><\/p>\n<p><em>P\u00ebrsh\u00ebndetje! Ju that\u00eb se duhet t\u00eb mendoni mir\u00eb p\u00ebr mendimin tuaj t\u00eb dh\u00ebnave q\u00eb n\u00eb fillim. Por \u00e7far\u00eb ndodhi n\u00ebse kjo ndodhi? T\u00eb dh\u00ebnat po derdhen vazhdimisht. Kalojn\u00eb gjasht\u00eb muaj dhe un\u00eb kuptoj se nuk mund t\u00eb jetoj k\u00ebshtu, duhet t\u00eb ripak t\u00eb dh\u00ebnat dhe t\u00eb b\u00ebj di\u00e7ka me to.<\/em> <\/p>\n<p><\/p>\n<p>Kjo varet, sigurisht, nga sistemi juaj. Ka disa m\u00ebnyra p\u00ebr ta b\u00ebr\u00eb k\u00ebt\u00eb pothuajse pa ndalim. P\u00ebr shembull, mund t\u00eb krijoni nj\u00eb Materialized View, n\u00eb t\u00eb cilin t\u00eb b\u00ebni nj\u00eb struktur\u00eb t\u00eb ndryshme t\u00eb t\u00eb dh\u00ebnave, n\u00ebse ajo mund t\u00eb mapeohet qart\u00eb. Dometh\u00ebn\u00eb, n\u00ebse lejon mapimin p\u00ebrmes ClickHouse, q\u00eb do t\u00eb thot\u00eb t\u00eb nxjerr\u00ebsh disa gj\u00ebra, t\u00eb ndryshosh \u00e7el\u00ebsin kryesor, t\u00eb ndryshosh ndarjen, at\u00ebher\u00eb mund t\u00eb krijosh nj\u00eb Materialized View. Aty do t\u00eb shkruhen t\u00eb dh\u00ebnat tuaja t\u00eb vjetra, dhe t\u00eb rejat do t\u00eb shkruhen automatikisht. Pastaj thjesht kaloni n\u00eb p\u00ebrdorimin e Materialized View, m\u00eb pas nd\u00ebrroni shkres\u00ebn dhe shkat\u00ebrroni tabel\u00ebn e vjet\u00ebr. Kjo \u00ebsht\u00eb nj\u00eb metod\u00eb pa ndalim. <\/p>\n<p><\/p>\n<p><em>Faleminderit.<\/em><\/p>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/512304\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0435\u0437\u0434\u0435, \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0411\u0414 \u0432\u0441\u0435 \u0435\u0449\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u044d\u043a\u0437\u043e\u0442\u0438\u0447\u043d\u044b. \u0418\u0445 \u043f\u043b\u043e\u0445\u043e \u0437\u043d\u0430\u044e\u0442 \u0438 \u0435\u0449\u0435 \u0445\u0443\u0436\u0435 \u0443\u043c\u0435\u044e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 &quot;\u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0442\u0443\u0441&quot; \u0441 MySQL \u0438\u043b\u0438 PostgreSQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u043c\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441 NoSQL \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0437\u0430 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. ClickHouse \u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438\u0433\u0440\u044b \u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":89879,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-89878","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-clickhouse-v-realnyh-prilozheniyah-aleksandr-zajczev-2018g\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0422\u0435\u043e\u0440\u0438\u044f \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f ClickHouse \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445. \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u0417\u0430\u0439\u0446\u0435\u0432 (2018\u0433) | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-clickhouse-v-realnyh-prilozheniyah-aleksandr-zajczev-2018g\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-26T23:42:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-26T23:42:42+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Teoria dhe praktika e p\u00ebrdorimit t\u00eb ClickHouse n\u00eb aplikacione reale. Aleksand\u00ebr Zaitsev (viti 2018) | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-clickhouse-v-realnyh-prilozheniyah-aleksandr-zajczev-2018g","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0422\u0435\u043e\u0440\u0438\u044f \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f ClickHouse \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445. \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u0417\u0430\u0439\u0446\u0435\u0432 (2018\u0433) | ProHoster","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-clickhouse-v-realnyh-prilozheniyah-aleksandr-zajczev-2018g","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-26T23:42:42+00:00","article:modified_time":"2020-07-26T23:42:42+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"89878","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:02:37","updated":"2026-02-22 15:29:33","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/89878","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=89878"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/89878\/revisions"}],"predecessor-version":[{"id":162171,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/89878\/revisions\/162171"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/89879"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=89878"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=89878"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=89878"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}