title

text

Николай Рыжиков
Николай Рыжиков Health Samurai CTO
М
Марат Сурмашев Health Samurai Программист
16:30 04 февраля
90 мин

Эксплуатация JSONB

JSONB в PostgreSQL обладает рядом интересных свойств, которые могут пригодиться при проектировании и разработке бизнес-систем с тяжелой предметной областью, помогая бороться со сложностью и вариабельностью. На мастер-классе мы обсудим преимущества и недостатки использования JSONB. На примере открытой медицинской базы данных - fhirbase - мы с вами:

  • загрузим синтетические медицинские данные в PostgreSQL
  • научимся искать и индексировать эти данные (gin, jsquery, json-knife)
  • посмотрим, как использовать JSON агрегацию для постороения сложных запросов (GraphQL)
  • покажем, как эти данные можно модифицировать и валидировать
  • поговорим об архитектурных последствиях использования JSONB

Технические требования:

  • docker
  • docker-compose

Инструкция по подготовке

слайды

Видео

Другие доклады

  • Дорофей Пролесковский
    Дорофей Пролесковский Juno GIS Engineer
    45 мин

    PostGIS от катастроф

    PostGIS - расширение PostgreSQL для обработки пространственных данных.

    В этом докладе будет подробно рассмотрено, какие его функции и как применять для работы с информацией о катаклизмах.

  • Андрей Фефелов
    Андрей Фефелов Mastery.pro Технический директор
    90 мин

    Простой отказоустойчивый кластер на postgres, patroni, consul, s3, walg, ansible

    Patroni становится де-факто стандартом для построения отказоустойчивых кластеров Постгрес.

    В мастер-классе мы построим простой отказоустойчивый кластер из 3х нод на перечисленном стеке (на первый взгляд не выглядит простым).

    Мы кратко познакомимся с архитектурой patroni, обсудим наиболее интересные параметры конфигураций.

    Посмотрим как работает файловер и какими способами можно проинициализировать кластер.

    После мастер-класса вы сможете запустить такой кластер с нуля, используя предоставленные плейбуки ansible.

  • Алексей Фадеев
    Алексей Фадеев Sibedge Старший разработчик .NET, евангелист Postgres.
    45 мин

    ORM: как писать запросы и не сводить с ума СУБД

    Многие специалисты, обслуживающие СУБД не любят эти три буквы - 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 могут быть отличия в некоторых тонкостях, но основные принципы те же, поэтому доклад будет полезен разработчикам, использующим различные технологии.

  • Александр Павлов
    Александр Павлов Modulbank .NET разработчик
    45 мин

    Как получить нагрузку в БД на пустом месте?

    Мы - обычные разработчики, которые думали о том, как разработать систему, способную выдерживать неплохие нагрузки, и это даже получилось.

    На уровне архитектуры всё было OK, но объём данных возрастал, и начали вылезать не самые приятные моменты, о которых ранее никто не думал и не понимал. Иногда это приводило нас к самым потрясающим запросам, которые мы не понимали, как можно было написать. Мой небольшой рассказ будет о том, как получить нагрузку в БД на пустом месте и как потом от неё избавиться.