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