PostgreSQL для хипстеров
Не все знают, что PostgreSQL является не только классной реляционной СУБД, но и прекрасно используется в NoSQL мире, давая разработчикам приложений гибкость модели данных и богатую функциональность развитой реляционной СУБД, надежность которой проверена десятилетиями.
Я расскажу про то, как PostgreSQL работает со слабо-структурированными данными, в частности, с вездесущим JSON, приведу результаты известного теста-пузомерки для NoSQL СУБД в применении к PostgreSQL, MongoDB и MySQL, а также представлю последние разработки нашей компании (Postgres Professional) в области слабоструктурированных данных.
PostgreSQL имеет богатую историю работы со слабоструктурированными данными, начиная с hstore - бинарного хранилища для пар ключ-значение, которое авторы использовали еще с 2003 года, задолго до появления json. Являясь плоской структурой, hstore, тем не менее, позволяло эффективно оперировать данными, чья схема была заранее неопределена и тем самым давала разработчикам приложений ту самую гибкость, которую они открыли для себя в NoSQL. Популярность json, который стал де-факто стандартным типом данных для веб-приложений, привела разработчиков PostgreSQL к необходимости нативного типа данных, сначала как текстовый тип для валидации json и его хранения, а потом и к настоящему бинарному хранилищу с поддержкой операторов, функций и индексов. PostgreSQL стал первой реляционной СУБД, которая реализовала полноценную поддержку json и предоставила возможность разработчикам веб-приложений использовать гибкость NoSQL наряду с проверенной десятилетиями надежность и богатую функциональность настоящей ACID-ной СУБД с отличной конкурентностью.
В концу 2016 года SQL комитет принял новый стандарт SQL-2016, в котором появилась спецификация модели данных SQL/JSON, JSONPATH и функций для манипулирования json. Я расскажу про нашу реализацию этого стандарта в PostgreSQL, его возможности и наши расширения. Разработчики приложений получат очень широкие возможности для работы с json, например, возмножность навигации по json с помощью языка запросов JSONPATH.
Любая СУБД помимо функциональности должна быть быстрой, поэтому я расскажу про сравнение производительности PostgreSQL и флагмана NoSQL СУБД MongoDB, используя популярный бенчмарк YCSB, который используется многими исследователями для тестирования NoSQL баз данных. Оказывается, что PostgreSQL превосходит MongoDB на практически всех типах нагрузки, что является прекрасным результатом, учитывая сложность PostgreSQL.
Также я расскажу про компрессию json, которая реализована с использованием словарей ключей, таким образом, разработчики приложений могут не ограничивать свою фантазию в выборе названий ключей :)
Все эти разработки мы планируем предоставить пользователям PostgreSQL Professional в ближайшем будущем и передать сообществу для будущей версии PostgreSQL 11, которая планируется на осень 2018 года.