Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Допринос Иандек-а следећим базама података ће бити прегледан.

  • ЦлицкХоусе
  • Одисеја
  • Опоравак до одређеног тренутка (ВАЛ-Г)
  • ПостгреСКЛ (укључујући логеррорс, Амцхецк, хеапцхецк)
  • Греенплум

Видео:

Здраво Свете! Моје име је Андреј Бородин. А оно што радим у Иандек.Цлоуд је развој отворених релационих база података у интересу Иандек.Цлоуд и Иандек.Цлоуд клијената.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

У овом говору ћемо говорити о изазовима са којима се суочавају отворене базе података у великом обиму. Зашто је важно? Јер мали, мали проблеми који, као комарци, онда постају слонови. Они постају велики када имате много кластера.

Али то није главна ствар. Невероватне ствари се дешавају. Ствари које се дешавају у једном од милион случајева. А у окружењу облака, морате бити спремни на то, јер невероватне ствари постају врло вероватне када нешто постоји у великим размерама.

Али! Која је предност отворених база података? Чињеница је да имате теоретску прилику да се носите са било којим проблемом. Имате изворни код, имате знање програмирања. Комбинујемо то и функционише.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Који приступи постоје у раду на софтверу отвореног кода?

  • Најједноставнији приступ је коришћење софтвера. Ако користите протоколе, ако користите стандарде, ако користите формате, ако пишете упите у софтверу отвореног кода, онда то већ подржавате.
  • Повећавате његов екосистем. Повећавате вероватноћу раног откривања грешке. Повећавате поузданост овог система. Повећавате доступност програмера на тржишту. Ви побољшавате овај софтвер. Већ сте сарадник ако сте управо успели да стекнете стил и нешто се петљате.
  • Други разумљив приступ је спонзорисање софтвера отвореног кода. На пример, познати програм Гоогле Суммер оф Цоде, када Гугл плаћа великом броју студената из целог света разумљив новац тако да развијају отворене софтверске пројекте који испуњавају одређене услове за лиценцирање.
  • Ово је веома интересантан приступ јер омогућава софтверу да се развија без померања фокуса са заједнице. Гугл, као технолошки гигант, не каже да желимо ову функцију, желимо да поправимо ову грешку и ту треба да копамо. Гугл каже: „Ради оно што радиш. Само наставите да радите како сте радили и све ће бити у реду.”
  • Следећи приступ учешћу у отвореном коду је учешће. Када имате проблем са софтвером отвореног кода и постоје програмери, ваши програмери почињу да решавају проблеме. Они почињу да чине вашу инфраструктуру ефикаснијом, ваше програме бржим и поузданијим.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Један од најпознатијих Иандек пројеката у области софтвера отвореног кода је ЦлицкХоусе. Ово је база података која је настала као одговор на изазове са којима се суочава Иандек.Метрица.

И као база података, направљена је у отвореном коду како би се створио екосистем и развијао га заједно са другим програмерима (не само у оквиру Иандек-а). А сада је ово велики пројекат у који је укључено много различитих компанија.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

У Иандек.Цлоуд-у смо креирали ЦлицкХоусе на врху Иандек Објецт Стораге-а, односно на врху складиштења у облаку.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Зашто је ово важно у облаку? Зато што свака база података ради у овом троуглу, у овој пирамиди, у овој хијерархији типова меморије. Имате брзе, али мале регистре и јефтине велике али споре ССД-ове, чврсте дискове и неке друге блок уређаје. А ако сте ефикасни на врху пирамиде, онда имате брзу базу података. ако сте ефикасни на дну ове пирамиде, онда имате скалирану базу података. И у том погледу, додавање још једног слоја одоздо је логичан приступ повећању скалабилности базе података.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Како би се то могло урадити? Ово је важна тачка у овом извештају.

  • Могли бисмо да имплементирамо ЦлицкХоусе преко МДС-а. МДС је интерни Иандек интерфејс за складиштење у облаку. Сложенији је од уобичајеног С3 протокола, али је погоднији за блок уређај. Боље је за снимање података. Захтева више програмирања. Програмери ће програмирати, чак је добро, занимљиво је.
  • С3 је чешћи приступ који чини интерфејс једноставнијим по цену мањег прилагођавања одређеним врстама оптерећења.

Наравно, желећи да обезбедимо функционалност целом ЦлицкХоусе екосистему и урадимо задатак који је потребан унутар Иандек.Цлоуд-а, одлучили смо да се уверимо да ће цела ЦлицкХоусе заједница имати користи од тога. Имплементирали смо ЦлицкХоусе преко С3, а не ЦлицкХоусе преко МДС-а. А ово је много посла.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Референце:

https://github.com/ClickHouse/ClickHouse/pull/7946 „Слој апстракције система датотека“
https://github.com/ClickHouse/ClickHouse/pull/8011 „АВС СДК С3 интеграција“
https://github.com/ClickHouse/ClickHouse/pull/8649 „Основна имплементација ИДиск интерфејса за С3“
https://github.com/ClickHouse/ClickHouse/pull/8356 „Интеграција механизама за складиштење дневника са ИДиск интерфејсом“
https://github.com/ClickHouse/ClickHouse/pull/8862 „Подршка мотора за евиденцију за С3 и СеекаблеРеадБуффер“
https://github.com/ClickHouse/ClickHouse/pull/9128 „Подршка за Стрипе Лог С3 за складиштење“
https://github.com/ClickHouse/ClickHouse/pull/9415 „Стораге МергеТрее почетна подршка за С3“
https://github.com/ClickHouse/ClickHouse/pull/9646 „МергеТрее пуна подршка за С3“
https://github.com/ClickHouse/ClickHouse/pull/10126 „Подршка РеплицатедМергеТрее преко С3“
https://github.com/ClickHouse/ClickHouse/pull/11134 „Додајте подразумеване акредитиве и прилагођена заглавља за с3 складиште“
https://github.com/ClickHouse/ClickHouse/pull/10576 „С3 са динамичком конфигурацијом проксија“
https://github.com/ClickHouse/ClickHouse/pull/10744 „С3 са прокси резовером“

Ово је листа захтева за повлачење за имплементацију виртуелног система датотека у ЦлицкХоусе. Ово је велики број захтева за повлачење.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Референце:

https://github.com/ClickHouse/ClickHouse/pull/9760 „Оптимална имплементација дискС3 тврдих веза“
https://github.com/ClickHouse/ClickHouse/pull/11522 „С3 ХТТП клијент — Избегавајте копирање тока одговора у меморију“
https://github.com/ClickHouse/ClickHouse/pull/11561 „Избегавајте копирање целог тока одговора у меморију у С3 ХТТП
клијент"
https://github.com/ClickHouse/ClickHouse/pull/13076 „Могућност кеширања датотека за означавање и индексирање за С3 диск“
https://github.com/ClickHouse/ClickHouse/pull/13459 „Премести делове са ДискЛоцал на ДискС3 паралелно“

Али посао се ту није завршио. Након што је функција направљена, било је потребно још мало посла да би се ова функционалност оптимизовала.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Референце:

https://github.com/ClickHouse/ClickHouse/pull/12638 „Додај догађаје СелецтедРовс и СелецтедБитес“
https://github.com/ClickHouse/ClickHouse/pull/12464 „Додајте догађаје профилисања из С3 захтева у систем.евентс“
https://github.com/ClickHouse/ClickHouse/pull/13028 „Додај КуериТимеМицросецондс, СелецтКуериТимеМицросецондс и ИнсертКуериТимеМицросецондс“

А онда је било потребно учинити да се дијагностикује, подеси мониторинг и да се њиме може управљати.

И све ово је урађено тако да је цела заједница, цео ЦлицкХоусе екосистем, добио резултат овог рада.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Пређимо на трансакционе базе података, на ОЛТП базе, које су мени лично ближе.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Ово је одељење за развој ДБМС отвореног кода. Ови момци раде уличну магију да побољшају трансакцијске отворене базе података.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Један од пројеката, на чијем примеру можемо да причамо о томе како и шта радимо, је Цоннецтион Поолер у Постгресу.

Постгрес је база података процеса. То значи да база података треба да има што мање мрежних веза које управљају трансакцијама.

С друге стране, у окружењу облака, типична ситуација је када хиљаду конекција дође у један кластер одједном. А задатак спремишта веза је да спакује хиљаду веза у мали број серверских веза.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Можемо рећи да је прикупљач конекција телефонски оператер који преуређује бајтове тако да ефикасно дођу до базе података.

Нажалост, не постоји добра руска реч за повезивање базена. Понекад се то назива и мултиплексерске везе. Ако знате како да назовете прикупљач конекција, онда ми обавезно реците, биће ми веома драго да говорим исправан руски технички језик.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://pgconf.ru/2017/92899

Истраживали смо скупове веза који су били прикладни за управљани постгрес кластер. А ПгБоунцер је био најбољи избор за нас. Али наишли смо на бројне проблеме са ПгБоунцер-ом. Пре много година, Володја Бородин је дао извештаје да користимо ПгБоунцер, све нам се свиђа, али постоје нијансе, има на чему да радимо.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://pgconf.ru/media/2017/04/03/20170316H1_V.Borodin.pdf

И радили смо. Решили смо проблеме на које смо наишли, закрпили смо Боунцер и покушали да гурнемо захтеве за повлачење узводно. Али било је тешко радити са фундаменталним сингле-тхреадингом.

Морали смо да сакупљамо каскаде од закрпљених избацивача. Када имамо много избацивача са једним навојем, везе на горњем слоју се преносе на унутрашњи слој избацивача. Ово је лоше вођен систем који је тешко изградити и проширити напред-назад.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Дошли смо до закључка да смо креирали сопствени базен за повезивање, који се зове Одисеја. Написали смо га од нуле.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://www.pgcon.org/2019/schedule/events/1312.en.html

2019. године, на ПгЦон конференцији, представио сам овај поолер заједници програмера. Сада имамо нешто мање од 2 звездица на ГитХуб-у, односно пројекат је жив, пројекат је популаран.

А ако креирате Постгрес кластер у Иандек.Цлоуд-у, онда ће то бити кластер са уграђеном Одисејом, која се реконфигурише приликом скалирања кластера напред или назад.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Шта смо научили из овог пројекта? Покретање конкурентског пројекта је увек агресиван корак, екстремна је мера када кажемо да постоје проблеми који се не решавају довољно брзо, не решавају у временским интервалима који би нама одговарали. Али ово је ефикасна мера.

ПгБоунцер је почео да се развија брже.

А сада су се појавили и други пројекти. На пример, пгагроал, који су развили Ред Хат програмери. Они теже сличним циљевима и имплементирају сличне идеје, али, наравно, са својим специфичностима, које су ближе програмерима пгагроал-а.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Још један случај рада са постгрес заједницом је враћање у одређено време. Ово је опоравак након квара, ово је опоравак из резервне копије.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Постоји много резервних копија и све су различите. Скоро сваки продавац Постгреса има своје решење за резервну копију.

Ако узмете све резервне системе, направите матрицу карактеристика и у шали израчунате детерминанту у овој матрици, она ће бити нула. Шта ово значи? Шта ако узмете одређену резервну датотеку, онда се она не може саставити од делова свих осталих. Јединствен је по својој реализацији, јединствен је по својој намени, јединствен је по идејама које су у њега уграђене. И сви су специфични.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://www.citusdata.com/blog/2017/08/18/introducing-wal-g-faster-restores-for-postgres/

Док смо радили на овом питању, ЦитусДата је покренуо пројекат ВАЛ-Г. Ово је резервни систем који је направљен са оком на окружење у облаку. Сада је ЦитусДата већ део Мицрософта. И у том тренутку су нам се заиста допале идеје које су биле постављене у почетним издањима ВАЛ-Г. И почели смо да доприносимо овом пројекту.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://github.com/wal-g/wal-g/graphs/contributors

Сада постоји много десетина програмера у овом пројекту, али првих 10 сарадника ВАЛ-Г укључује 6 Иандекоид-а. Тамо смо донели много наших идеја. И, наравно, сами смо их имплементирали, сами их тестирали, сами их увели у производњу, сами их користимо, сами смишљамо куда даље да се крећемо, док смо у интеракцији са великом ВАЛ-Г заједницом.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

И са наше тачке гледишта, сада је овај систем резервних копија, укључујући и наше напоре, постао оптималан за окружење у облаку. Ово је најбољи трошак прављења резервне копије Постгреса у облаку.

Шта то значи? Промовисали смо прилично велику идеју: резервна копија треба да буде безбедна, јефтина за рад и што је бржа за обнављање.

Зашто би требало да буде јефтино за рад? Када ништа није покварено, не би требало да знате да имате резервне копије. Све ради добро, трошите што мање ЦПУ-а, користите што мање ресурса на диску и шаљете што мање бајтова у мрежу како не бисте ометали терет ваших вредних сервиса.

А када се све поквари, на пример, админ је испустио податке, нешто је пошло наопако, и хитно треба да се вратите у прошлост, опорављате се са свим новцем, јер желите да вам се подаци врате брзо и нетакнуто.

И ми смо промовисали ову једноставну идеју. И, чини нам се, успели смо да то спроведемо у дело.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Али то није све. Желели смо још једну малу ствар. Желели смо много различитих база података. Не користе сви наши клијенти Постгрес. Неки људи користе МиСКЛ, МонгоДБ. У заједници, други програмери су подржали ФоундатионДБ. И ова листа се стално шири.

Заједници се свиђа идеја да се база података покреће у управљаном окружењу у облаку. А програмери одржавају своје базе података, које се могу равномерно правити резервне копије заједно са Постгрес-ом са нашим системом резервних копија.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Шта смо научили из ове приче? Наш производ, као развојна дивизија, нису линије кода, нису изјаве, нису датотеке. Наш производ није повлачење захтева. То су идеје које преносимо заједници. Ово је технолошка експертиза и кретање технологије ка окружењу у облаку.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Постоји таква база података као што је Постгрес. Највише ми се свиђа Постгрес језгро. Проводим доста времена развијајући Постгрес језгро са заједницом.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Али овде се мора рећи да Иандек.Цлоуд има интерну инсталацију управљаних база података. А почело је давно у Иандек.Маил. Стручност која је сада довела до управљаног Постгреса акумулирана је када је пошта хтела да се пресели у Постгрес.

Маил има веома сличне захтеве као и облак. Потребно је да будете у могућности да се повећате до неочекиваног експоненцијалног раста у било ком тренутку ваших података. А пошта је већ била оптерећена стотинама милиона поштанских сандучића огромног броја корисника који стално постављају много захтева.

А ово је био прилично озбиљан изазов за тим који је развијао Постгрес. Тада су сви проблеми на које смо наишли пријављивани заједници. И ови проблеми су исправљени, и исправљени од стране заједнице на неким местима чак и на нивоу плаћене подршке за неке друге базе података и још боље. То јест, можете послати писмо ПгСКЛ хакеру и добити одговор у року од 40 минута. Плаћена подршка у неким базама података може мислити да постоје приоритетније ствари од ваше грешке.

Сада је интерна инсталација Постгреса неколико петабајта података. То су неки милиони захтева у секунди. Ово су хиљаде кластера. Веома је великих размера.

Али постоји нијанса. Не живи на фенси мрежним дисковима, већ на прилично једноставном хардверу. А постоји и тестно окружење посебно за занимљиве нове ствари.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

И у одређеном тренутку у тест окружењу смо добили поруку која указује да су интерне инваријанте индекса базе података нарушене.

Инваријанта је нека врста односа за који очекујемо да се увек држи.

Веома критична ситуација за нас. То указује да су неки подаци можда изгубљени. А губитак података је нешто сасвим катастрофално.

Општа идеја коју следимо у управљаним базама података је да ће чак и уз напор бити тешко изгубити податке. Чак и ако их намерно уклоните, и даље ћете морати да игноришете њихово одсуство током дужег временског периода. Безбедност података је религија коју веома марљиво следимо.

И овде се јавља ситуација која сугерише да може доћи до ситуације за коју можда нисмо спремни. И почели смо да се припремамо за ову ситуацију.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://commitfest.postgresql.org/23/2171/

Прво што смо урадили је да смо закопали балване са ових хиљада кластера. Открили смо који од кластера се налазе на дисковима са проблематичним фирмвером који су губили ажурирања страница са подацима. Означен је сав Постгрес код података. А оне поруке које указују на кршење интерних инваријанти означили смо кодом који је дизајниран да открије оштећење података.

Ову закрпу је заједница практично прихватила без много дискусије, јер је у сваком конкретном случају било очигледно да се нешто лоше догодило и да је требало пријавити дневник.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Након овога, дошли смо до тога да имамо мониторинг који скенира дневнике. А у случају сумњивих порука, буди дежурног, а дежурни га поправља.

Али! Скенирање дневника је јефтина операција на једном кластеру и катастрофално скупа за хиљаду кластера.

Написали смо екстензију тзв Логеррорс. Креира приказ базе података у којој можете јефтино и брзо одабрати статистику о прошлим грешкама. А ако треба да пробудимо дежурног, онда ћемо то сазнати без скенирања гигабајт фајлова, већ издвајањем неколико бајтова из хеш табеле.

Ово проширење је усвојено, на пример, у спремишту за Убунту. Ако желите да га користите, можете га сами инсталирати. Наравно да је отвореног кода.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://www.postgresql.org/message-id/flat/[емаил заштићен]

Али то није све. Почели смо да користимо Амцхецк, проширење које је изградила заједница, да пронађемо непроменљива кршења у индексима.

И открили смо да ако га користите у великом обиму, постоје грешке. Почели смо да их поправљамо. Наше исправке су прихваћене.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://www.postgresql.org/message-id/flat/[емаил заштићен]

Открили смо да ово проширење не може да анализира ГиСТ и ГИТ индексе. Натерали смо их да подрже. Али заједница се још увек расправља о овој подршци, јер је ово релативно нова функционалност и ту има много детаља.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://commitfest.postgresql.org/29/2667/

Такође смо открили да када проверавамо индексе за кршења на вођи репликације, на мастеру, све функционише добро, али на репликама, на следбенику, потрага за корупцијом није толико ефикасна. Нису проверене све инваријанте. А једна инваријанта нам је јако сметала. И провели смо годину и по у комуникацији са заједницом како бисмо омогућили ову проверу реплика.

Написали смо код који треба да прати све цан... протоколе. О овој закрпи смо разговарали неко време са Питером Гаганом из Црунцхи Дата. Морао је мало да измени постојеће Б-стабло у Постгресу да би прихватио ову закрпу. Био је прихваћен. А сада је провера индекса на репликама такође постала довољно ефикасна да открије кршења на која смо наишли. Односно, ово су кршења која могу бити узрокована грешкама у фирмверу диска, грешкама у Постгресу, грешкама у Линук кернелу и хардверским проблемима. Прилично опширна листа извора проблема за које смо се припремали.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://www.postgresql.org/message-id/flat/38AF687F-8F6B-48B4-AB9E-A60CFD6CC261%40enterprisedb.com#0e86a12c01d967bac04a9bf83cd337cb

Али поред индекса, постоји и део као што је хеап, односно место где се чувају подаци. И нема много инваријанти које би се могле проверити.

Имамо екстензију под називом Хеапцхецк. Почели смо да га развијамо. И паралелно са нама, компанија ЕнтерприсеДБ је такође почела да пише модул, који су на исти начин назвали Хеапцхецк. Само смо ми то назвали ПгХеапцхецк, а они су га једноставно звали Хеапцхецк. Имају га са сличним функцијама, мало другачијим потписом, али са истим идејама. На неким местима су их мало боље спровели. И раније су то објавили у отвореном коду.

И сада развијамо њихову експанзију, јер то више није њихово проширење, већ ширење заједнице. И у будућности, ово је део кернела који ће бити испоручен свима како би унапред знали за будуће проблеме.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://www.postgresql.org/message-id/flat/fe9b3722df94f7bdb08768f50ee8fe59%40postgrespro.ru

На неким местима смо чак дошли до закључка да имамо лажне позитивне резултате у нашим системима за праћење. На пример, систем 1Ц. Када користи базу података, Постгрес понекад уписује податке у њу које може да чита, али пг_думп не може да чита.

Ова ситуација је изгледала као корупција за наш систем за откривање проблема. Пробуђен је дежурни. Дежурни је погледао шта се дешава. После неког времена дошао је клијент и рекао да имам проблема. Послужитељ је објаснио у чему је проблем. Али проблем је у језгру Постгреса.

Нашао сам дискусију о овој функцији. И написао је да смо наишли на ову особину и било је непријатно, човек се будио ноћу да би схватио шта је то.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://www.postgresql.org/message-id/flat/fe9b3722df94f7bdb08768f50ee8fe59%40postgrespro.ru

Заједница је одговорила: „Ох, заиста морамо то да поправимо.

Имам једноставну аналогију. Ако ходате у ципели која има зрно песка, онда, у принципу, можете да идете даље - нема проблема. Ако продајете чизме хиљадама људи, онда хајде да правимо чизме уопште без песка. А ако ће неко од корисника ваших ципела трчати маратон, онда желите да направите веома добре ципеле, а затим да их прилагодите свим својим корисницима. А такви неочекивани корисници су увек у окружењу облака. Увек постоје корисници који експлоатишу кластер на неки оригиналан начин. Увек се морате припремити за ово.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Шта смо научили овде? Научили смо једноставну ствар: најважније је објаснити заједници да постоји проблем. Ако је заједница препознала проблем, онда се јавља природна конкуренција да се проблем реши. Зато што сви желе да реше важан проблем. Сви продавци, сви хакери схватају да и сами могу да стану на ове грабље, па желе да их елиминишу.

Ако радите на проблему, али он никоме осим вама не смета, али радите на њему систематски и на крају се сматра проблемом, онда ће ваш захтев за повлачење дефинитивно бити прихваћен. Ваша закрпа ће бити прихваћена, ваша побољшања или чак захтеви за побољшања ће бити прегледани од стране заједнице. На крају крајева, ми чинимо базу података бољом једни за друге.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Занимљива база података је Греенплум. То је веома паралелна база података заснована на Постгрес кодној бази, са којом сам веома упознат.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://greenplum.org/greenplum-database-tables-compression/

А Греенплум има занимљиву функционалност - додај оптимизоване табеле. Ово су табеле у које можете брзо да додате. Могу бити или колонасти или редови.

Али није било груписања, односно није било функционалности где можете да распоредите податке који се налазе у табели у складу са редоследом који је у једном од индекса.

Дошли су ми момци из таксија и рекли: „Андреј, знаш Постгреса. А овде је скоро исто. Пребаците на 20 минута. Узми то и уради то.” Мислио сам да да, знам Постгрес, пребацивање на 20 минута - морам ово да урадим.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://github.com/greenplum-db/gpdb/commit/179feb77a034c2547021d675082aae0911be40f7

Али не, није било 20 минута, писао сам то месецима. На конференцији ПгЦонф.Руссиа, пришао сам Хеиккију Линакангасу из Пивотала и питао: „Има ли проблема са овим? Зашто не постоји оптимизовано груписање табела за додавање?“ Он каже: „Ви узмите податке. Ви сортирате, преуредите. То је само посао." Ја: "О, да, само треба да узмеш и урадиш." Он каже: „Да, за ово су нам потребне слободне руке. Мислио сам да ово свакако треба да урадим.

И неколико месеци касније поднео сам захтев за повлачење који је имплементирао ову функционалност. Овај захтев за повлачење је прегледао Пивотал заједно са заједницом. Наравно, било је грешака.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://github.com/greenplum-db/gpdb/issues/10150

Али најинтересантније је да када је овај захтев за повлачење спојен, грешке су пронађене у самом Греенплум-у. Открили смо да табеле гомиле понекад прекидају трансакције када су груписане. И ово је ствар коју треба поправити. И она је на месту које сам управо додирнуо. И моја природна реакција је била – у реду, дозволите ми да урадим и ово.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://github.com/greenplum-db/gpdb/pull/10290

Исправио сам ову грешку. Послао захтев за повлачење поправљачима. Он је убијен.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://github.com/greenplum-db/gpdb-postgres-merge/pull/53

Након чега се испоставило да ову функционалност треба набавити у Греенплум верзији за ПостгреСКЛ 12. Односно, 20-минутна авантура се наставља новим занимљивим авантурама. Било је занимљиво дотакнути се тренутног развоја, где заједница сече нове и најважније карактеристике. Замрзнуто је.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

https://github.com/greenplum-db/gpdb/pull/10565

Али ту се није завршило. После свега, испоставило се да за све ово треба да напишемо документацију.

Почео сам да пишем документацију. Срећом, наишли су документаристи из Пивотала. Енглески је њихов матерњи језик. Помогли су ми око документације. У ствари, они су сами преписали оно што сам предложио на прави енглески.

И ту се, чини се, авантура завршила. И знате ли шта се тада догодило? Дошли су ми момци из таксија и рекли: „Имају још две авантуре, свака по 10 минута. И шта да им кажем? Рекао сам да ћу сада дати извештај о размерама, па ћемо видети ваше авантуре, јер ово је занимљив посао.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Шта смо научили из овог случаја? Пошто рад са отвореним кодом увек значи рад са одређеном особом, то је увек рад са заједницом. Зато што сам у свакој фази радио са неким програмером, неким тестером, неким хакером, неким документаристом, неким архитектом. Нисам радио са Гринплумом, радио сам са људима око Гринплума.

Али! Постоји још једна важна тачка - то је само посао. Односно, дођеш, попијеш кафу, напишеш шифру. Све врсте једноставних инваријанти раде. Урадите то нормално - биће добро! И то је прилично занимљив посао. Постоји захтев за овај посао од Иандек.Цлоуд клијената, корисника наших кластера како унутар Иандек-а тако и изван њега. И мислим да ће се повећати број пројеката у којима учествујемо и повећати дубина нашег ангажмана.

То је све. Пређимо на питања.

Шта и зашто радимо у базама података отвореног кода. Андреј Бородин (Иандек.Цлоуд)

Сесија питања

Здраво! Имамо још једну сесију питања и одговора. И у студију Андреј Бородин. Ово је особа која вам је управо рекла о доприносу Иандек.Цлоуд-а и Иандек-а отвореном коду. Наш извештај сада није у потпуности о Цлоуд-у, али смо у исто време засновани на таквим технологијама. Без онога што сте урадили унутар Иандек-а, не би било услуге у Иандек.Цлоуд-у, тако да вам хвала лично. И прво питање из емисије: „На чему је написан сваки од пројеката које сте споменули?“

Резервни систем у ВАЛ-Г је написан у Го. Ово је један од новијих пројеката на којима смо радили. Буквално има само 3 године. А база података се често односи на поузданост. А то значи да су базе података прилично старе и обично су написане на Ц. Пројекат Постгрес је почео пре око 30 година. Онда је Ц89 био прави избор. И на њему је написан Постгрес. Модерније базе података као што је ЦлицкХоусе обично су написане на Ц++. Сав развој система се заснива на Ц и Ц++.

Питање нашег финансијског менаџера, који је одговоран за трошкове у Цлоуд-у: „Зашто Цлоуд троши новац на подршку отвореног кода?“

Овде постоји једноставан одговор за финансијског менаџера. Ово радимо да бисмо наше услуге побољшали. На које начине можемо боље? Можемо радити ствари ефикасније, брже и учинити ствари скалабилнијим. Али за нас се ова прича првенствено односи на поузданост. На пример, у систему резервних копија прегледамо 100% закрпа које се односе на њега. Знамо шта је шифра. И лакше нам је да уводимо нове верзије у производњу. То је, пре свега, реч о самопоуздању, о спремности за развој и о поузданости

Друго питање: „Да ли се захтеви спољних корисника који живе у Иандек.Цлоуд разликују од интерних корисника који живе у интерном Цлоуд-у?“

Профил оптерећења је, наравно, другачији. Али са становишта мог одељења, сви посебни и занимљиви случајеви се стварају на нестандардном оптерећењу. Програмери са маштом, програмери који раде неочекивано, вероватно ће се наћи и интерно и екстерно. У том погледу сви смо приближно исти. И, вероватно, једина важна карактеристика унутар Иандек-овог рада база података биће то што унутар Иандек-а имамо учење. У неком тренутку, нека зона доступности потпуно одлази у сенку, а све услуге Иандек-а морају некако наставити да функционишу упркос томе. Ово је мала разлика. Али то ствара много развоја истраживања на интерфејсу базе података и мрежног стека. Иначе, спољне и унутрашње инсталације генеришу исте захтеве за карактеристикама и сличне захтеве за побољшање поузданости и перформанси.

Следеће питање: „Како се ви лично осећате у вези са чињеницом да велики део онога што радите користе други Облаци?“ Нећемо именовати конкретне, али многи пројекти који су рађени у Иандек.Цлоуд се користе у туђим облацима.

Ово је супер. Прво, то је знак да смо урадили нешто како треба. И гребе его. И више смо уверени да смо донели исправну одлуку. С друге стране, то је нада да ће нам то у будућности донети нове идеје, нове захтеве трећих корисника. Већину проблема на ГитХуб-у креирају појединачни систем администратори, појединачни ДБА, појединачни архитекти, појединачни инжењери, али понекад људи са систематским искуством дођу и кажу да у 30% одређених случајева имамо овај проблем и хајде да размислимо како да га решимо. Ово је оно чему се највише радујемо. Радујемо се размени искустава са другим платформама у облаку.

Много сте причали о маратону. Знам да си трчао маратон у Москви. Као резултат? Престигао момке из ПостгреСКЛ-а?

Не, Олег Бартунов трчи веома брзо. Завршио је сат времена пре мене. Све у свему, задовољан сам колико сам далеко стигао. За мене је само завршетак био достигнуће. Све у свему, изненађујуће је да има толико тркача у постгрес заједници. Чини ми се да постоји нека врста везе између аеробних спортова и жеље за системским програмирањем.

Хоћете да кажете да у ЦлицкХоусеу нема тркача?

Знам сигурно да су тамо. ЦлицкХоусе је такође база података. Иначе, Олег ми сада пише: „Хоћемо ли да трчимо после извештаја?“ Ово је сјајна идеја.

Још једно питање из преноса Никите: „Зашто сте сами поправили грешку у Греенплум-у и нисте је дали јуниорима?“ Истина, није баш јасно шта је грешка и у којој услузи, али вероватно значи ону о којој сте говорили.

Да, у принципу, могло се некоме дати. То је био само код који сам управо променио. И било је природно да се то одмах настави. У принципу, идеја о подели стручности са тимом је добра идеја. Дефинитивно ћемо поделити Греенплум задатке свим члановима наше дивизије.

Пошто говоримо о јуниорима, ево питања. Особа је одлучила да креира прво урезивање у Постгресу. Шта треба да уради да би извршио прву обавезу?

Ово је занимљиво питање: „Одакле почети?“ Обично је прилично тешко почети са нечим у кернелу. У Постгресу, на пример, постоји листа задатака. Али у ствари, ово је лист онога што су покушали да ураде, али нису успели. То су сложене ствари. И обично можете пронаћи неке услужне програме у екосистему, неке екстензије које се могу побољшати, које привлаче мање пажње програмера кернела. И, сходно томе, тамо има више бодова за раст. У оквиру програма Гоогле Суммер оф цоде, сваке године постгрес заједница износи много различитих тема које би се могле позабавити. Ове године смо имали, мислим, три ученика. Један је чак писао у ВАЛ-Г о темама које су важне за Иандек. У Греенплум-у је све једноставније него у Постгрес заједници, јер Греенплум хакери веома добро третирају захтеве за повлачењем и одмах почињу да их прегледају. Слање закрпе у Постгрес је питање месеци, али Греенплум ће доћи за један дан и видети шта сте урадили. Друга ствар је да Греенплум треба да реши тренутне проблеме. Греенплум се не користи широко, тако да је проналажење вашег проблема прилично тешко. И пре свега, треба да решавамо проблеме, наравно.

Извор: ввв.хабр.цом