title

text

Павел Конотопов
Павел Конотопов
14:30 04 апреля
22 мин

RTT, RTO, RPO и синхронная репликация

Как влияют сетевые задержки на производительность при использовании синхронной репликации? Если произойдет отказ ведущего узла, сколько времени наш кластер будет недоступным? А сколько данных мы потеряем? Будут ли какие-то аномалии при чтении с реплик? Мы проектируем сеть, дайте нам минимальное значение RTT! Многим DBA приходится сталкиваться с этими вопросами при проектировании и реализации кластерных решений. В этом коротком докладе расскажем, как быстро оценить значения RTT, RTO, RPO, с помощью каких Open Source инструментов можно провести испытания кластерного решения, и экспериментально подтвердить заложенные в проект параметры, на какие значения метрик можно ориентироваться при проектировании.

слайды

Видео

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

  • Александр Никитин
    Александр Никитин
    45 мин

    Борьба с блоатом

    Каждый администратор баз данных так или иначе сталкивался с тем, что таблицы и индексы в PostgreSQL иногда могут значительно увеличиваться в размерах. Зачастую поиск причины такого роста приводит нас к выводу, что объекты "раздулись". В докладе мы поговорим о причинах такого поведения, подготовим тестовую среду для определения того какой же метод борьбы с блоатом является самым подходящим. Сравним несколько утилит по борьбе с блоатом, а также познакомимся с ещё одним инструментом, который позволяет нам бороться с этим явлением более эффективно. Этот доклад будет полезен как начинающим, так и опытным администраторам PostgreSQL.

  • Михаил Шурутов
    Михаил Шурутов
    45 мин

    Набор Ansible-ролей для PostgreSQL

    В данном докладе рассмотрен набор ролей Ansible как для разворачивания одиночных инстансов СУБД PostgreSQL с репликацией, так и для построения отказоустойчивых решений с помощью кластерных решений: patroni+etcd, patroni+consul, stolon+etcd, stolon+consul. Соответственно, рассмотрен вопрос, почему набор ролей, а не какое-либо "решение".

  • Альфред Столяров
    Альфред Столяров
    45 мин

    Как мы перевели клиента с Oracle на PostgreSQL до того, как это стало мейнстримом

    Импортозамещение не началось в прошлом году после всем известных событий. Его старт датируется 2014 годом. Именно с этого года государственные и окологосударственные компании начали прорабатывать вопрос перехода на рекомендованное ПО. Одна из таких компаний и обратилась к нам еще в 20-м году с проектом перехода с Oracle на PostgreSQL. Данный проект был призван решить накопившиеся архитектурные проблемы (не оптимальное хранение телеметрических данных, сама СУБД работала внутри виртуальной машины), оптимизировать использование дискового пространства (освободить основное хранилище, отладить сохранение архивных данных, обеспечить корректное резервное копирование). Так как система заказчика должна работать бесперебойно 24/7, то требовался переход с одной СУБД на другую без простоев, с одновременной работой обеих для обеспечения пошагового перевода подсистем и возможности контролировать корректность данных. И, само собой, работы нужно было завершить как можно быстрее.

    В докладе расскажем, как нам удалось решить этот кейс.

  • Алексей Фадеев
    Алексей Фадеев
    22 мин

    ORM LinqToDb: используем возможности Postgres по максимуму

    ORM-библиотеки широко используются при разработке бэкенда – примем это как данность. ORM-библиотеки совершенствуются, разработчики учатся на своих и чужих ошибках, и многие научились писать код для ORM, генерирующий вполне оптимальные запросы для типовых операций. Но есть ещё одна проблема ORM – ограниченность инструментов. Особенно это актуально для Postgres, имеющего массу операторов и конструкций (как в ядре, так и в расширениях), выходящих за рамки стандарта SQL.

    ORM-библиотека LinqToDb имеет важную особенность: она позволяет очень просто (буквально в одну строку) писать расширения, реализующие любой SQL-оператор или конструкцию. Полнотекстовый поиск, KNN, CTE (в том числе рекурсивные), работа с массивами и jsonb, array_agg и jsonb_object_agg, табличные функции и LATERAL JOIN – всё это без труда можно использовать в ORM, что я и продемонстрирую в данном докладе!