Kuidas SQL-andmebaas 21. sajandil ellu jÀÀda: pilved, Kubernetes ja PostgreSQL multimaster

Tere, Habrovski elanikud. TĂ€na algavad tunnid kursuse esimeses rĂŒhmas "PostgreSQL". Sellega seoses tahaksime teile rÀÀkida, kuidas selle kursuse avatud veebiseminar toimus.

Kuidas SQL-andmebaas 21. sajandil ellu jÀÀda: pilved, Kubernetes ja PostgreSQL multimaster

В jĂ€rgmine avatud Ă”ppetund rÀÀkisime vĂ€ljakutsetest, millega SQL-andmebaasid pilvede ja Kubernetese ajastul silmitsi seisavad. Samal ajal uurisime, kuidas SQL-andmebaasid nende vĂ€ljakutsete mĂ”jul kohanduvad ja muteeruvad.

Veebiseminar peeti Valeri Bezrukov, Google Cloud Practice Delivery Manager ettevÔttes EPAM Systems.

Kui puud olid vÀikesed...

KÔigepealt meenutagem, kuidas sai alguse DBMS-i valik eelmise sajandi lÔpus. See pole aga keeruline, sest DBMS-i valik neil pÀevil algas ja lÔppes Oraakel.

Kuidas SQL-andmebaas 21. sajandil ellu jÀÀda: pilved, Kubernetes ja PostgreSQL multimaster

90ndate lĂ”pus ja 2ndate alguses ei olnud tööstuslike skaleeritavate andmebaaside osas sisuliselt valikut. Jah, oli IBM DBXNUMX, Sybase ja mĂ”ned teised andmebaasid, mis tulid ja lĂ€ksid, kuid ĂŒldiselt ei olnud need Oracle'i taustal nii mĂ€rgatavad. Sellest tulenevalt olid nende aegade inseneride oskused kuidagi seotud ainsa olemasoleva valikuga.

Oracle DBA pidi suutma:

  • installige Oracle Server turustuskomplektist;
  • konfigureerige Oracle Server:

  • init.ora;
  • kuulaja.ora;

- luua:

  • lauapinnad;
  • skeemid;
  • kasutajad;

— varundada ja taastada;
— teostada jĂ€relevalvet;
— tegelema mitteoptimaalsete taotlustega.

Samal ajal ei esitanud Oracle DBA erinÔuet:

  • oskama valida andmete salvestamiseks ja töötlemiseks optimaalset DBMS-i vĂ”i muud tehnoloogiat;
  • pakkuda kĂ”rget kĂ€ttesaadavust ja horisontaalset skaleeritavust (see ei olnud alati DBA probleem);
  • hea ainevaldkonna, infrastruktuuri, rakenduste arhitektuuri, OS-i tundmine;
  • andmete laadimine ja mahalaadimine, andmete migreerimine erinevate DBMS-ide vahel.

Üldiselt, kui me rÀÀgime nendel pĂ€evadel valikust, siis see sarnaneb valikuga nĂ”ukogude poes 80ndate lĂ”pus:

Kuidas SQL-andmebaas 21. sajandil ellu jÀÀda: pilved, Kubernetes ja PostgreSQL multimaster

Meie aeg

Sellest ajast peale on puud muidugi kasvanud, maailm muutunud ja sellest sai umbes selline:

Kuidas SQL-andmebaas 21. sajandil ellu jÀÀda: pilved, Kubernetes ja PostgreSQL multimaster

DBMS-i turg on samuti muutunud, nagu on selgelt nÀha Gartneri viimasest aruandest:

Kuidas SQL-andmebaas 21. sajandil ellu jÀÀda: pilved, Kubernetes ja PostgreSQL multimaster

Ja siin tuleb mÀrkida, et pilved, mille populaarsus kasvab, on hÔivanud oma niƥi. Kui loeme sama Gartneri aruannet, nÀeme jÀrgmisi jÀreldusi:

  1. Paljud kliendid on teel rakenduste pilve teisaldamisele.
  2. Uued tehnoloogiad ilmuvad esmalt pilves ja pole tÔsi, et need liiguvad kunagi pilvevÀlisesse infrastruktuuri.
  3. Makstav hinnamudel on muutunud tavapĂ€raseks. IgaĂŒks tahab maksta ainult selle eest, mida ta kasutab, ja see pole isegi trend, vaid lihtsalt faktivĂ€ide.

Mis nĂŒĂŒd?

TĂ€na oleme kĂ”ik pilves. Ja kĂŒsimused, mis meie jaoks tekivad, on valiku kĂŒsimused. Ja see on tohutu, isegi kui rÀÀgime ainult DBMS-i tehnoloogiate valikust kohapealses vormingus. Meil on ka hallatavad teenused ja SaaS. Seega muutub valik iga aastaga ainult raskemaks.

Lisaks valikukĂŒsimustele on ka piiravad tegurid:

  • hind. Paljud tehnoloogiad maksavad endiselt raha;
  • oskused. Kui me rÀÀgime vabast tarkvarast, siis tekib oskuste kĂŒsimus, kuna vaba tarkvara nĂ”uab selle juurutajatelt ja kĂ€itajatelt piisavat kompetentsi;
  • funktsionaalne. KĂ”igil pilves saadaolevatel ja nĂ€iteks isegi samale Postgresile ehitatud teenustel pole samu funktsioone nagu Postgres On-premises. See on oluline tegur, mida tuleb teada ja mĂ”ista. Veelgi enam, see tegur muutub olulisemaks kui teadmised ĂŒhe DBMS-i varjatud vĂ”imalustest.

Mida DA/DE-lt praegu oodatakse:

  • hea ainevaldkonna ja rakenduste arhitektuuri tundmine;
  • oskus Ă”igesti valida sobiv DBMS-tehnoloogia, vĂ”ttes arvesse kĂ€silolevat ĂŒlesannet;
  • oskus valida optimaalne meetod valitud tehnoloogia rakendamiseks olemasolevate piirangute kontekstis;
  • vĂ”ime teostada andmeedastust ja migratsiooni;
  • oskus valitud lahendusi rakendada ja opereerida.

Allpool nĂ€ide pĂ”hineb GCP-l demonstreerib, kuidas ĂŒhe vĂ”i teise andmetega töötamise tehnoloogia valik sĂ”ltub selle struktuurist:

Kuidas SQL-andmebaas 21. sajandil ellu jÀÀda: pilved, Kubernetes ja PostgreSQL multimaster

Pange tÀhele, et PostgreSQL ei sisaldu skeemis, kuna see on terminoloogia all peidetud Pilv SQL. Ja kui jÔuame Cloud SQL-i, peame uuesti tegema valiku:

Kuidas SQL-andmebaas 21. sajandil ellu jÀÀda: pilved, Kubernetes ja PostgreSQL multimaster

Tuleb mÀrkida, et see valik ei ole alati selge, seetÔttu juhinduvad rakenduste arendajad sageli intuitsioonist.

Kokku:

  1. Mida edasi, seda teravamaks muutub valiku kĂŒsimus. Ja isegi kui vaatate ainult GCP-d, hallatud teenuseid ja SaaS-i, ilmub mĂ”ni RDBMS-i mainimine alles 4. sammul (ja seal on lĂ€hedal ka Spanner). Lisaks ilmub 5. sammus valik PostgreSQL ja selle kĂ”rval on ka MySQL ja SQL Server, st. kĂ”ike on palju, aga valida tuleb.
  2. Me ei tohi unustada piiranguid kiusatuste taustal. PĂ”himĂ”tteliselt tahavad kĂ”ik mutrivĂ”tit, kuid see on kallis. Selle tulemusena nĂ€eb tĂŒĂŒpiline taotlus vĂ€lja umbes selline: "Palun tehke meist mutrivĂ”ti, kuid Cloud SQL-i hinna eest olete professionaalid!"

Kuidas SQL-andmebaas 21. sajandil ellu jÀÀda: pilved, Kubernetes ja PostgreSQL multimaster

Mida me peaksime tegema?

VĂ€itlemata, et see on ĂŒlim tĂ”de, ĂŒtleme jĂ€rgmist:

Peame muutma oma lÀhenemisviisi Ôppimisele:

  • pole mĂ”tet Ă”petada nii, nagu varem DBA-sid Ă”petati;
  • teadmisest ĂŒhe toote kohta enam ei piisa;
  • aga kĂŒmnete tundmine ĂŒhe tasemel on vĂ”imatu.

Peate teadma mitte ainult seda, kui palju toode on, vaid ka:

  • selle rakenduse kasutusjuht;
  • erinevad kasutuselevĂ”tumeetodid;
  • iga meetodi eelised ja puudused;
  • sarnaseid ja alternatiivseid tooteid, et teha teadlik ja optimaalne valik ning mitte alati eelistada tuttavat toodet.

Samuti peate suutma andmeid migreerida ja mÔistma ETL-iga integreerimise pÔhiprintsiipe.

tÔeline juhtum

LĂ€himinevikus oli vaja luua mobiilirakendusele taustaprogramm. Selleks ajaks, kui selle kallal tööd alustati, oli taustaprogramm juba vĂ€lja töötatud ja kasutamiseks valmis ning arendusmeeskond veetis selle projektiga umbes kaks aastat. MÀÀrati jĂ€rgmised ĂŒlesanded:

  • ehitada CI/CD;
  • vaadata ĂŒle arhitektuur;
  • pane see kĂ”ik tööle.

Rakendus ise oli mikroteenused ja Python/Django kood töötati vĂ€lja nullist ja otse GCP-s. SihtrĂŒhma osas eeldati, et seal on kaks piirkonda - USA ja EL ning liiklus jagati Global Load balanceri kaudu. KĂ”ik töökoormused ja arvutustöökoormus töötasid Google Kubernetes Engine'is.

Mis puutub andmetesse, siis oli 3 struktuuri:

  • pilvesalvestus;
  • Andmehoidla;
  • Pilv-SQL (PostgreSQL).

Kuidas SQL-andmebaas 21. sajandil ellu jÀÀda: pilved, Kubernetes ja PostgreSQL multimaster

VĂ”ib kĂŒsida, miks valiti Cloud SQL? TĂ”tt-öelda on selline kĂŒsimus viimastel aastatel tekitanud omamoodi piinliku pausi – on tunne, et inimesed on relatsiooniandmebaaside suhtes hĂ€belikuks muutunud, kuid sellest hoolimata jĂ€tkavad nad nende aktiivset kasutamist ;-).

Meie puhul valiti Cloud SQL jÀrgmistel pÔhjustel:

  1. Nagu mainitud, töötati rakendus vĂ€lja Django abil ja sellel on mudel pĂŒsivate andmete kaardistamiseks SQL-i andmebaasist Pythoni objektidele (Django ORM).
  2. Raamistik ise toetas ĂŒsna piiratud DBMS-ide loendit:

  • PostgreSQL;
  • MariaDB;
  • MySQL;
  • oraaklid;
  • SQLite.

Sellest lĂ€htuvalt valiti PostgreSQL sellest loendist ĂŒsna intuitiivselt (tegelikult pole Oracle valida).

Mis puudus:

  • rakendust kasutati ainult kahes piirkonnas ja kolmas ilmus plaanidesse (Aasia);
  • Andmebaas asus PĂ”hja-Ameerika piirkonnas (Iowa);
  • klient oli mures vĂ”imaliku juurdepÀÀsu viivitused Euroopast ja Aasiast ning katkestused teenistuses DBMS-i seisaku korral.

Vaatamata sellele, et Django ise suudab paralleelselt töötada mitme andmebaasiga ja jagada need lugemiseks ja kirjutamiseks, ei olnud rakenduses nii palju kirjutamist (ĂŒle 90% on lugemine). Ja ĂŒldiselt ja ĂŒleĂŒldse, kui seda oli vĂ”imalik teha Euroopa ja Aasia pĂ”hibaasi lugemis-koopia, oleks see kompromisslahendus. No mis selles nii keerulist on?

Raskus seisnes selles, et klient ei tahtnud hallatavate teenuste ja Cloud SQL-i kasutamisest loobuda. Ja Cloud SQL-i vĂ”imalused on praegu piiratud. Cloud SQL toetab kĂ”rget kĂ€ttesaadavust (HA) ja Read Replica (RR), kuid sama RR-i toetatakse ainult ĂŒhes piirkonnas. PĂ€rast Ameerika piirkonnas andmebaasi loomist ei saa te Euroopa piirkonnas Cloud SQL-i abil lugemiskoopiat teha, kuigi Postgres ise ei takista teil seda teha. Kirjavahetus Google'i töötajatega ei viinud kuhugi ja lĂ”ppes lubadustega stiilis "me teame probleemi ja töötame selle kallal, millalgi see probleem laheneb."

Kui loetleme lĂŒhidalt Cloud SQL-i vĂ”imalused, nĂ€eb see vĂ€lja umbes selline:

1. KÔrge saadavus (HA):

  • ĂŒhes piirkonnas;
  • ketta replikatsiooni kaudu;
  • PostgreSQL mootoreid ei kasutata;
  • vĂ”imalik automaatne ja kĂ€sitsi juhtimine – tĂ”rkeotsas/tĂ”rketagastus;
  • ÜmberlĂŒlitamisel pole DBMS mitu minutit saadaval.

2. Lugege koopiat (RR):

  • ĂŒhes piirkonnas;
  • kuum ootereĆŸiim;
  • PostgreSQL-i voogesituse replikatsioon.

Lisaks, nagu kombeks, seisate tehnoloogiat valides alati silmitsi mÔnega piirangud:

  • klient ei soovinud olemeid luua ja IaaS-i kasutada, vĂ€lja arvatud GKE kaudu;
  • klient ei soovi iseteenindust PostgreSQL/MySQL-i juurutada;
  • Noh, ĂŒldiselt oleks Google Spanner ĂŒsna sobiv, kui see poleks selle hinna eest, kuid Django ORM ei saa sellega töötada, kuid see on hea asi.

Arvestades olukorda, sai klient jĂ€relkĂŒsimuse: "Kas saate teha midagi sarnast, et see oleks nagu Google Spanner, kuid töötaks ka Django ORM-iga?"

Lahenduse variant nr 0

Esimene asi, mis pÀhe tuli:

  • pĂŒsida CloudSQL-is;
  • piirkondade vahel ei toimu sisseehitatud replikatsiooni ĂŒhelgi kujul;
  • proovige lisada PostgreSQL-i abil replika olemasolevale pilv-SQL-ile;
  • kĂ€ivitage kuskil ja kuidagi PostgreSQL-i eksemplar, kuid Ă€rge vĂ€hemalt puudutage masterit.

Paraku selgus, et seda ei saa teha, kuna puudub ligipÀÀs hostile (see on hoopis teises projektis) - pg_hba ja nii edasi, samuti pole ligipÀÀsu superkasutaja all.

Lahenduse variant nr 1

PÀrast edasist jÀrelemÔtlemist ja varasemaid asjaolusid arvesse vÔttes mÔttekÀik mÔnevÔrra muutus:

  • PĂŒĂŒame endiselt CloudSQL-i piires pĂŒsida, kuid lĂ€heme ĂŒle MySQL-ile, kuna MySQL-i Cloud SQL-il on vĂ€line juht, mis:

— on vĂ€lise MySQL-i puhverserver;
- nÀeb vÀlja nagu MySQL-i eksemplar;
- leiutatud andmete migreerimiseks teistest pilvedest vÔi kohapealsest.

Kuna MySQL replikatsiooni seadistamine ei vaja ligipÀÀsu hostile, siis pĂ”himĂ”tteliselt kĂ”ik toimis, kuid see oli vĂ€ga ebastabiilne ja ebamugav. Ja kui me edasi lĂ€ksime, muutus see tĂ€iesti hirmutavaks, kuna kasutasime kogu konstruktsiooni terraformiga ja jĂ€rsku selgus, et vĂ€list meistrit terraform ei toetanud. Jah, Google'il on CLI, kuid millegipĂ€rast töötas siin aeg-ajalt kĂ”ik – mĂ”nikord luuakse, mĂ”nikord mitte. VĂ”ib-olla seetĂ”ttu, et CLI leiutati andmete vĂ€liseks migratsiooniks, mitte koopiate jaoks.

Tegelikult sai sel hetkel selgeks, et Cloud SQL ei sobi ĂŒldse. Nagu öeldakse, tegime kĂ”ik, mis suutsime.

Lahenduse variant nr 2

Kuna Cloud SQL raamistikus pĂŒsida ei olnud vĂ”imalik, pĂŒĂŒdsime sĂ”nastada nĂ”uded kompromisslahendusele. NĂ”uded osutusid jĂ€rgmisteks:

  • töö Kubernetes, Kubernetese (DCS, ...) ja GCP (LB, ...) ressursside ja vĂ”imaluste maksimaalne kasutamine;
  • ballasti puudumine pilves olevate ebavajalike asjade (nt HA puhverserveri) tĂ”ttu;
  • vĂ”imalus kĂ€ivitada PostgreSQL vĂ”i MySQL pĂ”hiregioonis HA; teistes piirkondades - HA pĂ”hipiirkonna RR-st pluss selle koopia (usaldusvÀÀrsuse tagamiseks);
  • multi master (ma ei tahtnud temaga ĂŒhendust vĂ”tta, aga see polnud vĂ€ga oluline)

.
Nende nÔudmiste tulemusena on lksobivad DBMS-i ja sidumisvÔimalused:

  • MySQL Galera;
  • PrussakasDB;
  • PostgreSQL-i tööriistad

:
- pgpool-II;
— Patroon.

MySQL galerii

MySQL Galera tehnoloogia töötas vÀlja Codership ja see on InnoDB pistikprogramm. IseÀrasused:

  • multi master;
  • sĂŒnkroonne replikatsioon;
  • lugemine mis tahes sĂ”lmest;
  • salvestamine mis tahes sĂ”lme;
  • sisseehitatud HA mehhanism;
  • Bitnamist on Helmi diagramm.

PrussakasDB

Kirjelduse jÀrgi on asi tÀiesti pomm ja tegemist Go-s kirjutatud avatud lÀhtekoodiga projektiga. Peaosaleja on Cockroach Labs (asutatud Google'i inimeste poolt). See relatsiooniline DBMS oli algselt mÔeldud hajutamiseks (koos horisontaalse skaleerimisega) ja tÔrketaluvaks. Selle ettevÔtte autorid tÔid vÀlja eesmÀrgi "kombineerida SQL-i funktsionaalsuse rikkalikkus NoSQL-i lahendustele tuttava horisontaalse juurdepÀÀsetavusega".

Hea boonus on post-gressi ĂŒhendusprotokolli tugi.

pgpool

See on PostgreSQL-i lisand, tegelikult uus ĂŒksus, mis vĂ”tab ĂŒle kĂ”ik ĂŒhendused ja töötleb neid. Sellel on oma koormuse tasakaalustaja ja parser, mis on litsentsitud BSD litsentsi alusel. See pakub kĂŒllaldaselt vĂ”imalusi, kuid tundub mĂ”nevĂ”rra hirmutav, sest uue olemi olemasolu vĂ”ib saada tĂ€iendavate seikluste allikaks.

Patroni

See on viimane asi, millele mu pilk langes, ja nagu selgus, mitte asjata. Patroni on avatud lĂ€htekoodiga utiliit, mis on sisuliselt Pythoni deemon, mis vĂ”imaldab teil automaatselt hooldada PostgreSQL-klastreid erinevat tĂŒĂŒpi replikatsiooni ja automaatse rollivahetusega. Asi osutus vĂ€ga huvitavaks, kuna see sulandub hĂ€sti cuberiga ega too sisse uusi ĂŒksusi.

Mida sa lÔpuks valisid?

Valik polnud lihtne:

  1. PrussakasDB - tuli, kuid tume;
  2. MySQL galerii - ka pole paha, seda kasutatakse paljudes kohtades, aga MySQL;
  3. pgpool — palju tarbetuid ĂŒksusi, nii-nii integratsioon pilve ja K8-dega;
  4. Patroni - suurepĂ€rane integratsioon K8-dega, ilma tarbetute ĂŒksusteta, integreerub hĂ€sti GCP LB-ga.

Seega langes valik Patronile.

JĂ€reldused

On aeg teha lĂŒhikokkuvĂ”te. Jah, IT-taristu maailm on oluliselt muutunud ja see on alles algus. Ja kui varem olid pilved lihtsalt teist tĂŒĂŒpi infrastruktuur, siis nĂŒĂŒd on kĂ”ik teisiti. Pealegi ilmuvad pilvedes uuendused pidevalt, need ilmuvad ja vĂ”ib-olla ilmuvad ainult pilvedes ja alles siis viiakse need idufirmade jĂ”upingutustega ĂŒle On-premisesse.

Mis puutub SQL-i, siis SQL jÀÀb elama. See tÀhendab, et peate teadma PostgreSQL-i ja MySQL-i ning oskama nendega töötada, kuid veelgi olulisem on osata neid Ôigesti kasutada.

Allikas: www.habr.com

Ostke DDoS-kaitsega saitide jaoks usaldusvÀÀrne hostimine, VPS VDS-serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega, VPS VDS serverid | ProHoster