Giunsa nga mabuhi ang usa ka database sa SQL sa ika-21 nga siglo: mga panganod, Kubernetes ug PostgreSQL multimaster

Kumusta, mga residente sa Khabrovsk. Ang mga klase sa unang grupo sa kurso magsugod karong adlawa "PostgreSQL". Bahin niini, gusto namong isulti kanimo kung giunsa ang bukas nga webinar sa kini nga kurso nahitabo.

Giunsa nga mabuhi ang usa ka database sa SQL sa ika-21 nga siglo: mga panganod, Kubernetes ug PostgreSQL multimaster

Π’ sunod nga bukas nga leksyon naghisgot kami bahin sa mga hagit nga giatubang sa mga database sa SQL sa panahon sa mga panganod ug Kubernetes. Sa samang higayon, among gitan-aw kung giunsa pagpahiangay ug pagbag-o ang mga database sa SQL ubos sa impluwensya sa kini nga mga hagit.

Gipahigayon ang webinar Valery Bezrukov, Google Cloud Practice Delivery Manager sa EPAM Systems.

Sa dihang gagmay pa ang mga kahoy...

Una, atong hinumdoman kung giunsa ang pagpili sa DBMS nagsugod sa katapusan sa miaging siglo. Bisan pa, dili kini lisud, tungod kay ang pagpili sa usa ka DBMS niadtong mga adlawa nagsugod ug natapos pulong sa Dios.

Giunsa nga mabuhi ang usa ka database sa SQL sa ika-21 nga siglo: mga panganod, Kubernetes ug PostgreSQL multimaster

Sa ulahing bahin sa 90s ug sayo sa 2s, wala'y esensya nga kapilian kon bahin sa industriyal nga scalable databases. Oo, adunay IBM DBXNUMX, Sybase ug uban pang mga database nga miabut ug miadto, apan sa kinatibuk-an sila dili kaayo mamatikdan batok sa background sa Oracle. Tungod niini, ang mga kahanas sa mga inhenyero niadtong mga panahona sa usa ka paagi nahigot sa bugtong pagpili nga naglungtad.

Ang Oracle DBA kinahanglan nga makahimo sa:

  • i-install ang Oracle Server gikan sa distribution kit;
  • i-configure ang Oracle Server:

  • init.ora;
  • tigpaminaw.ora;

- paghimo:

  • mga lamesa;
  • mga laraw;
  • tiggamit;

- paghimo backup ug pagpasig-uli;
- paghimo sa pagmonitor;
- pag-atubang sa suboptimal nga mga hangyo.

Sa samang higayon, walay espesyal nga kinahanglanon gikan sa Oracle DBA:

  • makahimo sa pagpili sa labing maayo nga DBMS o uban pang teknolohiya alang sa pagtipig ug pagproseso sa datos;
  • paghatag og taas nga pagkaanaa ug pinahigda nga scalability (kini dili kanunay usa ka isyu sa DBA);
  • maayo nga kahibalo sa hilisgutan nga lugar, imprastraktura, arkitektura sa aplikasyon, OS;
  • load ug unload data, migrate data tali sa lain-laing mga DBMSs.

Sa kinatibuk-an, kung maghisgot kita mahitungod sa pagpili niadtong mga adlawa, kini susama sa pagpili sa usa ka tindahan sa Sobyet sa ulahing bahin sa dekada 80:

Giunsa nga mabuhi ang usa ka database sa SQL sa ika-21 nga siglo: mga panganod, Kubernetes ug PostgreSQL multimaster

Atong oras

Sukad niadto, siyempre, ang mga kahoy mitubo, ang kalibutan nausab, ug kini nahimong sama niini:

Giunsa nga mabuhi ang usa ka database sa SQL sa ika-21 nga siglo: mga panganod, Kubernetes ug PostgreSQL multimaster

Ang merkado sa DBMS nausab usab, ingon nga tin-aw nga makita gikan sa pinakabag-o nga taho gikan sa Gartner:

Giunsa nga mabuhi ang usa ka database sa SQL sa ika-21 nga siglo: mga panganod, Kubernetes ug PostgreSQL multimaster

Ug dinhi kinahanglan nga matikdan nga ang mga panganod, kansang pagkapopular nagkadako, nag-okupar sa ilang niche. Kung atong basahon ang parehas nga taho sa Gartner, atong makita ang mosunod nga mga konklusyon:

  1. Daghang mga kustomer ang naa sa dalan sa pagbalhin sa mga aplikasyon sa panganod.
  2. Ang mga bag-ong teknolohiya una nga nagpakita sa panganod ug dili kini usa ka kamatuoran nga sila mobalhin sa imprastraktura nga dili panganod.
  3. Ang pay-as-you-go nga modelo sa pagpresyo nahimong kasagaran. Ang tanan gusto nga mobayad lamang sa ilang gigamit, ug dili kini usa ka uso, apan usa lamang ka pahayag sa kamatuoran.

Unsa karon?

Karon kitang tanan anaa sa panganod. Ug ang mga pangutana nga mitungha alang kanato mga pangutana sa pagpili. Ug dako kini, bisan kung maghisgot lang kami bahin sa pagpili sa mga teknolohiya sa DBMS sa format nga On-premises. Kami usab adunay pagdumala nga mga serbisyo ug SaaS. Busa, ang pagpili mahimong mas lisud matag tuig.

Uban sa mga pangutana sa pagpili, adunay usab naglimite nga mga hinungdan:

  • ang presyo. Daghang mga teknolohiya nagkantidad gihapon og salapi;
  • kahanas. Kung naghisgot kami bahin sa libre nga software, nan ang pangutana sa mga kahanas mitungha, tungod kay ang libre nga software nanginahanglan igo nga katakus gikan sa mga tawo nga nag-deploy ug nag-operate niini;
  • magamit. Dili tanan nga mga serbisyo nga magamit sa panganod ug gitukod, ingnon ta, bisan sa parehas nga Postgres, adunay parehas nga mga bahin sa Postgres On-premises. Kini usa ka hinungdanon nga hinungdan nga kinahanglan mahibal-an ug masabtan. Dugang pa, kini nga butang nahimong mas importante kay sa kahibalo sa pipila ka mga tinago nga kapabilidad sa usa ka DBMS.

Unsa ang gipaabut gikan sa DA/DE karon:

  • maayong pagsabot sa subject area ug application architecture;
  • ang abilidad sa husto nga pagpili sa angay nga teknolohiya sa DBMS, nga gikonsiderar ang buluhaton sa kamot;
  • ang abilidad sa pagpili sa kamalaumon nga pamaagi alang sa pagpatuman sa pinili nga teknolohiya sa konteksto sa kasamtangan nga mga limitasyon;
  • abilidad sa pagbuhat sa data pagbalhin ug paglalin;
  • abilidad sa pagpatuman ug pag-operate sa pinili nga mga solusyon.

Ubos nga pananglitan base sa GCP nagpakita kon sa unsang paagi ang pagpili sa usa o lain nga teknolohiya alang sa pagtrabaho uban sa data molihok depende sa istruktura niini:

Giunsa nga mabuhi ang usa ka database sa SQL sa ika-21 nga siglo: mga panganod, Kubernetes ug PostgreSQL multimaster

Palihug timan-i nga ang PostgreSQL wala gilakip sa schema, ug kini tungod kay kini gitago ubos sa terminolohiya Cloud SQL. Ug kung makaabut na kami sa Cloud SQL, kinahanglan namon nga mopili pag-usab:

Giunsa nga mabuhi ang usa ka database sa SQL sa ika-21 nga siglo: mga panganod, Kubernetes ug PostgreSQL multimaster

Kinahanglan nga hinumdoman nga kini nga pagpili dili kanunay nga tin-aw, busa ang mga developer sa aplikasyon kanunay nga gigiyahan sa intuwisyon.

Total:

  1. Ang dugang nga imong pag-adto, ang labi ka dinalian nga pangutana sa pagpili. Ug bisan kung tan-awon nimo ang GCP, pagdumala nga mga serbisyo ug SaaS, unya ang pipila nga paghisgot sa RDBMS makita ra sa ika-4 nga lakang (ug didto ang Spanner sa duol). Dugang pa, ang pagpili sa PostgreSQL makita sa ika-5 nga lakang, ug sunod niini adunay usab MySQL ug SQL Server, kana mao adunay daghan sa tanan, apan kinahanglan ka nga mopili.
  2. Dili nato kalimtan ang mahitungod sa mga pagdili batok sa background sa mga tintasyon. Sa panguna gusto sa tanan ang usa ka Spanner, apan kini mahal. Ingon usa ka sangputanan, ang usa ka kasagaran nga hangyo ingon niini: "Palihug himoa kami nga usa ka Spanner apan alang sa presyo sa Cloud SQL, mga propesyonal ka!"

Giunsa nga mabuhi ang usa ka database sa SQL sa ika-21 nga siglo: mga panganod, Kubernetes ug PostgreSQL multimaster

Unsa ang akong buhaton?

Sa walay pag-angkon nga mao ang katapusang kamatuoran, atong isulti ang mosunod:

Kinahanglan natong usbon ang atong pamaagi sa pagkat-on:

  • walay kapuslanan ang pagtudlo sa paagi sa pagtudlo sa mga DBA kaniadto;
  • ang kahibalo sa usa ka produkto dili na igo;
  • apan ang pagkahibalo sa mga dosena sa lebel sa usa imposible.

Kinahanglan nimong mahibal-an dili lamang ug dili kung unsa kadaghan ang produkto, apan:

  • kaso sa paggamit sa aplikasyon niini;
  • lainlaing mga pamaagi sa pag-deploy;
  • bentaha ug disbentaha sa matag pamaagi;
  • susama ug alternatibo nga mga produkto sa paghimo sa usa ka nahibal-an ug labing maayo nga pagpili ug dili kanunay pabor sa usa ka pamilyar nga produkto.

Kinahanglan ka usab nga makahimo sa pagbalhin sa datos ug masabtan ang sukaranang mga prinsipyo sa paghiusa sa ETL.

Tinuod nga kaso

Sa bag-ohay nga nangagi, gikinahanglan ang paghimo og backend alang sa usa ka mobile application. Sa panahon nga nagsugod ang trabaho niini, ang backend naugmad na ug andam na alang sa pagpatuman, ug ang development team migugol ug mga duha ka tuig niini nga proyekto. Gitakda ang mosunod nga mga buluhaton:

  • pagtukod CI/CD;
  • repasoha ang arkitektura;
  • ibutang kining tanan sa operasyon.

Ang aplikasyon mismo mao ang mga microservice, ug ang Python/Django code gimugna gikan sa scratch ug direkta sa GCP. Sama sa alang sa target audience, gituohan nga adunay duha ka rehiyon - US ug EU, ug ang trapiko giapod-apod pinaagi sa Global Load balancer. Ang tanang Workloads ug compute workload midagan sa Google Kubernetes Engine.

Sama sa alang sa datos, adunay 3 nga istruktura:

  • Pagtipig sa panganod;
  • Datastore;
  • Cloud SQL (PostgreSQL).

Giunsa nga mabuhi ang usa ka database sa SQL sa ika-21 nga siglo: mga panganod, Kubernetes ug PostgreSQL multimaster

Mahimong maghunahuna ang usa ngano nga gipili ang Cloud SQL? Sa pagsulti sa tinuod, ang ingon nga pangutana hinungdan sa usa ka matang sa dili maayo nga paghunong sa bag-ohay nga mga tuig - adunay usa ka pagbati nga ang mga tawo naulaw sa mga relational database, apan bisan pa niana sila nagpadayon sa aktibong paggamit niini ;-).

Sama sa alang sa among kaso, gipili ang Cloud SQL alang sa mga musunud nga hinungdan:

  1. Sama sa nahisgotan na, ang aplikasyon gihimo gamit ang Django, ug kini adunay modelo sa pagmapa sa padayon nga datos gikan sa SQL database ngadto sa Python objects (Django ORM).
  2. Ang balangkas mismo nagsuporta sa usa ka medyo limitado nga lista sa mga DBMS:

  • PostgreSQL;
  • MariaDB;
  • MySQL;
  • mga orakulo;
  • SQLite

Tungod niini, gipili ang PostgreSQL gikan sa kini nga lista nga intuitively (maayo, dili gyud Oracle ang pilion).

Unsa ang kulang:

  • ang aplikasyon gipakatap lamang sa 2 ka rehiyon, ug ang ika-3 nga nagpakita sa mga plano (Asia);
  • Ang database nahimutang sa rehiyon sa North America (Iowa);
  • sa bahin sa kustomer adunay mga kabalaka bahin sa posible mga paglangan sa pag-access gikan sa Europe ug Asia ug mga pagkabalda sa serbisyo sa kaso sa DBMS downtime.

Bisan pa sa kamatuoran nga ang Django mismo makatrabaho sa daghang mga database nga managsama ug bahinon kini sa pagbasa ug pagsulat, wala’y daghang pagsulat sa aplikasyon (labaw pa sa 90% ang nagbasa). Ug sa kinatibuk-an, ug sa kinatibuk-an, kung posible nga buhaton read-replica sa nag-unang base sa Europe ug Asia, mahimo kini nga solusyon sa pagkompromiso. Aw, unsa may komplikado niini?

Ang kalisud mao nga ang kustomer dili gusto nga mohunong sa paggamit sa gidumala nga mga serbisyo ug Cloud SQL. Ug ang mga kapabilidad sa Cloud SQL karon limitado. Gisuportahan sa Cloud SQL ang High availability (HA) ug Read Replica (RR), apan ang parehas nga RR gisuportahan lamang sa usa ka rehiyon. Sa paghimo ug database sa rehiyon sa Amerika, dili ka makahimo ug read replica sa rehiyon sa Europe gamit ang Cloud SQL, bisan pa ang Postgres mismo dili makapugong kanimo sa pagbuhat niini. Ang korespondensya sa mga empleyado sa Google wala’y nahimo ug natapos sa mga saad sa istilo nga "nahibal-an namon ang problema ug gitrabaho kini, sa umaabot nga adlaw masulbad ang isyu."

Kung among ilista ang mga kapabilidad sa Cloud SQL sa makadiyot, kini tan-awon sama niini:

1. Taas nga magamit (HA):

  • sulod sa usa ka rehiyon;
  • pinaagi sa pagkopya sa disk;
  • Ang mga makina sa PostgreSQL wala gigamit;
  • awtomatiko ug manwal nga pagkontrol posible - failover/failback;
  • Kung magbalhinbalhin, ang DBMS dili magamit sa daghang minuto.

2. Basaha ang Replica (RR):

  • sulod sa usa ka rehiyon;
  • init nga standby;
  • PostgreSQL streaming replication.

Dugang pa, ingon sa naandan, kung nagpili usa ka teknolohiya kanunay ka nga nag-atubang sa pipila mga pagdili:

  • ang kustomer dili gusto nga maghimo og mga entidad ug mogamit sa IaaS, gawas pinaagi sa GKE;
  • dili gusto sa kustomer nga ipakatap ang serbisyo sa kaugalingon nga PostgreSQL/MySQL;
  • Aw, sa kinatibuk-an, ang Google Spanner mahimong angay kung dili alang sa presyo niini, bisan pa, ang Django ORM dili makatrabaho niini, apan kini usa ka maayong butang.

Sa pagkonsiderar sa sitwasyon, ang kustomer nakadawat og follow-up nga pangutana: "Mahimo ba nimo ang usa ka butang nga parehas aron kini sama sa Google Spanner, apan magamit usab sa Django ORM?"

Opsyon sa solusyon No. 0

Ang unang butang nga misantop sa hunahuna:

  • magpabilin sulod sa CloudSQL;
  • wala'y gitukod nga replikasyon tali sa mga rehiyon sa bisan unsang porma;
  • sulayi pag-attach og replika sa kasamtangan nga Cloud SQL sa PostgreSQL;
  • maglunsad og usa ka PostgreSQL nga pananglitan sa usa ka dapit ug sa usa ka paagi, apan labing menos ayaw paghikap sa agalon.

Alaut, nahimo nga dili kini mahimo, tungod kay wala’y pag-access sa host (kini sa usa ka lahi nga proyekto sa tanan) - pg_hba ug uban pa, ug wala usab pag-access sa ilawom sa superuser.

Opsyon sa solusyon No. 1

Human sa dugang nga pagpamalandong ug pagkonsiderar sa nangaging mga kahimtang, ang tren sa panghunahuna medyo nausab:

  • Naningkamot gihapon kami nga magpabilin sulod sa CloudSQL, apan mibalhin kami sa MySQL, tungod kay ang Cloud SQL sa MySQL adunay usa ka eksternal nga agalon, nga:

- usa ka proxy alang sa eksternal nga MySQL;
- morag MySQL pananglitan;
- giimbento alang sa pagbalhin sa datos gikan sa ubang mga panganod o On-premises.

Tungod kay ang pag-set up sa MySQL replication wala magkinahanglan og access sa host, sa prinsipyo ang tanan nagtrabaho, apan kini dili lig-on ug dili kombenyente. Ug sa dihang mipadayon kami, kini nahimong hingpit nga makahahadlok, tungod kay among gipakatap ang tibuok nga estraktura nga adunay terraform, ug sa kalit kini nahimo nga ang eksternal nga agalon wala gisuportahan sa terraform. Oo, ang Google adunay CLI, apan sa pipila ka rason ang tanan nagtrabaho dinhi matag karon ug unya - usahay kini gibuhat, usahay wala kini gibuhat. Tingali tungod kay ang CLI giimbento para sa external data migration, ug dili para sa mga replika.

Sa tinuud, sa kini nga punto nahimo nga tin-aw nga ang Cloud SQL dili gyud angay. Sama sa giingon nila, gibuhat namon ang tanan nga among mahimo.

Opsyon sa solusyon No. 2

Tungod kay dili posible nga magpabilin sulod sa Cloud SQL framework, gisulayan namo ang paghimo sa mga kinahanglanon alang sa usa ka solusyon sa pagkompromiso. Ang mga kinahanglanon mao ang mosunod:

  • pagtrabaho sa Kubernetes, maximum nga paggamit sa mga kapanguhaan ug kapabilidad sa Kubernetes (DCS, ...) ug GCP (LB, ...);
  • kakulang sa ballast gikan sa usa ka hugpong sa wala kinahanglana nga mga butang sa panganod sama sa HA proxy;
  • ang abilidad sa pagpadagan sa PostgreSQL o MySQL sa nag-unang rehiyon sa HA; sa ubang mga rehiyon - HA gikan sa RR sa nag-unang rehiyon plus ang kopya niini (alang sa kasaligan);
  • multi master (dili ko gusto nga makontak siya, apan dili kini hinungdanon)

.
Isip resulta niini nga mga panginahanglan, pangay nga DBMS ug mga kapilian sa pagbugkos:

  • MySQL Galera;
  • CockroachDB;
  • Mga gamit sa PostgreSQL

:
- pgpool-II;
β€” Patroni.

MySQL Galera

Ang teknolohiya sa MySQL Galera gimugna sa Codership ug usa ka plugin alang sa InnoDB. Mga Kinaiya:

  • daghang agalon;
  • dungan nga pagkopya;
  • pagbasa gikan sa bisan unsang node;
  • pagrekord sa bisan unsang node;
  • built-in nga mekanismo sa HA;
  • Adunay usa ka Helm nga tsart gikan sa Bitnami.

cockroachDB

Sumala sa paghulagway, ang butang hingpit nga bomba ug usa ka open source nga proyekto nga gisulat sa Go. Ang nag-unang partisipante mao ang Cockroach Labs (gitukod sa mga tawo gikan sa Google). Kini nga relational nga DBMS orihinal nga gidisenyo aron ipang-apod-apod (uban ang pinahigda nga pag-scale gikan sa kahon) ug dili matugotan sa sayup. Ang mga tagsulat niini gikan sa kompanya naglatid sa tumong sa "paghiusa sa kadato sa SQL functionality uban sa horizontal accessibility pamilyar sa NoSQL solutions."

Ang usa ka nindot nga bonus mao ang suporta alang sa post-gress connection protocol.

Pgpool

Kini usa ka add-on sa PostgreSQL, sa tinuud, usa ka bag-ong entidad nga nagkuha sa tanan nga koneksyon ug nagproseso niini. Kini adunay kaugalingon nga load balancer ug parser, nga lisensyado ubos sa lisensya sa BSD. Naghatag kini daghang mga oportunidad, apan medyo makahadlok, tungod kay ang presensya sa usa ka bag-ong entidad mahimo’g mahimong gigikanan sa pipila nga dugang nga mga panimpalad.

Patroni

Mao kini ang katapusan nga butang nga gitan-aw sa akong mga mata, ug, ingon nga kini nahimo, dili kawang. Ang Patroni usa ka bukas nga gigikanan nga utility, nga hinungdanon usa ka Python daemon nga nagtugot kanimo nga awtomatiko nga mamentinar ang mga cluster sa PostgreSQL nga adunay lainlaing mga lahi sa replikasyon ug awtomatikong pagbalhin sa papel. Ang butang nahimo nga makapaikag kaayo, tungod kay kini maayo nga nahiusa sa cuber ug wala nagpaila sa bisan unsang bag-ong mga entidad.

Unsa ang imong gipili sa katapusan?

Ang pagpili dili sayon:

  1. cockroachDB - kalayo, apan ngitngit;
  2. MySQL Galera - dili usab daotan, gigamit kini sa daghang mga lugar, apan ang MySQL;
  3. Pgpool - daghang wala kinahanglana nga mga entidad, ingon nga panagsama sa panganod ug K8s;
  4. Patroni - maayo kaayo nga panagsama sa K8s, walay dili kinahanglan nga mga entidad, maayo nga nahiusa sa GCP LB.

Busa, ang pagpili nahulog sa Patroni.

kaplag

Panahon na sa pagsumada sa makadiyot. Oo, ang kalibutan sa imprastraktura sa IT dako nga nabag-o, ug kini ang sinugdanan. Ug kung kaniadto ang mga panganod usa ra ka klase sa imprastraktura, karon lahi na ang tanan. Dugang pa, ang mga inobasyon sa mga panganod kanunay nga nagpakita, kini makita ug, tingali, kini makita lamang sa mga panganod ug unya lamang, pinaagi sa mga paningkamot sa mga startup, sila ibalhin sa On-premises.

Sama sa SQL, ang SQL mabuhi. Kini nagpasabot nga kinahanglan nimo nga mahibal-an ang PostgreSQL ug MySQL ug makahimo sa pagtrabaho uban kanila, apan ang mas importante mao ang paggamit niini sa husto.

Source: www.habr.com

Idugang sa usa ka comment