The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

30.07.2011 09:51  Создатели CouchDB и SQLite представили UnQL, аналог SQL для систем NoSQL

Компания Couchbase, развивающая такие системы, как CouchDB, Memcached и Membase, анонсировала создание нового языка запросов - UnQL (Unstructured Data Query Language), напоминающего SQL, но ориентированного на работу с неструктурированными данными. Проект выполнен совместными усилиями Ричарда Гиппа (Richard Hipp), создателя SQLite, и Дэмиена Каца (Damien Katz), основателя проекта CouchDB. Разработка передана сообществу в виде общественного достояния.

Основной целью разработки было создание для 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) могут выполняться как в синхронном, так и в асинхронном (возвращение управления не дожидаясь фактического выполнения) режимах.

  1. Главная ссылка к новости (http://www.couchbase.com/press...)
  2. OpenNews: Ведущие поставщики NoSQL-баз CouchOne и Membase объявили о слиянии
  3. OpenNews: Проект NewSQL призван решить проблемы, с которыми столкнулся Facebook, используя MySQL
Лицензия: CC-BY
Тип: Интересно / К сведению
Ключевые слова: nosql, unql
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аноним (-), 12:14, 30/07/2011 [ответить] [показать ветку] [···]     [к модератору]
  • –5 +/
    Типа чтобы вместо SQL иньекций были UnQL иньекции Вообще-то главные плюсы nosql... весь текст скрыт [показать]
     
     
  • 2.2, VoDA (ok), 12:18, 30/07/2011 [^] [ответить]    [к модератору]  
  • –2 +/
    injection это косяк языков работающих с СУБД, но не самих СУБД. Запретить в драйвере PHP делать конкатенацию WHERE, заставить работать через связанные переменные и инжекции исчезнут как класс =)))
     
     
  • 3.16, Онаним (?), 16:58, 30/07/2011 [^] [ответить]    [к модератору]  
  • +1 +/
    В драйвере PHP? ага, хорошо сказал
     
  • 3.18, Аноним (-), 17:26, 30/07/2011 [^] [ответить]     [к модератору]  
  • +1 +/
    Попробуйте допустить такой косяк в базе ключ-значение Хоть на пыхпыхе хоть н... весь текст скрыт [показать]
     
     
  • 4.44, Etch (?), 19:27, 30/07/2011 [^] [ответить]    [к модератору]  
  • +1 +/
    Там, где есть 'WHERE', всегда можно вставить ' OR своё условие'.
     
  • 4.85, шо (?), 15:12, 03/08/2011 [^] [ответить]    [к модератору]  
  • +1 +/
    не k-v storage единым жив NoSQL
     
  • 3.36, FSA (??), 18:40, 30/07/2011 [^] [ответить]    [к модератору]  
  • +/
    Откройте для себя mysqli. Используем prepare и bind_param и SQL-injections нам не страшны.
     
     
  • 4.53, DeadLoco (ok), 20:22, 30/07/2011 [^] [ответить]    [к модератору]  
  • –1 +/
    А использовать хранимые процедурки и к ним обращаться - не проще ли? И не эффективней ли, чем в коде каждый раз препарировать запрос, выполняя, как минимум, лишние повторы парсинга кода?
     
     
  • 5.58, klalafuda (?), 21:32, 30/07/2011 [^] [ответить]     [к модератору]  
  • +2 +/
    Вообще то prepared statements и stored procedures - это как бы ортогональные дру... весь текст скрыт [показать]
     
  • 2.4, Xasd (ok), 12:59, 30/07/2011 [^] [ответить]     [к модератору]  
  • +/
    этого риска нет в любом случае, если у программиста руки не из Ж растут каждый р... весь текст скрыт [показать]
     
     
  • 3.23, Аноним (-), 17:42, 30/07/2011 [^] [ответить]     [к модератору]  
  • +/
    Он всегда есть, потому что параметры передаются вместе с самим запросом, юзер на... весь текст скрыт [показать]
     
     
  • 4.80, Aleks Revo (?), 21:36, 31/07/2011 [^] [ответить]     [к модератору]  
  • +/
    Если Вы не знаете, что такое границы , их проверка и подготовка значений - не д... весь текст скрыт [показать]
     
     
  • 5.86, Аноним (-), 19:33, 04/08/2011 [^] [ответить]     [к модератору]  
  • +/
    Автоматизация костылестроения и тюнинг костылей Шедеврально А в базах ключ-зн... весь текст скрыт [показать]
     
  • 2.6, Анон (?), 13:05, 30/07/2011 [^] [ответить]     [к модератору]  
  • +/
    Признаюсь, я никогди не работал с не SQL СУБД, поэтому мне сложно судить нужен л... весь текст скрыт [показать]
     
     
  • 3.12, anonymous (??), 14:19, 30/07/2011 [^] [ответить]    [к модератору]  
  • +/
    > тогда каждый разработчик (производитель) реляционной СУБД придумывал бы свои язык запросов

    а NoSQL обычно не реляционные. опаньки.

     
  • 3.24, Аноним (-), 17:44, 30/07/2011 [^] [ответить]     [к модератору]  
  • +/
    Да чего уж там, давайте допустим что по другому работать с базами вообще нельзя ... весь текст скрыт [показать]
     
     
  • 4.32, Аноним (-), 18:07, 30/07/2011 [^] [ответить]    [к модератору]  
  • +1 +/
    > Слив в
    > 20 раз по производительности и позволив over 9000 возможных атак на
    > базу.

    В 20? Относительно CouchDb mapreduce "слив" в 2000 раз на сложных запросах.


     
  • 2.11, anonymous (??), 14:18, 30/07/2011 [^] [ответить]     [к модератору]  
  • +/
    мда похапэ на марше вообще-то, 171 главные плюсы NoSQL 187 совсем не в это... весь текст скрыт [показать]
     
     
  • 3.25, Аноним (-), 17:48, 30/07/2011 [^] [ответить]     [к модератору]  
  • +2 +/
    Самый кошерный nosql - базы типа ключ-значение Убойно быстро И не хакабельно п... весь текст скрыт [показать]
     
     
  • 4.30, Alien (??), 18:00, 30/07/2011 [^] [ответить]     [к модератору]  
  • +3 +/
    1 Умные люди стоят денег, а их не так много, и людей и денег 2 С усложнением ... весь текст скрыт [показать]
     
     
  • 5.87, Аноним (-), 19:41, 04/08/2011 [^] [ответить]     [к модератору]  
  • +/
    Ну так нормальный человек стремится поумнеть Зачем же деградантствовать и полаг... весь текст скрыт [показать]
     
  • 4.38, FSA (??), 18:45, 30/07/2011 [^] [ответить]     [к модератору]  
  • +/
    CO2 вообще уже давно мало кого волнуют В корпоративном мире уже давно царствует... весь текст скрыт [показать]
     
     
  • 5.40, anonymous (??), 18:48, 30/07/2011 [^] [ответить]    [к модератору]  
  • +/
    > лишь бы работало и как можно быстрее.

    ну, то есть, лишь бы работало и *писалось как можно быстрее*.

     
  • 5.88, Аноним (-), 19:42, 04/08/2011 [^] [ответить]    [к модератору]  
  • –1 +/
    > CO2 вообще уже давно мало кого волнуют.

    Так то от скудоумия. Планета у нас одна. Другой - нет. Засрем - вымрем как мамонты!
    И никакие доллары не помогут.

     
     ....нить скрыта, показать (23)

  • 1.3, Аноним (-), 12:46, 30/07/2011 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    интересно как оно все тормозит...
    если есть документооборот с кучей фирм и каждая в своем формате данные предоставляет, то может и есть смысл...
     
  • 1.5, Vitold S (?), 13:05, 30/07/2011 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    А какой практический смысл введения UnQL?
     
     
  • 2.7, Vitold S (?), 13:06, 30/07/2011 [^] [ответить]    [к модератору]  
  • +/
    Хотя в принципе наверное глобальный UPDATE или LEFT JOIN коллекций сделать на стороне базы будет быстрее чем в скриптах. Или я ошибаюсь?
     
  • 2.13, anonymous (??), 14:20, 30/07/2011 [^] [ответить]    [к модератору]  
  • +/
    > А какой практический смысл введения UnQL?

    привлечение большего количества обезьян.

     
  • 2.17, VoDA (ok), 17:18, 30/07/2011 [^] [ответить]    [к модератору]  
  • +/
    > А какой практический смысл введения UnQL?

    переносимость приложений между NoSQL БД, плюс быстрее народ будет въезжать как работать с этими такими странными СУБД

     
     
  • 3.27, Аноним (-), 17:50, 30/07/2011 [^] [ответить]     [к модератору]  
  • –2 +/
    Да, специально обученные обезьяны которые еле освоили синтаксис для даунов приду... весь текст скрыт [показать]
     
     
  • 4.69, VoDA (ok), 12:12, 31/07/2011 [^] [ответить]     [к модератору]  
  • –2 +/
    Чудаки хватит уже недостатки PHP выдавать за общие или PHP считать единственн... весь текст скрыт [показать]
     
     
  • 5.75, Аноним (-), 18:45, 31/07/2011 [^] [ответить]     [к модератору]  
  • +1 +/
    Да вы сударь врете Вот выдержка из гайда самого популярного java-ORM фреймворка... весь текст скрыт [показать]
     
  • 5.89, Аноним (-), 19:44, 04/08/2011 [^] [ответить]    [к модератору]  
  • +/
    > Чудаки хватит уже недостатки PHP выдавать за общие...

    В каком месте я вообще хоть слово про пхп сказал? У вас какие-то личные счеты к пыху?

     
  • 2.84, Pavel Drobushevich (?), 12:47, 03/08/2011 [^] [ответить]     [к модератору]  
  • +/
    А вы пробовали делать выборки данных для какой-нибудь NoSQL Вот пример как выгл... весь текст скрыт [показать]
     
  • 1.8, Аноним (-), 13:11, 30/07/2011 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Интересно, когда они для couchdb  это реализуют?..
     
  • 1.9, gegMOPO4 (ok), 13:15, 30/07/2011 [ответить] [показать ветку] [···]    [к модератору]  
  • +5 +/
    UnQL — это SQL для NoSQL, только без SQL.
     
     
  • 2.71, Captain Beefheart (?), 13:22, 31/07/2011 [^] [ответить]    [к модератору]  
  • +1 +/
    > UnQL — это SQL для NoSQL, только без SQL.

    Next step NoUnQL?

     
     
  • 3.90, Аноним (-), 19:45, 04/08/2011 [^] [ответить]    [к модератору]  
  • +/
    > Next step NoUnQL?

    А потом UnUnSQL? А на какой итерации наступает stack overflow? :)

     
  • 1.10, anonymous (??), 14:15, 30/07/2011 [ответить] [показать ветку] [···]    [к модератору]  
  • +6 +/
    потом добавят реляционность, потом жёсткие схемы данных, потом… wait! oh, shi~~~~~~
     
     
  • 2.21, Crazy Alex (ok), 17:38, 30/07/2011 [^] [ответить]    [к модератору]  
  • –1 +/
    Причём берут из реляционных БД худшие черты. Это надо же - SQL взять за образец.
     
     
  • 3.54, DeadLoco (ok), 20:24, 30/07/2011 [^] [ответить]    [к модератору]  
  • +1 +/
    > Причём берут из реляционных БД худшие черты.
    > Это надо же - SQL взять за образец.

    А что надо было брать за образец?

     
     
  • 4.59, all_glory_to_the_hypnotoad (ok), 23:52, 30/07/2011 [^] [ответить]    [к модератору]  
  • +/
    Tutorial/Industrial D
     
  • 1.14, Пиу (?), 16:15, 30/07/2011 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    nosql is a joke
    какая разница что в качестве запросов - sql или жабаскрипт?
     
     
  • 2.29, Аноним (-), 17:54, 30/07/2011 [^] [ответить]     [к модератору]  
  • +/
    NoSQL сами по себе не оперируют ява-скриптом А из какого языка приедет запрос к ... весь текст скрыт [показать]
     
     
  • 3.33, Аноним (-), 18:15, 30/07/2011 [^] [ответить]     [к модератору]  
  • +/
    Смотря какие CouchDB как раз оперирует Все донные хранятся в json Все вычислен... весь текст скрыт [показать]
     
  • 3.42, Пиу (?), 19:03, 30/07/2011 [^] [ответить]     [к модератору]  
  • +/
    на каждом шагу - это такая гипербола, литературный оборот, да и вообще эскейп... весь текст скрыт [показать]
     
     
  • 4.67, Аноним (-), 10:27, 31/07/2011 [^] [ответить]     [к модератору]  
  • +/
    Ты это скажи программистам например vBulletin в котором очередной раз обнаружили... весь текст скрыт [показать]
     
  • 4.70, VoDA (ok), 12:15, 31/07/2011 [^] [ответить]    [к модератору]  
  • +/

    > "на каждом шагу" - это такая гипербола, литературный оборот, да?
    > и вообще эскейпинг спасет отца русской демократии, ага

    Эскейпинг не нужен - нужен адекватный код работы с СУБД.

     
  • 4.91, Аноним (-), 19:47, 04/08/2011 [^] [ответить]     [к модератору]  
  • +/
    По аналогии, можно сначала специально сломать вам ногу а потом рассказать что ко... весь текст скрыт [показать]
     
  • 2.31, Аноним (-), 18:04, 30/07/2011 [^] [ответить]    [к модератору]  
  • +/
    >>nosql is a joke какая разница что в качестве запросов - sql или жабаскрипт?

    А это не вы случайно для Сони сайты писали?

     
     
  • 3.41, Пиу (?), 18:59, 30/07/2011 [^] [ответить]    [к модератору]  
  • +/
    а у вас подробности взлома, сэр?
     
     
  • 4.65, Аноним (-), 10:19, 31/07/2011 [^] [ответить]     [к модератору]  
  • +/
    По данным, озвученным на BlackHat, с помощью SQL injection за год взламывается б... весь текст скрыт [показать]
     
     
  • 5.66, Аноним (-), 10:21, 31/07/2011 [^] [ответить]    [к модератору]  
  • +/
    Ссылка побилась:
    http://goo.gl/H0U9h

     
     ....нить скрыта, показать (10)

  • 1.19, Crazy Alex (ok), 17:37, 30/07/2011 [ответить] [показать ветку] [···]     [к модератору]  
  • +2 +/
    Какая редчайшая чушь 1 Реляционные базы, будучи построены на одной и той же ... весь текст скрыт [показать]
     
     
  • 2.45, all_glory_to_the_hypnotoad (ok), 19:42, 30/07/2011 [^] [ответить]     [к модератору]  
  • +/
    Нет никаких проблем в парсинге и генерации SQL, есть только проблемы его интерпр... весь текст скрыт [показать]
     
     
  • 3.47, anonymous (??), 19:48, 30/07/2011 [^] [ответить]    [к модератору]  
  • +1 +/
    > есть кучка DBAшников которые потом эти гoвнoтворения читают переделывают в
    > нормальный вид.

    и тогда всё ВНИЗАПНА! перестаёт работать.

     
     
  • 4.51, Аноним (-), 20:10, 30/07/2011 [^] [ответить]     [к модератору]  
  • +/
    Сюрприз - вменяемый ДБА правит так, что SQL-код начинает работать и работать быс... весь текст скрыт [показать]
     
     
  • 5.57, DeadLoco (ok), 20:40, 30/07/2011 [^] [ответить]     [к модератору]  
  • +/
    В моей практике удавалось путем переписывания запросов сократить время выполнени... весь текст скрыт [показать]
     
     
  • 6.63, Аноним (-), 06:42, 31/07/2011 [^] [ответить]     [к модератору]  
  • +/
    из той же серии кривых ручек года четыре назад приходило несколько клиентов, с ... весь текст скрыт [показать]
     
  • 5.77, anonymous (??), 19:06, 31/07/2011 [^] [ответить]     [к модератору]  
  • +1 +/
    вменяемых DBA очень мало, увы а если DBA пригласили уже после того, как набыд... весь текст скрыт [показать]
     
  • 5.92, Аноним (-), 19:49, 04/08/2011 [^] [ответить]     [к модератору]  
  • +/
    Сюрприз базу key-value до уровня скуля затормозить - надо сиииииииильно постара... весь текст скрыт [показать]
     
     
  • 6.95, lll (??), 12:57, 05/12/2017 [^] [ответить]    [к модератору]  
  • +/
    а при чем здесь SQL? вы сравниваете BTREE с Hash-таблицей.
     
  • 3.60, Crazy Alex (??), 02:07, 31/07/2011 [^] [ответить]     [к модератору]  
  • +/
    Основная проблема в генерации SQL - то, что в нём конструкции не могут идти в пр... весь текст скрыт [показать]
     
     
  • 4.61, Crazy Alex (??), 02:08, 31/07/2011 [^] [ответить]    [к модератору]  
  • +/
    Нет никаких проблем то, чо нагенерила софтина, нормализовать в случае надобности для чтения человеком.
     
  • 4.64, all_glory_to_the_hypnotoad (ok), 09:52, 31/07/2011 [^] [ответить]     [к модератору]  
  • +/
    Просто это операция типа конкатенации строк Ну так ни к какому языку такого тип... весь текст скрыт [показать]
     
     
  • 5.78, anonymous (??), 19:09, 31/07/2011 [^] [ответить]    [к модератору]  
  • +/
    если бы можно было пихать кучу where и прочих в произвольном порядке, а парзер их бы объединял в один — было бы намного проще и удобней.
     
     
  • 6.81, all_glory_to_the_hypnotoad (ok), 21:43, 31/07/2011 [^] [ответить]    [к модератору]  
  • +/
    SELECT ... FROM (...) WHERE;
     
     
  • 7.82, Прохожий старый анонимус (?), 17:35, 01/08/2011 [^] [ответить]    [к модератору]  
  • +/
    > SELECT ... FROM (...) WHERE;

    На третьем вложении оракля обычно перестает оптимизировать запрос целиком. Обычно плохой вариант.

     
     
  • 8.83, all_glory_to_the_hypnotoad (ok), 00:01, 02/08/2011 [^] [ответить]    [к модератору]  
  • +/
    это уже проблемы реализаций, а не языка SQL. Вероятность запутаться оптимизатору в мусорных WHERE о которых выше говорят (т.е. которые можно вставить в любое место) ещё больше.
     
     ....нить скрыта, показать (15)

  • 1.50, пвваы (?), 20:08, 30/07/2011 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    опрос
    почему НЕ нравится sql ?

    меня например он всем устраивает, на скорость он в НОРМАЛЬНЫХ программах влиять не должен, читается отлично, пишется быстро.

     
     
  • 2.52, Аноним (-), 20:10, 30/07/2011 [^] [ответить]     [к модератору]  
  • +1 +/
    Он не нравится потому, что подавляющее большинство большего, чем SELECT FROM D... весь текст скрыт [показать]
     
     
  • 3.55, DeadLoco (ok), 20:31, 30/07/2011 [^] [ответить]     [к модератору]  
  • –1 +/
    Еще он не нравится потому, что подавляющее большинство мыслит таблицы в терминах... весь текст скрыт [показать]
     
     
  • 4.93, Аноним (-), 00:11, 11/08/2011 [^] [ответить]     [к модератору]  
  • +/
    И конечно же любой теоретик в мозгу сможет трансформировать запрос в дисковые оп... весь текст скрыт [показать]
     
  • 2.62, Crazy Alex (??), 02:16, 31/07/2011 [^] [ответить]     [к модератору]  
  • +/
    Вы имели в виду SQL или реляционные базы SQL - язык достаточно уродский - как я... весь текст скрыт [показать]
     
     
  • 3.68, all_glory_to_the_hypnotoad (ok), 10:55, 31/07/2011 [^] [ответить]    [к модератору]  
  • +/
    > Не говоря о том, что в тандарт сразу надо было закладывать разделение структуры запроса и таскаемых им данных (причём ни разу не ограничваясь значениями полей) - тогда никаких инъекций не было бы как класса, а генераци стала бы ещё более удобной.

    Сразу в стандарт ничего не закладывают, сначала идут реализации и потом стандарт их догоняет. Особенно если говорить о 70-80, когда пароли принято было хранить плейн текстом.

    Связанные переменные (т.е. разделение данных и запроса) в SQL по факту дажно уже есть в нормальных СУБД и есть разделение на уровне протоколов. Ещё тут стоит заметить, что SQL всего лишь стандарт языка запросов, он _не_ может указать _как_ должно реализовываться разделение переменных. А это значит, что API может предоставлять разделение, но внутри, т.е. на уровне коммуницации между СУБД и клиентом, всё равно может быть плейн SQL.

    Делать в запросе динамическими не только данные нельзя и по этому поводу уже написано 100500 статей и книг.

    Итого, проблема разделения данных и запроса (и SQL инъеккий) это не проблема стандарта и SQL, это проблема реализации СУБД и SQL. Так исторически складывается, что прогресс в СУБД для быдлокодеров доходит позже всех остальных. Ещё это осложняется замечательным ЯП который используется в связке с этой самой замечательнйо СУБД.

     
  • 1.79, Аноним (-), 20:25, 31/07/2011 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    И чем же оно кардинально отличается от SQL?
    SELECT ... FROM ... WHERE ...
    UPDATE ... SET ...
    INSERT ...

    Слегка перекошенный SQL - это не NoSQL

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor