Создатели CouchDB и SQLite представили UnQL, аналог SQL для систем NoSQL
Основной целью разработки было создание для NoSQL-систем привычного и стандартизованного языка для определения и манипулирования данными. UnQL выступает в роли неструктурированного эквивалента SQL и призван заполнить образовавшуюся нишу, связанную с отсутствием единой формы задания модели данных и языка запросов, которые могли бы стать стандартом для нереляционных баз данных, манипулирующих неструктурированными данными в формате ключ/значение.
UnQL имеет SQL-подобный синтаксис и поддерживает такие команды, как SELECT, DELETE, INSERT и UPDATE, что делает новый язык запросов привычным для большинства разработчиков. Тем не менее, в отличие от SQL, UnQL обладает рядом расширенных возможностей, позволяющих манипулировать и выбирать информацию в хранилищах документов со сложной и неоднородной структурой. Для определения представления документов используется формат JSON (JavaScript Object Notation).
Вместо таблиц UnQL манипулирует коллекциями разнородных документов, структура которых жестко не определена и может варьироваться в разных документах (структура документа задается в самом документе, общая схема данных отсутствует). Для создания коллекций по аналогии с SQL-выражением "CREATE/DROP TABLE" используется "CREATE/DROP COLLECTION", при этом коллекция служит для логического разделения различных наборов документов.
Присутствующие в каждом документе поля определяются через JSON, в простейшем случае JSON-представление может состоять из одной строковой или числовой переменной. Каждое из таких полей может фигурировать в блоке "WHERE" запроса SELECT, при этом запрос коснется только документов, в которых определены данные поля. В запросе также могут быть заданы критерии сортировки (ORDER BY), группировки (GROUP BY, HAVING), ограничения размера выборки (LIMIT... OFFSET) и объединения (UNION, INTERSECT, EXCEPT). Поддерживается создание индексов (CREATE INDEX) и использование атомарных транзакций (BEGIN, ROLLBACK, COMMIT). Операции добавления, удаления и изменения данных (INSERT, DELETE, UPDATE) могут выполняться как в синхронном, так и в асинхронном (возвращение управления не дожидаясь фактического выполнения) режимах.
Источник: http://www.opennet.ru/opennews/art.shtml?num=31346
|
0 | Tweet | Нравится |
|