X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Il-kontribuzzjoni ta 'Yandex għad-databases li ġejjin se tiġi riveduta.

  • IkklikkjaHouse
  • Odyssey
  • Irkupru għal punt fiż-żmien (WAL-G)
  • PostgreSQL (inklużi logerrors, Amcheck, heapcheck)
  • Greenplum

Video:

Hello dinja! Jisimni Andrey Borodin. U dak li nagħmel f'Yandex.Cloud huwa niżviluppa databases relazzjonali miftuħa fl-interessi tal-klijenti Yandex.Cloud u Yandex.Cloud.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

F'din it-taħdita, ser nitkellmu dwar l-isfidi li jiffaċċjaw databases miftuħa fuq skala kbira. Għaliex huwa importanti? Għax problemi żgħar, żgħar li, bħan-nemus, imbagħad isiru iljunfanti. Jikbru meta jkollok ħafna gruppi.

Imma dik mhix il-ħaġa prinċipali. Jiġru affarijiet inkredibbli. Affarijiet li jiġru f'każ wieħed minn miljun. U f'ambjent ta 'sħaba, trid tkun ippreparat għal dan, għaliex affarijiet inkredibbli jsiru probabbli ħafna meta xi ħaġa teżisti fuq skala kbira.

Imma! X'inhu l-vantaġġ tad-databases miftuħa? Il-fatt hu li għandek opportunità teoretika biex tittratta kwalunkwe problema. Għandek il-kodiċi tas-sors, għandek għarfien tal-ipprogrammar. Aħna ngħaqqduha u taħdem.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Liema approċċi hemm fil-ħidma fuq software open source?

  • L-aktar approċċ sempliċi huwa li tuża softwer. Jekk tuża protokolli, jekk tuża standards, jekk tuża formati, jekk tikteb mistoqsijiet f'software open source, allura diġà tappoġġjaha.
  • Int qed tagħmel l-ekosistema tagħha akbar. Inti tagħmel il-probabbiltà ta 'skoperta bikrija ta' bug akbar. Inti żżid l-affidabbiltà ta 'din is-sistema. Inti żżid id-disponibbiltà tal-iżviluppaturi fis-suq. Inti ittejjeb dan is-software. Int diġà kontributur jekk għadek kif ħadt stil u għamilt xi ħaġa hemmhekk.
  • Approċċ ieħor li jinftiehem huwa l-isponsorjar ta’ software open source. Pereżempju, il-programm magħruf Google Summer of Code, meta Google tħallas numru kbir ta 'studenti minn madwar id-dinja flus li jinftiehmu sabiex jiżviluppaw proġetti ta' softwer miftuħ li jissodisfaw ċerti rekwiżiti ta 'liċenzjar.
  • Dan huwa approċċ interessanti ħafna għaliex jippermetti li s-softwer jevolvi mingħajr ma jċaqlaq l-attenzjoni lil hinn mill-komunità. Google, bħala ġgant teknoloġiku, ma tgħidx li rridu din il-karatteristika, irridu nirranġaw dan il-bug u dan huwa fejn irridu nħaffru. Google tgħid: “Agħmel dak li tagħmel. Kompli aħdem kif kont qed taħdem u kollox ikun tajjeb.”
  • L-approċċ li jmiss għall-parteċipazzjoni f'sors miftuħ huwa l-parteċipazzjoni. Meta jkollok problema fis-softwer open source u jkun hemm żviluppaturi, l-iżviluppaturi tiegħek jibdew isolvu l-problemi. Jibdew jagħmlu l-infrastruttura tiegħek aktar effiċjenti, il-programmi tiegħek aktar mgħaġġla u aktar affidabbli.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Wieħed mill-aktar proġetti famużi Yandex fil-qasam tas-softwer open source huwa ClickHouse. Din hija database li twieldet bħala tweġiba għall-isfidi li qed jiffaċċja Yandex.Metrica.

U bħala database, saret f'sors miftuħ sabiex tinħoloq ekosistema u tiżviluppaha flimkien ma 'żviluppaturi oħra (mhux biss fi ħdan Yandex). U issa dan huwa proġett kbir li fih huma involuti ħafna kumpaniji differenti.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

F'Yandex.Cloud, ħloqna ClickHouse fuq Yandex Object Storage, jiġifieri fuq quċċata tal-ħażna tas-sħab.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Għaliex dan huwa importanti fis-sħaba? Minħabba li kwalunkwe database taħdem f'dan it-trijangolu, f'din il-piramida, f'din il-ġerarkija ta 'tipi ta' memorja. Għandek reġistri veloċi iżda żgħar u SSDs kbar iżda bil-mod irħas, hard drives u xi apparati blokk ieħor. U jekk int effiċjenti fil-quċċata tal-piramida, allura għandek database veloċi. jekk inti effiċjenti fil-qiegħ ta 'din il-piramida, allura inti għandek database skalat. U f'dan ir-rigward, iż-żieda ta 'saff ieħor minn taħt huwa approċċ loġiku biex tiżdied l-iskalabbiltà tad-database.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Kif jista’ jsir? Dan huwa punt importanti f'dan ir-rapport.

  • Nistgħu nimplimentaw ClickHouse fuq MDS. MDS hija interface ta 'ħażna interna ta' Yandex sħaba. Huwa aktar kumpless mill-protokoll S3 komuni, iżda huwa aktar adattat għal apparat ta 'blokk. Huwa aħjar għar-reġistrazzjoni tad-data. Jeħtieġ aktar programmazzjoni. Il-programmaturi se jipprogrammaw, huwa saħansitra tajjeb, huwa interessanti.
  • S3 huwa approċċ aktar komuni li jagħmel l-interface aktar sempliċi bl-ispiża ta 'inqas adattament għal ċerti tipi ta' xogħolijiet.

Naturalment, billi rridu nipprovdu funzjonalità lill-ekosistema ClickHouse kollha u nagħmlu l-kompitu li huwa meħtieġ ġewwa Yandex.Cloud, iddeċidejna li niżguraw li l-komunità ClickHouse kollha tibbenefika minnha. Implimentajna ClickHouse fuq S3, mhux ClickHouse fuq MDS. U dan huwa ħafna xogħol.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Referenzi:

https://github.com/ClickHouse/ClickHouse/pull/7946 "Saff ta' astrazzjoni tas-sistema tal-fajls"
https://github.com/ClickHouse/ClickHouse/pull/8011 "Integrazzjoni AWS SDK S3"
https://github.com/ClickHouse/ClickHouse/pull/8649 "Implimentazzjoni bażi ta' interafce IDisk għal S3"
https://github.com/ClickHouse/ClickHouse/pull/8356 "Integrazzjoni ta' magni tal-ħażna ta' zkuk b'interface IDisk"
https://github.com/ClickHouse/ClickHouse/pull/8862 "Appoġġ tal-magna tal-ġurnal għal S3 u SeekableReadBuffer"
https://github.com/ClickHouse/ClickHouse/pull/9128 "Appoġġ għall-Ħżin Stripe Log S3"
https://github.com/ClickHouse/ClickHouse/pull/9415 "Ħażna MergeTree appoġġ inizjali għal S3"
https://github.com/ClickHouse/ClickHouse/pull/9646 "MergeTree appoġġ sħiħ għal S3"
https://github.com/ClickHouse/ClickHouse/pull/10126 "Appoġġ ReplicatedMergeTree fuq S3"
https://github.com/ClickHouse/ClickHouse/pull/11134 "Żid kredenzjali default u headers tad-dwana għall-ħażna s3"
https://github.com/ClickHouse/ClickHouse/pull/10576 "S3 b'konfigurazzjoni ta' prokura dinamika"
https://github.com/ClickHouse/ClickHouse/pull/10744 "S3 b'solvent prokura"

Din hija lista ta' rikjesti għall-implimentazzjoni ta' sistema ta' fajls virtwali f'ClickHouse. Dan huwa numru kbir ta 'talbiet għall-ġibda.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Referenzi:

https://github.com/ClickHouse/ClickHouse/pull/9760 "DiskS3 hardlinks implimentazzjoni ottimali"
https://github.com/ClickHouse/ClickHouse/pull/11522 "Klijent HTTP S3 - Evita li tikkopja fluss ta' rispons fil-memorja"
https://github.com/ClickHouse/ClickHouse/pull/11561 “Evita li tikkopja fluss sħiħ ta’ rispons fil-memorja f’S3 HTTP
klijent"
https://github.com/ClickHouse/ClickHouse/pull/13076 "Kapaċità ta' cache mark u fajls indiċi għad-disk S3"
https://github.com/ClickHouse/ClickHouse/pull/13459 "Mexxi partijiet minn DiskLocal għal DiskS3 b'mod parallel"

Imma x-xogħol ma spiċċax hemm. Wara li saret il-karatteristika, kien meħtieġ xi xogħol ieħor sabiex din il-funzjonalità tiġi ottimizzata.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Referenzi:

https://github.com/ClickHouse/ClickHouse/pull/12638 "Żid l-avvenimenti SelectedRows u SelectedBytes"
https://github.com/ClickHouse/ClickHouse/pull/12464 "Żid avvenimenti ta' profiling minn talba S3 għal system.events"
https://github.com/ClickHouse/ClickHouse/pull/13028 "Żid QueryTimeMicroseconds, SelectQueryTimeMicroseconds u InsertQueryTimeMicroseconds"

U mbagħad kien meħtieġ li ssir dijanjosibbli, twaqqaf monitoraġġ u tagħmilha maniġġabbli.

U dan kollu sar sabiex il-komunità kollha, l-ekosistema kollha tal-ClickHouse, irċeviet ir-riżultat ta 'dan ix-xogħol.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Ejja ngħaddu għal databases transazzjonali, għal databases OLTP, li huma eqreb tiegħi personalment.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Din hija d-diviżjoni tal-iżvilupp tad-DBMS open source. Dawn il-ġuvini qed jagħmlu maġija fit-toroq biex itejbu d-databases miftuħa transazzjonali.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Wieħed mill-proġetti, li juża eżempju li nistgħu nitkellmu dwar kif u x'nagħmlu, huwa l-Connection Pooler f'Postgres.

Postgres hija database tal-proċess. Dan ifisser li d-database għandu jkollha l-inqas konnessjonijiet tan-netwerk possibbli li jimmaniġġjaw it-tranżazzjonijiet.

Min-naħa l-oħra, f'ambjent ta 'sħaba, sitwazzjoni tipika hija meta elf konnessjoni jaslu għal cluster wieħed f'daqqa. U l-kompitu tal-pooler tal-konnessjoni huwa li jippakkja elf konnessjoni f'numru żgħir ta 'konnessjonijiet tas-server.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Nistgħu ngħidu li l-connection pooler huwa l-operatur tat-telefon li jirranġa mill-ġdid il-bytes sabiex jilħqu b'mod effiċjenti d-database.

Sfortunatament, m'hemm l-ebda kelma Russa tajba għal pooler ta 'konnessjoni. Xi drabi tissejjaħ konnessjonijiet multiplexer. Jekk taf x'għandek issejjaħ il-pooler tal-konnessjoni, imbagħad kun żgur li tgħidli, inkun kuntent ħafna li nitkellem il-lingwa teknika Russa korretta.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

https://pgconf.ru/2017/92899

Aħna investigajna poolers ta' konnessjoni li kienu adattati għal cluster postgres amministrat. U PgBouncer kienet l-aħjar għażla għalina. Iżda ltqajna ma 'numru ta' problemi ma 'PgBouncer. Ħafna snin ilu, Volodya Borodin ta rapporti li nużaw PgBouncer, aħna nħobbu kollox, iżda hemm sfumaturi, hemm xi ħaġa fuqha x'taħdem.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

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

U ħdimna. Irranġajna l-problemi li ltqajna magħhom, patchajna lil Bouncer, u ppruvajna nimbottaw it-talbiet tal-ġibda 'l fuq. Iżda fundamentali single-threading kien diffiċli biex taħdem.

Kellna niġbru kaskati minn Bouncers patched. Meta jkollna ħafna Bouncers b'kamin wieħed, il-konnessjonijiet fuq is-saff ta 'fuq jiġu trasferiti għas-saff ta' ġewwa tal-Bouncers. Din hija sistema ġestita ħażin li hija diffiċli biex tinbena u tiskala 'l quddiem u lura.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Wasalna għall-konklużjoni li ħloqna l-pooler tal-konnessjoni tagħna stess, li jissejjaħ Odyssey. Aħna ktibnieha mill-bidu.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

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

Fl-2019, fil-konferenza PgCon, ippreżentajt dan il-pooler lill-komunità tal-iżviluppaturi. Issa għandna ftit inqas minn 2 stilla fuq GitHub, jiġifieri l-proġett huwa ħaj, il-proġett huwa popolari.

U jekk toħloq cluster Postgres f'Yandex.Cloud, allura jkun raggruppament b'Odyssey inkorporat, li jiġi kkonfigurat mill-ġdid meta tiskala l-cluster 'il quddiem jew 'il quddiem.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

X’tgħallimna minn dan il-proġett? It-tnedija ta’ proġett li jikkompeti huwa dejjem pass aggressiv, hija miżura estrema meta ngħidu li hemm problemi li mhux qed jiġu solvuti malajr biżżejjed, mhux qed jiġu solvuti fl-intervalli ta’ ħin li jaqbillna. Iżda din hija miżura effettiva.

PgBouncer beda jiżviluppa aktar malajr.

U issa dehru proġetti oħra. Per eżempju, pgagroal, li huwa żviluppat mill-iżviluppaturi Red Hat. Huma jsegwu għanijiet simili u jimplimentaw ideat simili, iżda, ovvjament, bl-ispeċifiċitajiet tagħhom stess, li huma eqreb lejn l-iżviluppaturi pgagroal.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Każ ieħor ta 'ħidma mal-komunità postgres qed terġa' lura għal punt fiż-żmien. Dan huwa l-irkupru wara falliment, dan huwa l-irkupru minn backup.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Hemm ħafna backups u huma kollha differenti. Kważi kull bejjiegħ Postgres għandu s-soluzzjoni ta 'backup tiegħu stess.

Jekk tieħu s-sistemi kollha ta 'backup, toħloq matriċi ta' karatteristiċi u tikkalkula b'ċajt id-determinant f'din il-matriċi, ikun żero. Xi jfisser dan? X'jiġri jekk tieħu fajl backup speċifiku, allura ma jistax jiġi mmuntat minn biċċiet ta 'l-oħrajn kollha. Huwa uniku fl-implimentazzjoni tiegħu, huwa uniku fl-iskop tiegħu, huwa uniku fl-ideat li huma inkorporati fih. U huma kollha speċifiċi.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

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

Waqt li konna naħdmu fuq din il-kwistjoni, CitusData nieda l-proġett WAL-G. Din hija sistema ta 'backup li saret b'għajnejha għall-ambjent tas-sħab. Issa CitusData diġà hija parti minn Microsoft. U f'dak il-mument, għoġbuna ħafna l-ideat li ġew stabbiliti fir-rilaxxi inizjali ta 'WAL-G. U bdejna nikkontribwixxu għal dan il-proġett.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

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

Issa hemm ħafna għexieren ta 'żviluppaturi f'dan il-proġett, iżda l-aqwa 10 kontributuri għal WAL-G jinkludu 6 Yandexoids. Ġibna ħafna mill-ideat tagħna hemmhekk. U, ovvjament, implimentajnahom nfusna, ttestjajnahom nfusna, irromblawhom fil-produzzjoni nfusna, nużawhom nfusna, aħna stess insemmu fejn nimxu wara, filwaqt li interazzjoni mal-komunità kbira WAL-G.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

U mill-perspettiva tagħna, issa din is-sistema ta 'backup, inkluż meta jitqiesu l-isforzi tagħna, saret l-aħjar għal ambjent ta' sħab. Din hija l-aħjar spiża biex tagħmel backup ta' Postgres fil-cloud.

Xi tfisser? Konna qed nippromwovu idea pjuttost kbira: il-backup għandu jkun sigur, irħis biex jopera u malajr kemm jista' jkun biex jiġi restawrat.

Għaliex għandu jkun irħis biex topera? Meta xejn ma jitkisser, m'għandekx tkun taf li għandek backups. Kollox jaħdem tajjeb, taħli l-inqas CPU possibbli, tuża l-inqas mir-riżorsi tad-disk tiegħek kemm jista 'jkun, u tibgħat l-inqas bytes possibbli lin-netwerk sabiex ma tfixkilx it-tagħbija tas-servizzi siewja tiegħek.

U meta kollox jinkiser, pereżempju, l-amministratur waqqa 'd-dejta, xi ħaġa marret ħażin, u għandek bżonn urġenti li tmur lura għall-passat, tirkupra bil-flus kollha, għax trid id-dejta tiegħek lura malajr u intatta.

U ippromwovejna din l-idea sempliċi. U, jidhirna, irnexxielna nimplimentah.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Imma dan mhux kollox. Ridna ħaġa oħra żgħira. Ridna ħafna databases differenti. Mhux il-klijenti tagħna kollha jużaw Postgres. Xi nies jużaw MySQL, MongoDB. Fil-komunità, żviluppaturi oħra appoġġaw FoundationDB. U din il-lista qed tespandi kontinwament.

Il-komunità tħobb l-idea li d-database titmexxa f'ambjent ġestit fil-cloud. U l-iżviluppaturi jżommu d-databases tagħhom, li jistgħu jiġu appoġġjati b'mod uniformi flimkien ma 'Postgres bis-sistema ta' backup tagħna.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

X’tgħallimna minn din l-istorja? Il-prodott tagħna, bħala diviżjoni ta 'żvilupp, mhuwiex linji ta' kodiċi, mhuwiex dikjarazzjonijiet, mhuwiex fajls. Il-prodott tagħna mhuwiex talbiet tal-ġibda. Dawn huma l-ideat li nwasslu lill-komunità. Din hija kompetenza teknoloġika u ċ-ċaqliq tat-teknoloġija lejn ambjent cloud.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Hemm database bħal Postgres. Inħobb il-qalba ta' Postgres l-aktar. Jiena nqatta 'ħafna ħin niżviluppa l-qalba ta' Postgres mal-komunità.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Iżda hawnhekk għandu jingħad li Yandex.Cloud għandu installazzjoni interna ta 'databases ġestiti. U beda żmien twil ilu f'Yandex.Mail. Il-kompetenza li issa wasslet għall-immaniġġjat Postgres ġiet akkumulata meta l-posta riedet tidħol f'Postgres.

Il-posta għandha rekwiżiti simili ħafna għall-cloud. Jeħtieġ li inti tkun tista 'skala għal tkabbir esponenzjali mhux mistenni fi kwalunkwe punt fid-dejta tiegħek. U l-posta diġà kellha tagħbija b'xi mijiet ta 'miljuni ta' kaxxi tal-posta ta 'numru kbir ta' utenti li kontinwament jagħmlu ħafna talbiet.

U din kienet sfida pjuttost serja għat-tim li kien qed jiżviluppa lil Postgres. Dakinhar, kwalunkwe problemi li ltqajna magħhom ġew irrappurtati lill-komunità. U dawn il-problemi ġew ikkoreġuti, u kkoreġuti mill-komunità f'xi postijiet anke fil-livell ta 'appoġġ imħallas għal xi databases oħra u saħansitra aħjar. Jiġifieri, tista 'tibgħat ittra lill-hacker PgSQL u tirċievi tweġiba fi żmien 40 minuta. Appoġġ imħallas f'xi databases jista 'jaħseb li hemm aktar affarijiet ta' prijorità mill-bug tiegħek.

Issa l-installazzjoni interna ta 'Postgres hija xi petabytes ta' data. Dawn huma xi miljuni ta' talbiet kull sekonda. Dawn huma eluf ta 'clusters. Huwa fuq skala kbira ħafna.

Iżda hemm sfumatura. Tgħix mhux fuq drives tan-netwerk fancy, iżda fuq ħardwer pjuttost sempliċi. U hemm ambjent tat-test speċifikament għal affarijiet ġodda interessanti.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

U f'ċertu mument fl-ambjent tat-test irċevejna messaġġ li jindika li l-invarjanti interni tal-indiċi tad-database ġew miksura.

Invarjant huwa xi tip ta’ relazzjoni li nistennew li nżommu dejjem.

Sitwazzjoni kritika ħafna għalina. Tindika li xi dejta setgħet intilfet. U t-telf tad-data huwa xi ħaġa detta katastrofika.

L-idea ġenerali li nsegwu f'databases ġestiti hija li anke bi sforz, se jkun diffiċli li titlef id-data. Anke jekk tneħħihom deliberatament, xorta jkollok bżonn tinjora n-nuqqas tagħhom għal perjodu twil ta 'żmien. Is-sigurtà tad-dejta hija reliġjon li nsegwu b'mod pjuttost diliġenti.

U hawn tqum sitwazzjoni li tissuġġerixxi li jista’ jkun hemm sitwazzjoni li forsi ma nkunux ippreparati għaliha. U bdejna nippreparaw għal din is-sitwazzjoni.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

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

L-ewwel ħaġa li għamilna kienet midfuna z-zkuk minn dawn l-eluf ta 'clusters. Sibna liema mill-clusters kienu jinsabu fuq diski b'firmware problematiku li kienu qed jitilfu l-aġġornamenti tal-paġna tad-dejta. Immarkat il-kodiċi tad-dejta Postgres kollu. U aħna mmarkajna dawk il-messaġġi li jindikaw ksur ta 'invariants interni b'kodiċi li huwa ddisinjat biex jiskopri korruzzjoni tad-dejta.

Din il-garża kienet prattikament aċċettata mill-komunità mingħajr ħafna diskussjoni, għax f'kull każ speċifiku kien ovvju li kienet ġrat xi ħaġa ħażina u kellha tiġi rrappurtata lill-log.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Wara dan, wasalna sal-punt li għandna monitoraġġ li jiskenja zkuk. U f’każ ta’ messaġġi suspettużi, iqajjem lill-uffiċjal tad-dmir, u l-uffiċjal tad-dmir isewwih.

Imma! L-iskannjar taz-zkuk hija operazzjoni irħisa fuq cluster wieħed u tiswa katastrofikament għal elf cluster.

Aħna ktibna estensjoni msejħa Żbalji fil-log. Joħloq ħarsa tad-database li fiha tista' tagħżel b'mod irħis u malajr statistika dwar żbalji tal-passat. U jekk irridu nqumu lill-uffiċjal tad-dmir, allura nsiru nafu dwar dan mingħajr ma niskennjaw fajls gigabyte, iżda billi nieħdu ftit bytes mit-tabella tal-hash.

Din l-estensjoni ġiet adottata, pereżempju, fir-repożitorju għal CentOS. Jekk trid tużaha, tista 'tinstallaha lilek innifsek. Naturalment huwa sors miftuħ.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

https://www.postgresql.org/message-id/flat/[protett bl-email]

Imma dan mhux kollox. Bdejna nużaw Amcheck, estensjoni mibnija mill-komunità, biex insibu vjolazzjonijiet invarjanti fl-indiċi.

U sirna nafu li jekk tħaddem fuq skala, hemm bugs. Bdejna nirranġawhom. Il-korrezzjonijiet tagħna ġew aċċettati.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

https://www.postgresql.org/message-id/flat/[protett bl-email]

Skoprejna li din l-estensjoni ma tistax tanalizza l-indiċi GiST & GIT. Għamilnihom appoġġ. Iżda dan l-appoġġ għadu qed jiġi diskuss mill-komunità, għaliex din hija funzjonalità relattivament ġdida u hemm ħafna dettalji hemmhekk.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

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

U skoprejna wkoll li meta niċċekkjaw l-indiċi għal vjolazzjonijiet fuq il-mexxej tar-replikazzjoni, fuq il-kaptan, kollox jaħdem tajjeb, iżda fuq ir-repliki, fuq is-segwaċi, it-tfittxija għall-korruzzjoni mhix daqshekk effettiva. Mhux l-invarjanti kollha huma kkontrollati. U wieħed invarjant iddejjaqna ħafna. U qattajna sena u nofs nikkomunikaw mal-komunità sabiex nippermettu dan il-kontroll fuq repliki.

Aħna ktibna kodiċi li għandu jsegwi l-can... protokolli. Iddiskutejna din il-garża għal żmien mhux ħażin ma 'Peter Gaghan minn Crunchy Data. Huwa kellu jimmodifika ftit is-siġra B eżistenti f'Postgres sabiex jaċċetta din il-garża. Huwa ġie aċċettat. U issa l-iċċekkjar ta 'indiċi fuq repliki sar ukoll effettiv biżżejjed biex jiskopri l-vjolazzjonijiet li ltqajna magħhom. Jiġifieri, dawn huma l-vjolazzjonijiet li jistgħu jiġu kkawżati minn żbalji fil-firmware tad-disk, bugs f'Postgres, bugs fil-kernel Linux, u problemi ta 'hardware. Lista pjuttost estensiva ta 'sorsi ta' problemi li konna qed nippreparaw għalihom.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

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

Iżda minbarra l-indiċi, hemm parti bħal borġ, jiġifieri l-post fejn tinħażen id-dejta. U m'hemmx ħafna invarjanti li jistgħu jiġu kkontrollati.

Għandna estensjoni msejħa Heapcheck. Bdejna niżviluppawha. U b'mod parallel, flimkien magħna, il-kumpanija EnterpriseDB bdiet tikteb ukoll modulu, li sejħu Heapcheck bl-istess mod. Biss aħna sejħulha PgHeapcheck, u huma biss sejħuha Heapcheck. Huma għandhom b'funzjonijiet simili, firma kemmxejn differenti, iżda bl-istess ideat. Implimentawhom ftit aħjar f'xi postijiet. U poġġewha f'sors miftuħ qabel.

U issa qed niżviluppaw l-espansjoni tagħhom, għax m'għadhiex l-espansjoni tagħhom, iżda l-espansjoni tal-komunità. U fil-futur, din hija parti mill-qalba li se tkun fornuta lil kulħadd sabiex ikunu jistgħu jkunu jafu dwar problemi futuri minn qabel.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

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

F'xi postijiet, wasalna anke għall-konklużjoni li għandna pożittivi foloz fis-sistemi ta 'monitoraġġ tagħna. Per eżempju, is-sistema 1C. Meta tuża database, Postgres kultant jikteb dejta fiha li jista 'jaqra, iżda pg_dump ma jistax jaqra.

Din is-sitwazzjoni dehret korruzzjoni għas-sistema tagħna ta’ skoperta tal-problemi. L-uffiċjal tad-dmir tqajjem. L-uffiċjal tal-kariga ħares lejn dak li kien qed jiġri. Wara xi żmien, ġie klijent u qal li kelli problemi. L-attendenti spjega x’kienet il-problema. Iżda l-problema tinsab fil-qalba ta 'Postgres.

Sibt diskussjoni dwar din il-karatteristika. U kiteb li ltqajna ma 'din il-karatteristika u ma kienx pjaċevoli, persuna qamet bil-lejl sabiex insemmu x'kienet.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

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

Il-komunità wieġbet, "Oh, irridu verament nirranġawha."

Għandi analoġija sempliċi. Jekk qed timxi f'żarbun li fih qamħa ta 'ramel, allura, fil-prinċipju, tista' timxi fuq - l-ebda problema. Jekk tbigħ stivali lil eluf ta 'nies, allura ejja nagħmlu stivali mingħajr ramel xejn. U jekk wieħed mill-utenti taż-żraben tiegħek se jmexxi maratona, allura trid tagħmel żraben tajbin ħafna, u mbagħad iskalahom għall-utenti kollha tiegħek. U utenti mhux mistennija bħal dawn huma dejjem fl-ambjent tas-sħab. Dejjem hemm utenti li jisfruttaw il-cluster b'xi mod oriġinali. Int trid dejjem tipprepara għal dan.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

X’tgħallimna hawn? Tgħallimna ħaġa sempliċi: l-aktar ħaġa importanti hija li nispjegaw lill-komunità li hemm problema. Jekk il-komunità għarfet il-problema, allura tqum kompetizzjoni naturali biex issolvi l-problema. Għax kulħadd irid isolvi problema importanti. Il-bejjiegħa kollha, il-hackers kollha jifhmu li huma stess jistgħu jimxu fuq dan ir-rake, u għalhekk iridu jeliminawhom.

Jekk qed taħdem fuq problema, iżda ma jolqot lil ħadd ħliefek, imma taħdem fuqha sistematikament u fl-aħħar mill-aħħar titqies bħala problema, allura t-talba tal-ġibda tiegħek definittivament tiġi aċċettata. Il-garża tiegħek tiġi aċċettata, it-titjib tiegħek jew saħansitra t-talbiet għal titjib se jiġu riveduti mill-komunità. Fl-aħħar tal-ġurnata, nagħmlu d-database aħjar għal xulxin.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Database interessanti hija Greenplum. Hija database parallela ħafna bbażata fuq il-codebase Postgres, li jien familjari ħafna magħha.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

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

U Greenplum għandha funzjonalità interessanti - tehmeż tabelli ottimizzati. Dawn huma tabelli li tista 'żżid malajr magħhom. Jistgħu jkunu jew kolonni jew ringiela.

Iżda ma kien hemm l-ebda clustering, jiġifieri ma kien hemm l-ebda funzjonalità fejn tista 'tirranġa d-dejta li tinsab fit-tabella skont l-ordni li tkun f'wieħed mill-indiċi.

Il-ġuvini tat-taxi ġew għandi u qalu: “Andrey, taf lil Postgres. U hawn huwa kważi l-istess. Aqleb għal 20 minuta. Teħodha u tagħmilha.” Ħsibt li iva, naf lil Postgres, naqleb għal 20 minuta - għandi bżonn nagħmel dan.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

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

Imma le, ma kinux 20 minuta, ktibtha fuq xhur. Fil-konferenza PgConf.Russia, avviċinat lil Heikki Linakangas minn Pivotal u staqsejt: “Hemm xi problemi b’dan? Għaliex m'hemm l-ebda raggruppament ta' tabella ottimizzat għall-append?" Jgħid: “Int tieħu d-dejta. Issortja, tirranġa mill-ġdid. Huwa biss xogħol." Jien: "Oh, iva, trid biss teħodha u tagħmilha." Hu jgħid: “Iva, għandna bżonn idejn ħielsa biex nagħmlu dan.” Ħsibt li żgur għandi bżonn nagħmel dan.

U ftit xhur wara ssottomettejt pull request li implimentat din il-funzjonalità. Din it-talba tal-ġibda ġiet riveduta minn Pivotal flimkien mal-komunità. Naturalment, kien hemm bugs.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

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

Iżda l-aktar ħaġa interessanti hija li meta din it-talba tal-ġibda ġiet magħquda, instabu bugs fi Greenplum innifsu. Sibna li l-heap tables kultant ikissru t-transazzjonalità meta jkunu miġbura. U din hija ħaġa li trid tiġi ffissata. U hi fil-post li għadni kemm missejt. U r-reazzjoni naturali tiegħi kienet - okay, ħallini nagħmel dan ukoll.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

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

Irranġajt dan il-bug. Bagħtet talba tal-ġibda lill-fixers. Inqatel.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

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

Wara dan irriżulta li din il-funzjonalità jeħtieġ li tinkiseb fil-verżjoni Greenplum għal PostgreSQL 12. Jiġifieri, l-avventura ta '20 minuta tkompli b'avventuri interessanti ġodda. Kien interessanti li tmiss l-iżvilupp attwali, fejn il-komunità qed taqta karatteristiċi ġodda u l-aktar importanti. Huwa ffriżat.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

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

Imma ma spiċċatx hemm. Wara kollox, irriżulta li kellna bżonn niktbu dokumentazzjoni għal dan kollu.

Bdejt nikteb dokumentazzjoni. Fortunatament, ġew flimkien id-dokumentarji minn Pivotal. L-Ingliż huwa l-lingwa nattiva tagħhom. Huma għenuni bid-dokumentazzjoni. Fil-fatt, huma stess kitbu mill-ġdid dak li pproponejt bl-Ingliż reali.

U hawn, jidher, intemmet l-avventura. U taf x’ġara allura? Il-ġuvini tat-taxi ġew għandi u qalu: "Għad hemm żewġ avventuri, kull waħda għal 10 minuti." U x’għandi ngħidilhom? Għidt li issa nagħti rapport fuq skala, imbagħad naraw l-avventuri tiegħek, għax dan huwa xogħol interessanti.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

X’tgħallimna minn dan il-każ? Minħabba li taħdem ma 'sors miftuħ dejjem taħdem ma' persuna speċifika, dejjem qed taħdem mal-komunità. Għax f’kull stadju ħdimt ma’ xi żviluppatur, xi tester, xi hacker, xi dokumentarju, xi perit. Ma ħdimtx ma’ Greenplum, ħdimt ma’ nies madwar Greenplum.

Imma! Hemm punt importanti ieħor - huwa biss xogħol. Jiġifieri tiġi, tixrob il-kafè, tikteb il-kodiċi. Kull xorta ta 'invariants sempliċi jaħdmu. Agħmel dan b'mod normali - ikun tajjeb! U huwa xogħol pjuttost interessanti. Hemm talba għal dan ix-xogħol mill-klijenti Yandex.Cloud, utenti tal-clusters tagħna kemm ġewwa Yandex kif ukoll barra. U naħseb li se jiżdiedu n-numru ta’ proġetti li nieħdu sehem fihom u se jiżdied ukoll il-profondità tal-involviment tagħna.

Dak kollox. Ejja ngħaddu għall-mistoqsijiet.

X'inhu u għaliex nagħmlu fid-databases Open Source. Andrey Borodin (Yandex.Cloud)

Sessjoni tal-mistoqsijiet

Bongu! Għandna sessjoni oħra ta' mistoqsijiet u tweġibiet. U fl-istudjo Andrei Borodin. Din hija l-persuna li għadha kif qallek dwar il-kontribuzzjoni ta 'Yandex.Cloud u Yandex għal sors miftuħ. Ir-rapport tagħna issa mhuwiex għal kollox dwar il-Cloud, iżda fl-istess ħin aħna bbażati fuq teknoloġiji bħal dawn. Mingħajr dak li għamilt ġewwa Yandex, ma jkun hemm l-ebda servizz f'Yandex.Cloud, għalhekk nirringrazzjak minni personalment. U l-ewwel mistoqsija mix-xandira: “X’inhu miktub fuq kull wieħed mill-proġetti li semmejt?”

Is-sistema tal-backup f'WAL-G hija miktuba f'Go. Dan huwa wieħed mill-proġetti l-aktar ġodda li ħdimna fuqhom. Huwa litteralment għandu biss 3 snin. U database ħafna drabi hija dwar l-affidabbiltà. U dan ifisser li d-databases huma pjuttost antiki u ġeneralment jinkitbu b'Ċ. Il-proġett Postgres beda madwar 30 sena ilu. Imbagħad is-C89 kienet l-għażla t-tajba. U Postgres huwa miktub fuqha. Databases aktar moderni bħal ClickHouse huma ġeneralment miktuba f'C++. L-iżvilupp tas-sistema kollu huwa bbażat madwar C u C++.

Mistoqsija mill-maniġer finanzjarju tagħna, li huwa responsabbli għall-ispejjeż fil-Cloud: "Għaliex Cloud tonfoq il-flus biex jappoġġja sors miftuħ?"

Hemm tweġiba sempliċi għall-maniġer finanzjarju hawn. Aħna nagħmlu dan biex is-servizzi tagħna jkunu aħjar. B’liema modi nistgħu nagħmlu aħjar? Nistgħu nagħmlu l-affarijiet b'mod aktar effiċjenti, aktar malajr, u nagħmlu l-affarijiet aktar skalabbli. Iżda għalina, din l-istorja hija primarjament dwar l-affidabbiltà. Pereżempju, f'sistema ta 'backup nirrevedu 100% tal-garżi li japplikaw għaliha. Nafu x'inhu l-kodiċi. U aħna aktar komdi rolling out verżjonijiet ġodda għall-produzzjoni. Jiġifieri, l-ewwel nett, huwa dwar il-kunfidenza, dwar ir-rieda għall-iżvilupp u dwar l-affidabbiltà

Mistoqsija oħra: "Ir-rekwiżiti ta 'utenti esterni li jgħixu f'Yandex.Cloud huma differenti minn utenti interni li jgħixu fil-Cloud intern?"

Il-profil tat-tagħbija huwa, ovvjament, differenti. Iżda mil-lat tad-dipartiment tiegħi, il-każijiet speċjali u interessanti kollha huma maħluqa fuq tagħbija mhux standard. L-iżviluppaturi bl-immaġinazzjoni, l-iżviluppaturi li jagħmlu dak mhux mistenni, x'aktarx li jinstabu kemm internament kif ukoll esternament. F'dan ir-rigward, aħna lkoll bejn wieħed u ieħor l-istess. U, probabbilment, l-unika karatteristika importanti ġewwa l-operazzjoni Yandex tad-databases se tkun li ġewwa Yandex għandna tagħlim. F'xi punt, xi żona ta 'disponibbiltà tidħol kompletament fid-dell, u s-servizzi kollha ta' Yandex għandhom b'xi mod ikomplu jiffunzjonaw minkejja dan. Din hija differenza żgħira. Iżda toħloq ħafna żvilupp ta 'riċerka fl-interface tad-database u l-munzell tan-netwerk. Inkella, installazzjonijiet esterni u interni jiġġeneraw l-istess talbiet għal karatteristiċi u talbiet simili għat-titjib tal-affidabbiltà u l-prestazzjoni.

Mistoqsija li jmiss: "Kif tħossok personalment dwar il-fatt li ħafna minn dak li tagħmel jintuża minn Clouds oħra?" Mhux se nsemmu dawk speċifiċi, iżda ħafna proġetti li saru f'Yandex.Cloud jintużaw fi sħab ta 'nies oħra.

Dan jibred. L-ewwel, huwa sinjal li għamilna xi ħaġa sew. U tobrox l-ego. U aħna aktar kunfidenti li ħadna d-deċiżjoni t-tajba. Min-naħa l-oħra, din hija t-tama li fil-futur dan iġibilna ideat ġodda, talbiet ġodda minn utenti terzi. Ħafna mill-kwistjonijiet fuq GitHub huma maħluqa minn amministraturi tas-sistema individwali, DBAs individwali, periti individwali, inġiniera individwali, iżda kultant nies b'esperjenza sistematika jiġu u jgħidu li fi 30% ta 'ċerti każijiet għandna din il-problema u ejja naħsbu dwar kif insolvuha. Dan huwa dak li qed nistennew bil-ħerqa. Nistennew bil-ħerqa li naqsmu esperjenzi ma' pjattaformi oħra tal-cloud.

Tkellimt ħafna dwar il-maratona. Naf li għamilt maratona f'Moska. B'riżultat ta 'dan? Qabeż lill-guys minn PostgreSQL?

Le, Oleg Bartunov imexxi malajr ħafna. Huwa spiċċa siegħa qabel lili. B'mod ġenerali, jien kuntent b'kemm wasalt. Għalija, il-finitura biss kienet kisba. B'mod ġenerali, huwa sorprendenti li hemm tant runners fil-komunità postgres. Jidhirli li hemm xi tip ta 'relazzjoni bejn l-isport aerobiku u x-xewqa għall-ipprogrammar tas-sistemi.

Qed tgħid li m'hemmx runners fi ClickHouse?

Naf żgur li qegħdin hemm. ClickHouse hija wkoll database. Mill-mod, Oleg issa qed jikteb lili: "Għandna mmorru niġri wara r-rapport?" Din hija idea kbira.

Mistoqsija oħra mix-xandira minn Nikita: "Għaliex irranġajt il-bug f'Greenplum lilek innifsek u ma tajtuhx lil juniors?" Veru, mhuwiex ċar ħafna x'inhu l-bug u f'liema servizz, iżda probabbilment ifisser dak li tkellimt dwaru.

Iva, fil-prinċipju, setgħet ingħatat lil xi ħadd. Kien biss il-kodiċi li għadni kemm biddilt. U kien naturali li tkompli tagħmel dan mill-ewwel. Fil-prinċipju, l-idea li taqsam il-kompetenza mat-tim hija idea tajba. Żgur se naqsmu l-kompiti ta' Greenplum fost il-membri kollha tad-diviżjoni tagħna.

Peress li qed nitkellmu fuq juniors, hawn mistoqsija. Il-persuna ddeċidiet li toħloq l-ewwel impenn f'Postgres. X'għandu jagħmel biex jagħmel l-ewwel impenn?

Din hija mistoqsija interessanti: "Minn tibda?" Normalment huwa pjuttost diffiċli li tibda b'xi ħaġa fil-qalba. F'Postgres, pereżempju, hemm lista ta' affarijiet. Iżda fil-fatt, din hija karta ta 'dak li ppruvaw jagħmlu, iżda ma rnexxilhomx. Dawn huma affarijiet ikkumplikati. U normalment tista 'ssib xi utilitajiet fl-ekosistema, xi estensjonijiet li jistgħu jittejbu, li jiġbdu inqas attenzjoni mill-iżviluppaturi tal-qalba. U, għalhekk, hemm aktar punti għat-tkabbir hemmhekk. Fil-programm Google Summer of code, kull sena l-komunità postgres tressaq ħafna suġġetti differenti li jistgħu jiġu indirizzati. Din is-sena kellna, naħseb, tliet studenti. Wieħed saħansitra kiteb f'WAL-G dwar suġġetti li huma importanti għal Yandex. F'Greenplum, kollox huwa aktar sempliċi milli fil-komunità Postgres, minħabba li l-hackers Greenplum jittrattaw it-talbiet tal-ġibda tajjeb ħafna u jibdew jirrevedu mill-ewwel. Li tibgħat garża lil Postgres hija kwistjoni ta 'xhur, iżda Greenplum se tidħol f'ġurnata u tara x'għamilt. Ħaġa oħra hija li Greenplum jeħtieġ li ssolvi l-problemi attwali. Greenplum mhuwiex użat ħafna, għalhekk li ssib il-problema tiegħek hija pjuttost diffiċli. U l-ewwelnett, irridu nsolvu l-problemi, ovvjament.

Sors: www.habr.com