Здесь переводится видео в статью Илья Космодемьянский из Data Egret "PostgreSQL worst practices"
Ссылка на видеодоклад https://www.youtube.com/watch?v=HxwLCyCY8ec
Текст сделан из субтитров. Буду очень благодарен в форматировании текста, его вычитки. Для этого достаточно знать русский язык. Присылайте свои pull request или присылайте текст на почту patsev.anton[собака]gmail.com
но во первых определенные грабли я люблю больше потому что они там встречаются чаще бьют больнее и как бы вам будет веселее них слушать а с другой стороны вот например для хай-лоу да я сделал специально некоторые такие грабли во-первых чуть более веб специфичные а во-вторых те которые ну реально там друг с другом рядом идут как бы когда находишь одни грабли думаешь новом час сейчас авторы найду ну и вот тут они как бы и разложены вот ну в общем примерно вот так вот и давайте как бы потренируемся как как как выглядит плохая практика такая ну никто так конечно не делает да то есть никто не следует таким по этим практикам я вам сейчас покажу следующий слайд нам никогда не используйте индексы такой тестовый пример но как бы но все же понимают что как бы индексы это как бы надо использовать вот мы объясняем что никогда не используйте индексы потому что когда вы не используете индексы на самом деле ничего страшного не происходит всех скан это то же самое что индекс can зачем придумали индексы до сих пор не понимаю как бы все работает одинаково ну соответственно это легко очень проверить вы берете ваш ноутбук любимые или там девелопер скую машину на которую вас там все происходит и на этой девелоперский машине запускаете тестовый запрос по 10 записям и как легко догадаться вы посмотрите что sex com index can действительно работает с одинаковой скоростью если вы добавите там ни зной 100 записей вместо 10 может быть даже индекс can будет медленней но как бы если вы пойдете в продакшен там может быть вас ждут какие-то сюрпризы вот такая простая тестовая плохая практика до тестовые граблю котором можно последовать ну как бы кто считает что индексы нужно не использовать вот каждый раз спрашиваешь никто руку не поднимает приходит на поддержку сразу там как бы вот все интересно мы поехали с настоящими плохими праве практиками одна из моих любимых очень часто встречается почему-то все очень любят каунт и особенно в вебе особенно высок а нагруженном на главной странице среднего сайтов хорошо посещаем эти и не только в роно эти должно быть 500 счетчиков всего у нас конкурентные условия база данных там сто пятьсот потоков от доить это какое-то там поле это поле через секунду улетает черт знает куда как только пользователь обновляет страницу поле у него совершенно другое это очень информативно для пользователя делайте так плюс к тому есть всегда еще один бонус каунт это очень легкий для базы запрос при каждого при каждом вызове каунта под grease не полезет проверять предыдущую версию данной странице он не сделает six к на он это сможет сделать только по индексу вам будет хорошо поверьте мне это очень хорошая идея ну и естественно как бы у вас всегда должно быть такой список аргументов почему приблизительная оценка из пока каталога где вы можете на момент последнего она лайза посмотреть сколько там было строчек почему она вам не подходят на почему вам нужна точная типичный пример используйте а м то есть это как бы это такая замечательная совершенно практика вот как вот консультанты счастливой обычно когда выроем есть значит всегда есть что улучшить то есть это как бы можно прийти и как бы все будет хорошо но смотрите все очень просто во первых все базы данных используют одинаковый сколь и вообще es que el для баз данных должен быть независимым от платформы он должен работать одинаково хорошо на моей склеили подгрести на ура клей везде почему потому что вы же каждый день переключаете свое клона по греции обратно да то есть как бы это нормальная такая совершенно ситуация нужно писать независимой от платформы код плюс тому но как бы есть какое-то деревенское легенда вот эти учете которые там два сидят они ну это вообще вредные люди да то есть они они почему то говорят что если написать там не знаю join вот не так а вот так то он будет работать там быстрее потому что у этой базы данных есть такая штука называется optimizer и она так вот если запрос написан так то он будет лучше работать я бы им не верил вы знаете я сам из них поэтому но как бы мы ни чего хорошего то не посоветуем ну и опять же как бы если я вам скажу ребята пишите нудные скучные хранимые процедуры искали запроса нужно это же не интересно да новые технологии можно чинить освоить я знаю вот кто знает хорошего спеца по гибер нейтона примерно вот я знаю таких несколько это очень умные люди и очень упорные а потому что освоить гибер нейт своим языком запросов это как бы это очень круто вот осваиваете как бы новая технология между базой данных и приложениям это всегда хорошо и главное со ускоряет joy нам в базе не место то есть так часто делают люди которые когда-то давно в детстве использовали маску или обожглись они не любят join и потому что ну как бы join что-то такое подозрительно чет там надо писать и вообще поэтому они делают собственно говоря следующая select им табличку вытаскиваем на приложение и после этого в нашем приложении начинаем joy нить ну просто и понятно мы любим языки программирования которые знаем поэтому давайте вытащим в любимый язык программирования и будем в нем joy нить после этого нам остается несколько простых шагов чтобы собственно говоря это все заработало хорошо первый шаг 10 очень простой нам нужно реализовать мер join him join sc2 но это как минимум принципе в некоторых базовых бывает больше типов джайнов ну и на самом деле по-хорошему еще нужно буферный каш и оптимизатор вот закройте глаза и представьте ваш любимый язык программирования из на кто любит питон кто программирует на питоне кто любит тамго джаву вот представьте как на вашем любимом языке сколько строчек кода займет реализация вот этого дела то есть как бы отличная плохая практика вы сможете написать больше кода на любимом языке что может быть прекрасней будьте модными не использую используйте схема лес технологии схема это прошлый век архаичный es que el его любят гнусный 2 они как бы вот у хорошего вам не посоветует вам не нужно дизайне тени какую схему потому что она как бы вас данные по которой надо думать куда их там засунуть какую структуру сделать в подгрести есть эффективней тип джейсон б вы можете взять табличку сделать там две колонки айди и джейсон там мета body там блок называется по-разному я вам скажу по секрету видеозапись правда но это также эффективно как нормально структурированная табличка у вас запросы будут с такой же скоростью джисона работать акт вот точно говорю только на меня не ссылаетесь потом а и как бы даже если вы в каждый джейсон засунете мегабайты и табличка у вас поскольку она одна она предсказуемым образом может стать легко несколько терабайт все равно все будет работать быстро не вопрос то есть как бы вот просто берите и делайте готовый рецепт счастья которого очень многие любят просто проверено лучшими собака водами но в принципе можно пойти другим путем и это как бы я бы сказал другая довольно большая часть разработчиков очень любит быть гибким и все делаете универсально но потому что понимаете нужно проверить схему до если уж мы решили делать схему и не последовали тем граблям которые были той word practice которого описана на предыдущем слайде то надо пойти к допросить альтере там что-то такое 2 скажет да ну вас с вашим мальте рам знаю чем заканчивается и ничего не правит но поэтому нужно все сделать универсальную чтобы как бы не думать о таких вещах надо использовать и яв потому что на самом деле вам нужно три таблицы and эти и трибьют и в илью ну как бы схему универсальная и совершенно прекрасная обычно как происходит обычно делаю три этих таблички после чего ночная думать что знаете пожалуй пожалуй наверно нужно еще одна табличка и табличка это называется атрибут type потому что ну как бы когда все там в тексте лежит но данные все-таки иногда бывают разные но зачем-то это приходится делать получается такая универсальная система значит и . очень удобно делать вот так вот и соответственно есть хороший способ как заставить ее хорошо работать потому что в какой-то момент у вас все начинает адский тормозить после этого вы вот это вот четыре таблички называется ядром системы или там core там ну можно придумать разные какие-нибудь название но после этого вы получаете полное моральное право обвешивать это тысячи витрин с де нормализованы my данными чтобы соответственно это хоть как-то работал а потому что иначе это будет очень медленно и но зато очень универсальна в принципе если вы думаете что это все это еще не все в принципе и такую схему можно существенно замедлить можно поверх такой схемы добавить versio не рование и когда уже добавлен аверсе они рование это уже верный признак что ну наверное пора переписывать это все дело чем больше создать индексов тем лучше знаете такая эволюция разработчиков была с чего они вообще не создают индекса а потом как начнут создавать честное слово пока места на диске не закончится во-первых смотрите опять же несмотря на видеозаписью я вам открываю страшную тайну индексы не занимают места на диске лишнего вообще никакого они не расходуют ваши жареные буфера или там смотря какая у вас база данных там систем global ария или там что еще с ростом количества индексов мы никак не замедляется просто как бы сделайте больше индексов это вот гадалке не ходи верный рецепт лучше как вот там в джонги оптимизирует все дела там все индексы слева направо такой лесенкой по всем колонкам и справа налево индексацию как бы это точно будет хорошо но самое главное что optimizer он же как бы если вы создали индекс это все вы ему дали приказ использую этот индекс и он обязательно будет использовать ни в коем случае не проверяйте происходит ли там вообще какие бы то ни было индекс can и если создали значит используется тут как бы настоящая религия должна быть так сказать со строгими канонами кипкалм and cried мой индекс с даже если вы решили настроить backup настроить backup это в принципе уже такая это на грани фола для этого доклада тема потому что это как бы это чересчур хорошая практика делать бэкап да то есть но в принципе как бы и здесь есть где развернуться во первых вы всегда можете использовать вместо быка по реплику понимаете как бы но зачем backup мы в современном мире живем у нас есть реплика ну мы же не будем ждать если мы упали чтобы восстановиться из бэкапа и как бы простой и сервисов наши highload фидело поэтому наша задача это тут же свой ловится на реплику если например причиной файла вера окажется баг в этой реплики вам никогда не понадобится backup отдельный да то есть вы можете остаться с репликой если какой-нибудь умник у вас пошлет запрос дро поющий большую таблицу и он приедет на реплику вы можете всегда после этого почесать эту сделать дела и покрутить какой-нибудь чтобы у вас был час добежать до другого сервера и шантом остановить не делайте бэкапы то есть реплика это всегда хватает то есть реплика это достаточно во первых во вторых можно использовать по годам в место пиджи bass backup а дело в том что с точки зрения backup а ты же bass backup он такой как бы он уже граничит с хорошей практикой потому что он позволяет вам обеспечить восстановление базы данных на момент последней успешной транзакции до аварии по годам позволяет это сделать только на момент своего окончания и он позволяет вам эффективно потерять все данные которые произошли между окончанием по годам по и вашей собственно говоря аварии поэтому используйте по годам с по годам пам вы потеряете данных больше но к тому же он еще и довольно медленный и много чего может там вам попортить самой базе если вам этого не хватает напишите собственный бекапный скрипт выкопанные скрипта такая вещь которая для каждой базы вот в идеале если вас кластера особенно пишете для каждой базы свой то есть как бы это вещь должна быть максимально перри осложненный иначе он может сработать как ожидается поскольку у нас воз practices мы как бы не стремимся к такой идее поэтому давайте мы сделаем как бы самостоятельно написанный богат ный скрипт я вам могу точно сказать даже люди работающие в консалтинге баз данных 20 лет иногда уважают в этих скриптах то есть это гарантированно хороший способ ну где-нибудь себе что-нибудь там прострелить следуйте этому способу ну и как бы беда не приходит одна используйте как можно больше стороннего софта все должно быть как можно сложнее backup это такая вещь которая не должна быть просто вот но из коробки работать потому что но как бы иначе опять же у вас все упадет и будет не о чем рассказать на хайло воде после этого поэтому дополнительные какие там ленточные библиотеки какие тренды русские решения самописные решения все это положить в контейнер взболтать но не стряхивать то есть backup это дело такое ну и самое главное понимаете если вы делаете тестовое восстановление вы можете как бы все испортить вы можете не последовать этой плохой практики потому что когда вы делаете тест о восстановлении вы гарантированным способом проверяете что собственно гранда вы гарантированным способом проверяете что у вас из этого быка по действительно можно восстановиться ну как бы это очень слишком хорошая практика для этого доклада поэтому я вам этого не говорил никогда не делайте тестовых восстановлений просто сделали бэкап и забыли выяснилось что вы становитесь первым делом выключить of the vacuum это такой очень специфичный для пожгли со подход of the vacuum это такой вспомогательный процесс который на фиг не нужен на самом деле то есть он как бы как знаете у вима свойство такое есть все портите бибикать вот of the vacuum он работает часами что делает зачем делает прибить и все желательно минус девятым сигналом еще это тоже хорошая практика вот никаких проблем не будет если у вас базе реально 10 гигов значимая информация оплот занимает остальное там терабайт во первых вы можете сказать что это big data да то есть как бы во вторых там современные сервера 2 3 терабайта рам да да вот так можно купить это дешево как бы чё такого ну и будет о чем рассказать на хай-лоу я как бы этаж уже сразу можно как бы из каждого такого слайда делать доклад никогда не архивируйте старые данные вот это одна из моих общей любимых кораблей знаете как бизнес обычно говорит мы хотим данные там не знаю как статистике иметь за все время и строить по ним агрегаты ну как бы агрегаты уже давно построены иногда может надо перестроить из архива достать или из backup а из какого-нибудь для этой цели но реально горячий небольшой кусочек это горячий кусочек 100 мегабайт оба за пять терабайт например ну и как бы и все прекрасно то есть вы сразу можете убить нескольких зайцев во-первых вы точно знаете куда бежать если вас кончилось место на диске потому что когда исторические данные только растут но как бы только подкидывая этих дисков туда во вторых ну опять же bigdata беда-то еще никому не повредило да у нас нету конференциям pas mal da тебя побеждать и каждая вторая здесь какой-нибудь доклад с таким названием ну и собственно говоря когда вы наконец приходите к выводу что с этим надо что то сделать ни в коем случае не делайте именно архивирование данных там схлопывание агрегирования сделайте позиционирование пошлину в документации написано седан их много надо делать профи цианирования естественно если вы там будете там какой там сириес данные profits и они ровать по часу или помянуть и все будет работать как написано в документация и как бы все будет хорошо оптимизатор вас справиться составить устами партициями в плоскости особенно ну может быть через версии 3 справится но неважно а перри изобретение слоник то знает что такое зло не кто использовал слоник когда-нибудь кто прямо сейчас использует сегодня звоне для тех кто не знает и не использовал это очень древняя система репликации в паз крисси когда никакой вменяемой системой репликации там еще не было ее автор envy как то сказал что и так сложно пользоваться потому что и было очень сложно написать то теперь вы как бы по мучайтесь на самом деле как бы при некоторых подходах пользоваться можно но самое главное если вы будете переизобретать слой если вам нужно что-то куда-то от реплицировать обязательно просто напишите там собственную технологию репликации не знаю берите сайтах и блоги и и питоном перекладываете их на другой раздел ведь так делают я видел но серьезно вот как и такой нервный смех такой это самое я слышу видимо кто то пробовал вот ну потому что знаете как бы если вы будете перекладывать не питоном это будет а там соответственно не канонично б соответственно вынес не мне по используете питон как бы тоже хорошо своим любимым языком программирования пользоваться но самое главное не в этом самое главное в том что у вас всегда будет там десяток аргументов почему родная репликация встроенная вам не нравится да вы можете там все использовать там свое свое написать но самое самое главное самое главное что это вам позволит пройти по всем кораблям по которым ходили слой не за последние там уже больше 15 лет сколько они там появились со всеми проблемами которые у них там были встроенная репликация это для трусов да то есть они людей которые не любят решать проблемы и стараются их каким-то образом избежать никогда так не делайте а-мастер и реплика да вот ну как бы репликация вообще почему-то очень любима да мастер и реплика еще не так сильно любим а вот мастер мотив совсем любим да то есть как бы на каждой конференции спрашивают как нам сделать multimaster так чтоб она работал сразу видно сколько любви там страдания в этом как бы вложено если у вас есть мастера реплика очень хорошая идея настроить их по-разному потому что если вы настроили их по-разному поставили на разное железо когда вы файл миритесь например часто люди как бы экономит ресурсы это очень как бы хорошая идея вот у вас есть мастер он там утилизирован на 80 процентов и по дискам там и по памяти это большая серьезная машина там много гигабайт оперативки хорошие диски ну как бы глупо же задержать там под паром еще такую же реплику да это дорогой простаивающий сервер поставьте всем и попроще как бы это очень удобно когда вы своего миритесь у вас не заведется собственно говоря реплика на более слабом железе и как бы вот вот вот она вот будет о чем рассказать на холод как всегда поэтому это очень хорошая идея лучше идея так а другая можно забыть настроить в пузыри сколько уж параметры которые относятся к мастеру можно настроить только те параметры которые относятся к своему да всякие там остальные прочие параметры которые обычно на реплики мы не настраиваем оставить по дефолту iv baku он в то же самое сделать не прописать того что там должно быть когда вы файла витязь происходит замечательная вещь у вас мастер не заводится то есть вы достигли того как быть к чему я вас призываю и как бы вот и работает ни в коем случае не меняете этих самых настроек а синхронную реплику надо ставить другой дата-центр вообще люди любят синхронной реплики почему люди любят синхронной реплики потому что это повышает отказоустойчивость вот как вы думаете вообще синхронная реплика она сильно повышает отказоустойчивость вот кто считает что синхронная реплика повышает отказоустойчивость посмотреть давайте разберемся а если у вас есть несинхронная реплика у вас отвалился мастер на нем же пошла транзакция и не дошла до реплики ну что произошло там ну например там реплика отвалилась что вы делаете вы смотрите а реплика отвалилась но делаете другую пока работаете на мастере если она вас синхронно и это означает что у вас до того как транзакция не реплицировать на все реплики у вас commit просто обратно управление не возвращает на мастерит с транзакция не заканчивается соответствии с его что-то случается с любой из нот вашего кластера что происходит весь класс ты превращается в тыкву отказоустойчивость как вот настоящий отказоустойчивость лучше всего это поставить в другой дата-центр и желательно на другом континенте как бы отказывай устойчивость достигнет не видим ни неведомых высот просто как бы вот сколько раз я это видел она работает безотказно то есть очень и очень и очень рекомендую никогда не используйте фарин keys вообще как бы пора уже переходить на ключи отечественного производителя вот видели такой замечательный public twitter аккаунт трамп тебе вот там такие посмотрите посмотрите там как бы он первый твит у него был это сама done this phrase как видите абсолютно интернациональна то есть в любой стране работает во первых смотрите контроль целостности на стороне приложения работает всегда как бы кто видел чтобы контроль целостности на стороне приложение не работал ну вы че то как-то это самое с вами скучно обычно все говорят о не работает потом предлагаешь там не знаю на зарплату программиста поспоришь не сработают почему ты как-то энтузиазма меньше с нравится вот никогда ничего не будет потеряно все хорошо ну и потом как бы смотрите лейтмотивом через этот доклад проводит следующие в базе данных есть специализированный инструмент вообще база данных это как бы такой специализированный фреймворк по отслеживания целостности и это уже достаточное основание этим не пользоваться потому что ну как же изобрести то велосипед с кораблями с треугольными колесами поэтому вот берите пользуйтесь готовый рецепт самый правильный тип данных которые только вообще может быть в погрейся да и в любой другой базе данных этот текст приступил можно было бы заменить чем другим но как бы не важно будем последовательны и и универсальны по первым всегда интересно написать валидацию чунь это вводит таймс темпа и печника в приложении я вообще не понимаю зачем люди эти типы данных вообще плодят потому что они там занимают места усложняет сущности и так далее и если у вас есть все в тексте стоит хорошо а если вы там не знаю да ты там tmp int и разделяете ну как вы можете получить еще такую вот замечательную ошибку а потому что ну как бы если бы у вас был таймс темп она работала как надо а так вот видите не работает поэтому очень советую всегда используйте улучшенную версию под gresso мы все знаем что пузырь с ванильный по сгрыз он имеет также свои комитетом таких хакеры которые сидят они на самом деле все очень ретроградные никогда не видели в глаза живые базы данных и поэтому мы до сих пор не обогнали оракул надо что сделать надо срочно написать туда улучшение потому что она как бы вот ну приходишь такой красивый думаешь ну блин я знаю как это ворог ли работает дай-ка я сейчас напишу и все как бы скажут оставайся мальчик с нами будешь нашим королём почему-то правда прилетает в ответ 20 писем с вами что вот это не работает потому так пытались сделать уже 20 лет назад и до сих пор пытаются и она не сработает какая правильная реакция не разбираться почему именно так устроена природа вещей а устроить собственную версию ос криса и так вот ходят по этим граблям уже там не 1 комп они на самом деле там ну реликтовые компании то вроде генплана например они теперь как бы обратно в комьюнити пытаются значит в лица им остается где-то примерно еще 60 тысяч несовместимости в гитлер g ну как бы они работают на эту тему потому что ну понятное дело что в сообществе после не понимают гениальных идей надо как бы если уж так сказать делать то уж по уму как бы ты сидишь как архитекторы делаешь свою базу данных фиг с ним что она писалась 20 лет до этого и как бы мы тоже не лыком шиты и мы все можем сделать самогон у вас никогда не возникнет проблем силами там вашей например компании поддерживать ваш ford ваш кастомный улучшенный по сгрыз emerged в него все новые фичи сообщества посмотрите как нибудь интереса ради сколько в детей изменение происходит за сутки до вот как бы что просто оценить насколько это будет быстро имплементировать те же самые фичи которые сообщества пилит там больше чем 100 рук на самом деле под grease любит длинные транзакции по сгрыз это мультиков сегодня не как мы знаем и как все и multiverse сегодня кие блокировщики пост длинные транзакции любят чем длиннее транзакция тем лучше ну потому что вы знаете там как бы длинные запросам как бы идет идет идет идет там есть короткие запросы а не обновляют кита данные которые тот длинный запрос использует и этот длинный запрос знать что он должен перечитать эти данные проверить что значит версия такая же точно поэтому он чуть чуть подольше работает он их так перечитывает там где-то авто валку в очередь пристраивается перестает работать а за авто вакуумом on a white background который вам откручивает счетчик транзакции ну и начинается в этом длинный-длинный запрос это хорошо хранимая процедура это например очень хорошая вещь для вызова каких неуспешных сервисов почту отправить улучшить в этом стиле но в принципе тут вы можете со мной поспорить искать жену как еще до действительно как бы можно так делать ну я бы сказал что хорошо это было бы если бы все разработчики хорошо знали что такое тайм-аут потому что как бы начать отправлять почту почтовая программа например упала и ничего дальше не происходит это типичный сценарий когда база у вас отвисла of the vacuum не происходит все ждет и тому подобное еще очень хорошо делают программисты когда например заходит на сервер что там потестировать такой горят бегин ; а дальше звонок прозвонил все пора идти пиво пить в пятницу ну кому везет об этом не узнаю до понедельника а если на базе нагрузки много то узнают ну вот я потому что она как бы такая ситуация достаточно типичная ну и в любом случае да берите пользуйтесь готовый рецепт от того как можно сделать с гарантии плохо код надо писать не надо читать код кто любит читать код вот есть люди которые я люблю читать код а кто любит писать ну вот видите почитайте внимательно этот запрос вот как вы думаете чек который написал он его потом прочитал я вам забегая вперед скажу писал очень хороший разработчик один из лучших баз данных разработчиков которые вообще знаю вот именно программеров искали логике просто завезу замотан было немножко вам ничего не кажется удивительным в этом запросе не ну я ряда я думаю что даже сосково скобка там не самая этот запрос на самом деле как бы делает абсолютно бессмысленную работу потому что он делает select из инвестора до подопру просто потому что но по кускам писали не смотрел что там написано ну презентация будет выложено на на самом деле есть на свой шер может или совершают теперь ну я думаю что все умеют vpn и общем можете посмотреть попробовать погонять этот запрос он действительно как бы сначала сворачивает [музыка] сет в массив потом массив разворачивает но как бы такие вещи они регулярно встречаются а если у вас есть какие-то проблемы с pascal сам запомните любые проблемы можно решить с помощью контейнера как бы гадалке не ходи если вы считаете что есть такие проблемы которые нельзя решить с помощью контейнера есть другое очень такое четкое решение для этого это облака запомните третий момент никогда ни в коем случае не пытайтесь решить проблему с производительностью там базу данных с помощью оптимизации запросов это прошлый век это все на что схему использовать их анненки писать то есть не когда ты этого не делаете вы еще join и начните использовать очень не советую ну и контейнер это вообще святое то есть как бы база данных в контейнере это как бы это вещи созданные друг для друга как бы ночь прекрасная такая отличная вас practice да если что-то очень стабильная очень стоит follow с конвекционным блогом его надо положить во что-то нестабильная без такого logo но как бы что могло пойти не так переизобретать нужно не только зло не вот если вам нужно сконвертировать time с тем что вы будете делать можно написать храним que no se с кейсом сравнением по буквам таймс темпа и конвертировать его в unix time если кто то думает что это делают какие-то те самые странные разработчики который идет за еду программируют нет не так высоко оплачиваемые крутые специалисты потом я не шучу действительно так ночью было лень документации смотреть он сделал то что умел ну вполне себе бывает другой вариант очередь сообщений черную бобику там все эти вещи напишите свою я сам так делал работает безотказно потом задолбаешься поддерживать ну как бы надо писать и желательно еще с нуля до то есть такие шейки книжки которые описывают инфекционная теория там патроны интеко интеграции то есть как там собственно и сообщение пересылать туда-сюда ни в коем случае их не читаете делаете как монти видение us на заре своей туманной uni юности он писал mais quel точу старый mais quel да так чтобы он не был устроен как база данных он для этого не читал ни одной книжки и дело просто такую модель базы данных по принципу черного ящика но теперь собственно говоря куча народу титаническими усилиями делает это похожим на базу данных снова ну и на самом деле больших успехов добилась а не нашли подходящую рим или например ваш еда была настолько злобны что они после там не знаю месяца бессоных ночей вам запретили использовать уровень бывают иногда такие крайние случаи знаете озлобленный 2 зажатый в угол это в общем то это страшное дело вот он может на разное ощущение пойти что вам просто на джо вам машину сломать день там на серую решили карты какие нет позакрывать а вот а если если у вас нет возможности использовать вашу любимую рим обязательно напишите свой собственный очень хорошо когда два говорят так вот это не будет быстро работать вот используя хранимой процедуры люди начинают писать а у рамн и хранимых процедурах но как просто передают что туда надо собрать значит потом конкатенации клеют и отправляют это значит соответственно во первых оптимизатор не понимает что ему оптимизировать это уже бонус 100 то есть это уже хороший кандидат на отдельный слайд сюда да и во вторых помимо того что оптимизатор не понимает чё делать этаж очень легко читаем очень хорошо отлаживаем и когда в лоб медленных запросов приходит какой-то запрос его очень просто потом найти да откуда он такой красивый пришел надо просто взять все исходники всего проекта всех хранимых процедур и соответственно погребать ну так сказать или заперли написать какую-то разборку регулярным выражением или вообще там как бы много чего еще другого обязательно так делаете я встречал проекты где в такой логике было не то что написано автоматически с генерит там десятки тысяч пакетов там раковых три тысячи строк кода каждый прекрасно это было там все потом разбирать то есть как бы во всех сучек коллеги вас запомнят и даже там следующее поколение этих калек вас тоже запомнят ваше дело будет жить так сказать в веках никогда не используйте эксепшен знаете как бы я часто говорю программистом прочитайте в документации вот в этом там-то всего 5 10 хоть один бы почитал да но то что эксепшен и все замедляют в подрисовывать документации почему то читает каждый первый не знаю как так это самое хочется предложить патч давайте уберем вот этом облачко про это дело до exception а это некоторые overhead не то что прям супер-супер безумно большой но тем ни менее какой то есть вместо них можно использовать роюсь наталья сюда как бы приложение не должно знать о том что у него возникли проблемы вызывающая эксепшен да потому что эксепшен то обычно так как бы не очень совместимую жизнью с дальнейшей вещи надо как-то там обрабатывать никогда так не делаете просто весна toyz естественно пока у вас будет приложение как бы просто валиться от чего-то ну все будут ходить в лог и читать этот ваша раз набираюсь на то есть тбайт и любит просто вот гадалке не ходи они вас будут помнить знать ваш номер телефона и как бы но лучше если вы в другом городе работаете в другу в офисе и так далее потому что тогда может пока они доедут они уже немножко так успокоиться зачем вообще приложений узнать об ошибках ну как бы глупости это все просто можно их со прессой все будет хорошо например как бы был такой эпизод люди очень долго tune или запись в миску или приложили серьёзные усилия даже создашь ники по тем временам очень дорогие еще поставили а за некоторое время до этого предыдущая команда произвела оптимизацию она вынесла все чтения на реплику потому что ну мастер не справлялся и там было две реплики значит один мастер мастер перестал справляться по записи реплики там что-то читали все дела ну и в общем оптимизировали запись на мастере когда с оптимизировали обнаружили что обе реплики упали в коку 1 полгода назад другой 8 месяцев а приложение которое туда ходила у них просто все сообщения об ошибках были наглухо закрыты в php и все как бы не только на нет проблем и вот как бы корабль сделан для того чтобы добить это это реальная живая история как бы не то чтоб я ее там придумал ошибка ни в коем случае это не красиво неэстетично приложение не хватает соединение с базой знаете как вот под газ отвечает что не могу соединиться тут надо действовать по принципу там все пожалуй клятый долгоносик мы еще посадим пусть подавятся на сделаем тысячу connection of ни в коем случае не проверяйте всё ли в порядке у вас базы аккуратно ли она закрывает транзакции там и так далее это путь не для нас да потому что но понимаете как бы сервис ты еще секу они сейчас как бы дешевые распространенные как бы неких проблем скалирования там нету и самое главное как бы если вам понадобится с двумя тысячами сепию вы можете еще один такой тип поставить легко ну и опять же overhead на создание большого worker а но кто о таком слышал ну то есть как бы не бывает там никакого вверх и да это обычный такой нормальный unix новый процесс очень легкая вещь это дело значит там отопить еще один как у все будет хорошо но если вы действительно хотите как бы вот сделать по-настоящему плохо не надо на этом останавливаться потому что вы можете совершить одну трагическую ошибку и ваши вас practice превратиться в best practice на поэтому никогда не используйте пока боимся потому что спа гобан тех позволит вам решить все эти проблемы и как бы вот вы не сможете перегрузить сервер чтоб все worker а чего нибудь ждали вместо пока bouncer а используйте погиб ул пока пул это отличная вещь он на самом деле очень прост в использовании и особенно как пулу то то есть он имеет много еще всего как как утка ходить летать плавать но делает он это знаете как примерно я не знаю кто что любит там я вообще как бы так если что надо там для я делала это все равно как использовать текстовый редактор в операционной системе и maxxtro есть такая персона стима там где-то сбоку пристроен текстовый редактор некоторым кажется естественным тогда вам может быть понят по нам понравится по гappu вот но в принципе как бы по-настоящему такой утяжелённый конфиг очень много всяких разных полезных и не очень фич они самое главное с каждым релизом как бы новые появляются никто не знает как их использовать failover только автоматически ручного нету это как бы вот то что доктор прописал то есть работает общей безотказно может можно прострелить ногу только в пути самое главное он еще в отличие от по гобболу себя который похож на яндекс по устройству до 1 процесс легкие все дела он такие настоящие люксовую процессы используют то есть как бы если вы хотите уйти от ты проблемы который описал вот пока по углам и и решит то есть вам еще надо будет его отмасштабировать на несколько серверов и все будет хорошо легковесный connection было как такой ну и опять же как консультант я покупал обожаю да то есть как бы вот в принципе я вам буду очень благодарен если вы будете использовать и проблемы будут все они не говорю так если это все таки как бы ваш practice доклад всегда начинаете настраивать postgres с например настроек оптимизатора да то есть как бы у вас там черт его знает настроен или там сколько памяти там ширины буферов и так далее не обращайте внимание на это хороший повод начать это какой-нибудь вот дженерик квари optimizer да почему то вот люди доходят до этой секции начинают там с костями страниц играете с настройками джин эти кларе optimizer а если у вас не настроены жареные буфера вы спокойно справитесь с этим делом это такая серебряная пуля надо начинать настройку всегда с конца ни в коем случае не проверяйте конфигурацию железа не настраивайте такие базовые настройки не создавайте индексы вот начинать оптимизировать нужно отсюда это по-настоящему как бы потом как бы будет чего приятно вспомнить так это вы будете то самое смотреть а у и зачем же я такое сделал ну и одна из главных таких вещей практически уже мы подошли к самому концу если вы услышали какой то новый клёвый пачка полос гришу какую-то новую фишку не думайте хватайте и в продакшен то есть как бы это это аксиома вот например проведем просто эксперимента кто когда-либо слышал доклад брюсом он же на месте он mask он когда ты рассказывала на холоде на ю тубе есть версию вот там он довольно много рассказывает для тех кто не слышал про такие мета колонки x-men и xmax до которых подгрести есть сами проверьте серьезно там select за из любой таблички звездочка , x-men xmax вам две циферки там выдастся или 1 вот и собственно говоря это транзакция которая создала данную запись а следующее это в какой транзакции максимально эта запись видно ну и собственно горя рецепт очень простой берете эту штуку и не оттащить и в продакшен строите на не какую-то логику и так далее самое смешное ш когда это такой рассказывающие иногда так народ готов сделано уже ну то есть как бы айди транзакции в плоскости 32-битный он в какой-то момент перекручиваются заново вы если за ложитесь на вот эту вот version ность которая как бы тоже 32-битная штука на массу чудных открытий вас ждет то есть как бы можно в какой-то момент он там заново тикать начнет так далее но в конце концов как бы это скучно просто так как бы целостную консистентную базу иметь можно как-нибудь повеселее это делать никогда не используйте графический мониторинг графически мониторинг для баз данных это как бы но это чит такой да как бы потому что имея графический мониторинг вы можете ответить что происходило вчера в два часа ночи я кто просил военных на пульт и так далее если вас нет графического мониторинга вы становитесь важным незаменимым человеком вы как бы можете с долгим умным видом смотреть на какие-то текстовые файлики логе потратить на это пять часов и ничего не сказать в ответ но это же как бы определение важного и нужного человека поэтому ни в коем случае не используйте графический мониторинг а когда вы загружаете данные в под gres обязательно делайте это как можно более затейливо да то есть но понимаете как бы можно написать на джаве какое приложение с трендами там со всеми делами загружать конкурентно в один worker по сгрыз а потом значит долго требую шутить ситуации что почему то постепенно загрузка замедляется замедляется замедляется очень понастраивать будет хорошо самое главное никогда не используйте копию копии это специально сделанный для этого инструмент это определение того что им не надо пользоваться да то есть ни в коем случае этого не делаете лучше написать какой-нибудь володя в самому самое главное не забывайте этот доклад называется ворс practices потому что я неоднократно видел как люди фотографируют кокаин свои отклонить выкладывают и блюдо клювом и так сделаем сейчас в общем на не забывайте что это ворс practices и если у вас есть какие-то свои любимые присылайте обязательно включу и если есть у вас какие то вопросы то как уже говорилось задавайте их микрофон чтобы соответственно они попали на запись спасибо [аплодисменты] если есть вопросы поднимайте руку я подойду the microphone нет тогда спасибо еще раз около спасибо можно будет найти на стенде еще спросить что-нибудь если хотите есть вопрос да здравствуйте хотелось бы узнать какими дулами можно мониторить медленные запросы к качество тенденция ну скажем так главная тенденция это перестать statements вы берете 50 statements обязательно его настраиваете и собственно говоря хорошая идея это снимать за сутки топа медленных запросов от на основе погас тот statements если вы посмотрите у нас на сайте datagrid есть ссылка на наш гид хоп там есть так называемый пиджи utils это бесплатная утилита которую мы потом пунктов на лицензии раздаём всем желающим и там есть собственно говоря скрипт который на основе просто statement генерит суточные репорты медленных запросов и посылает их ну и как бы сейчас самый дефолтный метод ну не ролик или какие-то уже которых сервисы ну чисто через теоретически есть много сервисов там при этом отметил имеет перестать стоит нас внутри себя от метов у них есть стенда точно довольство зря здания до у них взгляд новый плагин весьма заточен да там как бы вот есть просто на графике можно отчет по богатство целитель нас посмотреть у меня дополнение к этой кварц practice относительно этих контейнеров очень хорошая практика положить по сгорю в докер вместе с дата файлами а как иначе я должна и там не останавливался ни ogl некоторые глупые люди зачем-то выделяет это там в отдельный на отдельный сервак сша этой директории и так далее у меня тут туда же вопрос насколько это смогу достигнуть успеха если виртуалку под расположу а там жена у меня есть схд да пусть она из виртуалке вот когда ходит там данные лежат все нормально тут в я вот сомневаюсь может быть подскажешь камни но на самом деле там есть много разных способов самое главное ну это зависит от технологии виртуализации если технологии виртуализации например поддерживает гибкий provisioning 100 раджа обязательно его надо использовать вот то есть грубо говоря то чем больше прослоек на его между из ходы этим самым то как быть тему а если обещая устройству виртуалку пропитывают не очень видно на самом деле это все она достаточно плохо получится в том смысле что там обычно все равно есть виртуализированные о которые хороший такой вверх от вносит она по-прежнему будет как надо замедлять все и самое главное что там всегда latency скачет очень непредсказуемо и например если база данных исполняет развесистые запрос оптимизатор он никогда не знает чё там такой watenshi происходит и он планы будет плохие выбирать но я за то смогу на одной железки мастера реплику же запустить мастер реплику на одной железки это как бы так и надо так и надо как бы еще backup туда же склад илья поскольку локи не вошли в ваш practices я готов поспорить с тем что у макс connections 1000 это не нормально ну как бы а кто спорит макс connection тысячи это как бы так и надо почему ты еще мы ограничились тогда надо ставить ногу бывает не смотрите как бы дело в том что между 1000 и десятью тысячами разница не такая драматическая чудовищная гораздо больше чем между 1000 и 200 а например ну я бы не сказал что там прям может так вот на перфомансе также тому же он как бы уже нормально плохой хороший способ на самом деле когда вы уже тысячу коннектов съели на windows me на винде было 1000 коннектов вот вот там будет хорошо но я так сказать создаю это некоторые читерство . выберите еще пожалуйста двух людей сам meters вот андрей ширину шоу у него тоже отлетят у меня был отличный вопрос и ну про докер давайте поскольку это новые новые вас practices to мы не можем не отметить такие вопросы все спасибо большое