DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Таҳиягари пуштибон чӣ гуна мефаҳмад, ки дархости SQL дар "маҳсулот" хуб кор мекунад? Дар ширкатҳои калон ё босуръат рушдёбанда на ҳама ба “маҳсулот” дастрасӣ доранд. Ва бо дастрасӣ, на ҳама дархостҳоро бедард тафтиш кардан мумкин аст ва эҷоди нусхаи пойгоҳи додаҳо аксар вақт соатҳоро мегирад. Барои ҳалли ин мушкилот, мо як DBA-и сунъиро таъсис додем - Ҷо. Он аллакай дар якчанд ширкатҳо бомуваффақият татбиқ карда шудааст ва ба зиёда аз даҳҳо таҳиягарон кӯмак мекунад.

Видео:

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Салом ба ҳама! Номи ман Анатолий Стэнслер аст. Ман дар як ширкат кор мекунам postgres.ai. Мо ӯҳдадор ҳастем, ки раванди рушдро тавассути бартараф кардани таъхирҳои марбут ба кори Postgres аз таҳиягарон, DBAs ва QAs суръат бахшем.

Мо мизоҷони бузург дорем ва имрӯз қисми гузориш ба парвандаҳое бахшида мешавад, ки мо ҳангоми кор бо онҳо вохӯрдем. Ман дар бораи он сухан меронам, ки чӣ тавр мо ба онҳо дар ҳалли мушкилоти хеле ҷиддӣ кӯмак кардем.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Вақте ки мо муҳоҷирати мураккаби серборро таҳия ва анҷом медиҳем, мо ба худ савол медиҳем: "Оё ин муҳоҷирӣ ба вуҷуд меояд?". Мо баррасиро истифода мебарем, мо аз дониши ҳамкорони ботаҷриба, коршиносони DBA истифода мебарем. Ва онҳо метавонанд бигӯянд, ки он парвоз мекунад ё не.

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

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Кӣ ягон бор мустақиман дар маҳсулот индексатсия кардааст ё ягон тағирот ворид кардааст? Хеле каме. Ва ин барои кӣ боиси гум шудани маълумот ё бекорист? Пас шумо ин дардро медонед. Худоро шукр, ки захираҳо вуҷуд доранд.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Усули аввал ин озмоиш дар маҳсулот аст. Ё, вақте ки таҳиякунанда дар мошини маҳаллӣ нишастааст, вай маълумоти санҷишӣ дорад, як навъ интихоби маҳдуд вуҷуд дорад. Ва мо ба истеҳсолот мебароем ва ин вазъиятро ба даст меорем.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Дард мекунад, кимат аст. Эҳтимол беҳтар нест, ки не.

Ва беҳтарин роҳи ин кор кадом аст?

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

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

Ин ба мо имкон медиҳад, ки баъзе хатогиҳоро бартараф кунем, яъне пешгирӣ кардани онҳо дар истеҳсолот.

Мушкилот чист?

  • Мушкилот дар он аст, ки мо ин саҳнаро бо ҳамкорон мубодила мекунем. Ва бисёр вақт чунин мешавад, ки шумо як навъ тағирот мекунед, бам - ва ҳеҷ маълумоте нест, кор дар поён аст. Саҳна бисёр терабайт буд. Ва шумо бояд муддати дароз интизор шавед, ки он дубора баланд шавад. Ва мо тасмим гирифтем, ки онро фардо ба анҷом расонем. Хамин аст, ки мо як тараккиёт дорем.
  • Ва, албатта, дар он чо хамкасбонамон, бисьёр коллективхо кор мекунанд. Ва он бояд дастӣ анҷом дода шавад. Ва ин номувофиқ аст.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

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

Ин назар ба равиши пештара беҳтар аст, аммо эҳтимоли ба истеҳсолот рафтани як навъ хато ҳанӯз зиёд аст.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Чӣ ба мо монеа мешавад, ки ба ҳар як таҳиякунанда як курсии санҷишӣ, нусхаи пурраи андозаро диҳем? Ман фикр мекунам, ки равшан аст, ки чӣ халал мерасонад.

Кӣ пойгоҳи додаҳо аз терабайт калонтар дорад? Зиёда аз нисфи ҳуҷра.

Ва маълум аст, ки барои хар як созанда нигох доштани машинахо, вакте ки ин кадар истехсолоти калон мавчуд аст, хеле гарон аст ва ба гайр аз ин, вакти зиёдро талаб мекунад.

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

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Ҳатто агар шумо инро дар дохили инфрасохтор анҷом диҳед, пас зеркашии як терабайт маълумот дар як соат аллакай хеле хуб аст. Аммо онҳо партовҳои мантиқиро истифода мебаранд, онҳо ба таври маҳаллӣ аз абр зеркашӣ мекунанд. Барои онҳо, суръат тақрибан 200 гигабайт дар як соат аст. Ва барои баргаштан аз партовгоҳи мантиқӣ, ҷамъ кардани индексҳо ва ғайра вақт лозим аст.

Аммо онҳо ин усулро истифода мебаранд, зеро он ба онҳо имкон медиҳад, ки маҳсулотро боэътимод нигоҳ доранд.

Мо дар ин ҷо чӣ кор карда метавонем? Биёед курсиҳои санҷиширо арзон кунем ва ба ҳар як таҳиякунанда курсии санҷишии худро диҳем.

Ва ин имконпазир аст.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Ва дар ин равиш, вақте ки мо барои ҳар як таҳиягар клонҳои тунук месозем, мо метавонем онро дар як мошин мубодила кунем. Масалан, агар шумо пойгоҳи додаҳои 10TB дошта бошед ва хоҳед, ки онро ба 10 таҳиягар диҳед, ба шумо лозим нест, ки пойгоҳи додаҳои XNUMX x XNUMXTB дошта бошед. Ба шумо танҳо як мошин лозим аст, то барои ҳар як таҳиягар бо истифода аз як мошин нусхаҳои тунуки ҷудошуда эҷод кунед. Ман ба шумо мегӯям, ки он чӣ тавр кор мекунад, каме дертар.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Мисоли воқеӣ:

  • MB - 4,5 терабайт.

  • Мо метавонем нусхаҳои мустақилро дар 30 сония ба даст орем.

Ба шумо лозим нест, ки стенди санҷиширо интизор шавед ва аз он вобаста аст, ки он чӣ қадар калон аст. Шумо метавонед онро дар сонияҳо ба даст оред. Ин муҳитҳои комилан ҷудошуда хоҳад буд, аммо маълумотро байни худ мубодила мекунанд.

Ин бузург аст. Дар ин ҷо сухан дар бораи ҷодугарӣ ва олами мувозӣ меравад.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Дар ҳолати мо, ин бо истифода аз системаи OpenZFS кор мекунад.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

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

Имконоти дигар мавҷуданд:

  • lvm,

  • Нигоҳдорӣ (масалан, нигаҳдории пок).

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

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Он чӣ гуна кор мекунад? Ба ҷои аз нав навиштани маълумот ҳар дафъае, ки мо онро тағир медиҳем, мо онро танҳо бо нишон додани он захира мекунем, ки ин маълумоти нав аз лаҳзаи нав, акси нав аст.

Ва дар оянда, вақте ки мо мехоҳем баргардем ё мо мехоҳем клони навро аз ягон версияи кӯҳна созем, мо танҳо мегӯем: "Хуб, ба мо ин блокҳои маълумотро диҳед, ки ба ин монанд ишора шудаанд."

Ва ин корбар бо чунин маҷмӯи маълумот кор хоҳад кард. Ӯ тадриҷан онҳоро тағир медиҳад, аксҳои худашро месозад.

Ва мо филиал хоҳем кард. Ҳар як таҳиягар дар ҳолати мо имкон дорад клони худро дошта бошад, ки вай таҳрир мекунад ва маълумоте, ки мубодила мешавад, байни ҳама мубодила мешавад.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Барои ҷойгир кардани чунин система дар хона, шумо бояд ду мушкилотро ҳал кунед:

  • Якум, манбаи маълумот аст, ки шумо онро аз куҷо мегиред. Шумо метавонед такрориро бо истеҳсолот насб кунед. Шумо аллакай метавонед нусхаҳои эҳтиётиро, ки шумо танзим кардаед, истифода баред, ман умедворам. WAL-E, WAL-G ё Барман. Ва ҳатто агар шумо ягон намуди ҳалли абрро истифода баред, ба монанди RDS ё Cloud SQL, шумо метавонед партовҳои мантиқӣ истифода баред. Аммо мо ба ҳар ҳол ба шумо маслиҳат медиҳем, ки нусхаҳои эҳтиётиро истифода баред, зеро бо ин равиш шумо инчунин сохтори физикии файлҳоро нигоҳ медоред, ки ба шумо имкон медиҳад, ки ба нишондиҳандаҳое, ки шумо дар истеҳсолот хоҳед дид, наздиктар шавед, то мушкилоти мавҷударо ҳал кунед.

  • Дуюм ин аст, ки шумо мехоҳед лабораторияи пойгоҳи додаҳоро гузоред. Он метавонад Абр бошад, он метавонад дар дохили бино бошад. Дар ин ҷо гуфтан муҳим аст, ки ZFS фишурдани маълумотро дастгирӣ мекунад. Ва ин корро хеле хуб мекунад.

Тасаввур кунед, ки барои ҳар як чунин клон, вобаста аз амалиёте, ки мо бо пойгоҳ анҷом медиҳем, як навъ дев афзоиш хоҳад ёфт. Барои ин ба dev низ фазо лозим аст. Аммо аз сабаби он, ки мо базаи 4,5 терабайт гирифтем, ZFS онро ба 3,5 терабайт фишурда мекунад. Ин метавонад вобаста ба танзимот фарқ кунад. Ва мо то ҳол барои таҳиякунанда ҷой дорем.

Чунин системаро барои ҳолатҳои гуногун истифода бурдан мумкин аст.

  • Инҳо таҳиягарон, DBA барои тасдиқи дархостҳо, барои оптимизатсия мебошанд.

  • Инро метавон дар санҷиши QA барои санҷидани як муҳоҷирати мушаххас пеш аз он ки мо онро барои истеҳсол истифода кунем. Ва мо инчунин метавонем муҳитҳои махсусро барои QA бо маълумоти воқеӣ эҷод кунем, ки онҳо метавонанд функсияҳои навро санҷанд. Ва он ба ҷои соатҳои интизорӣ сонияҳо ва шояд дар баъзе ҳолатҳои дигар, ки нусхаҳои борик истифода намешаванд, чанд рӯз лозим мешавад.

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

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Бо ин равиш:

  1. Эҳтимолияти ками хатогиҳо дар "prod", зеро мо ҳама тағиротро дар маълумоти пурра санҷидаем.

  2. Мо фарҳанги санҷиш дорем, зеро акнун ба шумо лозим нест, ки соатҳо барои стенди худ интизор шавед.

  3. Ва ҳеҷ монеа вуҷуд надорад, интизорӣ байни санҷишҳо нест. Шумо воқеан метавонед рафта тафтиш кунед. Ва ин роҳ беҳтар хоҳад шуд, зеро мо суръатро суръат мебахшем.

  • Рефакторинг камтар хоҳад буд. Камтар хатогиҳо дар истеҳсолот хотима хоҳанд ёфт. Мо дертар онҳоро камтар рефаксия мекунем.

  • Мо метавонем тағироти бебозгаштро баргардонем. Ин усули стандартӣ нест.

  1. Ин фоидаовар аст, зеро мо захираҳои курсҳои санҷиширо мубодила мекунем.

Аллакай хуб, аммо боз чӣ метавон суръат гирифт?

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Ба шарофати чунин система, мо метавонем ҳадди ақалли ворид шудан ба чунин санҷишро хеле кам кунем.

Ҳоло як ҳалқаи бад вуҷуд дорад, ки таҳиякунанда барои дастрасӣ ба маълумоти воқеии пурра бояд коршинос шавад. Ба ӯ бояд чунин дастрасӣ бовар кунад.

Аммо чӣ гуна парвариш кардан мумкин аст, агар он дар он ҷо набошад. Аммо чӣ мешавад, агар шумо танҳо як маҷмӯи хеле ками маълумоти санҷишӣ дошта бошед? Он гоҳ шумо ягон таҷрибаи воқеӣ ба даст намеоред.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Чӣ тавр аз ин давра баромадан мумкин аст? Ҳамчун интерфейси аввал, ки барои таҳиягарони ҳама сатҳ қулай аст, мо боти Slack-ро интихоб кардем. Аммо он метавонад ҳама гуна интерфейси дигар бошад.

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

Ва инчунин Slack ба мо имконият медиҳад, ки берун аз қуттӣ ҳамкорӣ кунем. Азбаски ин танҳо як канал аст, шумо метавонед дар ҳамон ҷо муҳокимаи ин дархостро дар риштаи чунин дархост оғоз кунед, ба ҳамкасбони худ, DBA-ҳои дохили ширкат пинг кунед.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

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

Аммо барои он ки ин санҷишҳо қобили қабул бошанд, шумо бояд ин мушкилотро бо ягон роҳ ҳал кунед.

Маълум аст, ки нуктаи муҳим ҳамон маълумот аст. Аммо мо аллакай онро дорем. Ва мо мехоҳем ба ҳамон конфигуратсия ноил шавем. Ва мо метавонем чунин як конфигуратсияи қариб якхела дод.

Доштани ҳамон сахтафзор дар истеҳсолот хуб мебуд, аммо он метавонад фарқ кунад.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Биёед дар хотир дорем, ки Postgres бо хотира чӣ гуна кор мекунад. Мо ду кэш дорем. Яке аз системаи файлӣ ва як Postgres маҳаллӣ, яъне кэши муштараки буферӣ.

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

Ва кэши дуюм тамоми фазои дастрасро истифода мебарад.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Ва вакте ки дар як машина якчанд клон месозем, маълум мешавад, ки мо охиста-охиста хотираро пур мекунем. Ва ба таври хуб, кэши муштараки буферӣ 25% аз ҳаҷми умумии хотираи дар мошин мавҷудбуда мебошад.

Ва маълум мешавад, ки агар мо ин параметрро тағир надиҳем, мо метавонем дар як мошин танҳо 4 мисол, яъне 4 ин гуна клонҳои борикро иҷро кунем. Ва ин, албатта, бад аст, зеро мо мехоҳем, ки шумораи онҳо бештар бошад.

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

Масалан, агар мо дар маҳсулот кэши калон дошта бошем, пас Postgres истифодаи индексро бартарӣ медиҳад. Ва агар не, он гоҳ SeqScan вуҷуд хоҳад дошт. Ва агар наќшањои мо ба њам мувофиќ намебуданд, чї фоида?

Аммо дар ин ҷо мо ба хулосае омадем, ки дар асл нақша дар Postgres аз андозаи мушаххасе, ки дар буфери муштарак дар нақша нишон дода шудааст, вобаста нест, он аз эффективии_cache_size вобаста аст.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Effective_cache_size миқдори тахминии кэшест, ки барои мо дастрас аст, яъне маблағи кэши буферӣ ва кэши системаи файлӣ. Ин аз ҷониби конфигуратсия муқаррар карда мешавад. Ва ин хотира ҷудо карда нашудааст.

Ва аз сабаби ин параметр, мо метавонем Postgres-ро фиреб диҳем ва гӯем, ки мо воқеан маълумоти зиёде дорем, ҳатто агар ин маълумот надорем. Ва хамин тавр, планхо бо истехсолот комилан мувофик мешаванд.

Аммо ин метавонад ба вақт таъсир расонад. Ва мо дархостҳоро аз рӯи вақт оптимизатсия мекунем, аммо муҳим аст, ки вақт аз бисёр омилҳо вобаста аст:

  • Он аз сарборие, ки ҳоло дар маҳсулот аст, вобаста аст.

  • Ин ба хусусиятҳои худи мошин вобаста аст.

Ва ин як параметри ғайримустақим аст, аммо дар асл мо метавонем маҳз аз рӯи миқдори маълумоте, ки ин дархост барои ба даст овардани натиҷа хонда мешавад, оптимизатсия кунем.

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

Биёед бубинем, ки чӣ тавр Ҷо махсусан оптимизатсия карда шудааст.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Биёед дархостро аз системаи воқеӣ гирем. Дар ин ҳолат, пойгоҳи додаҳо 1 терабайт аст. Ва мо мехоҳем шумораи паёмҳои тозаеро, ки зиёда аз 10 лайк доштанд, ҳисоб кунем.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Мо ба канал паём менависем, барои мо клон ҷойгир карда шудааст. Ва мо мебинем, ки чунин дархост дар 2,5 дақиқа анҷом меёбад. Ин аввалин чизест, ки мо мушоҳида мекунем.

Б Ҷо ба шумо тавсияҳои автоматиро дар асоси нақша ва ченакҳо нишон медиҳад.

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

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Биёед бодиққат назар кунем, ки чӣ рӯй дод. Дар ҳақиқат, мо мебинем, ки мо тақрибан якуним гигабайт маълумотро аз кэши файл ё ҳатто аз диск хондаем. Ва ин хуб нест, зеро мо хамагй 142 хат гирифтем.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Ва, ба назар чунин мерасад, ки мо дар ин ҷо скан кардани индекс дорем ва бояд зуд кор мекардем, аммо азбаски мо сатрҳои зиёдеро филтр кардем (мо бояд онҳоро ҳисоб кунем), дархост оҳиста иҷро шуд.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Ва ин дар план аз сабаби он руй дод, ки шартхои дар дархост буда ва шартхои индекс кисман мувофик нестанд.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Биёед кӯшиш кунем, ки индексро дақиқтар кунем ва бубинем, ки иҷрои дархост пас аз он чӣ гуна тағир меёбад.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Эҷоди индекс муддати хеле тӯлонӣ гирифт, аммо ҳоло мо дархостро тафтиш мекунем ва мебинем, ки вақт ба ҷои 2,5 дақиқа ҳамагӣ 156 миллисония аст, ки ин кофӣ хуб аст. Ва мо ҳамагӣ 6 мегабайт маълумотро мехонем.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Ва ҳоло мо танҳо сканкунии индексро истифода мебарем.

Боз як вокеаи мухим ин аст, ки мо мехохем накшаро ба таври фахмотар пешниход кунем. Мо визуализатсияро бо истифода аз Flame Graphs амалӣ кардем.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Ин дархости дигар, шадидтар аст. Ва мо Графикаи Flame-ро аз рӯи ду параметр месозем: ин миқдори маълумотест, ки гиреҳи мушаххас дар нақша ва вақт ҳисоб карда мешавад, яъне вақти иҷрои гиреҳ.

Дар ин ҷо мо метавонем гиреҳҳои мушаххасро бо ҳамдигар муқоиса кунем. Ва маълум хоҳад шуд, ки кадоме аз онҳо бештар ё камтар мегирад, ки одатан дар дигар усулҳои намоишдиҳӣ иҷро кардан душвор аст.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Албатта, ҳама медонанд explain.depesz.com. Хусусияти хуби ин визуализатсия дар он аст, ки мо нақшаи матнро захира мекунем ва инчунин баъзе параметрҳои асосиро дар ҷадвал ҷойгир мекунем, то ки мо ҷудо кунем.

Ва таҳиягароне, ки то ҳол ин мавзӯъро нашунидаанд, инчунин description.depesz.com -ро истифода мебаранд, зеро фаҳмидани онҳо осонтар аст, ки кадом ченакҳо муҳиманд ва кадомашон не.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Равиши нав ба визуализатсия вуҷуд дорад - ин explain.dalibo.com аст. Онҳо визуализатсияи дарахтро мекунанд, аммо муқоиса кардани гиреҳҳо бо ҳамдигар хеле душвор аст. Дар ин ҷо шумо метавонед сохторро хуб дарк кунед, аммо агар дархости калон вуҷуд дошта бошад, пас шумо бояд ба пеш ва пас ҳаракат кунед, аммо инчунин вариант.

ҳамкорӣ

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Ва, тавре ки ман гуфтам, Slack ба мо имконият медиҳад, ки ҳамкорӣ кунем. Масалан, агар мо ба пурсишҳои мураккабе дучор шавем, ки чӣ гуна оптимизатсия кардан маълум нест, мо метавонем ин масъаларо бо ҳамкасбони худ дар як ришта дар Slack равшан кунем.

DBA боти Ҷо. Анатолий Стэнслер (Postgres.ai)

Ба назари мо, санҷиши маълумоти пурраи андоза муҳим аст. Барои ин, мо асбоби Навсозии Database Lab-ро сохтем, ки дар манбаи кушода дастрас аст. Шумо инчунин метавонед боти Ҷоро истифода баред. Шумо метавонед онро худи ҳозир гирифта, дар ҷои худ татбиқ кунед. Ҳама дастурҳо дар он ҷо мавҷуданд.

Инчунин қайд кардан муҳим аст, ки худи ҳалли инқилобӣ нест, зеро Delphix вуҷуд дорад, аммо он як ҳалли корхона аст. Он комилан баста аст, хеле гарон аст. Мо махсусан дар Postgres тахассус дорем. Ин ҳама маҳсулоти кушодаасос мебошанд. Бо мо ҳамроҳ шудан!

Ин ҷоест, ки ман ба охир мерасам. Сипос!

Саволҳои шумо

Салом! Ташаккур барои гузориш! Хеле ҷолиб, махсусан барои ман, зеро ман чанде пеш дар бораи ҳамин масъала ҳал карда будам. Ва аз ин рӯ ман як қатор саволҳо дорам. Умедворам, ки ман ҳадди аққал як қисми онро мегирам.

Ман ҳайронам, ки шумо ҷои ин муҳитро чӣ гуна ҳисоб мекунед? Технология маънои онро дорад, ки дар шароити муайян, клонҳои шумо метавонанд ба андозаи ҳадди аксар афзоиш ёбанд. Тақрибан гӯем, агар шумо базаи даҳ терабайт ва 10 клон дошта бошед, пас тақлид кардани вазъияте осон аст, ки ҳар як клон 10 маълумоти беназир вазн дорад. Шумо ин ҷойро, яъне он дельтаро, ки шумо дар бораи он гуфта будед, ки дар он ин клонҳо зиндагӣ мекунанд, чӣ гуна ҳисоб мекунед?

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

Бале, ман як саволе дорам. Яъне, чӣ тавр шумо давраи зиндагии ин модулҳоро таъмин мекунед? Мо ин мушкилот ва як ҳикояи алоҳида дорем. Ин чӣ гуна рӯй медиҳад?

Барои ҳар як клон каме ttl мавҷуд аст. Асосан, мо ttl собит дорем.

Чӣ, агар махфӣ набошад?

1 соат, яъне бекор — 1 соат. Агар он истифода нашавад, мо онро мезанем. Аммо дар ин ҷо тааҷҷубовар нест, зеро мо метавонем клонро дар сонияҳо боло барем. Ва агар ба шумо бори дигар лозим бошад, лутфан.

Ман ба интихоби технологияҳо низ таваҷҷӯҳ дорам, зеро масалан, мо бо ин ё он сабаб дар баробари якчанд усулҳоро истифода мебарем. Чаро ZFS? Чаро шумо LVM-ро истифода набурдед? Шумо қайд кардед, ки бо LVM мушкилот вуҷуд дорад. Мушкилот чӣ гуна буд? Ба андешаи ман, оптималтарин вариант бо нигоҳдорӣ аз нигоҳи иҷроиш аст.

Мушкилоти асосии ZFS чист? Далели он, ки шумо бояд дар як ҳост кор кунед, яъне ҳама мисолҳо дар як ОС зиндагӣ мекунанд. Ва дар сурати нигоҳдорӣ, шумо метавонед таҷҳизоти гуногунро пайваст кунед. Ва мушкилот танҳо он блокҳое мебошанд, ки дар системаи нигоҳдорӣ ҳастанд. Ва масъалаи интихоби технология ҷолиб аст. Чаро LVM нест?

Махсусан, мо метавонем LVM-ро дар мулоқот муҳокима кунем. Дар бораи нигоҳдорӣ - он танҳо гарон аст. Мо метавонем системаи ZFS-ро дар ҳама ҷо татбиқ кунем. Шумо метавонед онро дар мошини худ ҷойгир кунед. Шумо метавонед танҳо анборро зеркашӣ кунед ва онро ҷойгир кунед. ZFS қариб дар ҳама ҷо насб карда шудааст, агар мо дар бораи Linux гап занем. Ин аст, ки мо ҳалли хеле чандир ба даст меорем. Ва аз қуттӣ, ZFS бисёр чизҳо медиҳад. Шумо метавонед миқдори зиёди маълумотро бор кунед, шумораи зиёди дискҳоро пайваст кунед, аксҳо мавҷуданд. Ва, тавре ки ман гуфтам, идора кардан осон аст. Яъне истифодаи он хеле гуворо ба назар мерасад. У санчида мешавад, синнаш бисьёр аст. Вай ҷомеаи хеле калон дорад, ки афзоиш меёбад. ZFS як ҳалли хеле боэътимод аст.

Николай Самохвалов: Метавонам бештар шарҳ диҳам? Номи ман Николай, мо бо Анатолий якчоя кор мекунем. Ман розӣ ҳастам, ки нигоҳдорӣ бузург аст. Ва баъзе аз муштариёни мо дорои анбори пок ва ғайра мебошанд.

Анатолий дуруст кайд кард, ки мо ба модулият нигаронида шудааст. Ва дар оянда, шумо метавонед як интерфейсро татбиқ кунед - аксбардорӣ кунед, клон созед, клонро нест кунед. Ҳамааш осон аст. Ва нигоҳдорӣ сард аст, агар он бошад.

Аммо ZFS барои ҳама дастрас аст. DelPhix аллакай кофӣ аст, онҳо 300 муштарӣ доранд. Аз инҳо, Fortune 100 дорои 50 муштарӣ мебошад, яъне онҳо ба NASA нигаронида шудаанд ва ғайра. Вақти он расидааст, ки ҳама ин технологияро гиранд. Ва аз ин рӯ, мо як манбаи кушодаи Core дорем. Мо як қисми интерфейс дорем, ки манбаи кушода нест. Ин платформаест, ки мо нишон медиҳем. Аммо мо мехоҳем, ки он барои ҳама дастрас бошад. Мо мехоҳем инқилоберо анҷом диҳем, то ҳама озмоишгарон тахмин карданро дар ноутбукҳо бас кунанд. Мо бояд SELECT нависед ва дарҳол бубинем, ки он суст аст. Интизор шуданро бас кунед, ки DBA ба шумо дар бораи он нақл кунад. Дар ин ҷо ҳадафи асосӣ аст. Ва ман фикр мекунам, ки ҳамаи мо ба ин мерасем. Ва мо ин чизро барои ҳама месозем. Аз ин рӯ, ZFS, зеро он дар ҳама ҷо дастрас хоҳад буд. Ташаккур ба ҷомеа барои ҳалли мушкилот ва доштани иҷозатномаи кушодаасос ва ғайра.

Салом! Ташаккур барои гузориш! Номи ман Максим аст. Мо бо хамин масъалахо машгул будем. Онхо худашон карор доданд. Чӣ тавр шумо захираҳоро байни ин клонҳо мубодила мекунед? Ҳар як клон метавонад дар вақти дилхоҳ кори худро иҷро кунад: яке як чизро месанҷад, дигаре дигаре, касе индекс месозад, касе кори вазнин дорад. Ва агар шумо ба ҳар ҳол метавонед бо CPU тақсим кунед, пас аз рӯи IO, шумо чӣ гуна тақсим мекунед? Ин саволи аввал аст.

Ва саволи дуюм дар бораи номувофиқ будани трибунаҳо аст. Фарз мекунем, ки ман дар ин ҷо ZFS дорам ва ҳама чиз хуб аст, аммо муштарӣ дар маҳсулот ZFS надорад, аммо ext4, масалан. Дар ин ҳолат чӣ гуна?

Саволҳо хеле хубанд. Ман ин мушкилотро каме бо он гуфтам, ки мо захираҳоро тақсим мекунем. Ва ҳалли ин аст. Тасаввур кунед, ки шумо дар саҳна санҷида истодаед. Шумо инчунин метавонед дар як вақт чунин вазъият дошта бошед, ки касе як бор медиҳад, ба каси дигар. Ва дар натиҷа, шумо нишондиҳандаҳои нофаҳмо мебинед. Ҳатто як мушкилот метавонад бо маҳсулот бошад. Вақте ки шумо мехоҳед ягон дархостро тафтиш кунед ва мебинед, ки дар он ягон мушкилот вуҷуд дорад - он оҳиста кор мекунад, пас дар асл мушкилот на дар дархост, балки дар он буд, ки як навъ бори параллелӣ вуҷуд дорад.

Ва аз ин рӯ, дар ин ҷо муҳим аст, ки ба он диққат диҳед, ки нақша чӣ гуна хоҳад буд, мо дар нақша чӣ гуна қадамҳо мегузорем ва барои ин чӣ қадар маълумот ҷамъ меорем. Далели он, ки дискҳои мо, масалан, бо чизе бор карда мешаванд, он махсусан ба вақт таъсир мерасонад. Аммо мо метавонем ҳисоб кунем, ки ин дархост то чӣ андоза пурбор шудааст. Он қадар муҳим нест, ки дар айни замон ягон намуди қатл вуҷуд дорад.

Ман ду савол дорам. Ин чизи хеле аҷиб аст. Оё ҳолатҳое буданд, ки маълумоти истеҳсолӣ муҳим аст, ба монанди рақамҳои корти кредитӣ? Оё аллакай чизе омода аст ё ин вазифаи алоҳида аст? Ва саволи дуюм - оё ин барои MySQL вуҷуд дорад?

Дар бораи маълумот. Мо то он даме, ки ин корро кунем. Аммо агар шумо маҳз Ҷоро ҷойгир кунед, агар шумо ба таҳиягарон дастрасӣ надиҳед, пас дастрасӣ ба маълумот вуҷуд надорад. Чаро? Зеро Ҷо маълумотро нишон намедиҳад. Он танҳо нишондиҳандаҳо, нақшаҳоро нишон медиҳад ва ҳамин тавр. Ин қасдан анҷом дода шуд, зеро ин яке аз талаботи муштарии мост. Онҳо мехостанд, ки бидуни дастрасӣ ба ҳама оптимизатсия кунанд.

Дар бораи MySQL. Ин системаро барои ҳама чизҳое истифода бурдан мумкин аст, ки ҳолатро дар диск нигоҳ медорад. Ва азбаски мо Postgres кор карда истодаем, ҳоло мо аввал ҳама автоматикунонии Postgres-ро иҷро мекунем. Мо мехоҳем автоматикунонии гирифтани маълумотро аз нусхабардорӣ кунем. Мо Postgres-ро дуруст танзим карда истодаем. Мо медонем, ки чӣ гуна нақшаҳоро мувофиқат кунем ва ғайра.

Аммо азбаски система васеъшаванда аст, онро барои MySQL низ истифода бурдан мумкин аст. Ва чунин мисолхо хастанд. Яндекс як чиз дорад, аммо онҳо онро дар ҳеҷ ҷо нашр намекунанд. Онҳо онро дар дохили Yandex.Metrica истифода мебаранд. Ва танҳо як ҳикоя дар бораи MySQL вуҷуд дорад. Аммо технологияҳо якхелаанд, ZFS.

Ташаккур барои гузориш! Ман ҳам як-ду савол дорам. Шумо қайд кардед, ки клонкуниро барои таҳлил истифода бурдан мумкин аст, масалан барои сохтани индексҳои иловагӣ дар он ҷо. Метавонед каме бештар дар бораи он чӣ тавр кор кунед?

Ва ман фавран саволи дуюмро дар бораи шабоҳати стендҳо, шабоҳати нақшаҳо медиҳам. Нақша инчунин аз омори ҷамъовардаи Postgres вобаста аст. Шумо ин мушкилотро чӣ гуна ҳал мекунед?

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

Хуб, биёед як клони борик созем, ки чанд дақиқа истодан даҳшатнок нест. Ва барои он ки хондани таҳлилҳо бароҳаттар шавад, мо ба он сутунҳое, ки ба маълумот таваҷҷӯҳ дорем, индексҳо илова мекунем.

Индекс ҳар дафъа сохта мешавад?

Шумо метавонед онро тавре созед, ки мо ба додаҳо ламс кунем, аксҳо созем, пас мо аз ин аксбардорӣ барқарор мешавем ва дархостҳои навро пеш мебарем. Ин аст, ки шумо метавонед онро тавре созед, ки шумо метавонед клонҳои навро бо индексҳои аллакай часпонидашуда эҷод кунед.

Дар мавриди савол дар бораи омор, агар мо аз нусхабардорӣ барқарор кунем, репликатсия кунем, омори мо маҳз ҳамон хоҳад буд. Азбаски мо тамоми сохтори додаҳои физикиро дорем, яъне мо маълумотро ҳамон тавре ки бо тамоми ченакҳои оморӣ ҳаст, хоҳем овард.

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

Ташаккур барои гузориш. Дар ин ҷо ду саволи хуб дар бораи MySQL ва мубодилаи захираҳо буданд. Аммо, дар асл, ҳамааш ба он вобаста аст, ки ин мавзӯи DBMS мушаххас нест, балки дар маҷмӯъ системаи файлӣ мебошад. Ва, мувофиқан, масъалаҳои мубодилаи захираҳо низ бояд аз он ҷо ҳал карда шаванд, на дар охири он, ки он Postgres аст, балки дар системаи файлӣ, дар сервер, масалан.

Саволи ман каме дигар аст. Он ба базаи бисёрқабата наздиктар аст, ки дар он якчанд қабатҳо мавҷуданд. Масалан, мо навсозии тасвири даҳ терабайтро насб кардем, мо такрор мекунем. Ва мо махсусан ин ҳалли худро барои пойгоҳи додаҳо истифода мебарем. Нусхабардорӣ идома дорад, маълумот нав карда мешавад. Дар ин чо 100 нафар коргарон дар баробари ин кор мекунанд, ки пайваста ин кадрдои гуногунро ба кор меандозанд. Чӣ бояд кард? Чӣ тавр боварӣ ҳосил кардан мумкин аст, ки ҳеҷ гуна низоъ вуҷуд надорад, ки онҳо якеро оғоз карданд ва он гоҳ системаи файлӣ тағир ёфт ва ин тасвирҳо ҳама рафтанд?

Онҳо намераванд, зеро ZFS ҳамин тавр кор мекунад. Мо метавонем дар як ришта алоҳида нигоҳ дорем, ки тағироти системаи файлиро, ки бо сабаби такрорӣ ба вуҷуд меоянд, нигоҳ дорем. Ва клонҳоеро, ки таҳиягарон дар версияҳои кӯҳнаи маълумот истифода мебаранд, нигоҳ доред. Ва ин барои мо кор мекунад, ҳама чиз бо ин тартиб аст.

Маълум мешавад, ки навсозӣ ҳамчун як қабати иловагӣ сурат мегирад ва ҳама расмҳои нав аллакай дар асоси ин қабат мераванд, дуруст?

Аз қабатҳои қаблӣ, ки аз такрорҳои қаблӣ буданд.

Қабатҳои қаблӣ меафтанд, аммо онҳо ба қабати кӯҳна муроҷиат мекунанд ва оё онҳо аз қабати охирини дар навсозӣ гирифташуда тасвирҳои нав мегиранд?

Умуман, ҳа.

Дар натиҷа, мо то як анҷири қабатҳо хоҳем дошт. Ва бо мурури замон онҳо бояд фишурда шаванд?

Бале ҳама чиз дуруст аст. Якчанд тиреза вуҷуд дорад. Мо аксҳои ҳарҳафтаинаро нигоҳ медорем. Ин аз он вобаста аст, ки шумо чӣ гуна захира доред. Агар шумо қобилияти нигоҳ доштани маълумоти зиёд дошта бошед, шумо метавонед аксҳоро барои муддати тӯлонӣ нигоҳ доред. Онҳо худашон намераванд. Ҳеҷ гуна фасоди маълумот нахоҳад буд. Агар аксҳо кӯҳна бошанд, тавре ки ба мо чунин менамояд, яъне он аз сиёсат дар ширкат вобаста аст, мо метавонем онҳоро танҳо нест кунем ва ҷой холӣ кунем.

Салом, ташаккур барои гузориш! Савол дар бораи Ҷо. Шумо гуфтед, ки муштарӣ намехост, ки ба ҳама дастрасии маълумот диҳад. Ба таври қатъӣ гӯем, агар шахс натиҷаи Таҳлили Тавзеҳ дошта бошад, пас ӯ метавонад маълумотро бинад.

Чунин аст. Масалан, мо метавонем нависем: "SELECT FROM WHERE email = to that". Яъне мо худи маълумотро намебинем, вале баъзе аломатҳои ғайримустақимро мебинем. Инро бояд фаҳмид. Аммо аз тарафи дигар, ҳамааш дар он ҷост. Мо як аудити сабт дорем, мо ҳамкорони дигарро назорат мекунем, ки онҳо низ мебинанд, ки таҳиягарон чӣ кор карда истодаанд. Ва агар касе ин корро кунад, пас хадамоти амният ба назди онҳо омада, дар ин масъала кор мекунад.

Нимирӯзи ба хайр Ташаккур барои гузориш! Ман як саволи кӯтоҳ дорам. Агар ширкат Slack-ро истифода набарад, оё ҳоло ба он ягон ҳатмӣ вуҷуд дорад ё оё таҳиягарон имкон доранд, ки инстансияҳоро барои пайваст кардани барномаи санҷишӣ ба пойгоҳи додаҳо ҷойгир кунанд?

Ҳоло пайванде ба Slack мавҷуд аст, яъне мессенҷери дигар вуҷуд надорад, аммо ман дар ҳақиқат мехоҳам барои дигар паёмбарон низ дастгирӣ кунам. Шумо чӣ кор карда метавонед? Шумо метавонед DB Lab-ро бе Ҷо ҷойгир кунед, бо ёрии REST API ё бо ёрии платформаи мо равед ва клонҳо эҷод кунед ва бо PSQL пайваст шавед. Аммо ин корро кардан мумкин аст, агар шумо омода бошед, ки ба таҳиягарон дастрасӣ ба маълумотро диҳед, зеро дигар экран нахоҳад буд.

Ба ман ин қабат даркор нест, аммо чунин фурсат лозим аст.

Пас, ҳа, ин корро кардан мумкин аст.

Манбаъ: will.com

Илова Эзоҳ