Momwe mungakhalire ndi database ya SQL m'zaka za zana la 21: mitambo, Kubernetes ndi PostgreSQL multimaster

Moni, okhala ku Khabrovsk. Maphunziro a m’gulu loyamba la maphunzirowa ayamba lero "PostgreSQL". Pankhaniyi, tikufuna kukuuzani za momwe ma webinar otseguka pamaphunzirowa adachitikira.

Momwe mungakhalire ndi database ya SQL m'zaka za zana la 21: mitambo, Kubernetes ndi PostgreSQL multimaster

Π’ phunziro lotsatira lotseguka tidakambirana za zovuta zomwe ma database a SQL amakumana nawo munthawi ya mitambo ndi Kubernetes. Nthawi yomweyo, tidawona momwe ma database a SQL amasinthira ndikusintha chifukwa cha zovuta izi.

Webinar idachitika Valery Bezrukov, Google Cloud Practice Delivery Manager pa EPAM Systems.

Pamene mitengo inali yaing'ono ...

Choyamba, tiyeni tikumbukire momwe kusankha DBMS kunayambira kumapeto kwa zaka zapitazo. Komabe, izi sizidzakhala zovuta, chifukwa kusankha kwa DBMS m'masiku amenewo kunayamba ndikutha Oracle.

Momwe mungakhalire ndi database ya SQL m'zaka za zana la 21: mitambo, Kubernetes ndi PostgreSQL multimaster

Chakumapeto kwa zaka za m'ma 90 ndi koyambirira kwa zaka za m'ma 2, panalibenso mwayi wosankha zikafika pazosungidwa zamafakitale. Inde, panali IBM DBXNUMX, Sybase ndi nkhokwe zina zomwe zidabwera ndikupita, koma zambiri sizinawonekere kumbuyo kwa Oracle. Chifukwa chake, luso la akatswiri a nthawi imeneyo linali logwirizana ndi chisankho chokha chomwe chinalipo.

Oracle DBA amayenera kukhala:

  • ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Oracle Server ΠΈΠ· дистрибутива;
  • sinthani Oracle Server:

  • init.ora;
  • omvera.ora;

- pangani:

  • malo a tebulo;
  • ndondomeko;
  • ogwiritsa;

- sungani zosunga zobwezeretsera ndi kubwezeretsa;
- kuyang'anira;
- kuthana ndi zopempha zochepa.

Nthawi yomweyo, panalibe chofunikira chapadera kuchokera ku Oracle DBA:

  • athe kusankha DBMS yabwino kapena ukadaulo wina wosunga ndi kukonza deta;
  • perekani kupezeka kwakukulu komanso scalability yopingasa (iyi sinali nkhani ya DBA nthawi zonse);
  • kudziwa bwino gawo la phunziroli, zomangamanga, kapangidwe ka ntchito, OS;
  • kutsitsa ndikutsitsa deta, kusamutsa deta pakati pa ma DBMS osiyanasiyana.

Nthawi zambiri, ngati tilankhula za kusankha m'masiku amenewo, zikufanana ndi kusankha mu sitolo ya Soviet kumapeto kwa 80s:

Momwe mungakhalire ndi database ya SQL m'zaka za zana la 21: mitambo, Kubernetes ndi PostgreSQL multimaster

Nthawi yathu

Kuyambira pamenepo, ndithudi, mitengo yakula, dziko lasintha, ndipo linakhala motere:

Momwe mungakhalire ndi database ya SQL m'zaka za zana la 21: mitambo, Kubernetes ndi PostgreSQL multimaster

Msika wa DBMS wasinthanso, monga momwe zikuwonekera bwino kuchokera ku lipoti laposachedwa kuchokera ku Gartner:

Momwe mungakhalire ndi database ya SQL m'zaka za zana la 21: mitambo, Kubernetes ndi PostgreSQL multimaster

Ndipo apa ziyenera kuzindikirika kuti mitambo, yomwe kutchuka kwake ikukula, yakhala ndi niche yawo. Tikawerenga lipoti lomwelo la Gartner, tiwona zotsatirazi:

  1. Makasitomala ambiri ali panjira yosunthira mapulogalamu kumtambo.
  2. Tekinoloje zatsopano zimawonekera koyamba pamtambo ndipo sizowona kuti adzasamukira kuzinthu zopanda mitambo.
  3. Mitengo yamitengo yolipiridwa yakhala yofala. Aliyense amafuna kuti azilipira zomwe amagwiritsa ntchito, ndipo izi sizongochitika, koma kungonena zoona.

Bwanji tsopano?

Lero tonse tili mumtambo. Ndipo mafunso omwe amabwera kwa ife ndi mafunso osankha. Ndipo ndi yayikulu, ngakhale tingolankhula za kusankha kwaukadaulo wa DBMS mumtundu wa On-premises. Takhalanso ndi mautumiki ndi SaaS. Choncho, kusankha kumakhala kovuta kwambiri chaka chilichonse.

Pamodzi ndi mafunso osankha, palinso zolepheretsa zinthu:

  • mtengo. Umisiri wambiri umawonongabe ndalama;
  • luso. Ngati tikukamba za mapulogalamu aulere, ndiye kuti funso la luso limakhalapo, popeza mapulogalamu aulere amafunikira luso lokwanira kuchokera kwa anthu omwe amawagwiritsa ntchito ndikuwagwiritsa ntchito;
  • ntchito. Osati mautumiki onse omwe amapezeka pamtambo ndikumangidwa, tinene, ngakhale pa Postgres yemweyo, ali ndi mawonekedwe ofanana ndi Postgres Pamalo. Ichi ndi chinthu chofunikira chomwe chiyenera kudziwidwa ndikumvetsetsa. Komanso, chinthu ichi chimakhala chofunikira kwambiri kuposa kudziwa za kuthekera kobisika kwa DBMS imodzi.

Zomwe zikuyembekezeka kuchokera ku DA/DE pano:

  • kumvetsetsa bwino gawo la phunzirolo ndi kamangidwe ka ntchito;
  • kuthekera kosankha bwino ukadaulo woyenerera wa DBMS poganizira ntchito yomwe muli nayo;
  • kuthekera kosankha njira yabwino kwambiri yogwiritsira ntchito teknoloji yosankhidwa malinga ndi malire omwe alipo;
  • kuthekera kochita kusamutsa deta ndi kusamuka;
  • kuthekera kokhazikitsa ndikugwiritsa ntchito mayankho osankhidwa.

M'munsimu chitsanzo kutengera GCP ikuwonetsa momwe kusankha kwaukadaulo umodzi kapena wina wogwira ntchito ndi deta kumagwirira ntchito kutengera kapangidwe kake:

Momwe mungakhalire ndi database ya SQL m'zaka za zana la 21: mitambo, Kubernetes ndi PostgreSQL multimaster

Chonde dziwani kuti PostgreSQL sinaphatikizidwe mu schema, ndipo izi ndichifukwa imabisika pansi pa mawu Mtambo SQL. Ndipo tikafika ku Cloud SQL, tiyenera kusankhanso:

Momwe mungakhalire ndi database ya SQL m'zaka za zana la 21: mitambo, Kubernetes ndi PostgreSQL multimaster

Tiyenera kuzindikira kuti chisankhochi sichimveka bwino nthawi zonse, kotero opanga mapulogalamu nthawi zambiri amatsogoleredwa ndi chidziwitso.

Chiwerengero:

  1. Pamene mukupita, funso la kusankha limakhala lolimbikira kwambiri. Ndipo ngakhale mutayang'ana pa GCP, mautumiki oyendetsedwa ndi SaaS, ndiye kutchulidwa kwina kwa RDBMS kumangowoneka pa sitepe ya 4 (ndipo Spanner ili pafupi). Kuphatikiza apo, kusankha kwa PostgreSQL kumawoneka mu gawo lachisanu, ndipo pambali pake palinso MySQL ndi SQL Server, ndiye pali zambiri zonse, koma muyenera kusankha.
  2. Sitiyenera kuiwala za zoletsa motsutsana maziko a mayesero. Kwenikweni aliyense amafuna Spanner, koma ndi okwera mtengo. Chifukwa chake, pempho lodziwika bwino limawoneka motere: "Chonde tipangireni Spanner koma pamtengo wa Cloud SQL, ndinu akatswiri!"

Momwe mungakhalire ndi database ya SQL m'zaka za zana la 21: mitambo, Kubernetes ndi PostgreSQL multimaster

Kodi tiyenera kuchita chiyani?

Popanda kunena kuti ndinu chowonadi chenicheni, tiyeni tinene izi:

Tiyenera kusintha njira yathu yophunzirira:

  • palibe chifukwa chophunzitsira momwe ma DBA adaphunzitsidwa kale;
  • kudziwa za chinthu chimodzi sikulinso kokwanira;
  • koma kudziwa zambiri pamlingo wa chimodzi sikutheka.

Muyenera kudziwa osati kuchuluka kwa mankhwalawo, koma:

  • kugwiritsa ntchito mawonekedwe ake;
  • njira zosiyanasiyana zotumizira;
  • ubwino ndi kuipa kwa njira iliyonse;
  • zinthu zofanana ndi zina kuti mupange chisankho chodziwitsidwa komanso choyenera osati nthawi zonse mokomera chinthu chodziwika bwino.

Muyeneranso kusuntha deta ndikumvetsetsa mfundo zoyambira kuphatikiza ndi ETL.

Mlandu weniweni

Posachedwapa, kunali koyenera kupanga backend ya pulogalamu yam'manja. Pofika nthawi yomwe ntchito inayamba pa izo, backend inali itapangidwa kale ndipo inali yokonzeka kukhazikitsidwa, ndipo gulu lachitukuko linakhala zaka ziwiri pa ntchitoyi. Ntchito zotsatirazi zidakhazikitsidwa:

  • kumanga CI/CD;
  • onaninso kamangidwe kake;
  • khazikitsani zonse kuti zigwire ntchito.

Kugwiritsa ntchito komweko kunali ma microservices, ndipo code ya Python/Django idapangidwa kuyambira poyambira komanso mwachindunji ku GCP. Ponena za omvera omwe akufuna, adaganiza kuti padzakhala zigawo ziwiri - US ndi EU, ndipo magalimoto adagawidwa kudzera mu Global Load balancer. Ntchito zonse ndi kuchuluka kwa ntchito zidayenda pa Google Kubernetes Engine.

Ponena za deta, panali zomanga zitatu:

  • Kusungirako Mtambo;
  • Malo osungirako zinthu zakale;
  • Cloud SQL (PostgreSQL).

Momwe mungakhalire ndi database ya SQL m'zaka za zana la 21: mitambo, Kubernetes ndi PostgreSQL multimaster

Wina angadabwe kuti chifukwa chiyani Cloud SQL idasankhidwa? Kunena zowona, funso lotere lapangitsa kuti pakhale kupuma kovutirapo m'zaka zaposachedwa - pali kumverera kuti anthu achita manyazi ndi nkhokwe zaubale, komabe akupitiliza kuzigwiritsa ntchito ;-).

Pankhani yathu, Cloud SQL idasankhidwa pazifukwa izi:

  1. Monga tafotokozera, pulogalamuyi idapangidwa pogwiritsa ntchito Django, ndipo ili ndi chitsanzo chojambula deta yosalekeza kuchokera ku database ya SQL kupita ku Python zinthu (Django ORM).
  2. Chimango chokhacho chinathandizira mndandanda wathunthu wa DBMSs:

  • PostgreSQL;
  • MariaDB;
  • MySQL;
  • mawu;
  • SQLite.

Chifukwa chake, PostgreSQL idasankhidwa pamndandandawu m'malo mwachilengedwe (chabwino, si Oracle kusankha, kwenikweni).

Zomwe zidasowa:

  • ntchitoyo inatumizidwa m'madera a 2 okha, ndipo 3rd inawonekera mu mapulani (Asia);
  • Malo osungirako zinthuwa anali ku North America dera (Iowa);
  • kumbali ya kasitomala panali nkhawa za zotheka kuchedwa kupeza kuchokera ku Europe ndi Asia ndi zosokoneza mu utumiki ngati DBMS ikutha.

Ngakhale kuti Django mwiniyo amatha kugwira ntchito ndi nkhokwe zingapo zofananira ndikuzigawa kuti aziwerenga ndi kulemba, panalibe zolemba zambiri pakugwiritsa ntchito (zoposa 90% zikuwerengedwa). Ndipo kawirikawiri, ndipo kawirikawiri, ngati kunali kotheka kuchita werengani chofanizira cha maziko akulu ku Europe ndi Asia, ichi chingakhale njira yothetsera vutolo. Chabwino, ndi chiyani chovuta kwambiri pa izo?

Chovuta chinali chakuti kasitomala sanafune kusiya kugwiritsa ntchito mautumiki oyendetsedwa ndi Cloud SQL. Ndipo mphamvu za Cloud SQL ndizochepa. Cloud SQL imathandizira kupezeka Kwapamwamba (HA) ndi Read Replica (RR), koma RR yomweyo imathandizidwa m'chigawo chimodzi chokha. Mutapanga nkhokwe kudera la America, simungathe kupanga zowerengera kudera la Europe pogwiritsa ntchito Cloud SQL, ngakhale Postgres palokha samakulepheretsani kuchita izi. Kulemberana makalata ndi ogwira ntchito ku Google sikunayende bwino ndipo kunatha ndi malonjezo amtundu wa "tikudziwa vuto ndipo tikulikonza, tsiku lina vuto lidzathetsedwa."

Ngati tilemba za kuthekera kwa Cloud SQL mwachidule, ziziwoneka motere:

1. Kupezeka kwakukulu (HA):

  • mkati mwa dera limodzi;
  • kudzera pa disk replication;
  • Ma injini a PostgreSQL sagwiritsidwa ntchito;
  • kuwongolera kodziwikiratu komanso kwamanja kotheka - kulephera / kulephera;
  • Mukasintha, DBMS sichipezeka kwa mphindi zingapo.

2. Werengani Replica (RR):

  • mkati mwa dera limodzi;
  • yotentha standby;
  • Kubwereza kwa PostgreSQL.

Kuonjezera apo, monga mwachizolowezi, posankha teknoloji nthawi zonse mumayang'anizana ndi zina zoletsa:

  • kasitomala sanafune kupanga mabungwe ndi ntchito IaaS, kupatula kudzera GKE;
  • kasitomala sangafune kudzipangira okha PostgreSQL/MySQL;
  • Chabwino, nthawi zambiri, Google Spanner ikanakhala yoyenera ngati sichinali mtengo wake, komabe, Django ORM sangagwire nawo ntchito, koma ndi chinthu chabwino.

Poganizira momwe zinthu zilili, kasitomala adalandira funso lotsatira: "Kodi mungathe kuchita zofananazo kuti zikhale ngati Google Spanner, komanso zimagwira ntchito ndi Django ORM?"

Njira yothetsera 0

Chinthu choyamba chimene chinabwera m'maganizo:

  • khalani mkati mwa CloudSQL;
  • sipadzakhala kufananiza komangidwa pakati pa zigawo mwanjira iliyonse;
  • yesani kulumikiza chofanizira ku Cloud SQL yomwe ilipo ndi PostgreSQL;
  • yambitsani chitsanzo cha PostgreSQL kwinakwake, koma osakhudza master.

Tsoka, zidapezeka kuti izi sizingachitike, chifukwa palibe mwayi wopeza wolandila (ali mu projekiti yosiyana palimodzi) - pg_hba ndi zina zotero, ndipo palibenso mwayi wopezeka pansi pa superuser.

Njira yothetsera 1

Pambuyo poganizira mozama ndikuganiziranso zochitika zam'mbuyomu, malingaliro asintha pang'ono:

  • Tikuyeserabe kukhala mkati mwa CloudSQL, koma tikusintha ku MySQL, chifukwa Cloud SQL yolembedwa ndi MySQL ili ndi mbuye wakunja, yemwe:

- ndi proxy ya MySQL yakunja;
- zikuwoneka ngati MySQL chitsanzo;
- yopangidwira kusamuka kwa data kuchokera kumitambo ina kapena Pamalo.

Popeza kukhazikitsa kubwereza kwa MySQL sikufuna mwayi wopeza wolandirayo, kwenikweni zonse zidagwira ntchito, koma zinali zosakhazikika komanso zovuta. Ndipo titapita patsogolo, zidakhala zowopsa kwambiri, chifukwa tidatumiza dongosolo lonselo ndi terraform, ndipo mwadzidzidzi zidapezeka kuti mbuye wakunja sanathandizidwe ndi terraform. Inde, Google ili ndi CLI, koma pazifukwa zina zonse zimagwira ntchito pano nthawi ndi nthawi - nthawi zina zimapangidwa, nthawi zina sizinapangidwe. Mwina chifukwa CLI idapangidwira kusamuka kwa data kunja, osati zofananira.

Kwenikweni, panthawiyi zidawonekeratu kuti Cloud SQL siyoyenera konse. Monga akunena, tinachita zonse zomwe tingathe.

Njira yothetsera 2

Popeza sikunali kotheka kukhala mkati mwa Cloud SQL framework, tinayesetsa kupanga zofunikira kuti tipeze yankho logwirizana. Zofunikira zidakhala izi:

  • ntchito ku Kubernetes, kugwiritsa ntchito kwambiri chuma ndi kuthekera kwa Kubernetes (DCS, ...) ndi GCP (LB, ...);
  • kusowa kwa ballast kuchokera ku gulu la zinthu zosafunikira mumtambo monga HA proxy;
  • Kutha kuyendetsa PostgreSQL kapena MySQL m'chigawo chachikulu cha HA; m'madera ena - HA kuchokera ku RR ya dera lalikulu kuphatikizapo kopi yake (yodalirika);
  • ambuye ambiri (sindinafune kulumikizana naye, koma sizinali zofunika kwambiri)

.
Chifukwa cha zofuna izi, pDBMS yoyenera ndi zosankha zomangirira:

  • MySQL Galera;
  • CockroachDB;
  • Zida za PostgreSQL

:
- gulu II;
-Patroni.

MySQL Galera

ВСхнология MySQL Galera Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Codership ΠΈ прСдставляСт собой plugin for InnoDB. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ:

  • akatswiri ambiri;
  • kubwereza kwa synchronous;
  • kuwerenga kuchokera ku mfundo iliyonse;
  • kujambula ku mfundo iliyonse;
  • makina opangidwa ndi HA;
  • Pali tchati cha Helm kuchokera ku Bitnami.

ChiphuphuDB

Malinga ndi kufotokozera, chinthucho ndi bomba ndipo ndi ntchito yotseguka yolembedwa mu Go. Omwe akutenga nawo mbali ndi Cockroach Labs (opangidwa ndi anthu ochokera ku Google). DBMS yaubale iyi idapangidwa kuti igawidwe (ndikukweza mopingasa m'bokosi) komanso kulolera zolakwika. Olemba ake a kampaniyo adafotokoza cholinga cha "kuphatikiza kuchuluka kwa magwiridwe antchito a SQL ndi mwayi wopezeka wodziwika bwino ku mayankho a NoSQL."

Bhonasi yabwino ndi chithandizo cha protocol yolumikizira pambuyo-gress.

pgpool

Izi ndizowonjezera ku PostgreSQL, kwenikweni, chinthu chatsopano chomwe chimatenga zolumikizira zonse ndikuzikonza. Ili ndi zolemetsa zake komanso zowerengera, zololedwa pansi pa layisensi ya BSD. Zimapereka mwayi wokwanira, koma zikuwoneka zowopsa, chifukwa kukhalapo kwa gulu latsopano kumatha kukhala gwero lazopatsa zina zowonjezera.

Mtsogoleri

Ichi ndi chinthu chotsiriza chimene maso anga adagwera, ndipo, monga momwe zinakhalira, osati pachabe. Patroni ndi chida chotseguka, chomwe kwenikweni ndi daemon ya Python yomwe imakulolani kuti muzisunga masango a PostgreSQL okhala ndi mitundu yosiyanasiyana yobwerezabwereza komanso kusinthana ndi ntchito. Chinthucho chinakhala chosangalatsa kwambiri, chifukwa chimagwirizanitsa bwino ndi cuber ndipo sichimayambitsa zatsopano.

Munasankha chiyani pamapeto pake?

Kusankha sikunali kophweka:

  1. ChiphuphuDB - moto, koma mdima;
  2. MySQL Galera - komanso osati zoipa, amagwiritsidwa ntchito m'malo ambiri, koma MySQL;
  3. pgpool - mabungwe ambiri osafunikira, kuphatikiza koteroko ndi mtambo ndi K8s;
  4. Mtsogoleri - kuphatikiza kwabwino kwambiri ndi ma K8, palibe mabungwe osafunikira, amalumikizana bwino ndi GCP LB.

Motero, kusankha kunagwera pa Patroni.

anapezazo

Yakwana nthawi yoti mufotokoze mwachidule. Inde, dziko la zomangamanga za IT lasintha kwambiri, ndipo ichi ndi chiyambi chabe. Ndipo ngati kale mitambo inali mtundu wina wa zomangamanga, tsopano chirichonse chiri chosiyana. Komanso, zatsopano m'mitambo zikuwonekera nthawi zonse, zidzawonekera ndipo, mwinamwake, zidzawonekera m'mitambo ndipo pokhapokha, ndi khama loyambitsa, zidzasamutsidwa ku On-premises.

Ponena za SQL, SQL idzakhala ndi moyo. Izi zikutanthauza kuti muyenera kudziwa PostgreSQL ndi MySQL ndikutha kugwira nawo ntchito, koma chofunikira kwambiri ndikutha kuzigwiritsa ntchito moyenera.

Source: www.habr.com

Kuwonjezera ndemanga