Kā izdzīvot SQL datubāzē 21. gadsimtā: mākoņi, Kubernetes un PostgreSQL multimaster

Sveiki, Habrovskas iedzÄ«votāji. Å odien sākas nodarbÄ«bas kursa pirmajā grupā "PostgreSQL". Å ajā sakarā mēs vēlamies jums pastāstÄ«t par to, kā notika Ŕī kursa atklātais vebinārs.

Kā izdzīvot SQL datubāzē 21. gadsimtā: mākoņi, Kubernetes un PostgreSQL multimaster

Š’ nākamā atklātā nodarbÄ«ba mēs runājām par izaicinājumiem, ar kuriem saskaras SQL datu bāzes mākoņu un Kubernetes laikmetā. Tajā paŔā laikā mēs apskatÄ«jām, kā SQL datu bāzes pielāgojas un mainās Å”o izaicinājumu ietekmē.

Vebinārs notika Valērijs Bezrukovs, Google Cloud Practice Delivery Manager EPAM Systems.

Kad koki bija mazi...

Vispirms atcerēsimies, kā pagājuŔā gadsimta beigās sākās DBVS izvēle. Tomēr tas nebÅ«s grÅ«ti, jo DBVS izvēle tajos laikos sākās un beidzās Orākuls.

Kā izdzīvot SQL datubāzē 21. gadsimtā: mākoņi, Kubernetes un PostgreSQL multimaster

90. gadu beigās un 2. gadu sākumā praktiski nebija izvēles, kad runa ir par rÅ«pnieciskām mērogojamām datubāzēm. Jā, bija IBM DBXNUMX, Sybase un dažas citas datu bāzes, kas nāca un aizgāja, bet kopumā tās nebija tik pamanāmas uz Oracle fona. AttiecÄ«gi to laiku inženieru prasmes kaut kā bija saistÄ«tas ar vienÄ«go pastāvoÅ”o izvēli.

Oracle DBA bija jāspēj:

  • instalēt Oracle Server no izplatÄ«Å”anas komplekta;
  • konfigurēt Oracle serveri:

  • init.ora;
  • klausÄ«tājs.ora;

- izveidot:

  • galda vietas;
  • shēmas;
  • lietotājiem;

ā€” veikt dublÄ“Å”anu un atjaunoÅ”anu;
ā€” veikt monitoringu;
ā€” izskatÄ«t neoptimālus pieprasÄ«jumus.

Tajā paŔā laikā Oracle DBA nebija īpaŔu prasību:

  • prast izvēlēties optimālo DBVS vai citu tehnoloÄ£iju datu uzglabāŔanai un apstrādei;
  • nodroÅ”ināt augstu pieejamÄ«bu un horizontālo mērogojamÄ«bu (tā ne vienmēr bija DBA problēma);
  • labas zināŔanas par mācÄ«bu priekÅ”metu jomu, infrastruktÅ«ru, aplikāciju arhitektÅ«ru, OS;
  • ielādēt un izlādēt datus, migrēt datus starp dažādām DBVS.

Kopumā, ja runājam par izvēli tajos laikos, tas atgādina izvēli padomju veikalā 80. gadu beigās:

Kā izdzīvot SQL datubāzē 21. gadsimtā: mākoņi, Kubernetes un PostgreSQL multimaster

MÅ«su laiks

KopÅ” tā laika, protams, koki ir auguÅ”i, pasaule ir mainÄ«jusies, un tas kļuva apmēram Ŕāds:

Kā izdzīvot SQL datubāzē 21. gadsimtā: mākoņi, Kubernetes un PostgreSQL multimaster

Arī DBVS tirgus ir mainījies, kā skaidri redzams jaunākajā Gartner ziņojumā:

Kā izdzīvot SQL datubāzē 21. gadsimtā: mākoņi, Kubernetes un PostgreSQL multimaster

Un te jāatzÄ«mē, ka mākoņi, kuru popularitāte pieaug, ir ieņēmuÅ”i savu niÅ”u. Ja mēs lasām to paÅ”u Gartnera ziņojumu, mēs redzēsim Ŕādus secinājumus:

  1. Daudzi klienti ir ceļā uz lietojumprogrammu pārvietoŔanu uz mākoni.
  2. Jaunās tehnoloģijas vispirms parādās mākonī, un nav fakts, ka tās kādreiz pāries uz infrastruktūru, kas nav mākoņains.
  3. Cenu noteikÅ”anas modelis, kurā maksā, kad iet, ir kļuvis ikdieniŔķs. Ikviens vēlas maksāt tikai par to, ko izmanto, un tā pat nav tendence, bet vienkārÅ”i fakta konstatācija.

Ko tagad?

Šodien mēs visi esam mākonī. Un jautājumi, kas mums rodas, ir izvēles jautājumi. Un tas ir milzīgs, pat ja runājam tikai par DBVS tehnoloģiju izvēli On-premises formātā. Mums ir arī pārvaldīti pakalpojumi un SaaS. Tādējādi izvēle ar katru gadu kļūst tikai grūtāka.

LÄ«dzās izvēles jautājumiem ir arÄ« ierobežojoÅ”ie faktori:

  • cena. Daudzas tehnoloÄ£ijas joprojām maksā naudu;
  • prasmes. Ja mēs runājam par bezmaksas programmatÅ«ru, tad rodas jautājums par prasmēm, jo ā€‹ā€‹brÄ«vā programmatÅ«ra prasa pietiekamu kompetenci no cilvēkiem, kuri to izvieto un izmanto;
  • funkcionāls. Ne visiem pakalpojumiem, kas ir pieejami mākonÄ« un ir izveidoti, piemēram, pat tajā paŔā Postgres, ir tādas paÅ”as funkcijas kā Postgres On-premises. Tas ir bÅ«tisks faktors, kas ir jāzina un jāsaprot. Turklāt Å”is faktors kļūst svarÄ«gāks par zināŔanām par dažām vienas DBVS slēptām iespējām.

Kas tagad tiek gaidīts no DA/DE:

  • laba priekÅ”meta jomas un pielietojuma arhitektÅ«ras izpratne;
  • spēja pareizi izvēlēties atbilstoÅ”o DBVS tehnoloÄ£iju, ņemot vērā veicamo uzdevumu;
  • spēja izvēlēties optimālo metodi izvēlētās tehnoloÄ£ijas ievieÅ”anai esoÅ”o ierobežojumu kontekstā;
  • spēja veikt datu pārsÅ«tÄ«Å”anu un migrāciju;
  • spēja ieviest un darbināt izvēlētos risinājumus.

Zemāk piemērs pamatojoties uz GSP parāda, kā darbojas vienas vai citas tehnoloģijas izvēle darbam ar datiem atkarībā no to struktūras:

Kā izdzīvot SQL datubāzē 21. gadsimtā: mākoņi, Kubernetes un PostgreSQL multimaster

Lūdzu, ņemiet vērā, ka PostgreSQL nav iekļauts shēmā, un tas ir tāpēc, ka tas ir paslēpts zem terminoloģijas Mākoņa SQL. Kad mēs nonākam pie Cloud SQL, mums vēlreiz jāizdara izvēle:

Kā izdzīvot SQL datubāzē 21. gadsimtā: mākoņi, Kubernetes un PostgreSQL multimaster

Jāpiebilst, ka Ŕī izvēle ne vienmēr ir skaidra, tāpēc aplikāciju izstrādātāji bieži vien vadās pēc intuÄ«cijas.

Kopā:

  1. Jo tālāk, jo aktuālāks kļūst izvēles jautājums. Un pat ja skatāties tikai uz GCP, pārvaldītajiem pakalpojumiem un SaaS, tad daži pieminējumi par RDBMS parādās tikai 4. solī (un turpat netālu ir Spanner). Turklāt 5. solī parādās PostgreSQL izvēle, un tai blakus ir arī MySQL un SQL Server, tas ir visa kā ir daudz, bet jāizvēlas.
  2. Mēs nedrÄ«kstam aizmirst par ierobežojumiem uz kārdinājumu fona. BÅ«tÄ«bā visi vēlas uzgriežņu atslēgu, bet tas ir dārgs. Rezultātā tipisks pieprasÄ«jums izskatās apmēram Ŕādi: ā€œLÅ«dzu, padariet mÅ«s par uzgriežņu atslēgu, taču par Cloud SQL cenu jÅ«s esat profesionāļi!ā€

Kā izdzīvot SQL datubāzē 21. gadsimtā: mākoņi, Kubernetes un PostgreSQL multimaster

Ko man darīt?

Nepretendējot uz galÄ«go patiesÄ«bu, teiksim sekojoÅ”o:

Mums ir jāmaina mūsu pieeja mācībām:

  • nav jēgas mācÄ«t tā, kā iepriekÅ” mācÄ«ja DBA;
  • ar zināŔanām par vienu produktu vairs nepietiek;
  • bet desmitiem zināt viena lÄ«menÄ« nav iespējams.

Jums jāzina ne tikai produkta cena, bet arī:

  • tā pielietojuma lietoÅ”anas gadÄ«jums;
  • dažādas izvietoÅ”anas metodes;
  • katras metodes priekÅ”rocÄ«bas un trÅ«kumi;
  • lÄ«dzÄ«giem un alternatÄ«viem produktiem, lai izdarÄ«tu apzinātu un optimālu izvēli un ne vienmēr par labu pazÄ«stamam produktam.

Jums arī jāspēj migrēt datus un saprast integrācijas ar ETL pamatprincipus.

Reāls gadījums

Nesenā pagātnē bija nepiecieÅ”ams izveidot aizmuguri mobilajai lietojumprogrammai. LÄ«dz brÄ«dim, kad tika sākts darbs pie tā, aizmugure jau bija izstrādāta un bija gatava ievieÅ”anai, un izstrādes komanda Å”im projektam pavadÄ«ja apmēram divus gadus. Tika izvirzÄ«ti Ŕādi uzdevumi:

  • veidot CI/CD;
  • pārskatÄ«t arhitektÅ«ru;
  • nodot to visu ekspluatācijā.

Pati lietojumprogramma bija mikropakalpojumi, un Python/Django kods tika izstrādāts no jauna un tieÅ”i GCP. Runājot par mērÄ·auditoriju, tika pieņemts, ka bÅ«s divi reÄ£ioni - ASV un ES, un satiksme tika sadalÄ«ta caur Global Load balancer. Visas darba slodzes un aprēķinu slodzes darbojās Google Kubernetes Engine.

Attiecībā uz datiem bija 3 struktūras:

  • Mākoņglabātuve;
  • Datu krātuve;
  • Mākoņa SQL (PostgreSQL).

Kā izdzīvot SQL datubāzē 21. gadsimtā: mākoņi, Kubernetes un PostgreSQL multimaster

Varētu rasties jautājums, kāpēc tika izvēlēts Cloud SQL? TaisnÄ«bu sakot, Ŕāds jautājums pēdējos gados ir izraisÄ«jis kaut kādu neveiklu pauzi - ir sajÅ«ta, ka cilvēki ir kļuvuÅ”i kautrÄ«gi pret relāciju datu bāzēm, bet tomēr turpina tās aktÄ«vi izmantot ;-).

MÅ«su gadÄ«jumā Cloud SQL tika izvēlēts Ŕādu iemeslu dēļ:

  1. Kā minēts, lietojumprogramma tika izstrādāta, izmantojot Django, un tai ir modelis pastāvÄ«gu datu kartÄ“Å”anai no SQL datu bāzes uz Python objektiem (Django ORM).
  2. Pati sistēma atbalstīja diezgan ierobežotu DBVS sarakstu:

  • PostgreSQL;
  • MariaDB;
  • MySQL;
  • Orākuls;
  • SQLite.

AttiecÄ«gi PostgreSQL no Ŕī saraksta tika izvēlēts diezgan intuitÄ«vi (nu, Oracle tieŔām nav jāizvēlas).

Kas pietrūka:

  • lietojumprogramma tika izvietota tikai 2 reÄ£ionos, un plānos parādÄ«jās treÅ”ais (Āzija);
  • Datubāze atradās Ziemeļamerikas reÄ£ionā (Aiova);
  • no klienta puses bija bažas par iespējamu piekļuves kavÄ“Å”anās no Eiropas un Āzijas un pārtraukumi servisā DBVS dÄ«kstāves gadÄ«jumā.

Neskatoties uz to, ka pats Django var strādāt ar vairākām datu bāzēm paralēli un sadalÄ«t tās lasÄ«Å”anai un rakstÄ«Å”anai, aplikācijā nebija tik daudz rakstÄ«Å”anas (vairāk nekā 90% ir lasÄ«Å”ana). Un vispār, un vispār, ja to varēja izdarÄ«t galvenās bāzes lasÄ«Å”ana-reprodukcija Eiropā un Āzijā, tas bÅ«tu kompromisa risinājums. Nu, kas tur tik sarežģīts?

GrÅ«tÄ«bas radÄ«ja tas, ka klients nevēlējās atteikties no pārvaldÄ«to pakalpojumu un Cloud SQL lietoÅ”anas. Un Cloud SQL iespējas paÅ”laik ir ierobežotas. Mākoņa SQL atbalsta augstas pieejamÄ«bas (HA) un lasÄ«Å”anas reprodukciju (RR), taču viena un tā pati RR tiek atbalstÄ«ta tikai vienā reÄ£ionā. Izveidojot datubāzi Amerikas reÄ£ionā, jÅ«s nevarat izveidot lasÄ«Å”anas kopiju Eiropas reÄ£ionā, izmantojot Cloud SQL, lai gan Postgres pati par sevi neliedz jums to darÄ«t. Sarakste ar Google darbiniekiem nekur nenoveda un beidzās ar solÄ«jumiem stilā ā€œmēs zinām problēmu un strādājam pie tās, kādreiz problēma tiks atrisinātaā€.

Ja mēs Ä«si uzskaitām Cloud SQL iespējas, tas izskatÄ«sies apmēram Ŕādi:

1. Augsta pieejamÄ«ba (HA):

  • viena reÄ£iona ietvaros;
  • izmantojot diska replikāciju;
  • PostgreSQL dzinēji netiek izmantoti;
  • iespējama automātiska un manuāla vadÄ«ba - failover/failback;
  • Pārslēdzoties, DBVS nav pieejama vairākas minÅ«tes.

2. Izlasiet reprodukciju (RR):

  • viena reÄ£iona ietvaros;
  • karstā gaidÄ«Å”anas režīms;
  • PostgreSQL straumÄ“Å”anas replikācija.

Turklāt, kā tas ir ierasts, izvēloties tehnoloģiju, jūs vienmēr saskaraties ar dažiem ierobežojumiem:

  • klients nevēlējās izveidot entÄ«tijas un izmantot IaaS, izņemot, izmantojot GKE;
  • klients nevēlas izvietot paÅ”pakalpojumu PostgreSQL/MySQL;
  • Nu, kopumā Google Spanner bÅ«tu diezgan piemērots, ja tas nebÅ«tu par savu cenu, tomēr Django ORM ar to nevar strādāt, taču tā ir laba lieta.

Ņemot vērā situāciju, klients saņēma sekojoÅ”u jautājumu: "Vai varat darÄ«t kaut ko lÄ«dzÄ«gu, lai tas bÅ«tu kā Google Spanner, bet darbotos arÄ« ar Django ORM?"

Risinājuma variants Nr.0

Pirmā lieta, kas ienāca prātā:

  • palikt CloudSQL ietvaros;
  • starp reÄ£ioniem nebÅ«s iebÅ«vētas replikācijas nekādā veidā;
  • mēģināt pievienot repliku esoÅ”am Cloud SQL, izmantojot PostgreSQL;
  • kaut kur un kaut kā palaidiet PostgreSQL gadÄ«jumu, bet vismaz nepieskarieties galvenajam.

Diemžēl izrādījās, ka to nevar izdarīt, jo nav piekļuves hostam (tas ir pavisam citā projektā) - pg_hba un tā tālāk, un nav arī piekļuves zem superlietotāja.

Risinājuma variants Nr.1

Pēc turpmākām pārdomām un, ņemot vērā iepriekŔējos apstākļus, domu gājiens nedaudz mainÄ«jās:

  • Mēs joprojām cenÅ”amies palikt CloudSQL ietvaros, taču mēs pārejam uz MySQL, jo Cloud SQL by MySQL ir ārējs galvenais serveris, kas:

ā€” ir ārēja MySQL starpniekserveris;
- izskatās pēc MySQL instances;
- izgudrots datu migrÄ“Å”anai no citiem mākoņiem vai lokālām vietām.

Tā kā MySQL replikācijas iestatÄ«Å”anai nav nepiecieÅ”ama piekļuve resursdatoram, principā viss darbojās, taču tas bija ļoti nestabils un neērti. Un, kad devāmies tālāk, kļuva pavisam biedējoÅ”i, jo mēs izvietojām visu konstrukciju ar terraformu, un pēkŔņi izrādÄ«jās, ka ārējais meistars nav atbalstÄ«ts ar terraformu. Jā, Google ir CLI, taču kaut kādu iemeslu dēļ Å”eit ik pa laikam viss darbojās - dažreiz tas tiek izveidots, dažreiz tas nav izveidots. VarbÅ«t tāpēc, ka CLI tika izgudrots ārējai datu migrācijai, nevis replikām.

PatiesÄ«bā Å”ajā brÄ«dÄ« kļuva skaidrs, ka Cloud SQL vispār nav piemērots. Kā saka, darÄ«jām visu, ko varējām.

Risinājuma variants Nr.2

Tā kā nebija iespējams palikt Cloud SQL ietvaros, mēs centāmies formulēt prasÄ«bas kompromisa risinājumam. PrasÄ«bas izrādÄ«jās Ŕādas:

  • darbs Kubernetes, Kubernetes (DCS, ...) un GCP (LB, ...) resursu un iespēju maksimāla izmantoÅ”ana;
  • balasta trÅ«kums no daudzām nevajadzÄ«gām lietām mākonÄ«, piemēram, HA starpniekserveris;
  • iespēja palaist PostgreSQL vai MySQL galvenajā HA reÄ£ionā; citos reÄ£ionos - HA no galvenā reÄ£iona RR plus tā kopija (uzticamÄ«bas labad);
  • multi meistars (es negribēju ar viņu sazināties, bet tas nebija Ä«paÅ”i svarÄ«gi)

.
Å o prasÄ«bu rezultātā ppiemērotas DBVS un saistÄ«Å”anas iespējas:

  • MySQL Galera;
  • PrusakuDB;
  • PostgreSQL rÄ«ki

:
- pgpool-II;
ā€” Patrons.

MySQL Galera

MySQL Galera tehnoloÄ£iju izstrādāja Codership, un tā ir InnoDB spraudnis. ÄŖpatnÄ«bas:

  • multi meistars;
  • sinhronā replikācija;
  • lasÄ«Å”ana no jebkura mezgla;
  • ierakstÄ«Å”ana jebkurā mezglā;
  • iebÅ«vēts HA mehānisms;
  • Ir Helm diagramma no Bitnami.

TarakānsDB

Pēc apraksta lieta ir absolÅ«ti bomba un ir Go rakstÄ«ts atvērtā koda projekts. Galvenais dalÄ«bnieks ir Cockroach Labs (dibināja cilvēki no Google). Å Ä« relāciju DBVS sākotnēji tika izstrādāta izplatÄ«Å”anai (ar horizontālu mērogoÅ”anu no komplektācijas) un kļūdu tolerantu. Tās autori no uzņēmuma izklāstÄ«ja mērÄ·i "apvienot SQL funkcionalitātes bagātÄ«bu ar horizontālo pieejamÄ«bu, kas pazÄ«stama NoSQL risinājumiem".

Jauks bonuss ir atbalsts savienojuma protokolam pēc progresa.

pgpool

Å is ir PostgreSQL papildinājums, faktiski jauna entÄ«tija, kas pārņem visus savienojumus un apstrādā tos. Tam ir savs slodzes balansētājs un parsētājs, kas licencēts saskaņā ar BSD licenci. Tas sniedz plaÅ”as iespējas, bet izskatās nedaudz biedējoÅ”i, jo jaunas bÅ«tnes klātbÅ«tne var kļūt par dažu papildu piedzÄ«vojumu avotu.

Patroni

Å Ä« ir pēdējā lieta, uz ko manas acis iekrita, un, kā izrādÄ«jās, ne velti. Patroni ir atvērtā pirmkoda utilÄ«ta, kas bÅ«tÄ«bā ir Python dēmons, kas ļauj automātiski uzturēt PostgreSQL klasterus ar dažāda veida replikāciju un automātisku lomu maiņu. Lieta izrādÄ«jās ļoti interesanta, jo tā labi integrējas ar kuberu un neievieÅ” jaunas entÄ«tijas.

Ko jūs beigās izvēlējāties?

Izvēle nebija viegla:

  1. TarakānsDB - uguns, bet tumŔs;
  2. MySQL Galera - arī nav slikti, to lieto daudzviet, bet MySQL;
  3. pgpool ā€” daudz nevajadzÄ«gu entÄ«tiju, tā-tik integrācija ar mākoni un K8s;
  4. Patroni - lieliska integrācija ar K8s, nav nevajadzīgu entītiju, labi integrējas ar GCP LB.

Tādējādi izvēle krita uz Patroni.

Atzinumi

Ir pienācis laiks īsi apkopot. Jā, IT infrastruktūras pasaule ir būtiski mainījusies, un tas ir tikai sākums. Un, ja agrāk mākoņi bija tikai cita veida infrastruktūra, tad tagad viss ir savādāk. Turklāt jauninājumi mākoņos parādās nepārtraukti, parādīsies un, iespējams, parādīsies tikai mākoņos un tikai tad ar startup pūlēm tiks pārnesti uz On-premises.

Kas attiecas uz SQL, SQL dzīvos. Tas nozīmē, ka jums ir jāzina PostgreSQL un MySQL un jāprot ar tiem strādāt, bet vēl svarīgāk ir prast tos pareizi lietot.

Avots: www.habr.com

Pievieno komentāru