Чӣ тавр аз пойгоҳи додаҳои SQL дар асри 21 зинда мондан мумкин аст: абрҳо, Кубернетес ва мултимастери PostgreSQL

Салом, сокинони Хабаровск. Машгулият дар гурухи якуми курс имруз cap мешавад "PostgreSQL". Дар робита ба ин, мо мехостем ба шумо дар бораи чӣ гуна баргузор шудани вебинари кушод оид ба ин курс нақл кунем.

Чӣ тавр аз пойгоҳи додаҳои SQL дар асри 21 зинда мондан мумкин аст: абрҳо, Кубернетес ва мултимастери PostgreSQL

В дарси кушоди навбатй мо дар бораи мушкилоте, ки пойгоҳи додаҳои SQL дар давраи абрҳо ва Кубернетес дучор мешаванд, сӯҳбат кардем. Ҳамзамон, мо дида баромадем, ки чӣ гуна пойгоҳи додаҳои SQL зери таъсири ин мушкилот мутобиқ мешаванд ва мутатсия мешаванд.

Вебинар баргузор гардид Валерий Безруков, Менеҷери таҳвили таҷрибаҳои Google Cloud дар EPAM Systems.

Вақте ки дарахтон хурд буданд ...

Аввалан, биёед ба ёд орем, ки интихоби DBMS дар охири асри гузашта чӣ гуна оғоз ёфт. Аммо, ин мушкил нахоҳад буд, зеро интихоби DBMS дар он рӯзҳо оғоз ва анҷом ёфт Oracle.

Чӣ тавр аз пойгоҳи додаҳои SQL дар асри 21 зинда мондан мумкин аст: абрҳо, Кубернетес ва мултимастери PostgreSQL

Дар охири солҳои 90-ум ва аввали солҳои 2-ум, вақте сухан дар бораи пойгоҳи додаҳои миқёспазири саноатӣ меравад, аслан интихоб набуд. Бале, IBM DBXNUMX, Sybase ва баъзе базаҳои дигар буданд, ки омада ва мерафтанд, аммо дар маҷмӯъ онҳо дар пасманзари Oracle чандон намоён набуданд. Аз ин рӯ, маҳорати муҳандисони он замонҳо ба навъе ба ягона интихобе, ки мавҷуд буд, вобаста буд.

Oracle DBA бояд қодир бошад:

  • Oracle Server-ро аз маҷмӯаи тақсимот насб кунед;
  • сервери Oracle танзим кунед:

  • init.ora;
  • listener.ora;

- эҷод:

  • фазои миз;
  • схема;
  • истифодабарандагон;

— нусхабардорӣ ва барқарорсозӣ;
— гузаронидани мониторинг;
— бо дархостхои гайримукаррарй машгул шавед.

Дар айни замон, аз Oracle DBA ягон талаботи махсус вуҷуд надошт:

  • қобилияти интихоби оптималии МБМ ё технологияи дигари нигоҳдорӣ ва коркарди маълумотро дошта бошад;
  • таъмини дастрасии баланд ва миқёспазирии уфуқӣ (ин на ҳамеша як масъалаи DBA буд);
  • дониши хуби соҳаи мавзӯъ, инфрасохтор, меъмории барномаҳо, OS;
  • маълумотро бор кунед ва бор кунед, маълумотро байни DBMS-ҳои гуногун интиқол диҳед.

Умуман, агар дар бораи интихоби он рӯзҳо сухан гӯем, он ба интихоби мағозаи шӯравӣ дар охири солҳои 80-ум шабоҳат дорад:

Чӣ тавр аз пойгоҳи додаҳои SQL дар асри 21 зинда мондан мумкин аст: абрҳо, Кубернетес ва мултимастери PostgreSQL

Вақти мо

Аз он вақт инҷониб, албатта, дарахтон калон шуданд, ҷаҳон дигар шуд ва чунин шуд:

Чӣ тавр аз пойгоҳи додаҳои SQL дар асри 21 зинда мондан мумкин аст: абрҳо, Кубернетес ва мултимастери PostgreSQL

Бозори DBMS низ тағир ёфтааст, чунон ки аз гузориши охирини Gartner равшан дида мешавад:

Чӣ тавр аз пойгоҳи додаҳои SQL дар асри 21 зинда мондан мумкин аст: абрҳо, Кубернетес ва мултимастери PostgreSQL

Ва дар ин ҷо бояд қайд кард, ки абрҳо, ки маъруфияташон меафзояд, ҷойи худро ишғол кардааст. Агар мо ҳамон гузориши Gartner-ро хонем, мо хулосаҳои зеринро мебинем:

  1. Бисёре аз муштариён дар роҳи интиқоли барномаҳо ба абр ҳастанд.
  2. Технологияҳои нав аввал дар абр пайдо мешаванд ва ин далел нест, ки онҳо ҳеҷ гоҳ ба инфрасохтори ғайриабрӣ мегузаранд.
  3. Модели нархгузорй, ки ба кадри шумо пардохт, як чизи маъмулӣ шудааст. Ҳар як шахс мехоҳад танҳо барои он чизе, ки истифода мебарад, пардохт кунад ва ин ҳатто як тамоюл нест, балки танҳо изҳороти воқеият аст.

Ҳоло чӣ?

Имрӯз ҳамаи мо дар абр ҳастем. Ва саволҳое, ки барои мо ба миён меоянд, саволҳои интихобанд. Ва ин хеле бузург аст, ҳатто агар мо танҳо дар бораи интихоби технологияҳои DBMS дар формати In-premises гап занем. Мо инчунин хидматҳои идорашаванда ва SaaS дорем. Ҳамин тариқ, интихоб танҳо ҳар сол душвортар мешавад.

Дар баробари саволҳои интихоб низ ҳастанд омилҳои маҳдудкунанда:

  • нарх. Бисёре аз технологияҳо ҳоло ҳам пулро талаб мекунанд;
  • маҳорат. Агар сухан дар бораи нармафзори озод равад, пас масъалаи маҳорат ба миён меояд, зеро нармафзори озод аз одамоне, ки онро истифода мебаранд ва истифода мебаранд, салоҳияти кофӣ талаб мекунад;
  • функсионалӣ. На ҳама хидматҳое, ки дар абр дастрасанд ва, масалан, ҳатто дар ҳамон Postgres сохта шудаанд, дорои хусусиятҳои якхелаи Postgres On-premises мебошанд. Ин омили муҳимест, ки бояд шинохт ва дарк кард. Гузашта аз ин, ин омил аз донистани баъзе қобилиятҳои пинҳонии як МДМ муҳимтар мешавад.

Ҳоло аз DA/DE чӣ интизор аст:

  • фаҳмиши хуби соҳаи мавзӯъ ва меъмории барнома;
  • қобилияти дуруст интихоб кардани технологияи мувофиқи DBMS бо назардошти вазифаи дар пешистода;
  • қобилияти интихоби усули оптималии татбиқи технологияи интихобшуда дар шароити маҳдудиятҳои мавҷуда;
  • қобилияти иҷрои интиқол ва интиқоли маълумот;
  • қобилияти амалӣ ва истифода бурдани қарорҳои интихобшуда.

Дар зер мисол дар асоси GCP нишон медиҳад, ки интихоби ин ё он технологияи кор бо додаҳо вобаста ба сохтори он чӣ гуна кор мекунад:

Чӣ тавр аз пойгоҳи додаҳои SQL дар асри 21 зинда мондан мумкин аст: абрҳо, Кубернетес ва мултимастери PostgreSQL

Лутфан таваҷҷӯҳ намоед, ки PostgreSQL ба схема дохил карда нашудааст ва ин аз он сабаб аст, ки он дар зери истилоҳот пинҳон аст. Абри SQL. Ва вақте ки мо ба Cloud SQL мерасем, мо бояд дубора интихоб кунем:

Чӣ тавр аз пойгоҳи додаҳои SQL дар асри 21 зинда мондан мумкин аст: абрҳо, Кубернетес ва мултимастери PostgreSQL

Бояд қайд кард, ки ин интихоб на ҳамеша равшан аст, аз ин рӯ таҳиягарони барнома аксар вақт бо эҳсосот роҳнамоӣ мекунанд.

Њамагї:

  1. Чӣ қадаре ки шумо дуртар равед, масъалаи интихоб ҳамон қадар тезтар мешавад. Ва ҳатто агар шумо танҳо ба GCP, хидматҳои идорашаванда ва SaaS назар андозед, пас баъзе зикри RDBMS танҳо дар қадами 4 пайдо мешавад (ва дар он ҷо Spanner дар наздикӣ аст). Ғайр аз он, интихоби PostgreSQL дар қадами 5 пайдо мешавад ва дар паҳлӯи он инчунин MySQL ва SQL Server мавҷуданд, яъне ҳама чиз бисёр аст, аммо шумо бояд интихоб кунед.
  2. Мо набояд дар бораи маҳдудиятҳо дар заминаи васвасаҳо фаромӯш кунем. Аслан ҳама мехоҳанд Spanner дошта бошанд, аммо он гарон аст. Дар натиҷа, дархости маъмулӣ чунин менамояд: "Лутфан моро як Spanner созед, аммо бо нархи Cloud SQL, шумо мутахассис ҳастед!"

Чӣ тавр аз пойгоҳи додаҳои SQL дар асри 21 зинда мондан мумкин аст: абрҳо, Кубернетес ва мултимастери PostgreSQL

Ман бояд чӣ кунам?

Бе даъвои ҳақиқати ниҳоӣ, биёед чунин бигӯем:

Мо бояд муносибати худро ба омӯзиш тағир диҳем:

  • таълим додани тарзи таълими DBA-ҳои қаблӣ ҳеҷ маъно надорад;
  • дониши як маҳсулот дигар кофӣ нест;
  • вале дар сатхи як даххо нафарро донистан мумкин нест.

Шумо бояд на танҳо бидонед, ки маҳсулот чӣ қадар аст, балки:

  • ҳолати истифодаи он;
  • усулҳои гуногуни ҷойгиркунӣ;
  • афзалиятҳо ва нуқсонҳои ҳар як усул;
  • маҳсулоти шабеҳ ва алтернативӣ барои интихоби огоҳона ва оптималӣ ва на ҳамеша ба манфиати маҳсулоти шинос.

Шумо инчунин бояд маълумотро интиқол диҳед ва принсипҳои асосии ҳамгироӣ бо ETL-ро дарк кунед.

парвандаи воқеӣ

Дар гузаштаи наздик барои як замимаи мобилӣ барои эҷоди backend лозим буд. То он даме, ки кор дар он оғоз шуд, пуштибон аллакай таҳия ва барои татбиқ омода буд ва гурӯҳи таҳиякунанда тақрибан ду солро дар ин лоиҳа сарф кардааст. Вазифахои зерин гузошта шуданд:

  • сохтани CI/CD;
  • азназаргузаронии меъморӣ;
  • хамаи онро ба кор андохта.

Худи барнома хидматрасонии хурд буд ва рамзи Python/Django аз сифр ва бевосита дар GCP таҳия шудааст. Дар мавриди аудиторияи мақсаднок, тахмин карда мешуд, ки ду минтақа вуҷуд дорад - ИМА ва ИА ва трафик тавассути тавозуни Global Load тақсим карда мешавад. Ҳама сарбории корӣ ва сарбории ҳисобкунӣ дар Google Kubernetes Engine иҷро мешуданд.

Дар мавриди маълумот, 3 сохтор вуҷуд дошт:

  • Нигоҳдории абрӣ;
  • Мағозаи маълумот;
  • Абри SQL (PostgreSQL).

Чӣ тавр аз пойгоҳи додаҳои SQL дар асри 21 зинда мондан мумкин аст: абрҳо, Кубернетес ва мултимастери PostgreSQL

Шояд кас ҳайрон шавад, ки чаро Cloud SQL интихоб шудааст? Ростӣ, чунин савол дар солҳои охир як навъ таваққуфи ногуворро ба вуҷуд овард - эҳсосе вуҷуд дорад, ки одамон аз пойгоҳи додаҳои релятсионӣ шармгин шудаанд, аммо бо вуҷуди ин онҳо фаъолона истифода мебаранд ;-).

Дар мавриди мо, Cloud SQL бо сабабҳои зерин интихоб карда шуд:

  1. Тавре зикр гардид, барнома бо истифода аз Django таҳия шудааст ва он дорои модели харитасозии маълумоти доимӣ аз пойгоҳи додаҳои SQL ба объектҳои Python (Django ORM).
  2. Худи чаҳорчӯба рӯйхати хеле маҳдуди DBMS-ро дастгирӣ мекард:

  • PostgreSQL;
  • MariaDB;
  • MySQL
  • фоҳишаҳо;
  • SQLite.

Аз ин рӯ, PostgreSQL аз ин рӯйхат ба таври интуитивӣ интихоб карда шуд (хуб, интихоби Oracle нест, воқеан).

Чӣ намерасид:

  • барнома танҳо дар 2 минтақа ҷойгир карда шуд ва сеюм дар нақшаҳо (Осиё) пайдо шуд;
  • Махзани маълумот дар минтақаи Амрикои Шимолӣ (Айова) ҷойгир буд;
  • аз ҷониби фармоишгар нигарониҳо дар бораи имконпазир буданд таъхирҳои дастрасӣ аз Европа ва Осиё ва танаффусҳо дар хизмат дар сурати бекористии DBMS.

Сарфи назар аз он, ки худи Django метавонад бо якчанд пойгоҳи додаҳо мувозӣ кор кунад ва онҳоро ба хондан ва навиштан тақсим кунад, дар ариза он қадар навиштан вуҷуд надошт (зиёда аз 90% хондан аст). Ва умуман ва умуман, агар имконпазир бошад хондан-репликаи базаи асосй дар Европа ва Осиё, ин як ҳалли созиш хоҳад буд. Хуб, дар он чӣ ин қадар мураккаб аст?

Мушкилот дар он буд, ки муштарӣ намехост аз истифодаи хидматҳои идорашаванда ва Cloud SQL даст кашад. Ва имкониятҳои Cloud SQL дар айни замон маҳдуданд. Cloud SQL дастрасии баланд (HA) ва Read Replica (RR) -ро дастгирӣ мекунад, аммо ҳамон RR танҳо дар як минтақа дастгирӣ карда мешавад. Пас аз таъсиси пойгоҳи додаҳо дар минтақаи Амрико, шумо наметавонед дар минтақаи Аврупо бо истифода аз Cloud SQL нусхаи хониш созед, гарчанде худи Postgres ба шумо аз ин кор монеъ намешавад. Муколама бо кормандони Google ба ҷое нарасид ва бо ваъдаҳо ба тарзи "мо мушкилотро медонем ва рӯи он кор карда истодаем, рӯзе масъала ҳал мешавад" анҷом ёфт.

Агар мо имкониятҳои Cloud SQL-ро мухтасар номбар кунем, он чунин менамояд:

1. Мавҷудияти баланд (HA):

  • дар як минтақа;
  • тавассути нусхабардории диск;
  • Муҳаррикҳои PostgreSQL истифода намешаванд;
  • назорати автоматӣ ва дастӣ имконпазир аст - нокомӣ/файлбозӣ;
  • Ҳангоми гузариш, DBMS барои чанд дақиқа дастнорас аст.

2. Репликаро хонед (RR):

  • дар як минтақа;
  • интизории гарм;
  • Репликатсияи ҷараёнии PostgreSQL.

Илова бар ин, чун анъана, ҳангоми интихоби технология шумо ҳамеша бо баъзеҳо дучор мешавед маҳдудиятҳо:

  • муштарӣ намехост, ки объектҳо эҷод кунад ва IaaS -ро истифода барад, ба истиснои тавассути GKE;
  • муштарӣ намехоҳад PostgreSQL/MySQL-и худхизматрасониро ҷойгир кунад;
  • Хуб, дар маҷмӯъ, Google Spanner хеле мувофиқ мебуд, агар он бо нархи он намебуд, аммо Django ORM бо он кор карда наметавонад, аммо ин як чизи хуб аст.

Бо назардошти вазъият, муштарӣ саволи минбаъда гирифт: "Оё шумо метавонед як чизи шабеҳро иҷро кунед, то он мисли Google Spanner бошад, аммо бо Django ORM низ кор кунад?"

Варианти ҳалли № 0

Аввалин чизе, ки ба ёдам омад:

  • дар CloudSQL мондан;
  • дар ҳама гуна шакл дар байни минтақаҳо такрори дарунсохт вуҷуд нахоҳад дошт;
  • кӯшиш кунед, ки нусхаро ба Cloud SQL аз ҷониби PostgreSQL мавҷуда замима кунед;
  • як мисоли PostgreSQL-ро дар ҷое ва бо кадом роҳе оғоз кунед, аммо ҳадди аққал ба усто даст нарасонед.

Мутаассифона, маълум шуд, ки ин корро кардан ғайриимкон аст, зеро дастрасӣ ба мизбон вуҷуд надорад (он дар як лоиҳаи дигар аст) - pg_hba ва ғайра ва инчунин дар зери superuser дастрасӣ вуҷуд надорад.

Варианти ҳалли № 1

Пас аз мулоҳиза ва ба назар гирифтани шароити қаблӣ, қатори фикр каме тағйир ёфт:

  • Мо то ҳол кӯшиш мекунем, ки дар дохили CloudSQL бимонем, аммо мо ба MySQL мегузарем, зеро Cloud SQL аз ҷониби MySQL устоди беруна дорад, ки:

— прокси барои MySQL беруна аст;
- ба мисоли MySQL монанд аст;
- барои интиқоли маълумот аз абрҳои дигар ё дар дохили бино ихтироъ шудааст.

Азбаски насб кардани репликатсияи MySQL дастрасӣ ба мизбонро талаб намекунад, аслан ҳама чиз кор мекард, аммо он хеле ноустувор ва нороҳат буд. Ва ҳангоме ки мо пештар рафтем, ин комилан даҳшатнок шуд, зеро мо тамоми сохторро бо терраформ ҷойгир кардем ва ногаҳон маълум шуд, ки устои беруна бо терраформ дастгирӣ намекунад. Бале, Google дорои CLI аст, аммо бо баъзе сабабҳо ҳама чиз дар ин ҷо ҳар вақт кор мекард - баъзан он сохта мешавад, баъзан он офарида нашудааст. Шояд аз он сабаб бошад, ки CLI барои интиқоли додаҳои беруна ихтироъ шудааст, на барои репликаҳо.

Дар асл, дар ин лаҳза маълум шуд, ки Cloud SQL тамоман мувофиқ нест. Чи тавре ки мегуянд, мо тамоми кори аз дастамон меомадагиро кардем.

Варианти ҳалли № 2

Азбаски дар доираи Cloud SQL мондан имкон надошт, мо кӯшиш кардем, ки талаботро барои ҳалли созиш таҳия кунем. Талабот инҳоянд:

  • кор дар Kubernetes, истифодаи ҳадди аксар аз захираҳо ва имкониятҳои Kubernetes (DCS, ...) ва GCP (LB, ...);
  • набудани балласт аз як хӯшаи чизҳои нолозим дар абр ба монанди прокси HA;
  • қобилияти иҷро кардани PostgreSQL ё MySQL дар минтақаи асосии HA; дар дигар минтақаҳо - ҲА аз НТ-и минтақаи асосӣ ва нусхаи он (барои эътимоднокӣ);
  • multi master (ман намехостам бо ӯ тамос гирам, аммо ин хеле муҳим набуд)

.
Дар натичаи ин талабхо сахDBMS мувофиқ ва имконоти ҳатмӣ:

  • MySQL Galera;
  • CockroachDB;
  • Воситаҳои PostgreSQL

:
- pgpool-II;
— Патрони.

MySQL Galera

Технологияи MySQL Galera аз ҷониби Codership таҳия шудааст ва як плагин барои InnoDB мебошад. Хусусиятҳо:

  • бисёр усто;
  • такрори синхронӣ;
  • хондан аз ҳама гуна гиреҳ;
  • сабт ба ягон гиреҳ;
  • механизми дарунсохташудаи HA;
  • Диаграммаи Helm аз Bitnami мавҷуд аст.

Таракан

Тибқи тавсиф, он комилан бомба аст ва як лоиҳаи кушодаасос аст, ки дар Go навишта шудааст. Иштирокчии асосӣ Cockroach Labs (таъсис аз ҷониби одамони Google) мебошад. Ин DBMS-и релятсионӣ дар ибтидо барои паҳн кардан (бо миқёси уфуқӣ аз қуттӣ) ва ба хатоҳо тобовар тарҳрезӣ шуда буд. Муаллифони он аз ширкат ҳадафи "омезиши боигарии функсияҳои SQL бо дастрасии уфуқӣ, ки ба ҳалли NoSQL шиносанд"-ро муайян кардаанд.

Бонуси хуб ин дастгирии протоколи пайвастшавӣ пас аз конгресс мебошад.

Пгпул

Ин як замимаи PostgreSQL аст, дар асл як сохтори навест, ки ҳама пайвастҳоро мегирад ва онҳоро коркард мекунад. Он дорои тавозуни сарборӣ ва таҳлилгари худ мебошад, ки тибқи иҷозатномаи BSD литсензия шудааст. Он имкониятҳои васеъ фароҳам меорад, аммо то андозае даҳшатнок менамояд, зеро мавҷудияти як сохтори нав метавонад сарчашмаи баъзе саёҳатҳои иловагӣ гардад.

Патрони

Ин охирин чизест, ки чашмам ба он афтод ва, чунон ки маълум шуд, бехуда нест. Patroni як утилитаи кушодаасос аст, ки аслан як демони Python мебошад, ки ба шумо имкон медиҳад ба таври худкор кластерҳои PostgreSQL-ро бо намудҳои гуногуни такрорӣ ва ивазкунии автоматии нақш нигоҳ доред. Ин чиз хеле ҷолиб шуд, зеро он бо кубер хуб ҳамгиро мешавад ва ягон объекти навро муаррифӣ намекунад.

Дар охир чиро интихоб кардед?

Интихоб осон набуд:

  1. Таракан - оташ, вале торик;
  2. MySQL Galera - инчунин бад нест, он дар бисёр ҷойҳо истифода мешавад, аммо MySQL;
  3. Пгпул — бисёр объектҳои нолозим, то ҳамгироӣ бо абр ва K8s;
  4. Патрони - ҳамгироии аъло бо K8s, ягон объекти нолозим, бо GCP LB хуб ҳамгиро мешавад.

Ҳамин тариқ, интихоб ба Patroni афтод.

натиҷаҳои

Вакти он расидааст, ки мухтасар хулоса кунем. Бале, ҷаҳони инфрасохтори IT ба таври назаррас тағйир ёфтааст ва ин танҳо ибтидо аст. Ва агар қаблан абрҳо як намуди дигари инфрасохтор бошанд, ҳоло ҳама чиз дигар аст. Гузашта аз ин, инноватсияҳо дар абрҳо пайваста пайдо мешаванд, онҳо пайдо мешаванд ва шояд онҳо танҳо дар абрҳо пайдо мешаванд ва танҳо пас аз кӯшиши стартапҳо онҳо ба Дохилшавӣ интиқол дода мешаванд.

Дар мавриди SQL, SQL зиндагӣ хоҳад кард. Ин маънои онро дорад, ки шумо бояд PostgreSQL ва MySQL-ро донед ва бо онҳо кор карда тавонед, аммо муҳимтар аз он аст, ки дуруст истифода бурда тавонед.

Манбаъ: will.com

Илова Эзоҳ