PgConf.Russia 2019
PGConf.Russia – международная техническая конференция по открытой СУБД PostgreSQL, ежегодно собирающая более 500 разработчиков, администраторов баз данных и IT-менеджеров для обмена опытом и профессионального общения. В программе – мастер-классы ведущих мировых экспертов, доклады в три тематических потока, примеры лучшего опыта и разбор ошибок, гостиная разработчиков и блиц-доклады из зала.
Темы встречи
- PostgreSQL на переднем крае: большие данные, интернет вещей, блокчейн
- новое в PostgreSQL и вокруг: развитие PostgreSQL и его экосистемы
- PostgreSQL в реальных системах: архитектура, миграция, эксплуатация
- Использование PostgreSQL в платформе 1С
- PostgreSQL в геоинформационных системах (GIS)
Доклады
Архив докладов
-
Лев Драгунов Juno GIS Research TeamLeadСУБД внутри контейнера - ночной кошмар для администратора баз данных. Я расскажу, как PostgreSQL в контейнерах используется в Juno, с какими сложностями мы столкнулись и как их преодолели.
-
Александр Коротков Postgres Professional Руководитель разработкиХорошо, когда база работает предсказуемо. Если сервер не справляется с нагрузкой, то только знай добавляй процессорные ядра, терабайты оперативной памяти и миллионы IOPS'ов – всё станет хорошо. Гораздо неприятнее, когда у сервера куча свободных ресурсов, но база данных всё равно тормозит. И особенно обидно, когда при нагрузочном тестировании всё работало как часы, а при реальной нагрузке такого же объёма – встаёт колом.
В данном докладе я разберу "узкие места" постгреса, которые нам приходилось встречать в реальной жизни, и которые приводили к печальному поведению, как описано выше. Расскажу о том, что можно сделать на пользовательском уровне, что эти "узкие места" обойти, и о том, что планируют сделать разработчики, чтобы их вообще убрать. А также поделюсь некоторыми рецептами нагрузочного тестирования, которые помогут избежать неожиданностей в продакшене.
-
Алексей Фадеев Sibedge Старший разработчик .NET, евангелист Postgres.Многие специалисты, обслуживающие СУБД не любят эти три буквы - ORM, потому что не раз видели сгенерированные многоэтажные запросы для простейших операций. Однако, практика показывает, что источник проблемы - не ORM, а разработчики, не умеющие ими пользоваться. В этом докладе я расскажу основные принципы, как писать код для ORM, генерирующий «хорошие» запросы, а также покажу «плохие» примеры кода, и что из них получается на выходе. Основные идеи – при написании кода мыслить в SQL, научиться заранее видеть, какой запрос будет сгенерирован. Но даже обретя такой навык нужно всегда проверять выходной SQL для сложных запросов. Приведу конкретный пример, когда незначительное изменение в ORM-логике меняет объём выходного SQL в десятки(!) раз. Расскажу о дополнительных инструментах и хитростях. А именно – отключение трекинга, конструкция Include, разный синтаксис для JOIN, как получить больше данных за меньшее число запросов, как эффективно писать запросы с группировкой, и зачем нужны проекции. Не обойду стороной и случаи, когда эффективно решить задачу средствами ORM не получается (например, запросы с рекурсией). Кроме SELECT-запросов немного расскажу о средствах Batch-Update/Delete, позволяющих обновлять и удалять данные средствами ORM без загрузки на клиент. Несколько слов будет и о вставке – как заставить ORM быстро вставлять большие объёмы данных через Multi-Insert и COPY. Будет упомянуто и о поддержке в ORM специфичных для PostgreSQL типов данных – массивов, hstore и jsonb. Может возникнуть вопрос – а есть ли вообще смысл использовать ORM, раз нужно столькому научиться. Преимущества их использования есть, и об этом тоже будет сказано. Все примеры будут на технологии Entity Framework для платформ .Net Core и .Net Framework на языке C#. Для Hibernate/NHibernate могут быть отличия в некоторых тонкостях, но основные принципы те же, поэтому доклад будет полезен разработчикам, использующим различные технологии.
-
Павел Молявин 2ГИС Инженер ИнфраструктурыПосле перехода к микросервисной архитектуре для PostgreSQL наступили «темные времена». Каждая из десяти команд действовала самостоятельно — ставила свою базу данных, выбирала версию, писала деплои. Пришло время создать общий инструмент.
Мы собрали кластер на основе PostgreSQL, repmgr, PgBouncer, Barman. Несмотря на то, что система получилась достаточно сложной для неподготовленного специалиста, нам удалось создать повторяемый деплой, который позволяет быстро разворачивать рабочую систему. А также мы смогли консолидировать все базы в нескольких кластерах и снять с команд обязанности по администрированию.
Failover работает, мы проверяли :-)
Фотографии
Архив фотографий