Стремясь объединить растущий, но разобщенный рынок СУБД категории NoSQL, создатели CouchDB и SQLite представили новый язык запросов формата UnQL (Unstructured data Query Language).
Развитие UnQL позволит создать условия для унификации мира NoSQL, считает вице-президент компании Couchbase Джеймс Филлипс, курирующий разработку документоориентированной СУБД CouchDB.
Язык UnQL (произносится «анкл») можно рассматривать в качестве «надмножества» SQL. В этом случае будет реализован анализ всех операторов языка SQL и обеспечена поддержка ряда новых операторов и выражений.
Если язык UnQL получит признание достаточного числа разработчиков, он может сыграть для рынка NoSQL примерно ту же роль, какую четыре десятилетия назад сыграл для рынка реляционных баз данных язык SQL, то есть стать общим интерфейсом, который объединит фрагментированный рынок СУБД нового поколения.
В последние несколько лет популярность NoSQL заметно выросла. Разработчики веб-сервисов, ориентированных на конечного потребителя, и поставщики больших наборов данных заняты поиском возможностей распределения своих данных между множеством серверов. Управление базами данных посредством традиционных механизмов SQL в этом случае требует очень серьезных усилий.
СУБД категории NoSQL (например, Cassandra и CouchDB) предлагают альтернативный способ быстрого распределения данных между множеством серверов и организации доступа к ним. Но при этом каждая СУБД имеет свой собственный уникальный интерфейс, что ограничивает возможности совместного использования нескольких СУБД или переключения между ними.
Разработчики всех систем управления реляционными базами данных в большей или меньшей степени придерживаются стандартного подхода, который обеспечивает совместимость и гарантирует получение предсказуемых результатов при выполнении запросов. Данные упорядочены по строкам и колонкам и объединены в таблицы, определенные в соответствии со схемой SQL.
В отличие от них базы данных NoSQL не имеют строго определенных схем построения. Чтобы сформировать запрос, все значения в базе данных NoSQL необходимо предварительно описать. Каждое значение должно сопровождаться именем, которое относит данные к определенной категории. «Таким образом, схема определяется самими данными», — пояснил Филлипс.
Язык UnQL создавался для того, чтобы обеспечить единый интерфейс для широкого диапазона архитектур баз данных, имеющих природу как SQL, так и NoSQL.
У истоков создания UnQL стоят главный идеолог CouchDB Дамьен Катц и автор SQLite Ричард Хипп. Затем их инициативу подхватили исследователи из Microsoft, опубликовавшие результаты своих работ в журнале Communications of the ACM. В Microsoft последовательно поддерживают разработку UnQL.
Язык UnQL, как и SQL, построен на основе реляционной алгебры. Это гарантирует получение предсказуемых и повторяемых результатов. «Исследователи из Microsoft доказали возможность построения ковариантных связей между отношениями SQL и языком типа UnQL», — отметил Филлипс.
Следует отметить, что нынешняя версия UnQL не имеет отношения к языку запросов для обработки неструктурированных данных, который был предложен исследователями из Пенсильванского университета более десяти лет тому назад.