Google Cloud Spanner: Хуб, бад, зишт

Салом, Хабровиён. Чун анъана мо мубодилаи маводи ҷолибро дар арафаи оғози курсҳои нав идома медиҳем. Имрӯз, махсусан барои шумо, мо мақолаеро дар бораи Google Cloud Spanner тарҷума кардем, ки ба оғози курс рост омад. "AWS барои таҳиягарон".

Google Cloud Spanner: Хуб, бад, зишт

Аввалан дар Блоги HQ Lightspeed.

Ҳамчун як ширкате, ки барои фурӯшандагон, тарабхонаҳо ва тоҷирони онлайн дар саросари ҷаҳон ҳалли гуногуни POS-ро дар асоси абр пешниҳод мекунад, Lightspeed якчанд намудҳои гуногуни платформаҳои пойгоҳи додаҳоро барои ҳолатҳои гуногуни транзаксия, таҳлил ва ҷустуҷӯ истифода мебарад. Ҳар яке аз ин платформаҳои пойгоҳи додаҳо ҷиҳатҳои қавӣ ва заъфи худро доранд.Аз ин рӯ, вақте ки Google Cloud Spanner-ро ба бозор муаррифӣ кард - хусусиятҳои ояндадоре, ки дар ҷаҳони пойгоҳи додаҳои релятсионӣ дида намешаванд, ба монанди миқёспазирии амалан номаҳдуди уфуқӣ ва созишномаи сатҳи хидматрасонии 99,999% (SLA) , Мо имкони дар дасти худ доштанро аз даст дода наметавонистем!

Барои шарҳи ҳамаҷонибаи таҷрибаи мо бо Cloud Spanner ва инчунин меъёрҳои арзёбӣ, ки мо истифода мебарем, мо мавзӯъҳои зеринро фаро хоҳем гирифт:

  1. Меъёрҳои арзёбии мо
  2. Cloud Spanner дар мухтасар
  3. Арзёбии мо
  4. Натиҷаҳои мо

Google Cloud Spanner: Хуб, бад, зишт

1. Меъёрҳои арзёбии мо

Пеш аз ғарқ шудан ба хусусиятҳои Cloud Spanner, шабоҳатҳо ва фарқиятҳои он бо дигар қарорҳои бозор, биёед аввал дар бораи ҳолатҳои асосии истифодабарӣ, ки мо ҳангоми баррасии куҷо ҷойгир кардани Cloud Spanner дар инфрасохтори мо дар назар доштем, сӯҳбат кунем:

  • Ҳамчун иваз кардани ҳалли (бартаридошта) анъанавии махзани SQL
  • Ҳамчун як ҳалли OLTP бо OLAP фаъол

Эзоҳ: Барои осонии муқоиса, ин мақола Cloud Spanner-ро бо вариантҳои MySQL-и GCP Cloud SQL ва оилаҳои ҳалли Amazon AWS RDS муқоиса мекунад.

Истифодаи Cloud Spanner ҳамчун иваз барои ҳалли анъанавии пойгоҳи додаҳои SQL

Дар муҳити зист анъанавӣ пойгоҳи додаҳо, вақте ки вақти вокуниш ба дархости пойгоҳи додаҳо ба ҳадди муқарраршудаи барнома наздик мешавад ё ҳатто аз он зиёд мешавад (пеш аз ҳама аз ҳисоби афзоиши шумораи корбарон ва/ё дархостҳо), якчанд роҳҳо барои кам кардани вақти посух ба сатҳи қобили қабул вуҷуд доранд. Бо вуҷуди ин, аксарияти ин қарорҳо дахолати дастӣ доранд.

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

Баланд бардоштани миқёси барнома навсозии мисоли серверро талаб мекунад, ки маъмулан тавассути илова кардани протсессорҳо/ядроҳои бештар, хотираи бештари RAM, нигоҳдории тезтар ва ғайра. Илова кардани захираҳои сахтафзор боиси афзоиши маҳсулнокии пойгоҳи додаҳо мегардад, ки асосан бо транзаксияҳо дар як сония ва таъхири транзаксия барои системаҳои OLTP ҳисоб карда мешавад. Системаҳои пойгоҳи додаҳои релятсионӣ (ки равиши бисёр риштаро истифода мебаранд) ба монанди миқёси MySQL амудӣ хубанд.

Якчанд нуқсонҳои ин равиш вуҷуд доранд, аммо аз ҳама равшантарин андозаи ҳадди аксар сервер дар бозор аст. Пас аз расидан ба ҳадди ниҳоии бузургтарини сервер, танҳо як роҳ боқӣ мемонад: васеъ кардан.

Миқёси васеъкунӣ як равишест, ки серверҳои бештарро ба кластер илова мекунад, то иҷрои онро ба таври хаттӣ афзоиш диҳад, зеро серверҳои бештар илова карда мешаванд. Аксарият анъанавӣ системаҳои базаи маълумотҳо миқёси хуб надоранд ё умуман миқёс надоранд. Масалан, MySQL метавонад тавассути илова кардани хонандагони ғулом барои хондан васеъ карда шавад, аммо он барои навиштан васеъ карда наметавонад.

Аз тарафи дигар, аз рӯи табиати худ, Cloud Spanner метавонад ба осонӣ ба таври уфуқӣ бо дахолати ҳадди аққал миқёс кунад.

Хусусияти пурра DBMS ҳамчун хидмат бояд аз нуктаи назари гуногун бахо дода шавад. Ҳамчун асос, мо маъмултарин DBMS дар абрро гирифтем - барои Google, GCP Cloud SQL ва барои Amazon, AWS RDS. Дар арзёбии худ мо ба категорияҳои зерин тамаркуз кардем:

  • Харитасозии хусусият: дараҷаи SQL, DDL, DML; китобхонаҳои пайвастшавӣ/пайвасткунакҳо, дастгирии транзаксия ва ғайра.
  • Дастгирии рушд: Осонии таҳия ва озмоиш.
  • Дастгирии маъмурӣ: Идоракунии мисолҳо, ба монанди миқёси боло/паст ва навсозии мисолҳо; SLA, нусхабардорӣ ва барқарорсозӣ; амният/назорати дастрасӣ.

Истифодаи Cloud Spanner ҳамчун ҳалли OLTP-и фаъол

Гарчанде ки Google ба таври возеҳ изҳор намекунад, ки Cloud Spanner барои таҳлил аст, вай баъзе атрибутҳоро бо дигар муҳаррикҳо ба монанди Apache Impala & Kudu ва YugaByte мубодила мекунад, ки барои сарбории кории OLAP пешбинӣ шудаанд.

Ҳатто агар имкони каме вуҷуд дошта бошад, ки Cloud Spanner як муҳаррики васеъи HTAP (Гибрид транзаксионалӣ/таҳлилӣ) бо маҷмӯи хусусиятҳои OLAP (камтар ё камтар) қобили истифода бошад, мо фикр мекунем, ки он сазовори таваҷҷӯҳи мо хоҳад буд.

Бо назардошти ин, мо ба категорияҳои зерин назар кардем:

  • Боркунии маълумот, индексҳо ва дастгирии тақсимкунӣ
  • Иҷрои дархост ва DML

2. Cloud Spanner дар мухтасар

Google Spanner як системаи кластерии идоракунии пойгоҳи додаҳо (RDBMS) мебошад, ки Google барои якчанд хидматҳои худ истифода мебарад. Google онро дар аввали соли 2017 барои корбарони Google Cloud Platform дастрас кард.

Инҳоянд баъзе аз атрибутҳои Cloud Spanner:

  • Кластери хеле мувофиқ ва миқёспазири RDBMS: Синхронизатсияи вақти сахтафзорро барои таъмини мувофиқати маълумот истифода мебарад.
  • Дастгирии транзаксияҳои байни ҷадвал: Муомилаҳо метавонанд ҷадвалҳои сершуморро дар бар гиранд - на ҳатман бо як ҷадвал маҳдуд карда шаванд (бар хилофи Apache HBase ё Apache Kudu).
  • Ҷадвалҳои асоси ба калид асосёфта: Ҳама ҷадвалҳо бояд Калиди ибтидоии эълоншуда (PC) дошта бошанд, ки метавонанд аз якчанд сутунҳои ҷадвал иборат бошанд. Маълумоти ҷадвалӣ бо тартиби компютер нигоҳ дошта мешавад, ки онро барои ҷустуҷӯи компютер хеле самаранок ва зуд мегардонад. Мисли дигар системаҳои ба компютер асосёфта, татбиқ бояд аз ҳолатҳои истифодаи пешакӣ тарҳрезӣ карда шавад иҷрои беҳтарин.
  • Ҷадвалҳои хатӣ: Ҷадвалҳо метавонанд аз ҳамдигар вобастагии ҷисмонӣ дошта бошанд. Сатрҳои ҷадвали кӯдакро бо сатрҳои ҷадвали волидайн мувофиқ кардан мумкин аст. Ин равиш ҷустуҷӯи муносибатҳоро суръат мебахшад, ки онҳоро дар марҳилаи моделсозии додаҳо муайян кардан мумкин аст, масалан, ҳангоми ҷойгиркунии муштариён ва ҳисобнома-фактураҳои онҳо.
  • Индексҳо: Cloud Spanner индексҳои дуввумро дастгирӣ мекунад. Индекс аз сутунҳои индексатсияшуда ва ҳама сутунҳои компютер иборат аст. Ихтиёрӣ, индекс метавонад дигар сутунҳои индекснашавандаро дар бар гирад. Индексро метавон бо ҷадвали волидайн пайваст кард, то дархостҳоро суръат бахшад. Якчанд маҳдудиятҳо барои индексатсияҳо, ба монанди шумораи ҳадди сутунҳои иловагӣ, ки метавонанд дар индекс нигоҳ дошта шаванд, татбиқ мешаванд. Инчунин, дархостҳо тавассути индексатсияҳо метавонанд мисли дигар RDBMSҳо осон набошанд.

"Cloud Spanner индексро танҳо дар ҳолатҳои нодир интихоб мекунад. Махсусан, Cloud Spanner ба таври худкор индекси дуюмро интихоб намекунад, агар дархост ягон сутунеро, ки дар индекс ".

  • Созишномаи сатҳи хидматрасонӣ (SLA): Ҷойгиркунии як минтақа бо 99,99% SLA; ҷойгиркунии бисёрминтақа бо 99,999% SLA. Гарчанде ки худи SLA танҳо як созишнома аст ва на кафолати ягон намуд, ман боварӣ дорам, ки одамони Google барои пешниҳоди чунин даъвои қавӣ маълумоти сахт доранд. (Барои истинод, 99,999% маънои 26,3 сония бекористии хидматро дар як моҳ дорад.)
  • Бештар: https://cloud.google.com/spanner/

Эзоҳ: Лоиҳаи Apache Tephra ба Apache HBase дастгирии пешрафтаи транзаксияро илова мекунад (инчунин ҳоло дар Apache Phoenix ҳамчун бета амалӣ карда мешавад).

3. Арзёбии мо

Ҳамин тавр, мо ҳама изҳороти Google-ро дар бораи бартариҳои Cloud Spanner хондаем - миқёси амалан номаҳдуди уфуқӣ ҳангоми нигоҳ доштани мутобиқати баланд ва SLA хеле баланд. Ҳарчанд ин иддаъоҳо ба ҳар ҳол ниҳоят душвор аст, аммо ҳадафи мо рад кардани онҳо набуд. Ба ҷои ин, биёед ба чизҳои дигаре таваҷҷӯҳ кунем, ки аксари корбарони пойгоҳи додаҳо ба онҳо аҳамият медиҳанд: баробарӣ ва қобили истифода.

Мо Cloud Spanner-ро ҳамчун ивазкунандаи Sharded MySQL арзёбӣ кардем

Google Cloud SQL ва Amazon AWS RDS, ду базаи маъмултарини OLTP дар бозори абр, маҷмӯи хусусиятҳои хеле калон доранд. Аммо, барои васеъ кардани ин пойгоҳи додаҳо аз андозаи як гиреҳ, шумо бояд тақсимоти барномаро иҷро кунед. Ин равиш ҳам барои барномаҳо ва ҳам маъмурият мураккабии иловагӣ эҷод мекунад. Мо дида баромадем, ки чӣ тавр Spanner ба сенарияи муттаҳид кардани пораҳои сершумор дар як мисол мувофиқат мекунад ва кадом хусусиятҳоро (агар мавҷуд бошад) қурбонӣ кардан лозим аст.

Дастгирии SQL, DML ва DDL, инчунин пайвасткунак ва китобхонаҳо?

Аввалан, ҳангоми оғоз кардани ягон пойгоҳи додаҳо, шумо бояд модели маълумотро эҷод кунед. Агар шумо фикр кунед, ки шумо метавонед JDBC Spanner-ро ба асбоби дӯстдоштаи SQL пайваст кунед, шумо мефаҳмед, ки шумо метавонед бо он маълумоти худро пурсед, аммо шумо онро барои сохтани ҷадвал ё навсозӣ (DDL) ё ягон воридкунӣ/навсозӣ/нест кардан истифода бурда наметавонед. амалиёт (DML). JDBC-и расмии Google низ дастгирӣ намекунад.

"Ронандагон дар айни замон изҳороти DML ё DDL-ро дастгирӣ намекунанд."
Ҳуҷҷатҳои spanner

Вазъият бо консоли GCP беҳтар нест - шумо метавонед танҳо дархостҳои SELECT фиристед. Хушбахтона як ронандаи JDBC бо дастгирии DML ва DDL аз ҷониби ҷомеа, аз ҷумла транзаксияҳо мавҷуд аст github.com/olavloite/spanner-jdbc. Гарчанде ки ин драйвер бениҳоят муфид аст, набудани драйвери JDBC-и Google тааҷҷубовар аст. Хушбахтона, Google дастгирии хеле васеи китобхонаи мизоҷро пешниҳод мекунад (дар асоси gRPC): C#, Go, Java, node.js, PHP, Python ва Ruby.

Истифодаи қариб ҳатмии API-ҳои фармоишии Cloud Spanner (бо сабаби набудани DDL ва DML дар JDBC) боиси баъзе маҳдудиятҳо барои соҳаҳои марбути код, ба монанди ҷамъкунии пайвастшавӣ ё чаҳорчӯбаи ҳатмии пойгоҳи додаҳо (ба монанди Spring MVC) мегардад. Умуман, ҳангоми истифодаи JDBC, шумо метавонед ҳавзи пайвасти дӯстдоштаи худро (масалан, HikariCP, DBCP, C3PO ва ғайра) интихоб кунед, ки санҷида шудааст ва хуб кор мекунад. Дар мавриди API-ҳои фармоишии Spanner, мо бояд ба чаҳорчӯбаҳо/ҳатмӣ/сессияҳо, ки худамон офаридаем, такя кунем.

Тарҳрезии асосии калиди (PC) нигаронидашуда имкон медиҳад, ки Cloud Spanner ҳангоми дастрасии маълумот тавассути компютер хеле зуд бошад, аммо инчунин баъзе масъалаҳои дархостро пешниҳод мекунад.

  • Шумо наметавонед арзиши калиди ибтидоиро навсозӣ кунед; Шумо бояд аввал сабти аслии компютерро нест кунед ва онро бо арзиши нав дубора ворид кунед. (Ин ба дигар муҳаррикҳои пойгоҳи додаҳо/нигоҳдории компютер нигаронидашуда монанд аст.)
  • Ҳама гуна изҳороти UPDATE ва DELETE бояд компютерро дар КУҶО муайян кунанд, аз ин рӯ, нест, ки ҳама изҳоротҳо холӣ бошанд - бояд ҳамеша зерпурсиш мавҷуд бошад, масалан: UPDATE xxx WHERE IN (SELECT id FROM table1)
  • Набудани имконоти худкор афзоиш ё чизи шабеҳе, ки пайдарпаии майдони компютерро муқаррар мекунад. Барои ин кор, арзиши мувофиқ бояд дар тарафи барнома эҷод карда шавад.

Нишондиҳандаҳои дуюмдараҷа?

Google Cloud Spanner барои индексҳои дуюмдараҷа дастгирии дохилӣ дорад. Ин як хусусияти хеле хубест, ки на ҳамеша дар технологияҳои дигар мавҷуд аст. Apache Kudu дар айни замон нишондиҳандаҳои дуюмдараҷаро дастгирӣ намекунад ва Apache HBase индексҳоро мустақиман дастгирӣ намекунад, аммо метавонад онҳоро тавассути Apache Phoenix илова кунад.

Индексҳоро дар Kudu ва HBase ҳамчун ҷадвали алоҳида бо таркиби гуногуни калидҳои ибтидоӣ моделсозӣ кардан мумкин аст, аммо атомии амалҳои дар ҷадвали волидайн ва ҷадвалҳои индекси алоқаманд иҷрошаванда бояд дар сатҳи барнома иҷро карда шаванд ва барои дуруст татбиқ кардан ночиз нест.

Тавре ки дар баррасии Cloud Spanner зикр шудааст, индексҳои он метавонанд аз индексҳои MySQL фарқ кунанд. Ҳамин тариқ, ҳангоми сохтани пурсишҳо ва профилсозӣ бояд диққати махсус дода шавад, то ин ки индекси дуруст дар ҷои зарурӣ истифода шавад.

намояндагӣ?

Объекти хеле маъмул ва муфид дар пойгоҳи додаҳо намуди зоҳирӣ мебошад. Онҳо метавонанд барои шумораи зиёди ҳолатҳои истифода муфид бошанд; ду дӯстдоштаи ман қабати абстраксияи мантиқӣ ва қабати амният мебошанд. Мутаассифона Cloud Spanner намоишҳоро дастгирӣ намекунад. Бо вуҷуди ин, ин моро танҳо қисман маҳдуд мекунад, зеро дар сатҳи сутун барои иҷозатҳои дастрасӣ, ки намоишҳо метавонанд ҳалли қобили қабул бошанд, вуҷуд надорад.

Ҳуҷҷатҳои Cloud Spanner барои қисмате, ки квотаҳо ва маҳдудиятҳоро тафсилот медиҳанд (калид/квота), яке аз ҷумла вуҷуд дорад, ки метавонад барои баъзе барномаҳо мушкил бошад: Cloud Spanner аз қуттӣ ҳадди аксар 100 пойгоҳи додаҳо дар як мисол дорад. Аён аст, ки ин метавонад як монеаи асосӣ барои пойгоҳи додаҳо бошад, ки барои васеъ кардани беш аз 100 пойгоҳи додаҳо пешбинӣ шудааст. Хушбахтона, пас аз сӯҳбат бо намояндаи техникии Google, мо фаҳмидем, ки ин маҳдудиятро тавассути дастгирии Google тақрибан ба ҳама гуна арзиш зиёд кардан мумкин аст.

Дастгирии рушд?

Cloud Spanner барои кор бо API-и худ дастгирии хеле хуби забони барномасозиро пешниҳод мекунад. Китобхонаҳои расман дастгирӣшаванда дар минтақаи C#, Go, Java, node.js, PHP, Python ва Ruby ҷойгиранд. Ҳуҷҷатҳо хеле муфассаланд, аммо ба монанди дигар технологияҳои муосир, ҷомеа дар муқоиса бо технологияҳои маъмултарини пойгоҳи додаҳо хеле хурд аст, ки метавонад вақти бештарро барои ҳолатҳои истифодаи камтар ё мушкилот сарф кунад.

Пас, дар бораи дастгирии рушди маҳаллӣ чӣ гуфтан мумкин аст?

Мо роҳи эҷоди як мисоли Cloud Spanner дар дохили биноро наёфтаем. Наздиктарин чизе, ки мо дорем, тасвири Docker аст Тараканки аз чихати принцип ба хам монанд, вале дар амал хеле фарк мекунад. Масалан, CockroachDB метавонад PostgreSQL JDBC-ро истифода барад. Азбаски муҳити рушд бояд то ҳадди имкон ба муҳити истеҳсолӣ наздик бошад, Cloud Spanner идеалӣ нест, зеро шумо бояд ба як намунаи пурраи Spanner такя кунед. Барои сарфа кардани хароҷот, шумо метавонед як мисоли минтақаро интихоб кунед.

Дастгирии маъмурият?

Эҷоди як мисоли Cloud Spanner хеле содда аст. Шумо танҳо бояд байни эҷоди як мисоли бисёрминтақа ё якминтақа интихоб кунед, минтақа(ҳо) ва шумораи гиреҳҳоро муайян кунед. Дар камтар аз як дақиқа, инстансия кор мекунад.

Якчанд нишондиҳандаҳои ибтидоӣ мустақиман дар саҳифаи Spanner дар Google Console дастрасанд. Намоишҳои муфассалро тавассути Stackdriver дастрас кардан мумкин аст, ки дар он шумо инчунин меъёрҳои метрикӣ ва сиёсати огоҳкуниро муқаррар карда метавонед.

Дастрасӣ ба захираҳо?

MySQL танзимоти иҷозаи корбар/нақшҳои васеъ ва хеле муфассалро пешниҳод мекунад. Шумо метавонед дастрасӣ ба ҷадвали мушаххас ё ҳатто як зермаҷмӯи сутунҳои онро ба осонӣ танзим кунед. Cloud Spanner абзори Google Identity & Access Management (IAM) -ро истифода мебарад, ки танҳо ба шумо имкон медиҳад, ки сиёсатҳо ва иҷозатҳоро дар сатҳи хеле баланд муқаррар кунед. Варианти аз ҳама муфассал ин иҷозати сатҳи пойгоҳи додаҳост, ки дар аксари ҳолатҳои истеҳсолӣ мувофиқат намекунад. Ин маҳдудият шуморо маҷбур мекунад, ки ба код, инфрасохтор ё ҳарду чораҳои иловагии амниятӣ илова кунед, то истифодаи беиҷозати захираҳои Spanner пешгирӣ кунед.

Нусхаҳо?

Оддӣ карда гӯем, дар Cloud Spanner нусхаҳои эҳтиётӣ вуҷуд надоранд. Дар ҳоле ки талаботи баланди SLA-и Google метавонад кафолат диҳад, ки шумо ягон маълумотро аз сабаби нокомии сахтафзор ё пойгоҳи додаҳо, хатои инсонӣ, нуқсонҳои барнома ва ғайра аз даст надиҳед. Мо ҳама қоидаро медонем: мавҷудияти баланд ҷойгузини стратегияи эҳтиётии оқилона нест. Дар айни замон, ягона роҳи нусхабардории маълумот ин ба таври барномавӣ интиқол додани он аз пойгоҳи додаҳо ба муҳити нигоҳдории алоҳида мебошад.

Иҷрои дархост?

Мо Yahoo-ро барои бор кардани маълумот ва дархостҳои санҷишӣ истифода мебарем. Нишондиҳандаи хидматрасонии абрӣ. Дар ҷадвали зер сарбории кории B YCSB бо таносуби 95% хондан то 5% навиштан нишон дода шудааст.

Google Cloud Spanner: Хуб, бад, зишт

* Санҷиши сарборӣ дар n1-standard-32 Compute Engine (CE) (32 vCPU, хотираи 120 ГБ) гузаронида шуд ва намунаи санҷиш ҳеҷ гоҳ монеа дар озмоишҳо набуд.
** Шумораи ниҳоии риштаҳо дар як мисоли YCSB 400 аст. Дар маҷмӯъ, бояд шаш мисоли параллели санҷишҳои YCSB барои ба даст овардани 2400 ришта иҷро карда шаванд.

Ба натиҷаҳои санҷиш, махсусан омезиши сарбории CPU ва TPS нигоҳ карда, мо ба таври возеҳ мебинем, ки Cloud Spanner миқёси хеле хуб дорад. Сарбории калоне, ки аз ҷониби шумораи зиёди риштаҳо ба вуҷуд омадааст, аз ҷониби шумораи зиёди гиреҳҳо дар кластери Cloud Spanner ҷуброн карда мешавад. Гарчанде ки таъхир хеле баланд ба назар мерасад, махсусан ҳангоми кор дар 2400 ришта, барои гирифтани рақамҳои дақиқтар бо 6 мисоли хурдтари муҳаррики ҳисобкуниро дубора санҷидан лозим аст. Ҳар як намуна ба ҷои як намунаи бузурги CE бо 6 санҷиши мувозӣ як санҷиши YCSB иҷро мекунад. Ин фарқи байни таъхирҳои дархости Cloud Spanner ва таъхирҳоеро, ки тавассути пайвасти шабакавӣ байни Cloud Spanner ва намунаи CE, ки санҷиш мегузаронад, осонтар мекунад.

Cloud Spanner ҳамчун OLAP чӣ гуна кор мекунад?

Тақсимкунӣ?

Тақсим кардани маълумот ба сегментҳои аз ҷиҳати ҷисмонӣ ва/ё мантиқӣ мустақил, ки қисмҳо номида мешаванд, як мафҳуми хеле маъмул дар аксари муҳаррикҳои OLAP мебошад. Қисмҳо метавонанд иҷрои дархост ва нигоҳдории пойгоҳи додаҳоро хеле беҳтар созанд. Тадқиқоти минбаъда ба тақсимкунӣ як мақолаи алоҳида хоҳад буд, бинобар ин биёед танҳо аҳамияти доштани схемаи тақсимкунӣ ва зерҳисматҳоро қайд кунем. Қобилияти тақсим кардани маълумот ба қисмҳо ва ҳатто бештар ба зерқисмҳо калиди иҷрои дархостҳои таҳлилӣ мебошад.

Cloud Spanner қисмҳои алоҳидаро дастгирӣ намекунад. Он маълумотро дар дохили он ба ном ҷудо мекунад Зада шикастан-s дар асоси диапазони калидҳои ибтидоӣ. Тақсимкунӣ ба таври худкор барои мувозинат кардани сарборӣ дар кластери Cloud Spanner анҷом дода мешавад. Хусусияти хеле қулайи Cloud Spanner тақсим кардани сарбории асосии ҷадвали волидайн мебошад (ҷадвале, ки бо дигараш омехта нашудааст). Spanner ба таври худкор муайян мекунад, ки оё он дорои Зада шикастан маълумоте, ки нисбат ба маълумоти дигар бештар хонда мешавад Зада шикастан-ah, ва метавонад дар бораи ҷудоии минбаъда қарор кунад. Ҳамин тариқ, гиреҳҳои бештар метавонанд дар дархост ҷалб карда шаванд, ки он инчунин қобилияти интиқолро ба таври муассир афзоиш медиҳад.

Маълумот бор карда мешавад?

Усули Cloud Spanner барои маълумоти оммавӣ бо боркунии муқаррарӣ яксон аст. Барои иҷрои ҳадди аксар, шумо бояд баъзе дастурҳоро риоя кунед, аз ҷумла:

  • Маълумоти худро аз рӯи калиди ибтидоӣ ҷудо кунед.
  • Онҳоро ба 10 тақсим кунед *шумораи гиреҳҳо бахшҳои алоҳида.
  • Маҷмӯи вазифаҳои коргариро эҷод кунед, ки маълумотро дар мувозӣ бор мекунанд.

Ин боркунии маълумот ҳама гиреҳҳои Cloud Spanner -ро истифода мебарад.

Мо сарбории кории A YCSB-ро барои тавлиди маҷмӯи додаҳои сатри 10M истифода кардем.

Google Cloud Spanner: Хуб, бад, зишт

* Санҷиши сарборӣ дар муҳаррики ҳисоббарории n1-standard-32 (32 vCPU, хотираи 120 ГБ) гузаронида шуд ва намунаи санҷиш ҳеҷ гоҳ монеа дар озмоишҳо набуд.
** Танзими гиреҳи 1 барои ягон сарбории истеҳсолӣ тавсия дода намешавад.

Тавре ки дар боло зикр гардид, Cloud Spanner тақсимҳоро вобаста ба сарбории онҳо ба таври худкор коркард мекунад, аз ин рӯ натиҷаҳо пас аз чанд такрори пайдарпайи санҷиш беҳтар мешаванд. Натиҷаҳои дар ин ҷо овардашуда беҳтарин натиҷаҳое мебошанд, ки мо ба даст овардаем. Ба рақамҳои дар боло овардашуда, мо мебинем, ки чӣ тавр Cloud Spanner миқёси (хуб) зиёд мешавад, зеро шумораи гиреҳҳо дар кластер меафзояд. Рақамҳое, ки ба назар мерасанд, таъхири миёнаи бениҳоят паст мебошанд, ки бо натиҷаҳои сарбории омехта (95% хондан ва 5% навиштан), тавре ки дар боби боло тавсиф шудаанд, муқоиса мекунанд.

Миқёс кардан?

Зиёд ва кам кардани шумораи гиреҳҳои Cloud Spanner вазифаи як клик аст. Агар шумо хоҳед, ки маълумотро зуд бор кунед, шумо метавонед дар бораи афзоиш додани мисол фикр кунед (дар ҳолати мо он 25 гиреҳ дар минтақаи ИМА-ШАРҚ буд) ва пас аз ҳама маълумот шумораи гиреҳҳои барои бори муқаррарии шумо мувофиқро кам кунед. дар пойгоҳи додаҳо, бо назардошти маҳдудияти 2 TB/ гиреҳ.

Мо ин маҳдудиятро ҳатто бо пойгоҳи додаҳои хеле хурдтар ёдрас кардем. Пас аз якчанд санҷиши сарборӣ, пойгоҳи додаи мо тақрибан 155 ГБ буд ва вақте ки миқёси як мисоли 1 гиреҳ коҳиш ёфт, мо хатои зеринро гирифтем:

Google Cloud Spanner: Хуб, бад, зишт

Мо тавонистем миқёсро аз 25 то 2 мисол коҳиш диҳем, аммо мо дар ду гиреҳ часпидаем.

Зиёд ва кам кардани шумораи гиреҳҳо дар кластери Cloud Spanner метавонад бо истифода аз REST API автоматӣ карда шавад. Ин метавонад махсусан барои кам кардани сарбории зиёд ба система дар соатҳои банд муфид бошад.

Иҷрои дархости OLAP?

Мо дар ибтидо нақша доштем, ки вақти зиёдеро барои арзёбии худ дар ин бахш ба Спаннер ҷудо кунем. Пас аз чанд SELECT COUNT, мо фавран фаҳмидем, ки санҷиш кӯтоҳ хоҳад буд ва Spanner муҳаррики мувофиқ барои OLAP НЕСТ. Новобаста аз шумораи гиреҳҳо дар кластер, танҳо интихоби шумораи сатрҳо дар ҷадвали сатри 10M аз 55 то 60 сония вақтро мегирад. Инчунин, ҳама дархосте, ки барои нигоҳ доштани натиҷаҳои мобайнӣ хотираи бештар лозим буд, бо хатогии OOM ноком шуд.

SELECT COUNT(DISTINCT(field0)) FROM usertable; — (10M distinct values)-> SpoolingHashAggregateIterator ran out of memory during new row.

Баъзе рақамҳоро барои дархостҳои TPC-H дар мақолаи Тодд Липкон пайдо кардан мумкин аст nosql-kudu-spanner-slides.html, слайдҳои 42 ва 43. Ин рақамҳо бо натиҷаҳои худи мо мувофиқанд (мутаассифона).

Google Cloud Spanner: Хуб, бад, зишт

4. Бозёфтҳои мо

Бо дарназардошти вазъи кунунии хусусиятҳои Cloud Spanner, онро ҳамчун ивазкунандаи оддии ҳалли мавҷудаи OLTP дидан душвор аст, хусусан вақте ки ниёзҳои шумо аз он зиёдтар мешаванд. Барои сохтани ҳалли атрофи камбудиҳои Cloud Spanner вақти зиёд лозим мешавад.

Вақте ки мо ба арзёбии Cloud Spanner шурӯъ кардем, мо интизор будем, ки хусусиятҳои идоракунии он бо дигар қарорҳои Google SQL баробар ё ҳадди аққал аз он дур бошанд. Аммо мо аз набудани пурраи нусхабардорӣ ва назорати хеле маҳдуди дастрасӣ ба захираҳо ҳайрон шудем. Ногуфта намонад, ки ҳеҷ гуна назарҳо, муҳити рушди маҳаллӣ, пайдарпайии дастгирӣнашаванда, JDBC бе дастгирии DML ва DDL ва ғайра.

Пас, барои касе, ки бояд пойгоҳи додаҳои транзаксиониро васеъ кунад, ба куҷо равад? Ба назар чунин мерасад, ки дар бозор ҳанӯз як ҳалли ягонае вуҷуд надорад, ки ба ҳама ҳолатҳои истифода мувофиқат кунад. Қарорҳои зиёди пӯшида ва кушодаасос мавҷуданд (баъзе аз онҳо дар ин мақола зикр шудаанд), ки ҳар кадоми онҳо ҷиҳатҳои қавӣ ва заъфи худро доранд, аммо ҳеҷ яке аз онҳо SaaS-ро бо 99,999% SLA ва дараҷаи баланди мувофиқат пешниҳод намекунад. Агар SLA-и баланд ҳадафи аввалиндараҷаи шумо бошад ва шумо майл надоред, ки ҳалли худро барои абрҳои сершумор созед, Cloud Spanner метавонад роҳи ҳалли шумо бошад. Аммо шумо бояд аз ҳама маҳдудиятҳои он огоҳ бошед.

Аз рӯи адолат, Cloud Spanner танҳо дар баҳори соли 2017 ба омма бароварда шуд, аз ин рӯ интизор шудан оқилона аст, ки баъзе камбудиҳои ҷории он дар ниҳоят аз байн мераванд (умедворем) ва вақте ки ин тавр мешавад, он метавонад тағирдиҳандаи бозӣ бошад. Дар ниҳоят, Cloud Spanner танҳо як лоиҳаи паҳлӯ барои Google нест. Google онро ҳамчун асос барои дигар маҳсулоти Google истифода мебарад. Ва вақте ки Google ба наздикӣ Megastore-ро дар Google Cloud Storage бо Cloud Spanner иваз кард, он ба Google Cloud Storage имкон дод, ки барои рӯйхатҳои объектҳо дар миқёси ҷаҳонӣ мувофиқат кунад (ки ин ҳоло ҳам барои Амазонки S3).

Инак, хануз умед хает... мо умедворем.

Ҳамааш ҳамин. Мисли муаллифи мақола мо низ умед дорем, аммо дар ин бора чӣ фикр доред? Дар шарҳҳо нависед

Мо ҳамаро ба тамошои мо даъват мекунем вебинари ройгон ки дар он мо ба шумо дар бораи курс муфассал накл мекунем "AWS барои таҳиягарон" аз OTUS.

Манбаъ: will.com

Илова Эзоҳ