Bii o ṣe le ye ibi ipamọ data SQL kan ni ọrundun 21st: awọn awọsanma, Kubernetes ati PostgreSQL multimaster

Kaabo, awọn olugbe Khabrovsk. Awọn kilasi ni ẹgbẹ akọkọ ti iṣẹ ikẹkọ bẹrẹ loni PostgreSQL. Ni iyi yii, a yoo fẹ lati sọ fun ọ nipa bii oju opo wẹẹbu ṣiṣi lori iṣẹ-ẹkọ yii ṣe waye.

Bii o ṣe le ye ibi ipamọ data SQL kan ni ọrundun 21st: awọn awọsanma, Kubernetes ati PostgreSQL multimaster

В tókàn ìmọ ẹkọ a ti sọrọ nipa awọn italaya SQL infomesonu koju ni akoko ti awọsanma ati Kubernetes. Ni akoko kanna, a wo bi awọn apoti isura infomesonu SQL ṣe ṣe deede ati mutate labẹ ipa ti awọn italaya wọnyi.

Webinar ti waye Valery Bezrukov, Google Cloud Practice Ifijiṣẹ Manager ni EPAM Systems.

Nigbati awọn igi jẹ kekere ...

Ni akọkọ, jẹ ki a ranti bi yiyan ti DBMS ṣe bẹrẹ ni opin ọrundun to kọja. Sibẹsibẹ, eyi kii yoo nira, nitori yiyan DBMS ni awọn ọjọ yẹn bẹrẹ ati pari Ebora.

Bii o ṣe le ye ibi ipamọ data SQL kan ni ọrundun 21st: awọn awọsanma, Kubernetes ati PostgreSQL multimaster

Ni ipari awọn ọdun 90 ati ibẹrẹ awọn ọdun 2, ko si yiyan ni pataki nigbati o ba de awọn apoti isura data ti iwọn ile-iṣẹ. Bẹẹni, IBM DBXNUMX wa, Sybase ati diẹ ninu awọn data data miiran ti o wa ti o lọ, ṣugbọn ni gbogbogbo wọn ko ṣe akiyesi bẹ si abẹlẹ ti Oracle. Gegebi bi, awọn ogbon ti awọn Enginners ti awọn akoko won bakan ti so si awọn nikan wun ti o wà.

Oracle DBA ni lati ni anfani lati:

  • fi sori ẹrọ olupin Oracle lati ohun elo pinpin;
  • tunto olupin Oracle:

  • init.ora;
  • gbo.ora;

- ṣẹda:

  • awọn aaye tabili;
  • eto;
  • awọn olumulo;

- ṣe afẹyinti ati mimu-pada sipo;
- gbe jade ibojuwo;
- wo pẹlu suboptimal ibeere.

Ni akoko kanna, ko si ibeere pataki lati Oracle DBA:

  • ni anfani lati yan DBMS ti o dara julọ tabi imọ-ẹrọ miiran fun titoju ati sisẹ data;
  • pese wiwa giga ati iwọn petele (eyi kii ṣe ọran DBA nigbagbogbo);
  • Imọ ti o dara ti agbegbe koko-ọrọ, awọn amayederun, faaji ohun elo, OS;
  • fifuye ati ki o tu data, gbe data laarin o yatọ si DBMS.

Ni gbogbogbo, ti a ba sọrọ nipa yiyan ni awọn ọjọ wọnyẹn, o dabi yiyan ni ile itaja Soviet kan ni awọn ọdun 80:

Bii o ṣe le ye ibi ipamọ data SQL kan ni ọrundun 21st: awọn awọsanma, Kubernetes ati PostgreSQL multimaster

Lasiko yii

Lati igbanna, dajudaju, awọn igi ti dagba, aye ti yipada, o si di nkan bi eyi:

Bii o ṣe le ye ibi ipamọ data SQL kan ni ọrundun 21st: awọn awọsanma, Kubernetes ati PostgreSQL multimaster

Ọja DBMS tun ti yipada, bi a ṣe le rii ni kedere lati ijabọ tuntun lati ọdọ Gartner:

Bii o ṣe le ye ibi ipamọ data SQL kan ni ọrundun 21st: awọn awọsanma, Kubernetes ati PostgreSQL multimaster

Ati pe nibi o yẹ ki o ṣe akiyesi pe awọn awọsanma, ti olokiki rẹ n dagba, ti gba onakan wọn. Ti a ba ka ijabọ Gartner kanna, a yoo rii awọn ipinnu wọnyi:

  1. Ọpọlọpọ awọn onibara wa ni ọna si gbigbe awọn ohun elo si awọsanma.
  2. Awọn imọ-ẹrọ titun han ni akọkọ ninu awọsanma ati pe kii ṣe otitọ pe wọn yoo gbe lọ si awọn amayederun ti kii ṣe awọsanma.
  3. Awoṣe sisanwo-bi-o-lọ ti di ibi ti o wọpọ. Gbogbo eniyan fẹ lati sanwo nikan fun ohun ti wọn lo, ati pe eyi kii ṣe aṣa paapaa, ṣugbọn ọrọ kan ti o daju.

Kini bayi?

Loni gbogbo wa ni awọsanma. Ati awọn ibeere ti o dide fun wa ni awọn ibeere yiyan. Ati pe o tobi, paapaa ti a ba sọrọ nikan nipa yiyan awọn imọ-ẹrọ DBMS ni ọna kika ile-ile. A tun ni awọn iṣẹ iṣakoso ati SaaS. Nitorinaa, yiyan nikan di nira sii ni gbogbo ọdun.

Pẹlú pẹlu awọn ibeere yiyan, tun wa idiwon ifosiwewe:

  • owo. Ọpọlọpọ awọn imọ-ẹrọ ṣi jẹ owo;
  • ogbon. Ti a ba n sọrọ nipa sọfitiwia ọfẹ, lẹhinna ibeere ti awọn ọgbọn dide, nitori sọfitiwia ọfẹ nilo agbara to lati ọdọ awọn eniyan ti o mu ṣiṣẹ ati ṣiṣẹ;
  • iṣẹ-. Kii ṣe gbogbo awọn iṣẹ ti o wa ninu awọsanma ati ti a ṣe, sọ, paapaa lori Postgres kanna, ni awọn ẹya kanna bi Postgres On-premises. Eyi jẹ ifosiwewe pataki ti o nilo lati mọ ati oye. Pẹlupẹlu, ifosiwewe yii di pataki ju imọ diẹ ninu awọn agbara ti o farapamọ ti DBMS kan.

Kini o nireti lati ọdọ DA/DE ni bayi:

  • oye ti o dara ti agbegbe koko-ọrọ ati faaji ohun elo;
  • agbara lati yan ọna ẹrọ DBMS ti o tọ ni akiyesi iṣẹ-ṣiṣe ti o wa ni ọwọ;
  • agbara lati yan ọna ti o dara julọ fun imuse imọ-ẹrọ ti o yan ni agbegbe ti awọn idiwọn to wa;
  • agbara lati ṣe gbigbe data ati ijira;
  • agbara lati ṣe ati ṣiṣẹ awọn solusan ti a yan.

Ni isalẹ apẹẹrẹ da lori GCP ṣe afihan bi yiyan ti ọkan tabi imọ-ẹrọ miiran fun ṣiṣẹ pẹlu data ṣiṣẹ da lori eto rẹ:

Bii o ṣe le ye ibi ipamọ data SQL kan ni ọrundun 21st: awọn awọsanma, Kubernetes ati PostgreSQL multimaster

Jọwọ ṣe akiyesi pe PostgreSQL ko si ninu ero-ọrọ, ati pe eyi jẹ nitori pe o farapamọ labẹ awọn ọrọ-ọrọ Awọsanma SQL. Ati pe nigba ti a ba de Cloud SQL, a nilo lati ṣe yiyan lẹẹkansi:

Bii o ṣe le ye ibi ipamọ data SQL kan ni ọrundun 21st: awọn awọsanma, Kubernetes ati PostgreSQL multimaster

O yẹ ki o ṣe akiyesi pe yiyan yii ko han nigbagbogbo, nitorinaa awọn olupilẹṣẹ ohun elo nigbagbogbo ni itọsọna nipasẹ intuition.

Lapapọ:

  1. Ti o ba lọ siwaju, titẹ diẹ sii ibeere ti yiyan di. Ati paapaa ti o ba wo GCP nikan, awọn iṣẹ iṣakoso ati SaaS, lẹhinna diẹ ninu darukọ RDBMS han nikan ni igbesẹ 4th (ati pe Spanner wa nitosi). Pẹlupẹlu, yiyan PostgreSQL han ni igbesẹ 5th, ati lẹgbẹẹ rẹ MySQL ati olupin SQL tun wa, iyẹn ni. Ọpọlọpọ ohun gbogbo wa, ṣugbọn o ni lati yan.
  2. A ko gbọdọ gbagbe nipa awọn ihamọ lodi si abẹlẹ ti awọn idanwo. Ni ipilẹ gbogbo eniyan fẹ Spanner, ṣugbọn o gbowolori. Bi abajade, ibeere aṣoju kan dabi iru eyi: "Jọwọ ṣe wa Spanner ṣugbọn fun idiyele ti Cloud SQL, o jẹ alamọdaju!"

Bii o ṣe le ye ibi ipamọ data SQL kan ni ọrundun 21st: awọn awọsanma, Kubernetes ati PostgreSQL multimaster

Kí ló yẹ ká ṣe?

Laisi sisọ pe o jẹ otitọ ti o ga julọ, jẹ ki a sọ atẹle naa:

A nilo lati yi ọna kika wa pada:

  • ko si aaye ni kikọ ẹkọ ọna ti a ti kọ awọn DBA tẹlẹ;
  • imọ ọja kan ko to;
  • ṣugbọn mọ awọn dosinni ni ipele ti ọkan ko ṣee ṣe.

O nilo lati mọ kii ṣe nikan kii ṣe iye ọja naa, ṣugbọn:

  • lilo ọran ti ohun elo rẹ;
  • awọn ọna imuṣiṣẹ oriṣiriṣi;
  • anfani ati alailanfani ti kọọkan ọna;
  • iru ati yiyan awọn ọja lati ṣe alaye ati yiyan ti aipe ati kii ṣe nigbagbogbo ni ojurere ti ọja ti o faramọ.

O tun nilo lati ni anfani lati jade lọ data ati loye awọn ipilẹ ipilẹ ti iṣọpọ pẹlu ETL.

Ọran gidi

Ni aipẹ sẹhin, o jẹ dandan lati ṣẹda ẹhin fun ohun elo alagbeka kan. Ni akoko ti iṣẹ bẹrẹ lori rẹ, ẹhin ti ni idagbasoke tẹlẹ ati pe o ti ṣetan fun imuse, ati pe ẹgbẹ idagbasoke naa lo bii ọdun meji lori iṣẹ akanṣe yii. Awọn iṣẹ ṣiṣe wọnyi ti ṣeto:

  • kọ CI / CD;
  • atunwo awọn faaji;
  • fi gbogbo rẹ ṣiṣẹ.

Ohun elo funrararẹ jẹ awọn iṣẹ microservices, ati koodu Python/Django ti ni idagbasoke lati ibere ati taara ni GCP. Nipa awọn olugbo ibi-afẹde, a ro pe awọn agbegbe meji yoo wa - AMẸRIKA ati EU, ati pe a pin ijabọ nipasẹ iwọntunwọnsi fifuye Agbaye. Gbogbo awọn ẹru iṣẹ ati iṣiro iṣẹ ṣiṣe ṣiṣẹ lori Google Kubernetes Engine.

Bi fun data naa, awọn ẹya mẹta wa:

  • Ibi ipamọ awọsanma;
  • Ibi ipamọ data;
  • Awọsanma SQL (PostgreSQL).

Bii o ṣe le ye ibi ipamọ data SQL kan ni ọrundun 21st: awọn awọsanma, Kubernetes ati PostgreSQL multimaster

Ẹnikan le ṣe iyalẹnu idi ti awọsanma SQL ti yan? Lati sọ otitọ, iru ibeere bẹẹ ti fa diẹ ninu iru idaduro airọrun ni awọn ọdun aipẹ - rilara kan wa pe eniyan ti di itiju nipa awọn apoti isura data ibatan, ṣugbọn sibẹsibẹ wọn tẹsiwaju lati lo wọn ni itara ;-).

Fun ọran wa, Cloud SQL ti yan fun awọn idi wọnyi:

  1. Gẹgẹbi a ti sọ, ohun elo naa ni idagbasoke ni lilo Django, ati pe o ni awoṣe fun ṣiṣe aworan data ti o tẹpẹlẹ lati ibi ipamọ data SQL si awọn nkan Python (Django ORM).
  2. Ilana naa funrararẹ ṣe atilẹyin atokọ pipe ti awọn DBMS:

  • PostgreSQL;
  • MariaDB;
  • MySQL;
  • awọn ẹnu;
  • SQLite.

Nitorinaa, a yan PostgreSQL lati inu atokọ yii kuku ni oye (daradara, kii ṣe Oracle lati yan, looto).

Ohun ti o sonu:

  • ohun elo naa ni a gbejade nikan ni awọn agbegbe 2, ati pe 3rd kan han ni awọn ero (Asia);
  • Ibi ipamọ data wa ni agbegbe Ariwa Amerika (Iowa);
  • ni apa ti awọn onibara nibẹ wà awọn ifiyesi nipa ṣee ṣe wiwọle idaduro lati Europe ati Asia ati awọn idilọwọ ninu iṣẹ ni irú ti DBMS downtime.

Bi o ti jẹ pe Django funrararẹ le ṣiṣẹ pẹlu awọn apoti isura infomesonu pupọ ni afiwe ati pin wọn si kika ati kikọ, ko si kikọ pupọ ninu ohun elo (diẹ sii ju 90% jẹ kika). Ati ni gbogbogbo, ati ni gbogbogbo, ti o ba ṣee ṣe lati ṣe kika-ajọra ti ipilẹ akọkọ ni Yuroopu ati Esia, eyi yoo jẹ ojutu adehun. O dara, kini idiju nipa rẹ?

Iṣoro naa ni pe alabara ko fẹ lati fi silẹ nipa lilo awọn iṣẹ iṣakoso ati Cloud SQL. Ati awọn agbara ti Cloud SQL ti wa ni opin lọwọlọwọ. Awọsanma SQL ṣe atilẹyin wiwa giga (HA) ati kika ajọra (RR), ṣugbọn RR kanna ni atilẹyin nikan ni agbegbe kan. Lẹhin ti ṣẹda data data ni agbegbe Amẹrika, o ko le ṣe ẹda kika ni agbegbe Yuroopu ni lilo Cloud SQL, botilẹjẹpe Postgres funrararẹ ko ṣe idiwọ fun ọ lati ṣe eyi. Ibaraẹnisọrọ pẹlu awọn oṣiṣẹ Google ko yorisi nibikibi ati pari pẹlu awọn ileri ni aṣa ti “a mọ iṣoro naa ati pe a n ṣiṣẹ lori rẹ, ni ọjọ kan ọrọ naa yoo yanju.”

Ti a ba ṣe atokọ awọn agbara ti Cloud SQL ni ṣoki, yoo dabi iru eyi:

1. Wiwa giga (HA):

  • laarin agbegbe kan;
  • nipasẹ ẹda disiki;
  • Awọn ẹrọ PostgreSQL ko lo;
  • laifọwọyi ati iṣakoso ọwọ ṣee ṣe - failover / failback;
  • Nigbati o ba yipada, DBMS ko si fun awọn iṣẹju pupọ.

2. Ka ajọra (RR):

  • laarin agbegbe kan;
  • imurasilẹ gbona;
  • Atunṣe ṣiṣanwọle PostgreSQL.

Ni afikun, bi o ṣe jẹ aṣa, nigbati o ba yan imọ-ẹrọ o nigbagbogbo dojuko pẹlu diẹ ninu awọn awọn ihamọ:

  • alabara ko fẹ lati ṣẹda awọn nkan ati lo IaaS, ayafi nipasẹ GKE;
  • onibara yoo ko fẹ lati ran awọn ara iṣẹ PostgreSQL/MySQL;
  • O dara, ni gbogbogbo, Google Spanner yoo dara pupọ ti kii ṣe fun idiyele rẹ, sibẹsibẹ, Django ORM ko le ṣiṣẹ pẹlu rẹ, ṣugbọn o jẹ ohun ti o dara.

Ṣiyesi ipo naa, alabara gba ibeere atẹle: "Ṣe o le ṣe nkan ti o jọra ki o dabi Google Spanner, ṣugbọn tun ṣiṣẹ pẹlu Django ORM?"

Aṣayan ojutu No.. 0

Ohun akọkọ ti o wa si ọkan:

  • duro laarin CloudSQL;
  • kii yoo jẹ atunṣe ti a ṣe sinu laarin awọn agbegbe ni eyikeyi fọọmu;
  • gbiyanju lati so ẹda kan si SQL awọsanma ti o wa tẹlẹ nipasẹ PostgreSQL;
  • ṣe ifilọlẹ apẹẹrẹ PostgreSQL kan ni ibikan ati bakanna, ṣugbọn o kere ju maṣe fi ọwọ kan oluwa.

Alas, o wa ni jade wipe eyi ko le ṣee ṣe, nitori nibẹ ni ko si wiwọle si awọn ogun (o jẹ ni kan yatọ si ise agbese lapapọ) - pg_hba ati bẹ bẹ, ati nibẹ ni tun ko si wiwọle labẹ superuser.

Aṣayan ojutu No.. 1

Lẹhin iṣaro siwaju ati ni akiyesi awọn ipo iṣaaju, ọkọ oju irin ero yipada diẹ:

  • A tun n gbiyanju lati duro laarin CloudSQL, ṣugbọn a n yipada si MySQL, nitori Cloud SQL nipasẹ MySQL ni oluwa ita, eyiti:

- jẹ aṣoju fun MySQL ita;
- dabi apẹẹrẹ MySQL;
- ti a ṣe fun gbigbe data lati awọn awọsanma miiran tabi Lori-ile.

Niwọn igba ti iṣeto atunwi MySQL ko nilo iraye si agbalejo, ni ipilẹ ohun gbogbo ṣiṣẹ, ṣugbọn o jẹ riru pupọ ati korọrun. Ati pe nigba ti a ba lọ siwaju, o di ẹru patapata, nitori a gbe gbogbo eto pẹlu terraform, ati lojiji o wa ni pe oluwa ti ita ko ni atilẹyin nipasẹ terraform. Bẹẹni, Google ni CLI, ṣugbọn fun idi kan ohun gbogbo ṣiṣẹ nibi ni gbogbo igba ati lẹhinna - nigbami o ṣẹda, nigbakan ko ṣẹda. Boya nitori pe a ṣẹda CLI fun ijira data ita, kii ṣe fun awọn ẹda.

Lootọ, ni aaye yii o han gbangba pe Cloud SQL ko dara rara. Bi wọn ti sọ, a ṣe ohun gbogbo ti a le.

Aṣayan ojutu No.. 2

Niwọn igba ti ko ṣee ṣe lati duro laarin ilana awọsanma SQL, a gbiyanju lati ṣe agbekalẹ awọn ibeere fun ojutu adehun. Awọn ibeere ti jade lati jẹ atẹle yii:

  • ṣiṣẹ ni Kubernetes, lilo ti o pọju awọn ohun elo ati awọn agbara ti Kubernetes (DCS, ...) ati GCP (LB, ...);
  • aini ti ballast lati opo awọn ohun ti ko ni dandan ninu awọsanma bi aṣoju HA;
  • agbara lati ṣiṣẹ PostgreSQL tabi MySQL ni agbegbe HA akọkọ; ni awọn agbegbe miiran - HA lati RR ti agbegbe akọkọ pẹlu ẹda rẹ (fun igbẹkẹle);
  • ọga pupọ (Emi ko fẹ lati kan si i, ṣugbọn kii ṣe pataki pupọ)

.
Bi abajade ti awọn ibeere wọnyi, po dara DBMS ati abuda awọn aṣayan:

  • MySQL Galera;
  • CockroachDB;
  • Awọn irinṣẹ PostgreSQL

:
- pgpool-II;
- Patroni.

MySQL Galera

Imọ-ẹrọ MySQL Galera jẹ idagbasoke nipasẹ Codership ati pe o jẹ ohun itanna fun InnoDB. Awọn ẹya:

  • olona pupọ;
  • isodipupo amuṣiṣẹpọ;
  • kika lati eyikeyi ipade;
  • gbigbasilẹ si eyikeyi ipade;
  • ti a ṣe sinu ẹrọ HA;
  • Aworan Helm kan wa lati Bitnami.

ÀkùkọDB

Gẹgẹbi apejuwe naa, ohun naa jẹ bombu patapata ati pe o jẹ iṣẹ orisun ṣiṣi ti a kọ ni Go. Olukopa akọkọ jẹ Awọn Labs Cockroach (ti a da nipasẹ awọn eniyan lati Google). DBMS ibatan yii jẹ apẹrẹ ni akọkọ lati pin (pẹlu iwọn petele lati inu apoti) ati ifarada-aṣiṣe. Awọn onkọwe rẹ lati ile-iṣẹ ṣe alaye ibi-afẹde ti “darapọ ọlọrọ ti iṣẹ ṣiṣe SQL pẹlu iraye si petele ti o faramọ awọn ojutu NoSQL.”

Ajeseku ti o wuyi jẹ atilẹyin fun ilana asopọ lẹhin-gress.

pgpool

Eyi jẹ afikun si PostgreSQL, ni otitọ, nkan tuntun ti o gba gbogbo awọn asopọ ati ṣiṣe wọn. O ni iwọntunwọnsi fifuye tirẹ ati parser, ti ni iwe-aṣẹ labẹ iwe-aṣẹ BSD. O pese awọn aye lọpọlọpọ, ṣugbọn o dabi ẹru diẹ, nitori wiwa ti nkan tuntun le di orisun diẹ ninu awọn irin-ajo afikun.

Patroni

Eyi ni ohun ikẹhin ti oju mi ​​ṣubu, ati, bi o ti wa ni jade, kii ṣe asan. Patroni jẹ ohun elo orisun ṣiṣi, eyiti o jẹ pataki Python daemon ti o fun ọ laaye lati ṣetọju awọn iṣupọ PostgreSQL laifọwọyi pẹlu awọn iru atunwi ati iyipada ipa adaṣe laifọwọyi. Ohun naa ti jade lati jẹ ohun ti o nifẹ pupọ, nitori pe o ṣepọ daradara pẹlu cuber ati pe ko ṣafihan eyikeyi awọn nkan tuntun.

Kini o yan ni ipari?

Yiyan ko rọrun:

  1. ÀkùkọDB - ina, ṣugbọn dudu;
  2. MySQL Galera - tun kii ṣe buburu, o ti lo ni ọpọlọpọ awọn aaye, ṣugbọn MySQL;
  3. pgpool - ọpọlọpọ awọn nkan ti ko ni dandan, bẹ-ki iṣọpọ pẹlu awọsanma ati awọn K8;
  4. Patroni - Ijọpọ ti o dara julọ pẹlu awọn K8, ko si awọn nkan ti ko wulo, ṣepọ daradara pẹlu GCP LB.

Bayi, yiyan ṣubu lori Patroni.

awari

O to akoko lati ṣe akopọ ni ṣoki. Bẹẹni, agbaye ti awọn amayederun IT ti yipada ni pataki, ati pe eyi jẹ ibẹrẹ nikan. Ati pe ti o ba jẹ pe ṣaaju ki awọn awọsanma jẹ iru awọn amayederun miiran, ni bayi ohun gbogbo yatọ. Pẹlupẹlu, awọn imotuntun ninu awọn awọsanma n han nigbagbogbo, wọn yoo han ati, boya, wọn yoo han nikan ninu awọn awọsanma ati lẹhinna nikan, nipasẹ awọn igbiyanju ti awọn ibẹrẹ, wọn yoo gbe lọ si Awọn ile-iṣẹ.

Bi fun SQL, SQL yoo wa laaye. Eyi tumọ si pe o nilo lati mọ PostgreSQL ati MySQL ati ni anfani lati ṣiṣẹ pẹlu wọn, ṣugbọn paapaa pataki julọ ni lati ni anfani lati lo wọn ni deede.

orisun: www.habr.com

Fi ọrọìwòye kun