Практики, особенности и нюансы при работе с Postgres в Go / Артемий Рябинков (Авито)

Поділитися
Вставка
  • Опубліковано 10 вер 2024
  • Приглашаем на конференцию Saint HighLoad++ 2024, которая пройдет 24 и 25 июня в Санкт-Петербурге!
    Программа, подробности и билеты по ссылке: vk.cc/cuyIqx
    --------
    --------
    Saint HighLoad++ 2019
    Тезисы и презентация:
    www.highload.r...
    В докладе расскажу о практиках работы с Postgres в сервисах на Go. Поговорим о преимуществах и недостатках основных инструментов, которые принято использовать при работе с Postgres в Go. Конечно, коснёмся нюансов, которые нужно учитывать, когда ваши сервисы работают внутри Kubernetes облака. Также расскажу об опыте Avito в предоставлении базы данных разработчикам продукта.
    ...
    --------
    Нашли ошибку в видео? Пишите нам на support@ontico.ru

КОМЕНТАРІ • 30

  • @andy0x58
    @andy0x58 5 років тому +6

    Отличный доклад, все по делу. Спасибо!

  • @user-le7cf1qk8l
    @user-le7cf1qk8l 5 років тому +5

    Мне как раз это сейчас нужно.!

  • @sergeimaslovskiy
    @sergeimaslovskiy 3 роки тому

    Спасибо за видео, очень полезно!

  • @YourAwesomePlace
    @YourAwesomePlace 9 місяців тому

    Как называется либа которая делает emulate prepared statements?

  • @user-hd3qb8bm2e
    @user-hd3qb8bm2e 4 роки тому +1

    А почему pgbouncer не может после каждого PREPARE который он выполняет в одной из сессий, автоматически выполнить тот же PREPARE в остальных сессиях, это же просто! Как только получил на любой PREPARE ответ без ошибки, сразу добавить в очередь всех других сессий этот же запрос чтобы в них создались такие же стейтменты. Это уже можно делать асинхронно, но главное добавлять в очередь перед тем как отправить клиенту ответ, чтобы остальные PREPARE гарантированно отработали во всех сессиях до попадания в них EXECUTE с тем же именем. Можно еще сделать мапинг client_name -> bouncer_name чтобы при отрыве клиента удалять все его PREPARE во всех сессиях, через этот мапинг так же подменять все имена для EXECUTE.

  • @OstretsovArtem
    @OstretsovArtem 4 роки тому

    спасибо за доклад

  • @DenisDereka
    @DenisDereka 5 років тому +3

    отличный доклад

  • @viacheslavspitsyn2995
    @viacheslavspitsyn2995 2 роки тому +2

    1:54 - объясните, почему отсутствие ORM - это сила языка?

    • @yodapunishes
      @yodapunishes 2 роки тому

      Тоже хотел бы понять) все гоферы об этом говорят, но никто почему

    • @hgfyos
      @hgfyos 2 роки тому

      @@yodapunishes потому что "зумеров" не приходится обучать SQL, им приходится его изучать

  • @ErrorsMissing
    @ErrorsMissing 5 років тому +7

    pg не держит более 100 коннектов?
    Пых не поддерживает пул соединений?
    Одного Bouncer-а может не хватать?

    • @firehydrant5406
      @firehydrant5406 5 років тому +1

      100 коннектов - гипербола, про баунсеры всё достаточно ясно сказано (одного баунсера может не хвататать dba.stackexchange.com/a/155739)

    • @user-di7kt7bn3b
      @user-di7kt7bn3b 3 роки тому

      тоже не понял, у меня 300 коннектов работает без баунсера, почему несколько баунсеров надо ставить я не понял.

    • @winfle
      @winfle 3 роки тому

      Сам раз работчик PG не рекомендует больше 100 коннектов

    • @user-di7kt7bn3b
      @user-di7kt7bn3b 3 роки тому

      @@winfle но объяснения нет

    • @user-iz3xl2tx9l
      @user-iz3xl2tx9l 3 роки тому

      @@user-di7kt7bn3b Если приходит приличная пачка запросов, то унылый пг будет поднимать отдельный процесс под каждое новое соединение, запросы будут отваливаться по таймауту

  • @averv
    @averv 3 роки тому

    Отличный спич

  • @Darellat
    @Darellat 5 років тому +9

    ничего себе, в 21м веке яп умеет работать с бд и для этого нужен доклад. Вот это хайлоад не по годам.

  • @oratn
    @oratn 2 роки тому

    Был свидетелем. Открывал лк, видел чужой акк. дальше новый акк при обновлении.

  • @digkillneko
    @digkillneko 2 роки тому +2

    Какойто стремный и костыльный язык, аля нам надоел пхп в авито, хотим геморроя, давайте перейдем на го

    • @delir0
      @delir0 Рік тому +5

      Люблю объективные аргументы

  • @in9952
    @in9952 5 років тому +9

    Очень плохо, начиная со snake_case в коде Го, паник, которые "не надо использовать", про работу драйвера БД, "в Го есть пул соединений" и прочие перлы вообще молчу. Блять, и половина доклада про какую-то левую библиотеку, смысл которой это чтобы не дай бог не написать пару лишних строчек кода, аля чтобы все было как в уютненьком PHP.

    • @cucurbito
      @cucurbito 5 років тому +11

      Вообще так-то смысл любой библиотеки в том чтобы не писать какое-то количество лишних строчек кода

    • @tonupif
      @tonupif 2 роки тому

      Да, всё говно, кэш на чтение в редиске или мемкэше нет не слышал? - все запросы в базу уникальны?

    • @buginsystem8925
      @buginsystem8925 7 місяців тому

      Лол.

  • @4UBA4OK2
    @4UBA4OK2 4 роки тому

    чет чуш