title

text

Д
Денис Иванов 2ГИС Ведущий разработчик
10:30 05 февраля
22 мин

Эволюция использования PostgreSQL в справочном API 2GIS

  • Первое появление постгреса в команде
  • Борьба с репликацией
  • Партицирование и миграции
  • Кросс-датацентровое использование
  • v8, json, jsonb, jsquery
  • Апгрейд версии postgresql

На данный момент на продакшене бекенда справочного API 2GIS мы имеем с десяток различных баз в postgresql, около 120 шардов, миллионы записей в таблицах. При этом практически все данные хранятся в структурах jsonb

Я расскажу об эволюции продукта с точки зрения взаимодействия с СУБД.

Слайды

Видео

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

  • Guangzhou  Zhang
    Guangzhou Zhang AliBaba

    Алибаба и PostgreSQL

    Наш облачный сервис по использованию реляционных баз данных предоставляет доступ к Постгресу (aliyun.com, в настоящий момент крупнейшее частное облако в Китае). Мы также используем Постгрес для наших внутренних приложений и готовы поделиться своим опытом.

  • Ronan Dunklau
    Ronan Dunklau Dalibo DBA
    45 мин

    Multicorn: разработка Foreign Data Wrapper'ов на языке Python

    Multicorn - это обобщенный Foreign Data Wrapper (FDW, интерфейс для подключения внешних источников данных, устоявшегося русского названия пока нет), предоставляющий возможность разработки конкретных FDW на языке Python, что упрощает их разработку.

    Мы узнаем:

    • Что такое FDW, как работает Multicorn, и какие готовые FDW поставляются вместе с ним.
    • Как написать свой FDW на python, включая новый интерфейс IMPORT FOREIGN SCHEMA, появившийся в версии 9.5.
    • Внутренности Multicorn: что он делает и что не делает внутри.

    После общего рассмотрения FDW и Multicorn, мы детальнее рассмотрим некоторые FDW, поставляемые с ним.

    Затем проведем полный тур по API Multicorn, чтобы научить вас создавать FDW на Python, включая следующие детали:

    • испольование определений таблиц
    • пробрасывание WHERE
    • ограничения колонок
    • как влиять на планировщик
    • как писать во внешнюю таблицу
    • как работать с импортом внешней схемы
    • пробрасывание ORDER BY
    • управление транзакциями

    Все это будет объяснено наглядно, с примерами кода, позволяющими слушателям с нуля создать свой FDW на Python.

  • Александр Чистяков
    Александр Чистяков ISST Lab, ITMO University Researcher
    22 мин

    Слон из нержавеющей стали: продолжаем тестирование производительности PostgreSQL

    Замечательная компания servers.com предоставила нам один из своих серверов для тестов, что позволило нам протестировать производительность PostgreSQL на реальном железе под разными операционными системами, включая SmartOS, DragonFly и Windows. Полученные результаты мы хотим представить сообществу.

  • Д
    Дмитрий Мельник ИСП РАН разработчик
    22 мин

    Ускорение исполнения запросов в PostgreSQL с использованием JIT-компилятора LLVM

    В настоящее время в PostgreSQL для исполнения SQL-запросов используется интерпретатор. Это приводит к накладным расходам, связанным с неявными вызовами функций-обработчиков и проверок, которых можно было бы избежать при создании исполняемого кода "на лету" (JIT-компиляции) под конкретный SQL-запрос: в этом случае во время выполнения уже известна структура используемых таблиц и типы данных. Особенно это актуально для сложных запросов, где производительность процессора является основным ограничением. В настоящий момент существует два известных проекта, реализующих JIT-компиляцию в PostgreSQL: коммерческое решение Vitesse DB и open-source проект PGStorm. В первом проекте за счет использования LLVM JIT авторам удается получить ускорение до 8 раз на тестах из набора TPC-H. Второй проект реализует JIT-компиляцию запроса с использованием CUDA для исполнения его на GPU, что позволяет ускорить выполнение некоторых типов запросов на порядок.

    Наша работа посвящена добавлению поддержки JIT-компиляции SQL-запросов в PostgreSQL с использованием компиляторной инфраструктуры LLVM. В докладе будет подробно рассмотрено, как JIT-компиляция может быть использована для ускорения различных этапов исполнения SQL-запросов, а также особенности трансляции SQL-запросов в LLVM-биткод для получения эффективного исполняемого кода. Также будут представлены предварительные результаты тестирования JIT-компилятора на наборе тестов TPC-H.