HighLoad++ 2015 завершён! Ждём вас в 2016 году!

Профессиональная конференция разработчиков высоконагруженных систем

2 и 3 ноября 2015 Крокус-Экспо МОСКВА
Профессиональная конференция разработчиков высоконагруженных систем

Улучшаем NoSQL в постгресе. Индексируем подзапросы
Базы данных, системы хранения

Программный комитет ещё не принял решения по этому докладу
Postgres Professional, ГАИШ МГУ

Российские ведущие разработчики PostgreSQL. Основные интересы в Postgres — это его расширяемость (GiST, GIN, SP-GiST), новые типы данных, индексы. Авторы полнотекстового поиска, хранилища для слабо-структурированных данных (hstore, jsonb) и многих других расширений.

Тезисы

PostgreSQL известен своей расширяемостью, которая позволяет добавлять новую функциональность без остановки сервера и своими силами, без привлечения разработчиков ядра базы данных. Однако, существующая инфраструктура имеет исторические ограничения, которые проявляются при работе с типами данных, обладающими внутренней структурой, такими как массивы и hstore. В полную силу эти ограничения проявились после появления jsonb. В частности, для эффективного поиска в jsonb документах нам пришлось разработать расширение jsquery, которое позволяло записывать jsonb запросы в каноническом виде "column operator value" и, благодаря этому, использовать индексы. Этот подход ранее был нами опробован в полнотекстовом поиске (tsquery) и популярном расширении для целочисленных массивов intarray (query_int). При всей полезности jsquery, этот язык запросов не расширяем, поэтому мы обратились к идее его реализации на SQL, причем с поддержкой индексов.

Мы предлагаем реализовывать работу со сложными типами данных с помощью подзапросов, которые уже сейчас позволяют реализовывать запросы произвольного уровня сложности на SQL. Например, найти массивы, у которых хотя бы один элемент удовлетворяет сложному условию, сейчас невозможно без использования подзапроса. Мы покажем синтаксическую обертку (syntax sugar) для написания подобных запросов к jsonb, которая разворачивается в комбинацию подзапросов. Конкретный синтаксис сейчас неважен: он требует долгого и терпеливого обсуждения в сообществе, но выразительная мощь языка от этого не измениться. Мы же сфокусируемся на задаче индексной поддержки сложных запросов, включая подзапросы. Эта задача представляет собой реальный вызов и на данном этапе мы покажем прототип новой индексной инфраструктуры и примеры ее использования.

Другие доклады секции
Базы данных, системы хранения

Rambler's Top100