Возможности СУБД Postgres для работы с документноориентированными базами данных
Мир баз данных за последние годы существенно изменился. Повсеместное проникновение интернет-технологий привело к необходимости работы с большим количеством разнородных данных в реальном времени, к чему традиционные реляционные СУБД оказались не готовы. Принято считать, что слабая масштабируемость и излишняя “жесткость” модели данных реляционных СУБД и являются основными причинами появление и роста популярности NoSQL СУБД. В докладе будет рассказано о концептуальных предпосылках появления NoSQL и их классификации.
Одним из “жупелов” NoSQL СУБД является поддержка типа данных json, который позволяет представлять JSON-документы. Базы данных таких документов принято называть "schemaless", то есть данные без схемы, поскольку СУБД не контролирует схему хранимых данных. Однако, такое определение представляется нам не вполне верным, поскольку для корректной работы, схема данных всё же должна быть, но в данном случае она неявно поддерживается на уровне приложения, а не явно задана в самой СУБД. Всё же, эта модель данных является более гибкой, поскольку позволяет менять схему данных “на лету”, что требует дополнительных усилий в реляционных СУБД, особенно в работающих под большой нагрузкой системах. Кроме того, документоориентированная модель данных имеет свои преимущества в плане производительности, т.к. документ, как правило, хранится целиком в одном месте, а не должен собираться из многочисленных таблиц.
Тем не менее, несмотря на успех NoSQL СУБД, многие пользователи не готовы приносить в жертву целостность данных в угоду масштабируемости, но хотят иметь гибкость схемы данных в проверенных и надежных реляционных СУБД. Темпы роста компьютерной индустрии (процессоры, дисковые подсистемы и сетевые устройства) позволяют большому количеству проектов успешно функционировать на одном сервере и не требовать горизонтальной масштабируемости NoSQL СУБД. Более того, при правильном проектировании архитектуры приложения возможно добиться горизонтальной масштабируемости реляционной СУБД, что подтверждает пример проекта Instagram, использующий открытую реляционную СУБД PostgreSQL.
Нами была предложена и реализована поддержка документоориентированной модели в PostgreSQL (версия 9.4 и выше). Уже больше 10 лет в PostgreSQL существует возможность работать со schemaless-данными, используя наш модуль расширения hstore. Hstore предлагает хранилище ключ-значение с сохранением всех реляционных возможностей, что сделало его самым используемым расширением PostgreSQL. Однако, возникающие технологии, основанные на популярном стандарте JSON, требуют от баз данных встроенную поддержку иерархических структур. Мы разработали бинарное хранение для вложенных структур с поддержкой массивов и встроенных типов, что позволило реализовать новый тип данных jsonb, гибкий язык запросов jsquery с индексной поддержкой. Таким образом, открытая СУБД PostgreSQL получила полноценную поддержку JSON и стала серьезным конкурентом MongoDB. В PostgreSQL 9.5 поддержка JSON была существенно улучшена за счёт добавления многих недостающих функций, а расширение jsquery предоставляет богатый язык запросов для поиска по JSON-документам с поддержкой индексов.
Слайды доклада.
Видео доклада.
|