Yadda ake tsira daga bayanan SQL a cikin karni na 21: girgije, Kubernetes da PostgreSQL multimaster

Sannu, mutanen Khabrovsk. A yau za a fara darussan rukunin farko na kwas "PostgreSQL". Dangane da wannan, muna so mu ba ku labarin yadda buɗaɗɗen webinar akan wannan kwas ya gudana.

Yadda ake tsira daga bayanan SQL a cikin karni na 21: girgije, Kubernetes da PostgreSQL multimaster

В na gaba bude darasi mun yi magana game da ƙalubalen da SQL ke fuskanta a zamanin girgije da Kubernetes. A lokaci guda, mun kalli yadda SQL bayanan bayanai ke daidaitawa da canzawa a ƙarƙashin tasirin waɗannan ƙalubalen.

An gudanar da webinar Valery Bezrukov, Google Cloud Practice Delivery Manager a EPAM Systems.

Lokacin da bishiyoyi suke kanana ...

Da farko, bari mu tuna yadda zaɓin DBMS ya fara a ƙarshen ƙarni na ƙarshe. Koyaya, wannan ba zai zama da wahala ba, saboda zaɓin DBMS a wancan lokacin ya fara kuma ya ƙare Oracle.

Yadda ake tsira daga bayanan SQL a cikin karni na 21: girgije, Kubernetes da PostgreSQL multimaster

A cikin ƙarshen 90s da farkon 2s, babu ainihin wani zaɓi idan ya zo ga ma'aunin bayanai na masana'antu. Ee, akwai IBM DBXNUMX, Sybase da wasu bayanan da suka zo suka tafi, amma gabaɗaya ba su zama sananne ba akan bangon Oracle. Saboda haka, basirar injiniyoyi na wancan lokacin an danganta su da zabi daya tilo da ya wanzu.

Oracle DBA dole ne ya iya:

  • shigar Oracle Server daga kayan rarrabawa;
  • saita Oracle Server:

  • init.ora;
  • mai saurare.ora;

- ƙirƙira:

  • wuraren tebur;
  • tsare-tsare;
  • masu amfani;

- yi madadin da mayar;
- gudanar da saka idanu;
- magance ƙananan buƙatun.

A lokaci guda, babu buƙatu na musamman daga Oracle DBA:

  • iya zaɓar mafi kyawun DBMS ko wasu fasaha don adanawa da sarrafa bayanai;
  • samar da babban samuwa da a kwance scalability (wannan ba koyaushe batun DBA bane);
  • kyakkyawan ilimin yanki na batun, abubuwan more rayuwa, gine-ginen aikace-aikacen, OS;
  • loda da sauke bayanai, ƙaura bayanai tsakanin DBMS daban-daban.

Gabaɗaya, idan muka yi magana game da zaɓi a waɗannan kwanaki, yayi kama da zaɓi a cikin kantin sayar da Soviet a ƙarshen 80s:

Yadda ake tsira daga bayanan SQL a cikin karni na 21: girgije, Kubernetes da PostgreSQL multimaster

Lokacinmu

Tun daga nan, ba shakka, bishiyoyi sun girma, duniya ta canza, kuma ya zama kamar haka:

Yadda ake tsira daga bayanan SQL a cikin karni na 21: girgije, Kubernetes da PostgreSQL multimaster

Kasuwar DBMS kuma ta canza, kamar yadda ake iya gani a fili daga sabon rahoton Gartner:

Yadda ake tsira daga bayanan SQL a cikin karni na 21: girgije, Kubernetes da PostgreSQL multimaster

Kuma a nan ya kamata a lura da cewa girgije, wanda shahararsa ke girma, sun shagaltar da su. Idan muka karanta rahoton Gartner iri ɗaya, za mu ga ƙarshe mai zuwa:

  1. Yawancin abokan ciniki suna kan hanyar motsi aikace-aikace zuwa gajimare.
  2. Sabbin fasaha sun fara bayyana a cikin gajimare kuma ba gaskiya ba ne cewa za su taɓa motsawa zuwa abubuwan da ba na girgije ba.
  3. Samfurin farashin biyan kuɗi ya zama ruwan dare gama gari. Kowane mutum yana so ya biya kawai don abin da suke amfani da shi, kuma wannan ba ma wani yanayi ba ne, amma kawai bayanin gaskiya.

Yanzu me?

Yau duk muna cikin gajimare. Kuma tambayoyin da suke taso mana tambayoyi ne na zabi. Kuma yana da girma, koda kuwa muna magana ne kawai game da zaɓin fasahar DBMS a cikin tsarin Kan-gida. Hakanan muna da sabis ɗin sarrafawa da SaaS. Don haka, zaɓin kawai ya zama mafi wahala kowace shekara.

Tare da tambayoyin zabi, akwai kuma iyakance dalilai:

  • Farashin. Yawancin fasahohin har yanzu suna kashe kuɗi;
  • basira. Idan muna magana ne game da software na kyauta, to, tambayar basira ta taso, tun da software na kyauta yana buƙatar isassun ƙwarewa daga mutanen da suke turawa da sarrafa su;
  • m. Ba duk sabis ɗin da ke cikin gajimare ba ne kuma an gina su, a ce, ko da a kan Postgres iri ɗaya, suna da fasali iri ɗaya kamar Postgres On-premises. Wannan wani muhimmin al'amari ne da ke buƙatar sani da fahimta. Haka kuma, wannan al'amari ya zama mafi mahimmanci fiye da sanin wasu boyayyun damar DBMS guda ɗaya.

Abin da ake tsammani daga DA/DE yanzu:

  • kyakkyawar fahimtar yankin batun da tsarin gine-ginen aikace-aikace;
  • da ikon zaɓar daidai fasahar DBMS da ta dace da la'akari da aikin da ke hannun;
  • ikon zaɓar hanyar da ta fi dacewa don aiwatar da fasahar da aka zaɓa a cikin mahallin iyakokin da ke akwai;
  • iya yin canja wurin bayanai da ƙaura;
  • ikon aiwatarwa da sarrafa hanyoyin da aka zaɓa.

A ƙasa misali dangane da GCP yana nuna yadda zaɓin ɗayan ko wata fasaha don aiki tare da bayanai ke aiki dangane da tsarinta:

Yadda ake tsira daga bayanan SQL a cikin karni na 21: girgije, Kubernetes da PostgreSQL multimaster

Lura cewa ba a haɗa PostgreSQL a cikin tsarin ba, kuma wannan saboda yana ɓoye ƙarƙashin ƙa'idodin Farashin SQL. Kuma idan muka isa Cloud SQL, muna buƙatar sake yin zaɓi:

Yadda ake tsira daga bayanan SQL a cikin karni na 21: girgije, Kubernetes da PostgreSQL multimaster

Ya kamata a lura cewa wannan zaɓin ba koyaushe bane bayyananne, don haka masu haɓaka aikace-aikacen galibi suna jagorantar ilhami.

Jimlar:

  1. Yayin da kuka ci gaba, ƙarin danna tambayar zaɓin ya zama. Kuma ko da idan kun kalli GCP kawai, ayyukan sarrafawa da SaaS, to, wasu ambaton RDBMS ya bayyana kawai a mataki na 4 (kuma akwai Spanner a kusa). Bugu da ƙari, zaɓin PostgreSQL yana bayyana a mataki na 5, kuma kusa da shi akwai MySQL da SQL Server, wato. akwai abubuwa da yawa, amma dole ne ku zaɓi.
  2. Kada mu manta game da hane-hane a kan tushen jaraba. Ainihin kowa yana son Spanner, amma yana da tsada. Sakamakon haka, buƙatu na yau da kullun yana kama da wani abu kamar haka: "Don Allah a sanya mu Spanner amma don farashin Cloud SQL, ku ƙwararru ne!"

Yadda ake tsira daga bayanan SQL a cikin karni na 21: girgije, Kubernetes da PostgreSQL multimaster

Me ya kamata mu yi?

Ba tare da da'awar cewa ita ce ta ƙarshe ba, bari mu faɗi haka:

Muna buƙatar canza tsarinmu na koyo:

  • babu ma'ana a koyar da yadda ake koyar da DBAs a da;
  • sanin samfur ɗaya bai isa ba;
  • amma sanin da yawa a matakin daya ba zai yiwu ba.

Kuna buƙatar sanin ba kawai ba kuma ba nawa samfurin yake ba, amma:

  • amfani da yanayin aikace-aikacensa;
  • hanyoyi daban-daban na turawa;
  • abũbuwan amfãni da rashin amfani na kowace hanya;
  • kama da madadin samfura don yin ingantaccen zaɓi kuma ba koyaushe suna goyan bayan samfurin da aka saba ba.

Hakanan kuna buƙatar samun damar yin ƙaura bayanai kuma ku fahimci ainihin ƙa'idodin haɗin kai tare da ETL.

hakikanin lamarin

A baya-bayan nan, ya zama dole don ƙirƙirar abin baya don aikace-aikacen hannu. A lokacin da aka fara aiki a kai, an riga an haɓaka baya kuma an shirya don aiwatarwa, kuma ƙungiyar ci gaba ta shafe kusan shekaru biyu akan wannan aikin. An saita ayyuka masu zuwa:

  • gina CI/CD;
  • duba tsarin gine-gine;
  • sanya shi duka a cikin aiki.

Aikace-aikacen kanta microservices ne, kuma an haɓaka lambar Python/Django daga karce kuma kai tsaye a cikin GCP. Game da masu sauraron da aka yi niyya, an ɗauka cewa za a sami yankuna biyu - Amurka da EU, kuma an rarraba zirga-zirga ta hanyar ma'aunin Load na Duniya. Duk kayan aiki da ƙididdige nauyin aiki suna gudana akan Injin Kubernetes na Google.

Dangane da bayanan, akwai tsari guda 3:

  • Ma'ajiyar gajimare;
  • Ma'ajiyar bayanai;
  • Cloud SQL (PostgreSQL).

Yadda ake tsira daga bayanan SQL a cikin karni na 21: girgije, Kubernetes da PostgreSQL multimaster

Mutum zai iya mamakin dalilin da yasa aka zaɓi Cloud SQL? Don faɗi gaskiya, irin wannan tambayar ta haifar da wani ɗan hutu mai ban tsoro a cikin 'yan shekarun nan - akwai jin cewa mutane sun zama masu jin kunya game da bayanan alaƙa, amma duk da haka suna ci gaba da amfani da su sosai ;-).

Dangane da shari'ar mu, an zaɓi Cloud SQL saboda dalilai masu zuwa:

  1. Kamar yadda aka ambata, an ƙirƙiri aikace-aikacen ta hanyar amfani da Django, kuma yana da samfuri don yin taswirar bayanai na dindindin daga bayanan SQL zuwa abubuwan Python (Django ORM).
  2. Tsarin da kansa ya goyi bayan ingantaccen jerin DBMSs:

  • PostgreSQL;
  • MariaDB;
  • MySQL;
  • baka;
  • SQLite.

Saboda haka, an zaɓi PostgreSQL daga wannan jerin a hankali (da kyau, ba Oracle bane zaɓi, da gaske).

Abin da ya ɓace:

  • An aika aikace-aikacen a cikin yankuna 2 kawai, kuma na 3rd ya bayyana a cikin tsare-tsaren (Asiya);
  • Rumbun bayanan yana cikin yankin Arewacin Amurka (Iowa);
  • a bangaren abokin ciniki akwai damuwa game da yiwuwar samun jinkiri daga Turai da Asiya da katsewa cikin hidima a yanayin saukan lokacin DBMS.

Duk da cewa Django kanta na iya aiki tare da bayanai da yawa a layi daya kuma ya raba su zuwa karatu da rubutu, babu rubutu da yawa a cikin aikace-aikacen (fiye da 90% yana karantawa). Kuma gabaɗaya, kuma gabaɗaya, idan yana yiwuwa a yi karanta kwafin babban tushe a Turai da Asiya, wannan zai zama mafita na sulhu. To, me ke da wahala a cikinsa?

Wahalar ita ce abokin ciniki baya so ya daina amfani da ayyukan sarrafawa da Cloud SQL. Kuma ikon Cloud SQL a halin yanzu yana iyakance. Cloud SQL yana goyan bayan Babban samuwa (HA) da Karatun Replica (RR), amma RR iri ɗaya kawai ana tallafawa a yanki ɗaya. Bayan ƙirƙirar bayanan bayanai a cikin yankin Amurka, ba za ku iya yin kwafin karantawa a cikin yankin Turai ta amfani da Cloud SQL ba, kodayake Postgres kanta ba ta hana ku yin hakan ba. Sadarwa tare da ma'aikatan Google bai kai ko'ina ba kuma ya ƙare tare da alkawura a cikin salon "mun san matsalar kuma muna aiki a kai, wata rana za a warware batun."

Idan muka lissafa iyawar Cloud SQL a taƙaice, zai yi kama da wani abu kamar haka:

1. Yawan samuwa (HA):

  • a cikin yanki ɗaya;
  • ta hanyar kwafin faifai;
  • Ba a amfani da injunan PostgreSQL;
  • sarrafawa ta atomatik da na hannu zai yiwu - gazawar / failback;
  • Lokacin sauyawa, DBMS ba ya samuwa na mintuna da yawa.

2. Karanta Kwafi (RR):

  • a cikin yanki ɗaya;
  • jiran aiki mai zafi;
  • Kwafin yawo na PostgreSQL.

Bugu da kari, kamar yadda aka saba, lokacin zabar fasaha koyaushe kuna fuskantar wasu ƙuntatawa:

  • abokin ciniki ba ya son ƙirƙirar ƙungiyoyi da amfani da IaaS, sai ta hanyar GKE;
  • abokin ciniki ba zai so ya tura sabis na kai PostgreSQL/MySQL;
  • Da kyau, gabaɗaya, Google Spanner zai dace sosai idan ba don farashinsa ba, duk da haka, Django ORM ba zai iya aiki tare da shi ba, amma abu ne mai kyau.

La'akari da halin da ake ciki, abokin ciniki ya sami tambaya mai biyo baya: "Za ku iya yin wani abu makamancin haka don ya zama kamar Google Spanner, amma kuma yana aiki tare da Django ORM?"

Zaɓin Magani No. 0

Abu na farko da ya zo a zuciya:

  • zauna a cikin CloudSQL;
  • ba za a sami ginanniyar maimaitawa tsakanin yankuna ta kowace hanya ba;
  • yi ƙoƙarin haɗa kwafi zuwa wani Cloud SQL na PostgreSQL;
  • ƙaddamar da misalin PostgreSQL a wani wuri kuma ko ta yaya, amma aƙalla kar a taɓa maigidan.

Alas, ya juya cewa ba za a iya yin hakan ba, saboda babu damar shiga mai watsa shiri (yana cikin wani aikin daban gaba ɗaya) - pg_hba da sauransu, kuma babu damar shiga ƙarƙashin superuser.

Zaɓin Magani No. 1

Bayan ƙarin tunani da la'akari da yanayin da suka gabata, jirgin tunani ya ɗan canza kaɗan:

  • Har yanzu muna ƙoƙarin zama a cikin CloudSQL, amma muna canzawa zuwa MySQL, saboda Cloud SQL ta MySQL yana da babban ma'aikaci na waje, wanda:

- wakili ne na MySQL na waje;
- yayi kama da misali MySQL;
- ƙirƙira don ƙaura bayanai daga wasu gajimare ko Kan-gidaje.

Tun da kafa MySQL kwafi baya buƙatar samun dama ga mai watsa shiri, bisa ga ka'ida duk abin da ya yi aiki, amma ya kasance mai rashin kwanciyar hankali da rashin dacewa. Kuma da muka ci gaba, sai ya zama abin ban tsoro, domin mun jibge tsarin gaba ɗaya tare da terraform, kuma kwatsam sai ya zama cewa maigidan na waje ba ya goyon bayan terraform. Haka ne, Google yana da CLI, amma saboda wasu dalilai duk abin da ke aiki a nan kowane lokaci - wani lokaci ana ƙirƙira shi, wani lokacin ba a ƙirƙira shi ba. Wataƙila saboda an ƙirƙira CLI don ƙaura bayanan waje, kuma ba don kwafi ba.

A zahiri, a wannan lokacin ya bayyana cewa Cloud SQL bai dace da komai ba. Kamar yadda suka ce, mun yi duk abin da za mu iya.

Zaɓin Magani No. 2

Tun da ba zai yiwu a ci gaba da kasancewa a cikin tsarin Cloud SQL ba, mun yi ƙoƙarin tsara buƙatun don warware matsalar. Abubuwan da ake buƙata sun kasance kamar haka:

  • aiki a Kubernetes, matsakaicin amfani da albarkatu da damar Kubernetes (DCS, ...) da GCP (LB, ...);
  • rashin ballast daga tarin abubuwan da ba dole ba a cikin girgije kamar wakili na HA;
  • ikon gudanar da PostgreSQL ko MySQL a cikin babban yankin HA; a wasu yankuna - HA daga RR na babban yanki tare da kwafinsa (don amintacce);
  • Multi master (Ban so in tuntube shi, amma ba shi da mahimmanci)

.
Sakamakon waɗannan buƙatun, pDBMS masu dacewa da zaɓuɓɓukan ɗauri:

  • MySQL Galera;
  • CockroachDB;
  • PostgreSQL kayan aikin

:
- pgpool-II;
- Mafarki.

MySQL Galera

MySQL Galera fasaha ta haɓaka ta Codership kuma plugin ce don InnoDB. Abubuwan ban mamaki:

  • multi master;
  • kwafi na aiki tare;
  • karatu daga kowane kumburi;
  • yin rikodi zuwa kowane kumburi;
  • ginanniyar tsarin HA;
  • Akwai ginshiƙi na Helm daga Bitnami.

KyankyasoDB

Dangane da bayanin, abin bam ne kuma buɗaɗɗen aiki ne da aka rubuta a cikin Go. Babban ɗan takara shine Labs Cockroach (wanda mutane daga Google suka kafa). Wannan alaƙar DBMS an ƙirƙira ta asali don rarrabawa (tare da sikeli a kwance daga cikin akwatin) kuma mai jurewa kuskure. Marubutan sa daga kamfanin sun zayyana makasudin "haɗa wadatar ayyukan SQL tare da samun damar kai tsaye ga hanyoyin NoSQL."

Kyakkyawan kari shine goyan baya ga ƙa'idar haɗin kai bayan ci gaba.

pgpool

Wannan ƙari ne ga PostgreSQL, a haƙiƙa, sabon mahalli wanda ke ɗaukar duk haɗin gwiwa da sarrafa su. Tana da nata ma'aunin ma'aunin nauyi da na'urar tantancewa, mai lasisi ƙarƙashin lasisin BSD. Yana ba da damammaki masu yawa, amma yana da ɗan ban tsoro, saboda kasancewar sabon mahaluƙi zai iya zama tushen wasu ƙarin abubuwan ban sha'awa.

Majiɓinci

Wannan shine abu na ƙarshe da idona ya faɗi a kai, kuma, kamar yadda ya juya, ba a banza ba. Patroni babban kayan aiki ne na buɗe tushen, wanda shine ainihin Python daemon wanda ke ba ku damar kula da gungu na PostgreSQL ta atomatik tare da nau'ikan kwafi daban-daban da sauya rawar ta atomatik. Abinda ya juya ya zama mai ban sha'awa sosai, tun da yake yana haɗuwa da kyau tare da cuber kuma baya gabatar da wani sabon mahalli.

Me kuka zaba a karshe?

Zaɓin bai kasance mai sauƙi ba:

  1. KyankyasoDB - wuta, amma duhu;
  2. MySQL Galera - kuma ba mummunan ba, ana amfani dashi a wurare da yawa, amma MySQL;
  3. pgpool - yawancin abubuwan da ba dole ba, don haka haɗin kai tare da girgije da K8s;
  4. Majiɓinci - kyakkyawan haɗin kai tare da K8s, babu abubuwan da ba dole ba, yana haɗawa da kyau tare da GCP LB.

Saboda haka, zabi ya fadi a kan Patroni.

binciken

Lokaci ya yi da za a taƙaice. Ee, duniyar kayan aikin IT ta canza sosai, kuma wannan shine farkon. Kuma idan kafin girgijen wani nau'in kayan aikin ne kawai, yanzu komai ya bambanta. Bugu da ƙari, sababbin abubuwa a cikin girgije suna ci gaba da bayyana, za su bayyana kuma, watakila, za su bayyana ne kawai a cikin girgije kuma kawai, ta hanyar ƙoƙarin farawa, za a tura su zuwa kan-gidaje.

Amma ga SQL, SQL zai rayu. Wannan yana nufin cewa kuna buƙatar sanin PostgreSQL da MySQL kuma ku sami damar yin aiki tare da su, amma mafi mahimmanci shine ku sami damar amfani da su daidai.

source: www.habr.com

Add a comment