Изначально слово NoSQL являлось акронимом из двух слов английского языка: No («Не») и SQL (сокращение от англ.Structured Query Language — «структурированный язык запросов»), что даёт термину смысл «отрицающий SQL». Возможно, что первые, кто стал употреблять этот термин, хотели сказать «No RDBMS» («не реляционная СУБД») или «no relational» («не реляционный»), но NoSQL звучало лучше и в итоге прижилось (в качестве альтернативы предлагалось также NonRel). Позднее для NoSQL было придумано объяснение «Not Only SQL» («не только SQL»). NoSQL стал общим термином для различных баз данных и хранилищ, но он не обозначает какую-либо одну конкретную технологию или продукт[2].
Развитие идеи
Нереляционные системы использовались на всём протяжении истории современной вычислительной техники, и даже доминировали во времена первых мейнфреймов, пока не были вытеснены реляционными СУБД, сохранив применение в специализированных системах (например, иерархических службах каталогов). Распространение нереляционных СУБД в 2000-е годы произошло из-за необходимости создания параллельных распределённых систем для высокомасштабируемых интернет-приложений, таких как поисковые системы[2]. В начале 2000-х годов Google построил высокомасштабируемую поисковую систему и приложения: GMail, Google Maps, Google Earth, применив распределённую файловую систему, распределённую систему координации и технику MapReduce. Позднее была создана масштабируемая СУБД категории «семейство столбцов». Публикация компанией Google описаний этих технологий привела к всплеску интереса среди разработчиков открытого программного обеспечения, в результате чего был создан Hadoop и запущены связанные с ним проекты, призванные создать подобные Google технологии. В 2007 году примеру Google последовал Amazon.com, опубликовав статьи о высокодоступной базе данных Amazon DynamoDB[3].
Поддержка гигантов индустрии менее чем за пять лет привела к широкому распространению технологий NoSQL (и подобных) для управления «большими данными», а к направлению присоединились другие участники, в том числе IBM, Facebook, Netflix, eBay, Hulu, Yahoo!, со своими проприетарными и открытыми решениями[3].
Основные черты
Традиционные СУБД ориентируются на требования ACID к транзакционной системе: атомарность (англ.atomicity), согласованность (англ.consistency), изолированность (англ.isolation), долговечность (англ.durability), тогда как в NoSQL вместо ACID может рассматриваться набор свойств BASE[1]:
базовая доступность (англ.basic availability) — каждый запрос гарантированно завершается (успешно или безуспешно).
гибкое состояние (англ.soft state) — состояние системы может изменяться со временем, даже без ввода новых данных, для достижения согласования данных.
согласованность в конечном счёте (англ.eventual consistency) — данные могут быть некоторое время рассогласованы, но приходят к согласованию через некоторое время.
Термин «BASE» был предложен Эриком Брюером, автором теоремы CAP, согласно которой, в распределённых вычислениях можно обеспечить только два из трёх свойств: согласованность данных, доступность или устойчивость к разделению[1].
Разумеется, системы на основе BASE не могут использоваться в любых приложениях: для функционирования биржевых и банковских систем использование транзакций является необходимостью. В то же время свойства ACID, какими бы желанными они ни были, практически невозможно обеспечить в системах с многомиллионной веб-аудиторией, вроде amazon.com[1]. Таким образом, проектировщики NoSQL-систем жертвуют согласованностью данных ради достижения двух других свойств из теоремы CAP[4]. Некоторые СУБД, например, Riak, позволяют настраивать требуемые характеристики доступности-согласованности даже для отдельных запросов путём задания количества узлов, необходимых для подтверждения успеха транзакции.[5]
Решения NoSQL отличаются не только проектированием с учётом масштабирования. Другими характерными чертами NoSQL-решений являются[6][7]:
Описание схемы данных в случае использования NoSQL-решений может осуществляться через использование различных структур данных: хеш-таблиц, деревьев и других.
В зависимости от модели данных и подходов к распределённости и репликации в NoSQL-движении выделяются четыре основных типа систем: «ключ — значение» (англ.key-value store), «семейство столбцов» (column-family store), документоориентированные (document store), графовые.
Ключ — значение
Модель «ключ — значение» является простейшим вариантом, использующим ключ для доступа к значению. Такие системы используются для хранения изображений, создания специализированных файловых систем, в качестве кэшей для объектов, а также в системах, спроектированных с прицелом на масштабируемость. Примеры таких хранилищ — Berkeley DB, MemcacheDB[англ.], Redis, Riak, Amazon DynamoDB[6].
Системы типа «семейство столбцов» и документно-ориентированные системы имеют близкие сценарии использования: системы управления содержимым, блоги, регистрация событий. Использование временных меток позволяет использовать этот вид систем для организации счётчиков, а также регистрации и обработки различных данных, связанных со временем[8].
В отличие от столбцового хранения, применяемого в некоторых реляционных СУБД, хранящих данные по столбцам в сжатом виде для эффективности в OLAP-сценариях, модель «семейство столбцов» хранит данные построчно, и обеспечивает высокую производительность, прежде всего, в оперативных сценариях, тогда как для запросов, требующих обхода большого объёма данных с агрегацией результатов, как правило, неэффективна[8][9].
Так как рёбра графа материализованы (англ.materialized), то есть, являются хранимыми, обход графа не требует дополнительных вычислений (как соединение в SQL), но для нахождения начальной вершины обхода требуется наличие индексов. Графовые СУБД как правило поддерживают ACID, а также поддерживают специализированные языки запросов, такие как Gremlin, Cypher, SPARQL, GraphQL.
UnQL
В июле 2011 компания Couchbase, разработчик CouchDB, Memcached и Membase, анонсировала создание нового SQL-подобного языка запросов — UnQL (Unstructured Data Query Language). Работы по созданию нового языка выполнили создатель SQLite Ричард Гипп (англ.Richard Hipp) и основатель проекта CouchDB Дэмиен Кац (англ.Damien Katz). Разработка передана сообществу на правах общественного достояния[11][12][13]. Последний раз UnQL обновлялся в августе 2011 года[14], фактически проект не получил никакой поддержки.
↑UnQL: Timeline (неопр.). unql.sqlite.org. Дата обращения: 18 октября 2021. Архивировано 18 октября 2021 года.
Литература
Мартин Фаулер, Прамодкумар Дж. Садаладж. NoSQL: новая методология разработки нереляционных баз данных = NoSQL Distilled. — М.: «Вильямс», 2013. — 192 с. — ISBN 978-5-8459-1829-1.
Dan McCreary, Ann Kelly. Making Sense of NoSQL: A guide for managers and the rest of us. — Manning Publications, 2013. — 312 p. — ISBN 978-1-61729-107-4.
Olivier Curé, Guillaume Blin.Chapter 2. Database Management Systems // RDF Database Systems: Triples Storage and SPARQL Query Processing. — Elsevier Science, 2014. — 256 p. — ISBN 978-0-12-800470-8.
Проверить достоверность указанной в статье информации. На странице обсуждения должны быть пояснения.
После исправления проблемы исключите её из списка. Удалите шаблон, если устранены все недостатки.
В сносках к статье найдены неработоспособные вики-ссылки.
Исправьте короткие примечания, установленные через шаблон {{sfn}} или его аналоги, в соответствии с инструкцией к шаблону, или добавьте недостающие публикации в раздел источников. Список сносок: Vaish, 2013
Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!