Диапазонные типы в Postgres
После того, как импортозамещение состоялось, можно немного перевести дух и заняться дальнейшим развитием нашего приложения. При этом оказывается, что Postgres - это не упрощенная версия Oracle, как могло показаться некоторым в процессе миграции, а самобытная СУБД, заметно его превосходящая во многих вопросах.
Поговорим о диапазонных типах - одном из бриллиантов в короне Postgres, про которые, как оказалось, знают далеко не все разработчики.
Диапазонные типы позволяют эффективно решать задачи, которые в реляционной модели традиционно решались довольно громоздко; например, ведение календарей событий или объектов, поддержка версионности объектов, поиск перекрывающихся или покрывающих диапазонов, построение огибающей для системы ограничений, проверка выполнения сложных диапазонных условий и т.п.
В докладе рассматривается решение нескольких типовых для диапазонных типов задач, что может быть полезно при проектировании новых и развитии существующих приложений.
Слайды
Слайды доступны участникам мероприятия, выполнившим вход в личный кабинет.
Видео
Видео доступно участникам мероприятия, выполнившим вход в личный кабинет
Другие доклады
-
Фёдор Сазонов Сбер Руководитель направленияИлья Сазонов Всегда Да Руководитель разработки
pg укротитель
У разработчиков постоянно возникают проблемы при работе с базами данных. Они вызваны тем, что разработчики считают СУБД чёрным ящиком, который "просто работает" и даже не подозревают, что важно и нужно понимать не только стандарт SQL, но и подробности устройства конкретной СУБД.
Проекты разные, разработчики разные, но вот проблемы как правило одни и те же. Мы хотим продемонстрировать как разработчики пользуются базой данных и рассказать хорошо бы знать об устройстве СУБД, для того, чтобы писать код, который не разваливается как только компания из бодрого стартапа превращается в зрелый бизнес с планомерно растущими продажами и, соответственно, нагрузками.
Практически в любом успешном проекте можно встретить практически одинаковые проблемы. Они появились потому что бизнес хотел побыстрее получить готовый продукт и это в своё время помогло компании встать на ноги. В небольших проектах эти проблемы совершенно незаметны.
-
Владимир Сердюк Общество с ограниченной ответственностью «Кластерные технологии Софтпоинт» Ген. директор
Распределение транзакционной нагрузки в кластере серверов СУБД
Данный доклад представляет собой описание концепции и прототипа кластера СУБД, работающего по принципу Master-Master. Проблема синхронизации данных в таких системах ни в одном тиражном решении до сих пор не решена, поэтому масштабирование для OLTP-систем, где транзакционная нагрузка сильно превалирует над аналитической, решается до сих пор только усилением аппаратной части – добавить ядер/процессоров, добавить памяти, что зачастую бывает не самым рациональным решением. Напомню, что задача распределения аналитической нагрузки решается относительно просто с помощью создания дополнительных реплик и перенаправления запросов на чтение вне транзакций на другие реплики. В случае же транзакционной нагрузки, если применять аналогичный подход, возникают коллизии, например, типа «писатель-писатель», которые, если их не учитывать, могут привести к неверным данным в транзакциях. Концепция кластера распределённых вычислений на первый взгляд звучит просто: «Все запросы на изменение данных выполняются мгновенно на всех нодах (серверах кластера), а чтение выполняется локально». Специальный прокси-агент распарсивает запросы, и выполняет запросы на чтение локально, а запросы на изменение перенаправляются параллельно и асинхронно на все остальные ноды кластера. Все изменения выполняются в системе зеркальных распределённых транзакций , которыми управляет координатор распределённых транзакций. Несмотря на простоту концепции и формулировки, возникает множество технических проблем, которые нигде ранее не были решены. В случае высокого параллелизма и конкуренции ресурсов порядок запросов на разных серверах может изменяться, что, в свою очередь, может приводить к изменению состава данных и к распределенным взаимоблокировкам. Также возникают сложности с падением линейной скорости примитивных операций. И, не решив проблемы оптимизации, данное решение сразу не подойдет для большинства систем. Одними из целевых показателей промышленного решения будет являться подключение до 20-и серверов в кластер с линейной просадкой времени операций не более чем на 10 % .
В докладе будут рассмотрены эти и другие проблемы распределено-вычислительного кластера. В том числе, представлены примеры системы, для которых это будет максимально эффективным решением, а также описание архитектуры и демонстрация прототипа.
-
Николай Шаплов Postgres Professional Fuzzing Engeener
Fuzzing-исследование PostgreSQL. Как мы искали и что мы нашли
Фаззинг-исследование, это когда мы подаем в программу (или ее часть) случайные входные данные (на самом деле случайность весьма условна) и смотрим что из этого получится. И так много раз на многих процессорах.
Фаззинг исследование большого монолитного программного комплекса всегда не простая задача требующая неординарных решений. В этом докладе я расскажу что и как мы искали при помощи фаззинга и к каким результатам оно привело.
Исследование функций парсинга типов данных (input-функции): для разогрева; Исследование функций реализующих операции между типами (op-функции): тут лучше учитывать структуру; Фаззинг сетевой подсистемы: давайте притворимся, что мы POSIX-вызовы, так дешевле; Восстановление дискового контекста: нужен день сурка.
-
Виталий Давыдов Postgres Professional Разработчик программного обеспеченияИван Панченко Postgres Professional Заместитель генерального директора
Сферические данные в вакууме сегодня
Обзор средств PostgreSQL для работы с точками на сфере (земной или небесной) и их сравнительный анализ. point, spoint, spoint3, earthdistance, pg_sphere, PostGIS - для чего использовать и какие у какого средства плюсы и минусы? Затронем также вопросы поиска данных на сфере, включая kNN. В соавторстве с Виталием Давыдовым, ключевым мейнтейнером pg_sphere.