Tiks pÄrskatÄ«ts Yandex ieguldÄ«jums tÄlÄk norÄdÄ«tajÄs datubÄzÄs.
- NoklikŔķiniet uz MÄja
- Odyssey
- AtgūŔana līdz noteiktam brīdim (WAL-G)
- PostgreSQL (tostarp logerrors, Amcheck, heapcheck)
- Greenplum
Video:
Sveika pasaule! Mani sauc Andrejs Borodins. Un tas, ko es daru Yandex.Cloud, ir atvÄrtu relÄciju datubÄzu izstrÄde Yandex.Cloud un Yandex.Cloud klientu interesÄs.
Å ajÄ runÄ mÄs runÄsim par problÄmÄm, ar kurÄm saskaras atvÄrtÄs datu bÄzes. KÄpÄc tas ir svarÄ«gi? Jo mazas, mazas problÄmas, kas kÄ odi pÄc tam kļūst par ziloÅiem. Tie kļūst lieli, ja jums ir daudz kopu.
Bet tas nav galvenais. Notiek neticamas lietas. Lietas, kas notiek vienÄ no miljona gadÄ«jumu. Un mÄkoÅa vidÄ jums ir jÄbÅ«t gatavam tam, jo āāneticamas lietas kļūst ļoti iespÄjamas, ja kaut kas pastÄv lielÄ mÄrogÄ.
Bet! KÄdas ir atvÄrto datu bÄzu priekÅ”rocÄ«bas? Fakts ir tÄds, ka jums ir teorÄtiska iespÄja tikt galÄ ar jebkuru problÄmu. Jums ir pirmkods, jums ir programmÄÅ”anas zinÄÅ”anas. MÄs to apvienojam, un tas darbojas.
KÄdas pieejas pastÄv, strÄdÄjot pie atvÄrtÄ pirmkoda programmatÅ«ras?
- VienkÄrÅ”ÄkÄ pieeja ir programmatÅ«ras izmantoÅ”ana. Ja izmantojat protokolus, ja izmantojat standartus, ja izmantojat formÄtus, ja rakstÄt vaicÄjumus atvÄrtÄ pirmkoda programmatÅ«rÄ, tad jÅ«s to jau atbalstÄt.
- JÅ«s padarÄt tÄs ekosistÄmu lielÄku. JÅ«s palielinÄsiet kļūdas agrÄ«nas atklÄÅ”anas iespÄjamÄ«bu. JÅ«s palielinÄsiet Ŕīs sistÄmas uzticamÄ«bu. JÅ«s palielinÄt izstrÄdÄtÄju pieejamÄ«bu tirgÅ«. JÅ«s uzlabojat Å”o programmatÅ«ru. JÅ«s jau esat lÄ«dzstrÄdnieks, ja tikko esat paguvis iegÅ«t stilu un kaut ko izdomÄt.
- VÄl viena saprotama pieeja ir atvÄrtÄ pirmkoda programmatÅ«ras sponsorÄÅ”ana. PiemÄram, labi zinÄmÄ Google Summer of Code programma, kad Google lielam skaitam studentu no visas pasaules maksÄ saprotamu naudu, lai viÅi izstrÄdÄtu atklÄtas programmatÅ«ras projektus, kas atbilst noteiktÄm licencÄÅ”anas prasÄ«bÄm.
- Å Ä« ir ļoti interesanta pieeja, jo tÄ Ä¼auj programmatÅ«rai attÄ«stÄ«ties, nenovÄrÅ”ot uzmanÄ«bu no kopienas. Google kÄ tehnoloÄ£iju gigants nesaka, ka mÄs vÄlamies Å”o funkciju, mÄs vÄlamies izlabot Å”o kļūdu, un Å”eit mums ir jÄrok. Google saka: āDari to, ko dari. VienkÄrÅ”i turpiniet strÄdÄt, kÄ strÄdÄjÄt, un viss bÅ«s kÄrtÄ«bÄ.
- NÄkamÄ pieeja dalÄ«bai atvÄrtÄ pirmkoda programmÄ ir lÄ«dzdalÄ«ba. Ja jums ir problÄmas ar atvÄrtÄ pirmkoda programmatÅ«ru un ir izstrÄdÄtÄji, jÅ«su izstrÄdÄtÄji sÄk problÄmas risinÄt. Tie sÄk padarÄ«t jÅ«su infrastruktÅ«ru efektÄ«vÄku, jÅ«su programmas ÄtrÄkas un uzticamÄkas.
Viens no slavenÄkajiem Yandex projektiem atvÄrtÄ pirmkoda programmatÅ«ras jomÄ ir ClickHouse. Å Ä« ir datu bÄze, kas tika izveidota kÄ atbilde uz problÄmÄm, ar kurÄm saskaras Yandex.Metrica.
Un kÄ datu bÄze tÄ tika izveidota atvÄrtÄ pirmkoda veidÄ, lai izveidotu ekosistÄmu un attÄ«stÄ«tu to kopÄ ar citiem izstrÄdÄtÄjiem (ne tikai Yandex). Un tagad Å”is ir liels projekts, kurÄ ir iesaistÄ«ti daudzi dažÄdi uzÅÄmumi.
VietnÄ Yandex.Cloud mÄs izveidojÄm ClickHouse virs Yandex Object Storage, t.i., virs mÄkoÅa krÄtuves.
KÄpÄc tas ir svarÄ«gi mÄkonÄ«? Jo jebkura datu bÄze darbojas Å”ajÄ trÄ«sstÅ«rÄ«, Å”ajÄ piramÄ«dÄ, Å”ajÄ atmiÅas tipu hierarhijÄ. Jums ir Ätri, bet mazi reÄ£istri un lÄti lieli, bet lÄni SSD, cietie diski un dažas citas blokierÄ«ces. Un, ja jÅ«s esat efektÄ«vs piramÄ«das augÅ”pusÄ, tad jums ir Ätra datu bÄze. ja esat efektÄ«vs Ŕīs piramÄ«das apakÅ”Ä, tad jums ir mÄrogota datu bÄze. Un Å”ajÄ sakarÄ cita slÄÅa pievienoÅ”ana no apakÅ”as ir loÄ£iska pieeja datu bÄzes mÄrogojamÄ«bas palielinÄÅ”anai.
KÄ to varÄja izdarÄ«t? Tas ir svarÄ«gs punkts Å”ajÄ ziÅojumÄ.
- MÄs varÄtu ieviest ClickHouse, izmantojot MDS. MDS ir iekÅ”Äja Yandex mÄkoÅa krÄtuves saskarne. Tas ir sarežģītÄks nekÄ parastais S3 protokols, taÄu tas ir vairÄk piemÄrots blokierÄ«cei. Tas ir labÄks datu ierakstÄ«Å”anai. Tas prasa vairÄk programmÄÅ”anas. ProgrammÄtÄji programmÄs, tas ir pat labi, interesanti.
- S3 ir izplatÄ«tÄka pieeja, kas padara saskarni vienkÄrÅ”Äku, samazinot pielÄgoÅ”anos noteikta veida darba slodzÄm.
Protams, vÄloties nodroÅ”inÄt funkcionalitÄti visai ClickHouse ekosistÄmai un veikt nepiecieÅ”amos uzdevumus Yandex.Cloud iekÅ”ienÄ, mÄs nolÄmÄm pÄrliecinÄties, ka visa ClickHouse kopiena gÅ«s labumu no tÄ. MÄs ieviesÄm ClickHouse, izmantojot S3, nevis ClickHouse, izmantojot MDS. Un tas ir daudz darba.
Saites:
Å is ir ievilkÅ”anas pieprasÄ«jumu saraksts virtuÄlÄs failu sistÄmas ievieÅ”anai ClickHouse. Tas ir liels skaits izvilkÅ”anas pieprasÄ«jumu.
Saites:
klients"
Bet ar to darbs nebeidzÄs. PÄc funkcijas izveides bija nepiecieÅ”ams vÄl nedaudz strÄdÄt, lai optimizÄtu Å”o funkcionalitÄti.
Saites:
Un tad bija nepiecieÅ”ams to padarÄ«t diagnosticÄjamu, izveidot uzraudzÄ«bu un padarÄ«t to pÄrvaldÄmu.
Un tas viss tika darÄ«ts, lai visa kopiena, visa ClickHouse ekosistÄma saÅemtu Ŕī darba rezultÄtu.
PÄriesim pie darÄ«jumu datu bÄzÄm, pie OLTP datu bÄzÄm, kas man personÄ«gi ir tuvÄkas.
Å Ä« ir atvÄrtÄ koda DBVS izstrÄdes nodaļa. Å ie puiÅ”i veic ielu maÄ£iju, lai uzlabotu darÄ«jumu atvÄrtÄs datu bÄzes.
Viens no projektiem, izmantojot piemÄru, kurÄ mÄs varam runÄt par to, kÄ un ko mÄs darÄm, ir Connection Pooler Postgres.
Postgres ir procesu datu bÄze. Tas nozÄ«mÄ, ka datu bÄzei jÄbÅ«t pÄc iespÄjas mazÄkam tÄ«kla pieslÄgumam, kas apstrÄdÄ darÄ«jumus.
SavukÄrt mÄkoÅa vidÄ tipiska situÄcija ir, kad vienÄ klasterÄ« uzreiz nonÄk tÅ«kstotis savienojumu. Un savienojumu apkopotÄja uzdevums ir iesaiÅot tÅ«kstoÅ” savienojumu nelielÄ skaitÄ servera savienojumu.
Var teikt, ka savienojumu pÅ«lÄtÄjs ir telefona operators, kurÅ” pÄrkÄrto baitus tÄ, lai tie efektÄ«vi nonÄktu datu bÄzÄ.
DiemžÄl nav neviena laba krievu vÄrda, kas apzÄ«mÄtu savienojumu baseinu. Dažreiz to sauc par multiplekseru savienojumiem. Ja zini kÄ saukt pieslÄguma pÅ«linieku, tad noteikti pasaki, ar lielu prieku runÄÅ”u pareizÄ krievu tehniskajÄ valodÄ.
MÄs izpÄtÄ«jÄm savienojumu apvienotÄjus, kas bija piemÄroti pÄrvaldÄ«tam postgres klasterim. Un PgBouncer mums bija labÄkÄ izvÄle. TaÄu mÄs saskÄrÄmies ar vairÄkÄm problÄmÄm ar PgBouncer. Pirms daudziem gadiem Volodja Borodins sniedza ziÅojumus, ka lietojam PgBouncer, mums viss patÄ«k, bet ir nianses, ir pie kÄ strÄdÄt.
Un mÄs strÄdÄjÄm. MÄs novÄrsÄm raduÅ”Äs problÄmas, izlabojÄm Bouncer un mÄÄ£inÄjÄm virzÄ«t izvilkÅ”anas pieprasÄ«jumus augÅ”up. Bet ar fundamentÄlu viena vÄ«tne bija grÅ«ti strÄdÄt.
Mums bija jÄsavÄc kaskÄdes no lÄpÄ«tajiem Bouncers. Ja mums ir daudz viena vÄ«tnes izlÄcÄju, augÅ”ÄjÄ slÄÅa savienojumi tiek pÄrnesti uz atlÄcÄju iekÅ”Äjo slÄni. Å Ä« ir slikti pÄrvaldÄ«ta sistÄma, kuru ir grÅ«ti izveidot un mÄrogot uz priekÅ”u un atpakaļ.
MÄs nonÄcÄm pie secinÄjuma, ka esam izveidojuÅ”i paÅ”i savu savienojumu baseinu, ko sauc par Odiseju. MÄs to rakstÄ«jÄm no nulles.
2019. gadÄ PgCon konferencÄ es prezentÄju Å”o pÅ«linÄ«tÄju izstrÄdÄtÄju kopienai. Tagad mums ir nedaudz mazÄk par 2 zvaigznÄm vietnÄ GitHub, t.i., projekts ir dzÄ«vs, projekts ir populÄrs.
Un, ja vietnÄ Yandex.Cloud izveidojat Postgres kopu, tas bÅ«s klasteris ar iebÅ«vÄtu Odyssey, kas tiek pÄrkonfigurÄts, mÄrogojot kopu uz priekÅ”u vai atpakaļ.
Ko mÄs mÄcÄ«jÄmies no Ŕī projekta? KonkurÄjoÅ”a projekta uzsÄkÅ”ana vienmÄr ir agresÄ«vs solis, tas ir ÄrkÄrtÄjs pasÄkums, kad sakÄm, ka ir problÄmas, kuras netiek risinÄtas pietiekami Ätri, netiek atrisinÄtas tÄdos laika intervÄlos, kÄdi mums bÅ«tu piemÄroti. Bet tas ir efektÄ«vs pasÄkums.
PgBouncer sÄka attÄ«stÄ«ties ÄtrÄk.
Un tagad ir parÄdÄ«juÅ”ies citi projekti. PiemÄram, pgagroal, ko izstrÄdÄ Red Hat izstrÄdÄtÄji. ViÅi tiecas pÄc lÄ«dzÄ«giem mÄrÄ·iem un Ä«steno lÄ«dzÄ«gas idejas, bet, protams, ar savu specifiku, kas ir tuvÄka pgagroal izstrÄdÄtÄjiem.
VÄl viens darba ar postgres kopienu gadÄ«jums ir atjaunoÅ”ana uz noteiktu laiku. Å Ä« ir atkopÅ”ana pÄc neveiksmes, Ŕī ir atkopÅ”ana no dublÄjuma.
Ir daudz dublÄjumu, un tie visi ir atŔķirÄ«gi. GandrÄ«z katram Postgres pÄrdevÄjam ir savs rezerves risinÄjums.
Ja Åemat visas rezerves sistÄmas, izveidojat pazÄ«mju matricu un pa jokam parÄÄ·inÄsit determinantu Å”ajÄ matricÄ, tÄ bÅ«s nulle. Ko tas nozÄ«mÄ? Ko darÄ«t, ja paÅemat konkrÄtu dublÄjuma failu, tad to nevar salikt no visu pÄrÄjo daļÄm. Tas ir unikÄls savÄ Ä«stenoÅ”anÄ, tas ir unikÄls ar mÄrÄ·i, tas ir unikÄls idejÄs, kas tajÄ ir iestrÄdÄtas. Un tie visi ir specifiski.
KamÄr mÄs strÄdÄjÄm pie Ŕī jautÄjuma, CitusData uzsÄka WAL-G projektu. Å Ä« ir rezerves sistÄma, kas tika izveidota, Åemot vÄrÄ mÄkoÅa vidi. Tagad CitusData jau ir daļa no Microsoft. Un tajÄ brÄ«dÄ« mums ļoti patika idejas, kas tika izklÄstÄ«tas WAL-G sÄkotnÄjos laidienos. Un mÄs sÄkÄm dot savu ieguldÄ«jumu Å”ajÄ projektÄ.
Tagad Å”ajÄ projektÄ ir vairÄki desmiti izstrÄdÄtÄju, bet starp 10 labÄkajiem WAL-G atbalstÄ«tÄjiem ir 6 Yandexoids. MÄs tur ienesÄm daudzas savas idejas. Un, protams, mÄs paÅ”i tos ieviesÄm, paÅ”i pÄrbaudÄ«jÄm, paÅ”i izrullÄjÄm ražoÅ”anÄ, paÅ”i lietojam, paÅ”i izdomÄjam, kur tÄlÄk virzÄ«ties, vienlaikus mijiedarbojoties ar lielo WAL-G kopienu.
Un no mÅ«su viedokļa tagad Ŕī rezerves sistÄma, tostarp Åemot vÄrÄ mÅ«su centienus, ir kļuvusi optimÄla mÄkoÅa videi. Å Ä«s ir labÄkÄs Postgres dublÄÅ”anas izmaksas mÄkonÄ«.
Ko tas nozÄ«mÄ? MÄs veicinÄjÄm diezgan lielu ideju: dublÄjumam jÄbÅ«t droÅ”am, lÄtam darbam un pÄc iespÄjas ÄtrÄkai atjaunoÅ”anai.
KÄpÄc lai ekspluatÄcija bÅ«tu lÄta? Ja nekas nav bojÄts, jums nevajadzÄtu zinÄt, ka jums ir rezerves kopijas. Viss darbojas labi, jÅ«s iztÄrÄjat pÄc iespÄjas mazÄk CPU, izmantojat pÄc iespÄjas mazÄk diska resursu un sÅ«tÄt tÄ«klÄ pÄc iespÄjas mazÄk baitu, lai netraucÄtu jÅ«su vÄrtÄ«go pakalpojumu slodzei.
Un, kad viss sabojÄjas, piemÄram, administrators nometa datus, kaut kas nogÄja greizi, un jums steidzami jÄatgriežas pagÄtnÄ, jÅ«s atgÅ«staties ar visu naudu, jo vÄlaties Ätri un neskartus datus atgÅ«t.
Un mÄs veicinÄjÄm Å”o vienkÄrÅ”o ideju. Un, kÄ mums Ŕķiet, mums tas izdevÄs.
Bet tas vÄl nav viss. MÄs gribÄjÄm vÄl vienu mazu lietu. MÄs gribÄjÄm daudz dažÄdu datu bÄzu. Ne visi mÅ«su klienti izmanto Postgres. Daži cilvÄki izmanto MySQL, MongoDB. KopienÄ citi izstrÄdÄtÄji ir atbalstÄ«juÅ”i FoundationDB. Un Å”is saraksts nepÄrtraukti paplaÅ”inÄs.
Kopienai patÄ«k ideja, ka datubÄze tiek darbinÄta pÄrvaldÄ«tÄ vidÄ mÄkonÄ«. Un izstrÄdÄtÄji uztur savas datu bÄzes, kuras var dublÄt vienÄdi kopÄ ar Postgres, izmantojot mÅ«su rezerves sistÄmu.
Ko mÄs esam iemÄcÄ«juÅ”ies no Ŕī stÄsta? MÅ«su produkts kÄ izstrÄdes nodaļa nav koda rindas, tie nav paziÅojumi, tie nav faili. MÅ«su produkts nav pull pieprasÄ«jumus. Å Ä«s ir idejas, ko mÄs nododam sabiedrÄ«bai. TÄ ir tehnoloÄ£iskÄ pieredze un tehnoloÄ£iju virzÄ«ba uz mÄkoÅa vidi.
Ir tÄda datu bÄze kÄ Postgres. Man visvairÄk patÄ«k Postgres kodols. Es pavadu daudz laika, attÄ«stot Postgres kodolu kopÄ ar sabiedrÄ«bu.
Bet Å”eit jÄsaka, ka Yandex.Cloud ir iekÅ”Äja pÄrvaldÄ«to datu bÄzu instalÄcija. Un tas sÄkÄs jau sen pakalpojumÄ Yandex.Mail. ZinÄÅ”anas, kas tagad ir noveduÅ”as pie pÄrvaldÄ«tÄs Postgres, tika uzkrÄtas, kad pasts vÄlÄjÄs pÄrvietoties uz Postgres.
Pastam ir ļoti lÄ«dzÄ«gas prasÄ«bas kÄ mÄkonim. Tam ir nepiecieÅ”ams, lai jÅ«s varÄtu mÄrogot lÄ«dz negaidÄ«tam eksponenciÄlam pieaugumam jebkurÄ datu punktÄ. Un pasts jau bija noslogots ar dažiem simtiem miljonu pastkastÄ«Å”u ar milzÄ«gu skaitu lietotÄju, kuri pastÄvÄ«gi veic daudzus pieprasÄ«jumus.
Un tas bija diezgan nopietns izaicinÄjums komandai, kas izstrÄdÄja Postgres. Toreiz par visÄm problÄmÄm, ar kurÄm saskÄrÄmies, tika ziÅots kopienai. Un Ŕīs problÄmas tika izlabotas un izlabotas dažÄs vietÄs pat dažu citu datu bÄzu maksas atbalsta lÄ«menÄ« un pat labÄk. Tas ir, jÅ«s varat nosÅ«tÄ«t vÄstuli PgSQL hakeram un saÅemt atbildi 40 minÅ«Å”u laikÄ. Maksas atbalsts dažÄs datubÄzÄs var domÄt, ka ir svarÄ«gÄkas lietas nekÄ jÅ«su kļūda.
Tagad Postgres iekÅ”ÄjÄ instalÄcija ir daži petabaiti datu. Tie ir daži miljoni pieprasÄ«jumu sekundÄ. Tie ir tÅ«kstoÅ”iem kopu. Tas ir ļoti liela mÄroga.
Bet ir kÄda nianse. Tas darbojas nevis uz izdomÄtiem tÄ«kla diskdziÅiem, bet gan uz diezgan vienkÄrÅ”u aparatÅ«ru. Un ir testa vide, kas ir Ä«paÅ”i paredzÄta interesantÄm jaunÄm lietÄm.
Un noteiktÄ brÄ«dÄ« testa vidÄ mÄs saÅÄmÄm ziÅojumu, kas norÄdÄ«ja, ka ir pÄrkÄpti datu bÄzes indeksu iekÅ”Äjie invarianti.
Invariants ir sava veida attiecÄ«bas, kuras mÄs sagaidÄm vienmÄr.
Mums ļoti kritiska situÄcija. Tas norÄda, ka daži dati, iespÄjams, ir pazaudÄti. Un datu zudums ir kaut kas pilnÄ«gi katastrofÄls.
VispÄrÄjÄ ideja, ko mÄs ievÄrojam pÄrvaldÄ«tajÄs datubÄzÄs, ir tÄda, ka pat ar piepÅ«li bÅ«s grÅ«ti zaudÄt datus. Pat ja jÅ«s tos apzinÄti noÅemat, jums joprojÄm bÅ«s jÄignorÄ to prombÅ«tne ilgu laiku. Datu droŔība ir reliÄ£ija, kurai mÄs diezgan rÅ«pÄ«gi sekojam.
Un Å”eit rodas situÄcija, kas liek domÄt, ka var bÅ«t situÄcija, kurai mÄs varam nebÅ«t gatavi. Un mÄs sÄkÄm gatavoties Å”ai situÄcijai.
PirmÄ lieta, ko mÄs izdarÄ«jÄm, bija apglabÄt baļķus no Å”iem tÅ«kstoÅ”iem kopu. MÄs noskaidrojÄm, kuras no kopÄm atradÄs diskos ar problemÄtisku programmaparatÅ«ru, kurÄ tika zaudÄti datu lapu atjauninÄjumi. AtzÄ«mÄts viss Postgres datu kods. Un tos ziÅojumus, kas norÄda uz iekÅ”Äjo invariantu pÄrkÄpumiem, mÄs atzÄ«mÄjÄm ar kodu, kas paredzÄts datu bojÄjumu noteikÅ”anai.
Å o ielÄpu sabiedrÄ«ba praktiski pieÅÄma bez lielÄm diskusijÄm, jo āākatrÄ konkrÄtajÄ gadÄ«jumÄ bija redzams, ka ir noticis kaut kas slikts un par to jÄziÅo žurnÄlam.
PÄc tam mÄs nonÄcÄm pie tÄ, ka mums ir uzraudzÄ«ba, kas skenÄ Å¾urnÄlus. Un aizdomÄ«gu ziÅojumu gadÄ«jumÄ viÅÅ” pamodina dežurantu, un dežurants to salabo.
Bet! ŽurnÄlu skenÄÅ”ana ir lÄta darbÄ«ba vienÄ klasterÄ« un katastrofÄli dÄrga tÅ«kstoÅ” kopu.
MÄs uzrakstÄ«jÄm paplaÅ”inÄjumu ar nosaukumu
Å is paplaÅ”inÄjums ir pieÅemts, piemÄram, repozitorijÄ for
Bet tas vÄl nav viss. MÄs sÄkÄm izmantot Amcheck ā kopienas izveidotu paplaÅ”inÄjumu, lai indeksos atrastu nemainÄ«gus pÄrkÄpumus.
Un mÄs noskaidrojÄm, ka, ja to izmantojat lielÄ mÄrogÄ, ir kļūdas. MÄs sÄkÄm tos labot. MÅ«su labojumi ir pieÅemti.
MÄs atklÄjÄm, ka Å”is paplaÅ”inÄjums nevar analizÄt GiST un GIT indeksus. MÄs likÄm viÅiem atbalstÄ«t. TaÄu Å”is atbalsts joprojÄm tiek apspriests sabiedrÄ«bÄ, jo Ŕī ir salÄ«dzinoÅ”i jauna funkcionalitÄte un tajÄ ir daudz detaļu.
Un mÄs arÄ« atklÄjÄm, ka, pÄrbaudot indeksus par pÄrkÄpumiem uz replikÄcijas vadÄ«tÄja, uz galvenÄ, viss darbojas labi, bet uz replikÄm, uz sekotÄju, korupcijas meklÄÅ”ana nav tik efektÄ«va. Ne visi invarianti tiek pÄrbaudÄ«ti. Un viens invariants mÅ«s ļoti traucÄja. Un mÄs pavadÄ«jÄm pusotru gadu, sazinoties ar kopienu, lai iespÄjotu Å”o kopiju pÄrbaudi.
MÄs uzrakstÄ«jÄm kodu, kam bÅ«tu jÄievÄro visi can... protokoli. MÄs ilgu laiku apspriedÄm Å”o ielÄpu ar Peter Gaghan no Crunchy Data. ViÅam bija nedaudz jÄmaina esoÅ”ais B-koks PostgresÄ, lai pieÅemtu Å”o ielÄpu. ViÅu pieÅÄma. Tagad arÄ« kopiju indeksu pÄrbaude ir kļuvusi pietiekami efektÄ«va, lai atklÄtu konstatÄtos pÄrkÄpumus. Tas ir, Å”os pÄrkÄpumus var izraisÄ«t diska programmaparatÅ«ras kļūdas, Postgres kļūdas, Linux kodola kļūdas un aparatÅ«ras problÄmas. Diezgan plaÅ”s to problÄmu avotu saraksts, kurÄm mÄs gatavojÄmies.
Bet bez indeksiem ir tÄda daļa kÄ kaudze, t.i., vieta, kur dati tiek glabÄti. Un nav daudz invariantu, ko varÄtu pÄrbaudÄ«t.
Mums ir paplaÅ”inÄjums Heapcheck. MÄs sÄkÄm to izstrÄdÄt. Un paralÄli kopÄ ar mums uzÅÄmums EnterpriseDB arÄ« sÄka rakstÄ«t moduli, kuru viÅi tÄpat sauca par Heapcheck. Tikai mÄs to saucÄm par PgHeapcheck, un viÅi to vienkÄrÅ”i sauca par Heapcheck. ViÅiem tas ir ar lÄ«dzÄ«gÄm funkcijÄm, nedaudz atŔķirÄ«gs paraksts, bet ar vienÄdÄm idejÄm. DažÄs vietÄs viÅi tos ieviesa nedaudz labÄk. Un viÅi to iepriekÅ” ievietoja atvÄrtÄ avotÄ.
Un tagad mÄs attÄ«stÄm viÅu paplaÅ”inÄÅ”anos, jo tÄ vairs nav viÅu paplaÅ”inÄÅ”anÄs, bet gan kopienas paplaÅ”inÄÅ”anÄs. Un nÄkotnÄ Å”Ä« ir daļa no kodola, kas tiks piegÄdÄta ikvienam, lai viÅi jau iepriekÅ” zinÄtu par nÄkotnes problÄmÄm.
DažÄs vietÄs mÄs pat nonÄcÄm pie secinÄjuma, ka mÅ«su uzraudzÄ«bas sistÄmÄs ir kļūdaini pozitÄ«vi rezultÄti. PiemÄram, 1C sistÄma. Lietojot datu bÄzi, Postgres dažkÄrt tajÄ ieraksta datus, ko var nolasÄ«t, bet pg_dump nevar nolasÄ«t.
MÅ«su problÄmu noteikÅ”anas sistÄmai Ŕī situÄcija izskatÄ«jÄs kÄ korupcija. Dežurants tika pamodinÄts. Dežurants paskatÄ«jÄs, kas notiek. PÄc kÄda laika atnÄca kliente un teica, ka man ir problÄmas. Dežurants paskaidroja, kas par problÄmu. Bet problÄma ir Postgres kodolÄ.
Atradu diskusiju par Å”o funkciju. Un viÅÅ” rakstÄ«ja, ka mÄs saskÄrÄmies ar Å”o funkciju un tas bija nepatÄ«kami, cilvÄks naktÄ« pamodÄs, lai saprastu, kas tas ir.
SabiedrÄ«ba atbildÄja: "Ak, mums tas tieÅ”Äm ir jÄlabo."
Man ir vienkÄrÅ”a lÄ«dzÄ«ba. Ja staigÄ apavos, kurÄ ir smilÅ”u graudiÅÅ”, tad principÄ var doties tÄlÄk ā nekÄdu problÄmu. Ja pÄrdod zÄbakus tÅ«kstoÅ”iem cilvÄku, tad taisÄ«sim zÄbakus vispÄr bez smiltÄ«m. Un, ja kÄds no jÅ«su apavu lietotÄjiem gatavojas skriet maratonu, jÅ«s vÄlaties izgatavot ļoti labus apavus un pÄc tam pielÄgot tos visiem lietotÄjiem. Un Å”Ädi negaidÄ«ti lietotÄji vienmÄr atrodas mÄkoÅa vidÄ. VienmÄr ir lietotÄji, kuri izmanto kopu kaut kÄdÄ oriÄ£inÄlÄ veidÄ. Jums vienmÄr tam ir jÄsagatavojas.
Ko mÄs Å”eit esam iemÄcÄ«juÅ”ies? MÄs uzzinÄjÄm vienkÄrÅ”u lietu: vissvarÄ«gÄkais ir izskaidrot sabiedrÄ«bai, ka pastÄv problÄma. Ja sabiedrÄ«ba ir atzinusi problÄmu, tad rodas dabiska konkurence, lai atrisinÄtu problÄmu. Jo katrs vÄlas atrisinÄt kÄdu svarÄ«gu problÄmu. Visi pÄrdevÄji, visi hakeri saprot, ka viÅi paÅ”i var uzkÄpt uz Ŕī grÄbekļa, tÄpÄc vÄlas tos likvidÄt.
Ja strÄdÄjat pie kÄdas problÄmas, bet tÄ netraucÄ nevienu, izÅemot jÅ«s, bet jÅ«s strÄdÄjat pie tÄs sistemÄtiski un galu galÄ tÄ tiek uzskatÄ«ta par problÄmu, tad jÅ«su izvilkÅ”anas pieprasÄ«jums noteikti tiks pieÅemts. JÅ«su ielÄps tiks pieÅemts, kopiena pÄrskatÄ«s jÅ«su uzlabojumus vai pat uzlabojumu pieprasÄ«jumus. Galu galÄ mÄs uzlabojam datubÄzi viens otram.
Interesanta datu bÄze ir Greenplum. TÄ ir ļoti paralÄla datu bÄze, kuras pamatÄ ir Postgres kodu bÄze, kas man ir ļoti pazÄ«stama.
Un Greenplum ir interesanta funkcionalitÄte - pievienojiet optimizÄtas tabulas. Å Ä«s ir tabulas, kuras varat Ätri pievienot. TÄs var bÅ«t kolonnas vai rindas.
Bet nebija klasterizÄcijas, t.i., nebija funkcionalitÄtes, kur varÄtu sakÄrtot tabulÄ esoÅ”os datus tÄdÄ secÄ«bÄ, kÄda ir kÄdÄ no indeksiem.
PuiÅ”i no taksometra pienÄca pie manis un teica: āAndrej, tu pazÄ«sti Postgresu. Un Å”eit tas ir gandrÄ«z tas pats. PÄrslÄdzieties uz 20 minÅ«tÄm. Tu Åem un dari." Es domÄju, ka jÄ, es pazÄ«stu Postgres, pÄrslÄdzoties uz 20 minÅ«tÄm ā man tas jÄdara.
Bet nÄ, tÄs nebija 20 minÅ«tes, es to rakstÄ«ju vairÄku mÄneÅ”u garumÄ. PgConf.Russia konferencÄ es uzrunÄju Heiki Linakangas no Pivotal un jautÄju: āVai ar to ir kÄdas problÄmas? KÄpÄc nav pievienota optimizÄta tabulu klasterizÄcijas? ViÅÅ” saka: āJÅ«s Åemat datus. JÅ«s Ŕķirojat, pÄrkÄrtojat. Tas ir tikai darbs." Es: "Ak, jÄ, jums vienkÄrÅ”i vajag to Åemt un darÄ«t." ViÅÅ” saka: "JÄ, mums ir vajadzÄ«gas brÄ«vas rokas, lai to izdarÄ«tu." Es domÄju, ka man tas noteikti ir jÄdara.
Un dažus mÄneÅ”us vÄlÄk es iesniedzu izvilkÅ”anas pieprasÄ«jumu, kas ieviesa Å”o funkcionalitÄti. Pivotal kopÄ ar kopienu pÄrskatÄ«ja Å”o piesaistes pieprasÄ«jumu. Protams, bija arÄ« kļūdas.
Bet pats interesantÄkais ir tas, ka tad, kad Å”is pull pieprasÄ«jums tika apvienots, bugs tika atrasts paÅ”Ä Greenplum. MÄs esam noskaidrojuÅ”i, ka kaudzes tabulas dažkÄrt izjauc transakciju darbÄ«bu, ja tÄs tiek grupÄtas. Un Ŕī ir lieta, kas ir jÄlabo. Un viÅa atrodas vietÄ, kurai es tikko pieskÄros. Un mana dabiskÄ reakcija bija ā labi, ļaujiet man arÄ« to izdarÄ«t.
Es izlaboju Å”o kļūdu. NosÅ«tÄ«ja izvilkÅ”anas pieprasÄ«jumu fiksÄtÄjiem. ViÅu nogalinÄja.
PÄc kÄ izrÄdÄ«jÄs, ka Ŕī funkcionalitÄte ir jÄiegÅ«st Greenplum versijÄ PostgreSQL 12. Tas ir, 20 minÅ«Å”u piedzÄ«vojums turpinÄs ar jauniem interesantiem piedzÄ«vojumiem. Bija interesanti pieskarties paÅ”reizÄjai attÄ«stÄ«bai, kurÄ kopiena izgriež jaunas un vissvarÄ«gÄkÄs iezÄ«mes. Tas ir sasalis.
Bet ar to viss nebeidzÄs. PÄc visa tÄ izrÄdÄ«jÄs, ka par to visu vajag uzrakstÄ«t dokumentÄciju.
SÄku rakstÄ«t dokumentÄciju. Par laimi, pienÄca Pivotal dokumentÄlisti. Angļu valoda ir viÅu dzimtÄ valoda. ViÅi man palÄ«dzÄja ar dokumentÄciju. PatiesÄ«bÄ viÅi paÅ”i manis piedÄvÄto pÄrrakstÄ«ja Ä«stÄ angļu valodÄ.
Un Å”eit, Ŕķiet, piedzÄ«vojums beidzÄs. Un vai jÅ«s zinÄt, kas tad notika? PuiÅ”i no taksometra pienÄca pie manis un teica: "VÄl ir divi piedzÄ«vojumi, katrs pa 10 minÅ«tÄm." Un kas man viÅiem jÄsaka? Teicu, ka tagad sniegÅ”u atskaiti par mÄrogu, tad redzÄsim jÅ«su piedzÄ«vojumus, jo Å”is ir interesants darbs.
Ko mÄs mÄcÄ«jÄmies no Ŕī gadÄ«juma? TÄ kÄ darbs ar atvÄrto avotu vienmÄr ir darbs ar konkrÄtu personu, tas vienmÄr ir darbs ar kopienu. Jo katrÄ posmÄ es strÄdÄju ar kÄdu izstrÄdÄtÄju, kÄdu testÄtÄju, kÄdu hakeri, kÄdu dokumentÄlistu, kÄdu arhitektu. Es nestrÄdÄju ar Greenplum, es strÄdÄju ar cilvÄkiem ap Greenplum.
Bet! Ir vÄl viens svarÄ«gs punkts - tas ir tikai darbs. Tas ir, tu atnÄc, iedzer kafiju, uzraksti kodu. Darbojas visÄdi vienkÄrÅ”i invarianti. Dariet to normÄli - bÅ«s labi! Un tas ir diezgan interesants darbs. Å im darbam ir pieprasÄ«jums no Yandex.Cloud klientiem, mÅ«su klasteru lietotÄjiem gan Yandex, gan Ärpus tÄs. Un es domÄju, ka pieaugs projektu skaits, kuros mÄs piedalÄmies, un palielinÄsies arÄ« mÅ«su iesaistes dziļums.
Tas ir viss. PÄriesim pie jautÄjumiem.
JautÄjumu sesija
Sveiki! Mums ir vÄl viena jautÄjumu un atbilžu sesija. Un studijÄ Andrejs Borodins. Å Ä« ir persona, kas tikko pastÄstÄ«ja par Yandex.Cloud un Yandex ieguldÄ«jumu atvÄrtÄ koda attÄ«stÄ«bÄ. MÅ«su ziÅojums tagad nav tikai par mÄkoni, taÄu tajÄ paÅ”Ä laikÄ mÄs esam balstÄ«ti uz Å”ÄdÄm tehnoloÄ£ijÄm. Bez tÄ, ko jÅ«s darÄ«jÄt Yandex, Yandex.Cloud nebÅ«tu pakalpojumu, tÄpÄc paldies no manis personÄ«gi. Un pirmais jautÄjums no raidÄ«juma: "Par ko ir rakstÄ«ts katrs no jÅ«su pieminÄtajiem projektiem?"
Rezerves sistÄma WAL-G ir rakstÄ«ta Go. Å is ir viens no jaunÄkajiem projektiem, pie kura esam strÄdÄjuÅ”i. ViÅam burtiski ir tikai 3 gadi. Un datubÄze bieži ir saistÄ«ta ar uzticamÄ«bu. Un tas nozÄ«mÄ, ka datu bÄzes ir diezgan vecas, un tÄs parasti ir rakstÄ«tas C. Postgres projekts sÄkÄs apmÄram pirms 30 gadiem. Tad C89 bija pareizÄ izvÄle. Un uz tÄ ir rakstÄ«ts Postgres. MÅ«sdienÄ«gÄkas datu bÄzes, piemÄram, ClickHouse, parasti tiek rakstÄ«tas C++ valodÄ. Visas sistÄmas izstrÄdes pamatÄ ir C un C++.
JautÄjums no mÅ«su finanÅ”u menedžera, kurÅ” ir atbildÄ«gs par Cloud izdevumiem: "KÄpÄc Cloud tÄrÄ naudu atvÄrtÄ koda atbalstam?"
Å eit finanÅ”u vadÄ«tÄjam ir vienkÄrÅ”a atbilde. MÄs to darÄm, lai uzlabotu savus pakalpojumus. KÄdos veidos mÄs varam darÄ«t labÄk? MÄs varam darÄ«t lietas efektÄ«vÄk, ÄtrÄk un padarÄ«t lietas mÄrogojamÄkas. Bet mums Å”is stÄsts galvenokÄrt ir par uzticamÄ«bu. PiemÄram, rezerves sistÄmÄ mÄs pÄrskatÄm 100% no ielÄpu, kas uz to attiecas. MÄs zinÄm, kas ir kods. Un mums ir ÄrtÄk ieviest jaunas versijas ražoÅ”anÄ. Tas ir, pirmkÄrt, par pÄrliecÄ«bu, par gatavÄ«bu attÄ«stÄ«bai un par uzticamÄ«bu
VÄl viens jautÄjums: "Vai ÄrÄjo lietotÄju prasÄ«bas, kas dzÄ«vo Yandex.Cloud, atŔķiras no iekÅ”Äjiem lietotÄjiem, kuri dzÄ«vo iekÅ”ÄjÄ mÄkonÄ«?"
Slodzes profils, protams, ir atŔķirÄ«gs. Bet no manas nodaļas viedokļa visi Ä«paÅ”ie un interesantie gadÄ«jumi tiek veidoti uz nestandarta slodzes. IzstrÄdÄtÄjus ar iztÄli, izstrÄdÄtÄjus, kuri paveic neparedzÄtos, visticamÄk, atradÄ«s gan iekÅ”Äji, gan ÄrÄji. Å ajÄ ziÅÄ mÄs visi esam aptuveni vienÄdi. Un, iespÄjams, vienÄ«gÄ svarÄ«gÄ iezÄ«me Yandex datu bÄzu darbÄ«bÄ bÅ«s tÄ, ka Yandex mums ir mÄcÄ«ba. KÄdÄ brÄ«dÄ« kÄda pieejamÄ«bas zona pilnÄ«bÄ nonÄk ÄnÄ, un visiem Yandex pakalpojumiem ir jÄturpina darboties, neskatoties uz to. TÄ ir neliela atŔķirÄ«ba. Bet tas rada daudz pÄtÄ«jumu izstrÄdes datu bÄzes un tÄ«kla steka saskarnÄ. PretÄjÄ gadÄ«jumÄ ÄrÄjÄs un iekÅ”ÄjÄs instalÄcijas rada vienÄdus pieprasÄ«jumus pÄc funkcijÄm un lÄ«dzÄ«gus pieprasÄ«jumus uzticamÄ«bas un veiktspÄjas uzlaboÅ”anai.
NÄkamais jautÄjums: āKÄ jÅ«s personÄ«gi jÅ«taties par to, ka lielu daļu no tÄ, ko darÄt, izmanto citi mÄkoÅi?ā MÄs nenosauksim konkrÄtus, taÄu daudzi projekti, kas tika veikti pakalpojumÄ Yandex.Cloud, tiek izmantoti citu cilvÄku mÄkoÅos.
Tas ir forÅ”i. PirmkÄrt, tÄ ir zÄ«me, ka esam kaut ko izdarÄ«juÅ”i pareizi. Un tas skrÄpÄ ego. Un mÄs esam pÄrliecinÄtÄki, ka pieÅÄmÄm pareizo lÄmumu. No otras puses, tÄ ir cerÄ«ba, ka nÄkotnÄ tas mums nesÄ«s jaunas idejas, jaunus treÅ”o puÅ”u lietotÄju pieprasÄ«jumus. LielÄko daļu GitHub problÄmu rada individuÄli sistÄmu administratori, individuÄlie DBA, individuÄli arhitekti, individuÄli inženieri, taÄu dažkÄrt nÄk cilvÄki ar sistemÄtisku pieredzi un saka, ka 30% gadÄ«jumu mums ir Ŕī problÄma, un domÄsim, kÄ to atrisinÄt. Tas ir tas, ko mÄs gaidÄm visvairÄk. MÄs ceram dalÄ«ties pieredzÄ ar citÄm mÄkoÅu platformÄm.
JÅ«s daudz runÄjÄt par maratonu. Es zinu, ka jÅ«s skrÄjÄt maratonu MaskavÄ. RezultÄtÄ? Apsteidza puiÅ”us no PostgreSQL?
NÄ, Oļegs Bartunovs skrien ļoti Ätri. ViÅÅ” pabeidza stundu pirms manis. KopumÄ esmu apmierinÄts ar to, cik tÄlu esmu nonÄcis. Man tikai finiÅ”ÄÅ”ana bija sasniegums. KopumÄ ir pÄrsteidzoÅ”i, ka postgres kopienÄ ir tik daudz skrÄjÄju. Man Ŕķiet, ka pastÄv kaut kÄda saistÄ«ba starp aerobikas sportu un vÄlmi pÄc sistÄmu programmÄÅ”anas.
Vai jÅ«s sakÄt, ka ClickHouse nav skrÄjÄju?
Es noteikti zinu, ka viÅi tur ir. ClickHouse ir arÄ« datu bÄze. Starp citu, Oļegs man tagad raksta: "Vai ejam paskriet pÄc ziÅojuma?" Å Ä« ir lieliska ideja.
VÄl viens jautÄjums no Å ikitas raidÄ«juma: "KÄpÄc jÅ«s pats izlabojÄt Greenplum kļūdu un neiedevÄt to junioriem?" Tiesa, nav Ä«sti skaidrs, kas ir kļūda un kurÄ pakalpojumÄ, bet tas, iespÄjams, nozÄ«mÄ to, par kuru runÄjÄt.
JÄ, principÄ varÄja kÄdam iedot. Tas bija tikai kods, kuru es tikko nomainÄ«ju. Un tas bija dabiski turpinÄt to darÄ«t uzreiz. PrincipÄ ideja dalÄ«ties pieredzÄ ar komandu ir laba ideja. MÄs noteikti sadalÄ«sim Greenplum uzdevumus starp visiem mÅ«su nodaļas dalÄ«bniekiem.
TÄ kÄ mÄs runÄjam par junioriem, tad Å”eit ir jautÄjums. Persona nolÄma izveidot pirmo apÅemÅ”anos PostgresÄ. Kas viÅam jÄdara, lai izdarÄ«tu pirmo apÅemÅ”anos?
Å is ir interesants jautÄjums: "Kur sÄkt?" Parasti ir diezgan grÅ«ti sÄkt ar kaut ko kodolÄ. PiemÄram, Postgres ir veicamo darbu saraksts. Bet patiesÄ«bÄ Å”Ä« ir lapa par to, ko viÅi mÄÄ£inÄja izdarÄ«t, bet neizdevÄs. TÄs ir sarežģītas lietas. Un parasti ekosistÄmÄ var atrast dažas utilÄ«tas, dažus paplaÅ”inÄjumus, kurus var uzlabot, kas piesaista mazÄku kodola izstrÄdÄtÄju uzmanÄ«bu. Un attiecÄ«gi tur ir vairÄk punktu izaugsmei. ProgrammÄ Google Summer of Code katru gadu postgres kopiena izvirza daudzas dažÄdas tÄmas, kuras varÄtu risinÄt. Å ogad mums bija, manuprÄt, trÄ«s skolÄni. Viens pat rakstÄ«ja WAL-G par tÄmÄm, kas ir svarÄ«gas Yandex. Greenplum viss ir vienkÄrÅ”Äk nekÄ Postgres kopienÄ, jo Greenplum hakeri ļoti labi izturas pret pull pieprasÄ«jumiem un nekavÄjoties sÄk pÄrskatÄ«Å”anu. PlÄkstera nosÅ«tÄ«Å”ana Postgres ir dažu mÄneÅ”u jautÄjums, taÄu Greenplum ieradÄ«sies pÄc dienas un redzÄs, ko esat paveicis. Cita lieta, ka Greenplum ir jÄatrisina aktuÄlÄs problÄmas. Greenplum netiek plaÅ”i izmantots, tÄpÄc atrast savu problÄmu ir diezgan grÅ«ti. Un, pirmkÄrt, mums, protams, ir jÄatrisina problÄmas.
Avots: www.habr.com