Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

Š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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

Vietnē Yandex.Cloud mēs izveidojām ClickHouse virs Yandex Object Storage, t.i., virs mākoņa krātuves.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

Saites:

https://github.com/ClickHouse/ClickHouse/pull/7946 "Failu sistēmas abstrakcijas slānis"
https://github.com/ClickHouse/ClickHouse/pull/8011 "AWS SDK S3 integrācija"
https://github.com/ClickHouse/ClickHouse/pull/8649 ā€œIDisk interfeisa bāzes ievieÅ”ana S3ā€
https://github.com/ClickHouse/ClickHouse/pull/8356 "Žurnālu uzglabāŔanas dzinēju integrācija ar IDisk interfeisu"
https://github.com/ClickHouse/ClickHouse/pull/8862 "Žurnāla dzinēja atbalsts S3 un SeekableReadBuffer"
https://github.com/ClickHouse/ClickHouse/pull/9128 "Storage Stripe Log S3 atbalsts"
https://github.com/ClickHouse/ClickHouse/pull/9415 "Storage MergeTree sākotnējais atbalsts S3"
https://github.com/ClickHouse/ClickHouse/pull/9646 "MergeTree pilnīgs S3 atbalsts"
https://github.com/ClickHouse/ClickHouse/pull/10126 "Atbalstiet ReplicatedMergeTree, izmantojot S3"
https://github.com/ClickHouse/ClickHouse/pull/11134 ā€œPievienot noklusējuma akreditācijas datus un pielāgotas galvenes s3 krātuveiā€
https://github.com/ClickHouse/ClickHouse/pull/10576 "S3 ar dinamisku starpniekservera konfigurāciju"
https://github.com/ClickHouse/ClickHouse/pull/10744 "S3 ar starpniekservera atrisinātāju"

Å is ir ievilkÅ”anas pieprasÄ«jumu saraksts virtuālās failu sistēmas ievieÅ”anai ClickHouse. Tas ir liels skaits izvilkÅ”anas pieprasÄ«jumu.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

Saites:

https://github.com/ClickHouse/ClickHouse/pull/9760 "DiskS3 cieto saiŔu optimāla ievieŔana"
https://github.com/ClickHouse/ClickHouse/pull/11522 "S3 HTTP klients ā€” izvairieties no atbildes straumes kopÄ“Å”anas atmiņā"
https://github.com/ClickHouse/ClickHouse/pull/11561 ā€œIzvairieties no visas atbildes straumes kopÄ“Å”anas S3 HTTP atmiņā
klients"
https://github.com/ClickHouse/ClickHouse/pull/13076 ā€œSpēja saglabāt keÅ”atmiņu un indeksēt failus S3 diskāā€
https://github.com/ClickHouse/ClickHouse/pull/13459 "Paralēli pārvietot daļas no DiskLocal uz DiskS3"

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

Saites:

https://github.com/ClickHouse/ClickHouse/pull/12638 "Pievienot SelectedRows un SelectedBytes notikumus"
https://github.com/ClickHouse/ClickHouse/pull/12464 "Pievienot profilēŔanas notikumus no S3 pieprasījuma uz system.events"
https://github.com/ClickHouse/ClickHouse/pull/13028 "Pievienot QueryTimeMicroseconds, SelectQueryTimeMicroseconds un InsertQueryTimeMicroseconds"

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

Pāriesim pie darījumu datu bāzēm, pie OLTP datu bāzēm, kas man personīgi ir tuvākas.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

Å Ä« 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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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ā.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://pgconf.ru/2017/92899

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://pgconf.ru/media/2017/04/03/20170316H1_V.Borodin.pdf

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ļ.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://www.pgcon.org/2019/schedule/events/1312.en.html

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 un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://www.citusdata.com/blog/2017/08/18/introducing-wal-g-faster-restores-for-postgres/

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ā.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://github.com/wal-g/wal-g/graphs/contributors

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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 un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://commitfest.postgresql.org/23/2171/

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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 Logerrors. Tas rada datu bāzes skatu, kurā varat lēti un ātri atlasÄ«t statistiku par pagātnes kļūdām. Un, ja mums vajadzēs pamodināt dežurantu, tad mēs to uzzināsim, neskenējot gigabaitu failus, bet gan izvelkot dažus baitus no hash tabulas.

Å is paplaÅ”inājums ir pieņemts, piemēram, repozitorijā for CentOS. Ja vēlaties to izmantot, varat to instalēt pats. Protams, tas ir atvērtā koda avots.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://www.postgresql.org/message-id/flat/[e-pasts aizsargāts]

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://www.postgresql.org/message-id/flat/[e-pasts aizsargāts]

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://commitfest.postgresql.org/29/2667/

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://www.postgresql.org/message-id/flat/38AF687F-8F6B-48B4-AB9E-A60CFD6CC261%40enterprisedb.com#0e86a12c01d967bac04a9bf83cd337cb

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://www.postgresql.org/message-id/flat/fe9b3722df94f7bdb08768f50ee8fe59%40postgrespro.ru

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://www.postgresql.org/message-id/flat/fe9b3722df94f7bdb08768f50ee8fe59%40postgrespro.ru

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 un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://greenplum.org/greenplum-database-tables-compression/

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://github.com/greenplum-db/gpdb/commit/179feb77a034c2547021d675082aae0911be40f7

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://github.com/greenplum-db/gpdb/issues/10150

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://github.com/greenplum-db/gpdb/pull/10290

Es izlaboju Å”o kļūdu. NosÅ«tÄ«ja izvilkÅ”anas pieprasÄ«jumu fiksētājiem. Viņu nogalināja.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://github.com/greenplum-db/gpdb-postgres-merge/pull/53

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

https://github.com/greenplum-db/gpdb/pull/10565

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 un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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.

Ko un kāpēc mēs darām atvērtā pirmkoda datu bāzēs. Andrejs Borodins (Yandex.Cloud)

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