Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Dem Yandex säi Bäitrag zu den folgenden Datenbanken gëtt iwwerpréift.

  • clickhouse
  • Odyssee fonnt
  • Erhuelung zu engem Zäitpunkt (WAL-G)
  • PostgreSQL (inklusive Logerrors, Amcheck, Heapcheck)
  • Greenplum

Video:

Moien Welt! Mäin Numm ass Andrey Borodin. A wat ech bei Yandex.Cloud maachen ass oppe relational Datenbanken am Interesse vun Yandex.Cloud an Yandex.Cloud Clienten z'entwéckelen.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

An dësem Gespréich schwätze mir iwwer d'Erausfuerderunge mat oppenen Datenbanken op Skala. Firwat ass et wichteg? Well kleng, kleng Problemer, déi, wéi Moustiquen, dann zu Elefanten ginn. Si gi grouss wann Dir vill Cluster hutt.

Mee dat ass net den Haapt Saach. Onheemlech Saachen geschéien. Saachen déi an engem an enger Millioun Fäll geschéien. An an engem Wollekenëmfeld musst Dir op dat virbereet sinn, well onheemlech Saache ginn héich wahrscheinlech wann eppes op Skala existéiert.

Awer! Wat ass de Virdeel vun oppenen Datenbanken? D'Tatsaach ass, datt Dir eng theoretesch Méiglechkeet hunn all Problem ze këmmeren. Dir hutt de Quellcode, Dir hutt programméiere Wëssen. Mir kombinéieren et an et funktionnéiert.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Wéi eng Approche ginn et fir un der Open Source Software ze schaffen?

  • Déi einfachst Approche ass Software ze benotzen. Wann Dir Protokoller benotzt, wann Dir Standards benotzt, wann Dir Formater benotzt, wann Dir Ufroen an Open Source Software schreift, da ënnerstëtzt Dir et schonn.
  • Dir maacht säin Ökosystem méi grouss. Dir maacht d'Wahrscheinlechkeet fir fréi Erkennung vun engem Käfer méi grouss. Dir erhéicht d'Zouverlässegkeet vun dësem System. Dir erhéicht d'Disponibilitéit vun Entwéckler um Maart. Dir verbessert dës Software. Dir sidd schonn e Contributeur, wann Dir just fäerdeg bruecht hutt Stil ze kréien an do eppes matzemaachen.
  • Eng aner verständlech Approche ass Sponsoring Open Source Software. Zum Beispill de bekannte Google Summer of Code Programm, wann Google eng grouss Zuel vu Studenten aus der ganzer Welt verständlech Sue bezilt, fir datt se oppe Softwareprojeten entwéckelen, déi bestëmmte Lizenzfuerderunge erfëllen.
  • Dëst ass eng ganz interessant Approche well et erlaabt d'Software sech z'entwéckelen ouni de Fokus vun der Gemeinschaft ewech ze verschwannen. Google, als Technologie Riese, seet net datt mir dës Feature wëllen, mir wëllen dëse Feeler fixéieren an dat ass wou mir musse graven. Google seet: "Maacht wat Dir maacht. Fuert just weider wéi Dir geschafft hutt an alles wäert gutt sinn.
  • Déi nächst Approche fir un der Open Source deelzehuelen ass d'Participatioun. Wann Dir e Problem an der Open Source Software hutt an et sinn Entwéckler, fänken Är Entwéckler d'Problemer ze léisen. Si fänken un Är Infrastruktur méi effizient ze maachen, Är Programmer méi séier a méi zouverlässeg.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Ee vun de bekanntste Yandex Projeten am Beräich vun der Open Source Software ass ClickHouse. Dëst ass eng Datebank déi als Äntwert op d'Erausfuerderunge vun Yandex.Metrica gebuer gouf.

An als Datebank gouf et an Open Source gemaach fir en Ökosystem ze kreéieren an et zesumme mat aneren Entwéckler z'entwéckelen (net nëmme bannent Yandex). An elo ass et e grousse Projet an deem vill verschidde Firmen involvéiert sinn.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

An Yandex.Cloud hu mir ClickHouse uewen op Yandex Object Storage erstallt, also op der Cloud Storage.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Firwat ass dat wichteg an der Wollek? Well all Datebank funktionnéiert an dësem Dräieck, an dëser Pyramid, an dëser Hierarchie vun Erënnerungstypen. Dir hutt séier awer kleng Registere a bëlleg grouss awer lues SSDs, Festplazen an e puer aner Blockapparaten. A wann Dir effizient un der Spëtzt vun der Pyramid sidd, dann hutt Dir eng séier Datebank. wann Dir um Enn vun dëser Pyramid effizient sidd, dann hutt Dir eng skaléiert Datebank. An an dëser Hisiicht, eng aner Schicht vun ënnen ze addéieren ass eng logesch Approche fir d'Skalierbarkeet vun der Datebank ze erhéijen.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Wéi konnt et gemaach ginn? Dëst ass e wichtege Punkt an dësem Bericht.

  • Mir kéinten ClickHouse iwwer MDS implementéieren. MDS ass eng intern Yandex Cloud Storage Interface. Et ass méi komplex wéi de gemeinsame S3 Protokoll, awer et ass méi gëeegent fir e Blockapparat. Et ass besser fir Daten opzehuelen. Et erfuerdert méi programméiere. Programméierer programméiere, et ass souguer gutt, et ass interessant.
  • S3 ass eng méi heefeg Approche déi d'Interface méi einfach mécht op d'Käschte vu manner Upassung un verschidden Aarte vun Aarbechtslaascht.

Natierlech wëllen d'Funktionalitéit vum ganze ClickHouse-Ökosystem ubidden an d'Aufgab maachen, déi am Yandex.Cloud gebraucht gëtt, hu mir décidéiert fir sécher ze stellen datt d'ganz ClickHouse Gemeinschaft dovunner profitéiert. Mir hunn ClickHouse iwwer S3 implementéiert, net ClickHouse iwwer MDS. An dëst ass vill Aarbecht.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Referenzen:

https://github.com/ClickHouse/ClickHouse/pull/7946 "Dateiesystem Abstraktiounsschicht"
https://github.com/ClickHouse/ClickHouse/pull/8011 "AWS SDK S3 Integratioun"
https://github.com/ClickHouse/ClickHouse/pull/8649 "Basis Implementatioun vun IDisk Interafce fir S3"
https://github.com/ClickHouse/ClickHouse/pull/8356 "Integratioun vu Logspeichermotoren mat IDisk Interface"
https://github.com/ClickHouse/ClickHouse/pull/8862 "Logmotor Support fir S3 a SeekableReadBuffer"
https://github.com/ClickHouse/ClickHouse/pull/9128 "Storage Stripe Log S3 Ënnerstëtzung"
https://github.com/ClickHouse/ClickHouse/pull/9415 "Storage MergeTree initial Ënnerstëtzung fir S3"
https://github.com/ClickHouse/ClickHouse/pull/9646 "MergeTree voll Ënnerstëtzung fir S3"
https://github.com/ClickHouse/ClickHouse/pull/10126 "Support ReplicatedMergeTree iwwer S3"
https://github.com/ClickHouse/ClickHouse/pull/11134 "Füügt Standard Umeldungsinformatiounen a personaliséiert Header fir s3 Storage"
https://github.com/ClickHouse/ClickHouse/pull/10576 "S3 mat dynamescher Proxy Konfiguratioun"
https://github.com/ClickHouse/ClickHouse/pull/10744 "S3 mat Proxy Resolver"

Dëst ass eng Pull Ufro Lëscht fir e virtuelle Dateiesystem am ClickHouse ëmzesetzen. Dëst ass eng grouss Zuel vu Pull Ufroen.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Referenzen:

https://github.com/ClickHouse/ClickHouse/pull/9760 "DiskS3 Hardlinks optimal Ëmsetzung"
https://github.com/ClickHouse/ClickHouse/pull/11522 "S3 HTTP Client - Vermeit kopéieren Äntwert Stream an Erënnerung"
https://github.com/ClickHouse/ClickHouse/pull/11561 "Vermeit de ganzen Äntwertstroum an d'Erënnerung an S3 HTTP ze kopéieren
Client"
https://github.com/ClickHouse/ClickHouse/pull/13076 "Kapazitéit fir Cache Mark an Index Dateien fir S3 Disk"
https://github.com/ClickHouse/ClickHouse/pull/13459 "Beweegt Deeler vun DiskLocal op DiskS3 parallel"

Awer d'Aarbecht ass net do opgehalen. Nodeems d'Feature gemaach gouf, war e bësse méi Aarbecht erfuerderlech fir dës Funktionalitéit ze optimiséieren.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Referenzen:

https://github.com/ClickHouse/ClickHouse/pull/12638 "Füügt SelectedRows a SelectedBytes Eventer"
https://github.com/ClickHouse/ClickHouse/pull/12464 "Füügt Profilerevenementer vun der S3 Ufro op system.events"
https://github.com/ClickHouse/ClickHouse/pull/13028 "Füügt QueryTimeMicroseconds, SelectQueryTimeMicroseconds an InsertQueryTimeMicroseconds"

An dunn war et néideg et diagnostizéierbar ze maachen, d'Iwwerwaachung opzestellen an ze maniabel ze maachen.

An dat alles gouf gemaach fir datt déi ganz Gemeinschaft, de ganze ClickHouse-Ökosystem, d'Resultat vun dëser Aarbecht krut.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Loosst eis weider op Transaktiounsdatenbanken, op OLTP-Datebanken, déi mir perséinlech méi no sinn.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Dëst ass d'Open Source DBMS Entwécklung Divisioun. Dës Kärelen maachen Strooss Magie Transaktiounen oppen Datenbanken ze verbesseren.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Ee vun de Projeten, mat engem Beispill vun deem mir kënne schwätzen iwwer wéi a wat mir maachen, ass de Connection Pooler zu Postgres.

Postgres ass eng Prozess Datebank. Dëst bedeit datt d'Datebank sou wéineg wéi méiglech Netzwierkverbindunge soll hunn, déi Transaktioune behandelen.

Op der anerer Säit, an enger Wollek Ëmfeld, ass eng typesch Situatioun wann dausend Verbindungen op eemol an ee Stärekoup kommen. An d'Aufgab vum Verbindungspooler ass dausend Verbindungen an eng kleng Zuel vu Serververbindungen ze packen.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Mir kënne soen datt de Verbindungspooler den Telefonoperateur ass deen d'Bytes nei arrangéiert fir datt se effizient d'Datebank erreechen.

Leider gëtt et kee gutt russescht Wuert fir Verbindungspooler. Heiansdo gëtt et Multiplexer Verbindungen genannt. Wann Dir wësst wat d'Verbindungspooler ze ruffen, da gitt sécher mir ze soen, ech wäert ganz frou sinn déi richteg russesch technesch Sprooch ze schwätzen.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

https://pgconf.ru/2017/92899

Mir ënnersicht Verbindungspooler déi gëeegent waren fir e verwaltete Postgres-Cluster. A PgBouncer war déi bescht Wiel fir eis. Awer mir hunn eng Rei Probleemer mam PgBouncer begéint. Virun ville Joeren huet de Volodya Borodin Berichter ginn datt mir PgBouncer benotzen, mir hunn alles gär, awer et ginn Nuancen, et gëtt eppes fir unzeschaffen.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

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

A mir hunn geschafft. Mir hunn d'Problemer fixéiert déi mir begéint hunn, mir hunn de Bouncer gepatched, a probéiert Pull-Ufroen upstream ze drécken. Mee fundamental Single-threading war schwéier mat ze schaffen.

Mir hu misse Kaskaden aus gefléckte Bouncers sammelen. Wa mir vill Single-threaded Bouncers hunn, ginn d'Verbindungen op der ieweschter Schicht op déi bannescht Schicht vu Bouncers transferéiert. Dëst ass e schlecht verwaltete System dee schwéier ass ze bauen an zréck an zréck ze skaléieren.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Mir sinn zur Conclusioun komm datt mir eisen eegene Verbindungspooler erstallt hunn, deen Odyssee genannt gëtt. Mir hunn et vun Null geschriwwen.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

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

Am Joer 2019, op der PgCon Konferenz, hunn ech dëse Pooler der Entwécklergemeinschaft presentéiert. Elo hu mir e bësse manner wéi 2 Stären op GitHub, dh de Projet ass lieweg, de Projet ass populär.

A wann Dir e Postgres-Cluster an Yandex.Cloud erstellt, da wäert et e Cluster mat agebauter Odyssey sinn, déi nei konfiguréiert gëtt wann Dir de Cluster zréck oder virum skaléiert.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Wat hu mir vun dësem Projet geléiert? E Konkurrenzprojet lancéieren ass ëmmer en aggressive Schrëtt, et ass eng extrem Moossnam wa mir soen datt et Problemer gëtt déi net séier genuch geléist ginn, net an den Zäitintervaller geléist ginn déi eis passen. Awer dëst ass eng effektiv Moossnam.

PgBouncer huet ugefaang méi séier z'entwéckelen.

An elo sinn aner Projeten opgetaucht. Zum Beispill pgagroal, déi vu Red Hat Entwéckler entwéckelt gëtt. Si verfollegen ähnlech Ziler an ëmsetzen ähnlech Iddien, awer, natierlech, mat hiren eegene Spezifizitéiten, déi méi no bei pgagroal Entwéckler sinn.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

En anere Fall fir mat der Postgres Gemeinschaft ze schaffen ass op e Punkt an der Zäit restauréiert. Dëst ass Erhuelung no engem Feeler, dëst ass Erhuelung vun engem Backup.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Et gi vill Backups a si sinn all anescht. Bal all Postgres Verkeefer huet seng eege Backup-Léisung.

Wann Dir all d'Backup Systemer huelen, schafen eng Fonktioun Matrixentgasung a witzeg Berechent der Determinant an dëser Matrixentgasung, et wäert null ginn. Wat heescht dat? Wat wann Dir eng spezifesch Backupdatei hëlt, da kann se net aus Stécker vun all deenen aneren zesummegesat ginn. Et ass eenzegaarteg a senger Ëmsetzung, et ass eenzegaarteg a sengem Zweck, et ass eenzegaarteg an den Iddien déi dran agebonne sinn. A si sinn all spezifesch.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

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

Wärend mir un dësem Thema geschafft hunn, huet CitusData de WAL-G Projet gestart. Dëst ass e Backup System dee mat engem Aen op d'Wollekëmfeld gemaach gouf. Elo ass CitusData schonn Deel vu Microsoft. An dee Moment hu mir d'Iddien, déi an den initialen Releases vu WAL-G festgeluecht goufen, ganz gutt gefall. A mir hunn ugefaang un dësem Projet bäizedroen.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

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

Elo ginn et vill Dutzende vun Entwéckler an dësem Projet, awer déi Top 10 Bäiträg zu WAL-G enthalen 6 Yandexoiden. Mir hunn vill vun eisen Iddien dohinner bruecht. An natierlech hu mir se selwer ëmgesat, se selwer getest, se selwer an d'Produktioun gerullt, mir benotze se selwer, mir selwer erausfannen, wou mir nächst plënneren, wärend mir mat der grousser WAL-G Gemeinschaft interagéieren.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

An aus eiser Siicht ass elo dëse Backup-System, ënner anerem eis Efforte berücksichtegt, fir e Cloud-Ëmfeld optimal ginn. Dëst ass déi bescht Käschte fir Postgres an der Wollek ze backen.

Wat heescht dat? Mir hunn eng zimlech grouss Iddi gefördert: Backup soll sécher sinn, bëlleg ze bedreiwen an sou séier wéi méiglech ze restauréieren.

Firwat soll et bëlleg sinn ze bedreiwen? Wann näischt gebrach ass, sollt Dir net wëssen datt Dir Backups hutt. Alles funktionnéiert gutt, Dir verschwendt sou wéineg CPU wéi méiglech, Dir benotzt sou wéineg wéi méiglech vun Äre Diskressourcen, an Dir schéckt esou wéineg Bytes wéi méiglech an d'Netz, fir net mat der Notzlaascht vun Äre wäertvollen Servicer ze stéieren.

A wann alles brécht, zum Beispill, huet den Admin d'Daten erofgelooss, eppes ass falsch gaang, an Dir musst dréngend an d'Vergaangenheet zréckgoen, Dir recuperéiert mat all de Suen, well Dir wëllt Är Donnéeën séier an intakt zréck.

A mir hunn dës einfach Iddi gefördert. An, et schéngt eis, mir hunn et fäerdeg bruecht et ëmzesetzen.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Mä dat ass net alles. Mir wollten nach eng kleng Saach. Mir wollten vill verschidden Datenbanken. Net all vun eise Clienten benotzen Postgres. E puer Leit benotzen MySQL, MongoDB. An der Gemeinschaft hunn aner Entwéckler FoundationDB ënnerstëtzt. An dës Lëscht gëtt permanent ausgebaut.

D'Gemeinschaft gär d'Iddi datt d'Datebank an engem verwalteten Ëmfeld an der Wollek leeft. An d'Entwéckler behalen hir Datenbanken, déi eenheetlech zesumme mat Postgres mat eisem Backupsystem gebackupt kënne ginn.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Wat hu mir aus dëser Geschicht geléiert? Eist Produkt, als Entwécklungsdivisioun, ass keng Codelinnen, et ass keng Aussoen, et ass keng Dateien. Eist Produkt ass net Pull Ufroen. Dëst sinn d'Iddien déi mir der Gemeng vermëttelen. Dëst ass technologesch Expertise an d'Bewegung vun der Technologie a Richtung Cloud Ëmfeld.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Et gëtt sou eng Datebank wéi Postgres. Ech hunn de Postgres Kär am meeschte gär. Ech verbréngen vill Zäit fir de Postgres Kär mat der Gemeinschaft z'entwéckelen.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Awer hei muss gesot ginn datt Yandex.Cloud eng intern Installatioun vu verwalteten Datenbanken huet. An et huet viru laanger Zäit an Yandex.Mail ugefaang. D'Expertise, déi elo zu verwalteten Postgres gefouert huet, gouf accumuléiert wéi d'Mail an Postgres wollt plënneren.

Mail huet ganz ähnlech Ufuerderunge fir d'Wollek. Et brauch Iech fir fäeg ze sinn op onerwaart exponentiell Wuesstum zu all Punkt an Ären Donnéeën. An d'Mail hat schonn eng Laascht mat e puer Honnerte vu Millioune Mailboxen vun enger grousser Zuel vu Benotzer, déi stänneg vill Ufroe maachen.

An dëst war eng zimlech sérieux Erausfuerderung fir d'Team déi Postgres entwéckelt huet. Deemools goufen all Probleemer déi mir begéint hunn der Gemeinschaft gemellt. An dës Problemer goufen korrigéiert, a vun der Communautéit an e puer Plazen korrigéiert souguer um Niveau vun bezuelt Ënnerstëtzung fir e puer aner Datenbanken an nach besser. Dat ass, Dir kënnt e Bréif un PgSQL Hacker schécken an eng Äntwert bannent 40 Minutten kréien. Bezuelt Ënnerstëtzung an e puer Datenbanken kann denken datt et méi prioritär Saachen ass wéi Äre Feeler.

Elo ass d'intern Installatioun vu Postgres e puer Petabytes vun Daten. Dëst sinn e puer Millioune Ufroen pro Sekonn. Dëst sinn Dausende vu Stärekéip. Et ass ganz grouss-Skala.

Awer et gëtt eng Nuance. Et lieft net op ausgefalene Netzwierker, awer op zimlech einfach Hardware. An et gëtt en Testëmfeld speziell fir interessant nei Saachen.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

An zu engem gewësse Moment am Testëmfeld krute mir e Message, deen uginn datt déi intern Invarianten vun den Datebankindexe verletzt goufen.

En Invariant ass eng Aart vu Bezéiung déi mir erwaarden ëmmer ze halen.

Eng ganz kritesch Situatioun fir eis. Et weist datt e puer Donnéeë verluer kënne sinn. An Dateverloscht ass eppes direkt katastrophal.

Déi allgemeng Iddi déi mir a verwalteten Datenbanken verfollegen ass datt och mat Effort et schwéier wäert sinn Daten ze verléieren. Och wann Dir se bewosst läscht, musst Dir ëmmer nach hir Absence fir eng laang Zäit ignoréieren. Datesécherheet ass eng Relioun déi mir ganz fläisseg verfollegen.

An hei entsteet eng Situatioun, déi suggeréiert, datt et vläicht eng Situatioun gëtt, op déi mir vläicht net bereet sinn. A mir hunn ugefaang fir dës Situatioun virzebereeden.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

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

Déi éischt Saach, déi mir gemaach hunn, war d'Logbicher aus dësen Dausende vu Cluster begruewen. Mir hu fonnt wéi eng vun de Stärekéip op Disken mat problematesch Firmware lokaliséiert waren, déi d'Aktualiséierunge vun der Datesäit verluer hunn. Markéiert all Postgres Datecode. A mir hunn dës Messagen markéiert, déi Violatioune vun internen Invarianten mat Code uginn, deen entwéckelt ass fir Datekorruptioun z'entdecken.

Dëse Patch gouf praktesch ouni vill Diskussioun vun der Gemeng akzeptéiert, well an all spezifesche Fall evident war, datt eppes Schlechtes geschitt ass a muss an de Logbuch gemellt ginn.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Duerno si mir op de Punkt komm datt mir Iwwerwaachung hunn déi Logbicher scannt. An am Fall vu verdächtege Messagen erwächt hien den Duty Offizéier, an den Duty Offizéier reparéiert et.

Awer! Scannen Logbicher ass eng bëlleg Operatioun op engem Stärekoup a katastrophal deier fir dausend Stärekéip.

Mir hunn eng Extensioun geschriwwen genannt Logfehler. Et erstellt eng Vue op d'Datebank, an där Dir bëlleg a séier Statistike vu fréiere Feeler auswielen kënnt. A wa mir den Duty Offizéier musse erwächen, da wäerte mir doriwwer erausfannen ouni Gigabyte Dateien ze scannen, awer andeems Dir e puer Bytes aus der Hash-Tabelle extrahéiert.

Dës Extensioun gouf ugeholl, zum Beispill, am Repository fir CentOS. Wann Dir se benotze wëllt, kënnt Dir et selwer installéieren. Natierlech ass et Open Source.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

https://www.postgresql.org/message-id/flat/[Email geschützt]

Mä dat ass net alles. Mir hunn ugefaang Amcheck ze benotzen, eng Communautéit gebaut Extensioun, fir onverännert Verstouss an Indexen ze fannen.

A mir hunn erausfonnt datt wann Dir et op Skala operéiert, et Käfere sinn. Mir hunn ugefaang se ze fixéieren. Eis Korrekturen goufen ugeholl.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

https://www.postgresql.org/message-id/flat/[Email geschützt]

Mir hunn entdeckt datt dës Extensioun GiST & GIT Indexen net analyséiere kann. Mir hunn hinnen Ënnerstëtzung gemaach. Awer dës Ënnerstëtzung gëtt nach ëmmer vun der Gemeinschaft diskutéiert, well dëst eng relativ nei Funktionalitéit ass an et vill Detailer do sinn.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

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

A mir hunn och entdeckt datt wann Dir Indexe fir Verstouss géint de Replikatiounsleader iwwerpréift, um Master, alles funktionnéiert gutt, awer op de Repliken, op den Follower, ass d'Sich no Korruptioun net sou effektiv. Net all Invarianten ginn iwwerpréift. An een Invariant huet eis immens gestéiert. A mir hunn annerhallwem Joer mat der Gemeinschaft kommunizéiert fir dës Iwwerpréiwung op Repliken z'erméiglechen.

Mir hunn Code geschriwwen deen all kann ... Protokoller verfollegen soll. Mir hunn dëse Patch fir eng Zäit laang mam Peter Gaghan vu Crunchy Data diskutéiert. Hien huet missen den bestehenden B-Bam zu Postgres liicht änneren, fir dëse Patch unzehuelen. Hie gouf ugeholl. An elo ass d'Indexe vun de Repliken iwwerpréift och effektiv genuch ginn fir d'Verletzungen z'entdecken déi mir begéint hunn. Dat ass, dëst sinn d'Verletzungen déi duerch Fehler an der Disk Firmware verursaacht kënne ginn, Bugs am Postgres, Bugs am Linux Kernel, an Hardwareproblemer. Zimlech eng extensiv Lëscht vu Quelle vu Probleemer fir déi mir eis virbereet hunn.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

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

Awer nieft Indexen gëtt et esou en Deel wéi Koup, dat heescht d'Plaz wou d'Donnéeën gespäichert sinn. An et ginn net vill Invarianten déi iwwerpréift kënne ginn.

Mir hunn eng Extensioun genannt Heapcheck. Mir hunn ugefaang et z'entwéckelen. A parallel, zesumme mat eis, huet d'Firma EnterpriseDB och ugefaang e Modul ze schreiwen, deen se Heapcheck op déiselwecht Manéier genannt hunn. Nëmme mir hunn et PgHeapcheck genannt, a si hunn et just Heapcheck genannt. Si hunn et mat ähnlechen Funktiounen, eng liicht aner Ënnerschrëft, awer mat de selwechte Iddien. Si hunn se op e puer Plazen e bësse besser ëmgesat. A si hunn et virdrun an Open Source gepost.

An elo entwéckelen mir hir Erweiderung, well et net méi hir Ausbau ass, mee d'Erweiderung vun der Gemeng. An an Zukunft ass dëst en Deel vum Kernel, dee jidderee geliwwert gëtt, fir datt se am Viraus iwwer zukünfteg Probleemer wëssen.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

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

Op e puer Plazen si mir souguer zur Conclusioun komm, datt mir falsch Positiver an eise Iwwerwaachungssystemer hunn. Zum Beispill, den 1C System. Wann Dir eng Datebank benotzt, schreift Postgres heiansdo Donnéeën an déi se liesen kann, awer pg_dump kann net liesen.

Dës Situatioun huet ausgesinn wéi Korruptioun fir eise Problemdetektiounssystem. De Beamte gouf erwächt. De Beamten huet gekuckt wat geschitt ass. No enger Zäit koum e Client a sot ech hätt Problemer. De Begleeder huet erkläert wat de Problem war. Awer de Problem ass am Postgres Kär.

Ech hunn eng Diskussioun iwwer dës Fonktioun fonnt. An hien huet geschriwwen datt mir dës Feature begéint hunn an et war désagréabel, eng Persoun ass an der Nuecht erwächt fir erauszefannen wat et war.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

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

D'Gemeinschaft huet geäntwert: "Oh, mir mussen et wierklech fixéieren."

Ech hunn eng einfach Analogie. Wann Dir an engem Schong trëppelt, deen e Sandkorn dran ass, da kënnt Dir am Prinzip weidergoen - kee Problem. Wann Dir Stiwwelen un Dausende vu Leit verkaaft, da maache mir Stiwwelen ouni Sand iwwerhaapt. A wann ee vun de Benotzer vun Äre Schong e Marathon leeft, da wëllt Dir ganz gutt Schong maachen, an dann op all Är Benotzer skala. An esou onerwaart Benotzer sinn ëmmer an der Wollek Ëmfeld. Et ginn ëmmer Benotzer déi de Stärekoup op eng originell Manéier ausnotzen. Dir musst ëmmer op dëst virbereeden.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Wat hu mir hei geléiert? Mir hunn eng einfach Saach geléiert: dat Wichtegst ass der Gemeng ze erklären datt et e Problem gëtt. Wann d'Gemeinschaft de Problem erkannt huet, da entsteet natierlech Konkurrenz fir de Problem ze léisen. Well jidderee wëll e wichtege Problem léisen. All Ubidder, all Hacker verstinn datt se selwer op dëser Rake trëppelen kënnen, also wëllen se se eliminéieren.

Wann Dir un engem Problem schafft, awer et stéiert keen ausser Iech, awer Dir schafft systematesch drun an et gëtt schlussendlech als Problem ugesinn, da gëtt Är Pull-Ufro definitiv ugeholl. Äre Patch gëtt ugeholl, Är Verbesserungen oder souguer Ufroe fir Verbesserunge ginn vun der Gemeinschaft iwwerpréift. Um Enn vum Dag maache mir d'Datebank besser fir all aner.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Eng interessant Datebank ass Greenplum. Et ass eng héich parallel Datebank baséiert op der Postgres Codebase, déi ech ganz vertraut sinn.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

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

A Greenplum huet interessant Funktionalitéit - optimiséiert Dëscher addéieren. Dëst sinn Dëscher déi Dir séier kënnt derbäisetzen. Si kënnen entweder Kolonn oder Zeil sinn.

Awer et war kee Clustering, dh et war keng Funktionalitéit wou Dir d'Donnéeën an der Tabell arrangéiere kënnt am Aklang mat der Uerdnung déi an engem vun den Indexen ass.

D'Jongen aus dem Taxi koumen bei mech a soten: "Andrey, du kennt de Postgres. An hei ass et bal d'selwecht. Wiesselt op 20 Minutten. Dir huelt et a maacht et." Ech hu geduecht datt jo, ech weess de Postgres, wiesselt fir 20 Minutten - ech muss dat maachen.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

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

Awer nee, et waren net 20 Minutten, ech hunn et iwwer Méint geschriwwen. Op der PgConf.Russia Konferenz hunn ech den Heikki Linakangas vu Pivotal ukomm a gefrot: "Ginn et Problemer mat dësem? Firwat gëtt et keng append optimiséiert Tabellecluster? Hie seet: "Dir huelt d'Donnéeën. Dir sortéiert, Dir reorganiséiert. Et ass just eng Aarbecht." Ech: "Oh, jo, Dir musst et just huelen an et maachen." Hie seet: "Jo, mir brauche fräi Hänn fir dëst ze maachen." Ech hu geduecht datt ech dat definitiv muss maachen.

An e puer Méint méi spéit hunn ech eng Pull-Ufro ofginn, déi dës Funktionalitéit ëmgesat huet. Dës Pull Ufro gouf vum Pivotal zesumme mat der Gemeinschaft iwwerpréift. Natierlech goufen et Käfere.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

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

Awer déi interessantst Saach ass datt wann dës Pull-Ufro fusionéiert gouf, Bugs am Greenplum selwer fonnt goufen. Mir hunn erausfonnt datt Heap Dëscher heiansdo Transaktiounsfäegkeet briechen wann se clusteréiert sinn. An dat ass eng Saach déi muss fixéiert ginn. A si ass op der Plaz déi ech just beréiert hunn. A meng natierlech Reaktioun war - okay, loosst mech dat och maachen.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

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

Ech hunn dëse Feeler fixéiert. Geschéckt eng Pull Ufro un d'Fixer. Hie gouf ëmbruecht.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

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

Duerno huet sech erausgestallt datt dës Funktionalitéit muss an der Greenplum Versioun fir PostgreSQL 12 kritt ginn. Dat heescht, déi 20-Minuten Aventure geet weider mat neien interessanten Aventuren. Et war interessant déi aktuell Entwécklung ze beréieren, wou d'Gemeinschaft nei a wichtegst Feature schneiden. Et ass gefruer.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

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

Mee et ass net do opgehalen. No allem huet et sech erausgestallt datt mir fir all dëst Dokumentatioun musse schreiwen.

Ech hunn ugefaang Dokumentatioun ze schreiwen. Glécklecherweis sinn d'Dokumentarier vu Pivotal dobäi komm. Englesch ass hir Mammesprooch. Si hunn mir mat der Dokumentatioun gehollef. Tatsächlech hunn se selwer dat wat ech virgeschloen hunn op richteg Englesch ëmgeschriwwen.

An hei, wéi et schéngt, ass d'Aventure eriwwer. A wësst Dir wat dann geschitt ass? D'Jongen aus dem Taxi sinn bei mech komm a soten: "Et ginn nach zwou Aventuren, all fir 10 Minutten." A wat soll ech hinnen soen? Ech hu gesot, datt ech elo e Rapport iwwer Skala ginn, da gesi mir Är Aventuren, well dëst eng interessant Aarbecht ass.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Wat hu mir aus dësem Fall geléiert? Well mat Open Source ze schaffen ass ëmmer mat enger spezifescher Persoun ze schaffen, ass et ëmmer mat der Gemeinschaft ze schaffen. Well op all eenzelne Stuf hunn ech mat engem Entwéckler geschafft, engem Tester, engem Hacker, engem Dokumentarist, engem Architekt. Ech hunn net mat Greenplum geschafft, ech hunn mat Leit ronderëm Greenplum geschafft.

Awer! Et gëtt en anere wichtege Punkt - et ass just Aarbecht. Dat ass, Dir kommt, drénkt Kaffi, schreift Code. All Zorte vun einfach invariants Aarbecht. Maacht et normalerweis - et wäert gutt sinn! An et ass eng ganz interessant Aarbecht. Et gëtt eng Demande fir dës Aarbecht vun Yandex.Cloud Clienten, Benotzer vun eise Stärekéip souwuel bannen Yandex a baussen. An ech mengen, datt d'Zuel vun de Projeten un deenen mir matmaachen wäert eropgoen an och d'Déift vun eisem Engagement wäert eropgoen.

Dat ass alles. Komme mer op d'Froen.

Wat a firwat mir an Open Source Datenbanken maachen. Andrey Borodin (Yandex.Cloud)

Froen Sëtzung

Hallo! Mir hunn eng aner Fro an Äntwert Sëtzung. An am Studio Andrei Borodin. Dëst ass déi Persoun déi Iech just iwwer de Bäitrag vu Yandex.Cloud an Yandex zu Open Source gesot huet. Eise Bericht geet elo net ganz iwwer d'Cloud, awer gläichzäiteg baséiere mir op esou Technologien. Ouni dat wat Dir am Yandex gemaach hutt, wier et kee Service am Yandex.Cloud, also merci vu mir perséinlech. An déi éischt Fro vun der Sendung: "Wat ass jidderee vun de Projeten op déi Dir ernimmt hutt geschriwwen?"

De Backup System am WAL-G ass a Go geschriwwen. Dëst ass ee vun den neie Projeten un deenen mir geschafft hunn. Hien ass wuertwiertlech nëmmen 3 Joer al. An eng Datebank geet dacks ëm Zouverlässegkeet. An dat heescht, datt d'Datebanke relativ al sinn a si sinn normalerweis am C. De Postgres Projet huet virun ongeféier 30 Joer ugefaangen. Dunn war den C89 de richtege Choix. An Postgres steet drop geschriwwen. Méi modern Datenbanken wéi ClickHouse ginn normalerweis an C++ geschriwwen. All Systementwécklung baséiert op C an C++.

Eng Fro vun eisem Finanzmanager, dee verantwortlech ass fir Ausgaben bei Cloud: "Firwat verbréngt Cloud Sue fir d'Ënnerstëtzung vun Open Source?"

Et gëtt eng einfach Äntwert fir de Finanzmanager hei. Mir maachen dat fir eis Servicer besser ze maachen. Op wéi eng Manéier kënne mir besser maachen? Mir kënne Saache méi effizient, méi séier maachen a Saache méi skalierbar maachen. Awer fir eis geet dës Geschicht virun allem ëm Zouverlässegkeet. Zum Beispill, an engem Backup-System iwwerpréiwen mir 100% vun de Patches, déi derzou gëllen. Mir wëssen wat de Code ass. A mir si méi bequem fir nei Versiounen op d'Produktioun auszerollen. Dat ass, éischtens, et geet ëm d'Vertrauen, d'Bereetschaft fir d'Entwécklung an d'Zouverlässegkeet

Eng aner Fro: "Sinn d'Ufuerderunge vun externen Benotzer, déi an Yandex.Cloud liewen, anescht wéi intern Benotzer, déi an der interner Cloud liewen?"

De Laaschtprofil ass natierlech anescht. Awer aus der Siicht vu mengem Departement sinn all déi speziell an interessant Fäll op enger net-Standard Laascht erstallt. Entwéckler mat Phantasie, Entwéckler déi onerwaart maachen, sinn esou wahrscheinlech souwuel intern wéi extern ze fannen. An dëser Hisiicht si mir all ongeféier d'selwecht. An, wahrscheinlech, déi eenzeg wichteg Feature an der Yandex Operatioun vun Datenbanken wäert sinn datt bannent Yandex mir eng Léier hunn. Irgendwann geet e puer Disponibilitéitszonen komplett an de Schied, an all Yandex-Servicer mussen trotzdem iergendwéi weider funktionnéieren. Dëst ass e klengen Ënnerscheed. Awer et erstellt vill Fuerschungsentwécklung op der Interface vun der Datebank an dem Netzwierkstack. Soss generéieren extern an intern Installatiounen déiselwecht Ufroe fir Funktiounen an ähnlech Ufroe fir d'Zouverlässegkeet an d'Leeschtung ze verbesseren.

Nächst Fro: "Wéi fillt Dir Iech perséinlech iwwer d'Tatsaach datt vill vun deem wat Dir maacht vun anere Wolleke benotzt gëtt?" Mir wäerten net spezifesch nennen, awer vill Projeten, déi am Yandex.Cloud gemaach goufen, ginn an de Wolleke vun anere Leit benotzt.

Dëst ass cool. Als éischt ass et en Zeechen datt mir eppes richteg gemaach hunn. An et kraazt den Ego. A mir si méi zouversiichtlech datt mir déi richteg Entscheedung getraff hunn. Op der anerer Säit ass dat d'Hoffnung datt dëst eis an Zukunft nei Iddien bréngt, nei Ufroe vun Drëtt-Benotzer. Déi meescht Themen op GitHub ginn erstallt vun eenzelne Systemadministratoren, eenzel DBAs, eenzel Architekten, eenzel Ingenieuren, awer heiansdo kommen Leit mat systematescher Erfahrung a soen datt mir an 30% vu bestëmmte Fäll dëse Problem hunn a loosst eis nodenken wéi se et léisen. Dëst ass wat mir am meeschte gespaant hunn. Mir freeën eis op Erfahrungen mat anere Cloud Plattformen ze deelen.

Dir hutt vill iwwer de Marathon geschwat. Ech weess datt Dir e Marathon zu Moskau gelaf hutt. Als Resultat vun? D'Jongen aus PostgreSQL iwwerholl?

Nee, den Oleg Bartunov leeft ganz séier. Hien ass eng Stonn viru mir fäerdeg. Am Allgemengen sinn ech frou mat wéi wäit ech komm sinn. Fir mech war just Ofschloss eng Leeschtung. Am Allgemengen ass et iwwerraschend datt et sou vill Leefer an der Postgres Gemeinschaft sinn. Et schéngt mir, datt et eng Zort Relatioun tëscht aerobic Sport an de Wonsch fir Systemer programméiere ass.

Sidd Dir gesot datt et keng Leefer am ClickHouse sinn?

Ech weess sécher datt se do sinn. ClickHouse ass och eng Datebank. Iwwregens, den Oleg schreiwt mir elo: "Solle mir nom Bericht lafen?" Dëst ass eng super Iddi.

Eng aner Fro vun der Sendung vum Nikita: "Firwat hutt Dir de Käfer am Greenplum selwer fixéiert an net de Junioren ginn?" Richteg, et ass net ganz kloer wat de Käfer ass a wéi engem Service, awer et heescht wahrscheinlech dee vun deem Dir geschwat hutt.

Jo, am Prinzip, kéint et engem ginn ginn. Et war just de Code deen ech just geännert hunn. An et war natierlech fir et direkt weider ze maachen. Am Prinzip ass d'Iddi fir Expertise mam Team ze deelen eng gutt Iddi. Mir wäerten definitiv Greenplum Aufgaben ënner all Membere vun eiser Divisioun deelen.

Well mir iwwer Junioren schwätzen, hei ass eng Fro. D'Persoun huet decidéiert den éischten Engagement am Postgres ze kreéieren. Wat muss hien maachen fir den éischte Engagement ze maachen?

Dëst ass eng interessant Fro: "Wou ufänken?" Et ass normalerweis zimlech schwéier mat eppes am Kär unzefänken. Am Postgres, zum Beispill, gëtt et eng ze maachen Lëscht. Awer tatsächlech ass dëst e Blat vu wat se probéiert hunn ze maachen, awer net gelongen. Dëst sinn komplex Saachen. An normalerweis kënnt Dir e puer Utilities am Ökosystem fannen, e puer Extensiounen déi kënne verbessert ginn, déi manner Opmierksamkeet vu Kernel Entwéckler unzéien. An deementspriechend ginn et do méi Punkte fir Wuesstem. Am Google Summer of Code Programm stellt all Joer d'Postgres Gemeinschaft vill verschidden Themen vir, déi kënne behandelt ginn. Dëst Joer hate mir, mengen ech, dräi Schüler. Et huet ee souguer am WAL-G iwwer Themen geschriwwen, déi fir Yandex wichteg sinn. Zu Greenplum ass alles méi einfach wéi an der Postgres Gemeinschaft, well Greenplum Hacker Pull Ufroe ganz gutt behandelen a fänken direkt un ze iwwerpréiwen. E Patch op Postgres ze schécken ass eng Saach vu Méint, awer Greenplum kënnt an engem Dag a kuckt wat Dir gemaach hutt. Eng aner Saach ass, datt Greenplum aktuell Problemer muss léisen. Greenplum gëtt net wäit benotzt, sou datt Äre Problem ganz schwéier ass. An als éischt musse mer natierlech Problemer léisen.

Source: will.com