Jump to content

NoSQL

(Перенаправлено с NoSQL (концепция) )

NoSQL (первоначально термин «не- SQL » или «нереляционный») [ 1 ] — это подход к проектированию базы данных , который фокусируется на обеспечении механизма хранения и извлечения данных, моделируемых средствами, отличными от табличных отношений, используемых в реляционных базах данных . Вместо типичной табличной структуры реляционной базы данных в базах данных NoSQL данные размещаются в одной структуре данных. Поскольку эта нереляционная база данных не требует схемы , она обеспечивает быструю масштабируемость для управления большими и обычно неструктурированными наборами данных. [ 2 ] Системы NoSQL также иногда называют «не только SQL», чтобы подчеркнуть, что они могут поддерживать SQL языки запросов, подобные , или располагаться рядом с базами данных SQL в многоязычных архитектурах. [ 3 ] [ 4 ]

Нереляционные базы данных существуют с конца 1960-х годов, но название «NoSQL» было придумано только в начале 2000-х годов. [ 5 ] вызвано потребностями компаний Web 2.0 . [ 6 ] [ 7 ] Базы данных NoSQL все чаще используются в больших данных и веб-приложениях реального времени . [ 8 ]

Мотивами для этого подхода являются простота проектирования , более простое «горизонтальное» масштабирование до кластеров машин (что является проблемой для реляционных баз данных), [ 5 ] более точный контроль над доступностью и ограничение несоответствия объектно-реляционного импеданса . [ 9 ] Структуры данных , используемые базами данных NoSQL (например, пара ключ-значение , широкий столбец , график или документ ), отличаются от тех, которые используются по умолчанию в реляционных базах данных, что делает некоторые операции в NoSQL более быстрыми. Конкретная пригодность конкретной базы данных NoSQL зависит от проблемы, которую она должна решить. Иногда структуры данных, используемые базами данных NoSQL, также считаются «более гибкими», чем таблицы реляционных баз данных . [ 10 ]

Многие хранилища NoSQL ставят под угрозу согласованность (в смысле теоремы CAP ) в пользу доступности, устойчивости к разделению и скорости. Препятствия для более широкого внедрения хранилищ NoSQL включают использование языков запросов низкого уровня (например, вместо SQL), отсутствие возможности выполнять специальные соединения между таблицами, отсутствие стандартизированных интерфейсов и огромные предыдущие инвестиции в существующие реляционные базы данных. . [ 11 ] В большинстве хранилищ NoSQL отсутствуют настоящие ACID- транзакции, хотя некоторые базы данных сделали их центральными в своих проектах.

Вместо этого большинство баз данных NoSQL предлагают концепцию « конечной согласованности », при которой изменения базы данных распространяются на все узлы «со временем» (обычно в течение миллисекунд), поэтому запросы к данным могут не возвращать обновленные данные немедленно или могут привести к чтению данных, которые неточно, проблема, известная как устаревшее чтение . [ 12 ] Кроме того, в некоторых системах NoSQL могут наблюдаться потери записи и другие формы потери данных . [ 13 ] Некоторые системы NoSQL предоставляют такие концепции, как упреждающая запись в журнал, чтобы избежать потери данных. [ 14 ] При распределенной обработке транзакций в нескольких базах данных согласованность данных становится еще более серьезной проблемой, которая сложна как для NoSQL, так и для реляционных баз данных. Реляционные базы данных «не позволяют ограничениям ссылочной целостности охватывать базы данных». [ 15 ] Лишь немногие системы поддерживают как ACID транзакции , так и стандарты X/Open XA для распределенной обработки транзакций . [ 16 ] Общей чертой интерактивных реляционных баз данных являются методы конформационного релейного анализа. [ 17 ] Ограничения в интерфейсной среде преодолеваются с помощью протоколов семантической виртуализации, благодаря чему службы NoSQL доступны для большинства операционных систем . [ 18 ]

Термин NoSQL был использован Карло Строцци в 1998 году для названия его облегченной реляционной базы данных Strozzi NoSQL с открытым исходным кодом , которая не предоставляла стандартный интерфейс языка структурированных запросов (SQL), но все еще была реляционной. [ 19 ] Его СУБД NoSQL отличается от общей концепции баз данных NoSQL, существовавшей примерно в 2009 году. Строцци предполагает, что, поскольку нынешнее движение NoSQL «полностью отходит от реляционной модели, поэтому его следовало бы называть более уместно «NoREL»». [ 20 ] имея в виду «не реляционный».

Йохан Оскарссон, в то время разработчик Last.fm , вновь представил термин NoSQL в начале 2009 года, когда организовал мероприятие для обсуждения « с открытым исходным кодом распределенных нереляционных баз данных ». [ 21 ] Этим названием пытались обозначить появление растущего числа нереляционных, распределенных хранилищ данных, включая клоны с открытым исходным кодом Bigtable / MapReduce от Amazon от Google и DynamoDB .

Типы и примеры

[ редактировать ]

Существуют различные способы классификации баз данных NoSQL с разными категориями и подкатегориями, некоторые из которых частично совпадают. Ниже приводится неполная классификация по модели данных с примерами: [ 22 ]

Тип Яркие примеры этого типа
Кэш ключ-значение Apache Ignite , Couchbase , Coherence , eXtreme Scale , Hazelcast , Infinispan , Memcached , Redis , Velocity
Хранилище ключей и значений Azure CosmoDB , ArangoDB , Amazon DynamoDB , Aerospike , Couchbase , ScyllaDB
Хранилище ключей и значений (в конечном итоге согласованное) Azure Cosmos DB , База данных Oracle NoSQL , Риак , Волдеморт
Хранилище ключей и значений (упорядоченное) FoundationDB , InfinityDB , LMDB , MemcacheDB
Магазин кортежей Apache River , GigaSpaces , Tarantool , TIBCO ActiveSpaces, OpenLink Virtuoso
тройной магазин AllegroGraph , MarkLogic , Ontotext-OWLIM , база данных Oracle NoSQL , Profium Sense, Virtuoso Universal Server
База данных объектов Objectivity/DB , Perst , ZODB , db4o , GemStone/S , InterSystems Caché , JADE , ObjectDatabase++ , ObjectDB , ObjectStore , ODABA , Realm , OpenLink Virtuoso , Versant Object Database
Хранилище документов Azure Cosmos DB , ArangoDB , BaseX , Clusterpoint , Couchbase , CouchDB , DocumentDB , eXist-db , Google Cloud Firestore , IBM Domino , MarkLogic , MongoDB , RavenDB , Qizx , RethinkDB , Elasticsearch , OrientDB
Ширококолоночный магазин Azure Cosmos DB , Amazon DynamoDB , Bigtable , Cassandra , Google Cloud Datastore , HBase , Hypertable , ScyllaDB
Собственная многомодельная база данных ArangoDB , Azure Cosmos DB , OrientDB , MarkLogic , Apache Ignite , [ 23 ] [ 24 ] Couchbase , FoundationDB , База данных Oracle
База данных графов Azure Cosmos DB , AllegroGraph , ArangoDB , InfiniteGraph , Apache Giraph , MarkLogic , Neo4J , OrientDB , Virtuoso
Многозначная база данных База данных D3 Pick , Extensible Storage Engine (ESE/NT), InfinityDB , InterSystems Caché , база данных jBASE Pick , mvBase Rocket Software , mvEnterprise Rocket Software , Northgate Information Solutions Reality (исходная база данных Pick/MV), OpenQM , OpenInsight от Revelation Software (Windows) ) и Advanced Revelation (DOS), UniData Rocket U2 , UniVerse Rocket U2

Хранилище ключей и значений

[ редактировать ]

Хранилища «ключ-значение» (KV) используют ассоциативный массив (также называемый картой или словарем) в качестве фундаментальной модели данных. В этой модели данные представлены как набор пар ключ-значение, так что каждый возможный ключ появляется в коллекции не более одного раза. [ 25 ] [ 26 ]

Модель «ключ-значение» — одна из простейших нетривиальных моделей данных, а более богатые модели данных часто реализуются как ее расширение. Модель «ключ-значение» может быть расширена до дискретно упорядоченной модели, которая поддерживает ключи в лексикографическом порядке . Это расширение является мощным в вычислительном отношении, поскольку оно может эффективно извлекать выборочные диапазоны ключей . [ 27 ]

Хранилища «ключ-значение» могут использовать модели согласованности, начиная от окончательной согласованности и заканчивая сериализуемостью . Некоторые базы данных поддерживают порядок ключей. Существуют различные аппаратные реализации, и некоторые пользователи хранят данные в памяти (ОЗУ), а другие — на твердотельных накопителях (SSD) или вращающихся дисках (также известных как жесткий диск (HDD)).

Хранилище документов

[ редактировать ]

Центральным понятием хранилища документов является понятие «документ». Хотя детали этого определения различаются в разных документо-ориентированных базах данных, все они предполагают, что документы инкапсулируют и кодируют данные (или информацию) в некоторых стандартных форматах или кодировках. Используемые кодировки включают XML , YAML и JSON , а также двоичные формы, такие как BSON . Документы обращаются в базе данных с помощью уникального ключа , который представляет этот документ. Еще одной определяющей характеристикой документо-ориентированной базы данных является API или язык запросов для извлечения документов на основе их содержимого.

Различные реализации предлагают разные способы организации и/или группировки документов:

По сравнению с реляционными базами данных коллекции можно считать аналогами таблиц, а документы — аналогами записей. Но они разные — каждая запись в таблице имеет одинаковую последовательность полей, а документы в коллекции могут иметь совершенно разные поля.

Базы данных графов предназначены для данных, отношения которых хорошо представлены в виде графа, состоящего из элементов, связанных конечным числом отношений. Примеры данных включают социальные отношения , маршруты общественного транспорта, дорожные карты, топологии сетей и т. д.

Графовые базы данных и их язык запросов
Имя Язык(и) Примечания
АллегроГраф СПАРКЛ RDF Тройной магазин
Амазонка Нептун Гремлин , SPARQL База данных графов
АрангоДБ AQL, JavaScript , GraphQL многомодельной СУБД Документ , графовая база данных и хранилище ключей.
Azure Космос БД Гремлин База данных графов
DEX/Спаркзее С++ , Java , С# , Питон База данных графов
FlockDB Скала База данных графов
IBM DB2 СПАРКЛ Тройное хранилище RDF добавлено в DB2 10
бесконечный график Ява База данных графов
ЯнусГраф Ява База данных графов
МаркЛогик Java , JavaScript , SPARQL , XQuery Многомодельная база данных документов и RDF. тройное хранилище
Neo4j Сайфер База данных графов
Виртуоз OpenLink С++ , С# , Java , SPARQL промежуточного программного обеспечения и ядра базы данных Гибрид
Оракул СПАРКЛ 1.1 RDF Тройной магазин добавлен в 11g
ОриентБД Ява , SQL Многомодельная база данных документов и графов
СОВА Ява , SPARQL 1.1 RDF Тройной магазин
Чувство мастерства Ява , SPARQL RDF Тройной магазин
RedisGraph Сайфер База данных графов
Скррл Энтерпрайз Ява База данных графов
ТерминусБД JavaScript, Python , ученый-компьютерщик Тройное хранилище RDF и хранилище документов с открытым исходным кодом [ 28 ]

Производительность

[ редактировать ]

Производительность баз данных NoSQL обычно оценивается с помощью показателя пропускной способности , который измеряется как количество операций в секунду. При оценке производительности необходимо уделять внимание правильным критериям, таким как производственные конфигурации, параметры баз данных, ожидаемый объем данных и одновременные рабочие нагрузки пользователей .

Бен Скофилд оценил различные категории баз данных NoSQL следующим образом: [ 29 ]

Модель данных Производительность Масштабируемость Гибкость Сложность Целостность данных Функциональность
Хранилище ключей и значений высокий высокий высокий никто низкий переменная (нет)
Столбчатый магазин высокий высокий умеренный низкий низкий минимальный
Документоориентированный магазин высокий переменная (высокая) высокий низкий низкий переменная (низкая)
База данных графов переменная переменная высокий высокий низкомедицинский теория графов
Реляционная база данных переменная переменная низкий умеренный высокий реляционная алгебра

Сравнение производительности и масштабируемости чаще всего проводится с использованием теста YCSB .

Обработка реляционных данных

[ редактировать ]

Поскольку в большинстве баз данных NoSQL отсутствует возможность объединения запросов, схему базы данных обычно необходимо проектировать по-другому. Существует три основных метода обработки реляционных данных в базе данных NoSQL. (См. таблицу «Поддержка соединений и ACID» для баз данных NoSQL, поддерживающих соединения.)

Несколько запросов

[ редактировать ]

Вместо получения всех данных с помощью одного запроса, для получения нужных данных обычно выполняется несколько запросов. Запросы NoSQL часто выполняются быстрее, чем традиционные запросы SQL, поэтому стоимость дополнительных запросов может быть приемлемой. Если потребуется чрезмерное количество запросов, более подходящим будет один из двух других подходов.

Кэширование, репликация и ненормализованные данные

[ редактировать ]

Вместо хранения только внешних ключей обычно вместе с данными модели сохраняются фактические внешние значения. Например, каждый комментарий в блоге может включать имя пользователя в дополнение к идентификатору пользователя, что обеспечивает легкий доступ к имени пользователя без необходимости повторного поиска. Однако при изменении имени пользователя его теперь необходимо будет изменить во многих местах базы данных. Таким образом, этот подход работает лучше, когда чтение происходит гораздо чаще, чем запись. [ 30 ]

Вложение данных

[ редактировать ]

В базах данных документов, таких как MongoDB, обычно больше данных помещается в меньшее количество коллекций. Например, в приложении для ведения блога можно сохранить комментарии в документе записи блога, чтобы при одном извлечении можно было получить все комментарии. Таким образом, при таком подходе один документ содержит все данные, необходимые для конкретной задачи.

ACID и присоединяйтесь к поддержке

[ редактировать ]

База данных помечается как поддерживающая свойства ACID (атомарность, согласованность, изоляция, долговечность) или операции соединения , если это утверждается в документации к базе данных. Однако это не обязательно означает, что эта возможность полностью поддерживается так же, как и в большинстве баз данных SQL.

База данных КИСЛОТА Присоединяется
Аэроспайк Да Нет
Апач Игнит Да Да
АрангоДБ Да Да
Амазон ДинамоБД Да Нет
Коучбейс Да Да
CouchDB Да Да
IBM DB2 Да Да
ИнфинитиБД Да Нет
ЛМДБ Да Нет
МаркЛогик Да Да [ номер 1 ]
МонгоБД Да Да [ номер 2 ]
ОриентБД Да Да [ номер 3 ]
  1. ^ Объединения не обязательно применимы к базам данных документов, но MarkLogic может выполнять соединения, используя семантику. [ 31 ]
  2. ^ MongoDB не поддерживал присоединение из сегментированной коллекции до версии 5.1. [ 32 ]
  3. ^ OrientDB может разрешать соединения 1:1 с использованием ссылок, сохраняя прямые ссылки на внешние записи. [ 33 ]

См. также

[ редактировать ]
  1. ^ http://nosql-database.org/ «ОПРЕДЕЛЕНИЕ NoSQL: базы данных следующего поколения, в основном учитывающие некоторые моменты: нереляционные, распределенные, с открытым исходным кодом и горизонтально масштабируемые».
  2. ^ https://www.ibm.com/topics/nosql-databases «Что такое база данных NoSQL?»
  3. ^ «NoSQL (не только SQL)» . База данных NoSQL, также называемая Not Only SQL
  4. ^ Фаулер, Мартин . «НосклОпределение» . многие сторонники NoSQL говорят, что это не означает «нет» SQL, скорее это означает «Не только SQL».
  5. ^ Jump up to: а б Ливитт, Нил (2010). «Смогут ли базы данных NoSQL оправдать свои обещания?» (PDF) . IEEE-компьютер . 43 (2): 12–14. дои : 10.1109/MC.2010.58 . S2CID   26876882 .
  6. ^ Мохан, К. (2013). История повторяется: разумные и бессмысленные аспекты шумихи NoSQL (PDF) . Учеб. 16-я Международная конференция. о расширении технологии баз данных.
  7. ^ «Amazon возвращается в будущее с базой данных NoSQL» . ПРОВОДНОЙ. 19 января 2012 года . Проверено 6 марта 2017 г.
  8. ^ «СУРБД доминируют на рынке баз данных, но системы NoSQL догоняют их» . DB-Engines.com. 21 ноября 2013 года . Проверено 24 ноября 2013 г.
  9. ^ NoSQL Distilled: Краткое руководство по развивающемуся миру многоязычной устойчивости. Addison-Wesley Educational Publishers Inc, 2009 г., ISBN   978-0321826626 .
  10. ^ Фогельс, Вернер (18 января 2012 г.). «Amazon DynamoDB — быстрая и масштабируемая служба баз данных NoSQL, разработанная для приложений масштаба Интернета» . Все вещи распределены . Проверено 6 марта 2017 г.
  11. ^ Гролингер, К.; Хигасино, Вашингтон; Тивари, А.; Капрец, МАМ (2013). «Управление данными в облачных средах: хранилища данных NoSQL и NewSQL» (PDF) . Айра, Спрингер . Проверено 8 января 2014 г.
  12. ^ «Джепсен: чтение устаревших данных MongoDB» . Aphyr.com . 20 апреля 2015 года . Проверено 6 марта 2017 г.
  13. ^ «Анализ больших объемов данных на Typesafe Reactive Platform» . Slideshare.net . 11 июня 2015 года . Проверено 6 марта 2017 г.
  14. ^ Фаулер, Адам. «10 заблуждений о NoSQL» . Dummies.com . Проверено 6 марта 2017 г.
  15. ^ «Нет! SQL и нет! NoSQL | Так много руководств по Oracle, так мало времени» . Iggyfernandez.wordpress.com . 29 июля 2013 года . Проверено 6 марта 2017 г.
  16. ^ Чаппл, Майк. «Модель КИСЛОТЫ» . о.com . Архивировано из оригинала 29 декабря 2016 года . Проверено 26 сентября 2012 г.
  17. ^ Фиоре, С. (2011). Управление грид- и облачными базами данных . Springer Science & Business Media. п. 210.
  18. ^ Лоуренс, Интеграция и виртуализация реляционных систем SQL и NoSQL, включая MySQL и MongoDB (2014). «Интеграция и виртуализация реляционных систем SQL и NoSQL, включая MySQL и MongoDB». Международная конференция по вычислительной науке и вычислительному интеллекту 1 .
  19. ^ Лит, Адам; Мэттсон, Джейкоб (2010). «Исследование решений для хранения больших данных: сравнение высокопроизводительных и масштабируемых решений для хранения данных для извлечения и пакетной вставки данных в реальном времени» (PDF) . Гетеборг: Факультет компьютерных наук и инженерии Технологического университета Чалмерса. п. 70 . Проверено 12 мая 2011 г. Карло Строцци впервые использовал термин NoSQL в 1998 году в качестве названия своей реляционной базы данных с открытым исходным кодом, которая не предлагала интерфейс SQL[...]
  20. ^ «Система управления реляционными базами данных NoSQL: домашняя страница» . Строцци.it. 2 октября 2007 года . Проверено 29 марта 2010 г.
  21. ^ «НетSQL 2009» . Блог.sym-link.com. 12 мая 2009 года. Архивировано из оригинала 16 июля 2011 года . Проверено 29 марта 2010 г.
  22. ^ Штраух, Кристоф. «Базы данных NoSQL» (PDF) . стр. 23–24 . Проверено 27 августа 2017 г.
  23. ^ https://apacheignite.readme.io/docs Документация Ignite
  24. ^ https://www.infoworld.com/article/3135070/data-center/fire-up-big-data-processing-with-apache-ignite.html fire-up-big-data-processing-with-apache- зажечь
  25. ^ Сэнди (14 января 2011 г.). «Хранилища ключевых значений и движение NoSQL» . Обмен стеками . Проверено 1 января 2012 г. Хранилища «ключ-значение» позволяют разработчику приложения хранить данные без схемы. Эти данные обычно состоят из строки, представляющей ключ, и фактических данных, которые считаются значением в отношениях «ключ-значение». Сами данные обычно представляют собой своего рода примитив языка программирования (строка, целое число или массив) или объект, который маршалируется привязками языка программирования к хранилищу значений ключа. Эта структура заменяет необходимость в фиксированной модели данных и обеспечивает правильное форматирование.
  26. ^ Сигер, Марк (21 сентября 2009 г.). «Хранилища ключей-значений: практический обзор» (PDF) . Марк Сигер . Проверено 1 января 2012 г. Хранилища «ключ-значение» предоставляют высокопроизводительную альтернативу системам реляционных баз данных в отношении хранения данных и доступа к ним. В этой статье представлен краткий обзор некоторых доступных в настоящее время хранилищ «ключ-значение» и их интерфейса с языком программирования Ruby.
  27. ^ Кацов, Илья (1 марта 2012 г.). «Методы моделирования данных NoSQL» . Илья Кацов . Проверено 8 мая 2014 г.
  28. ^ «TerminusDB — база данных графов документов с открытым исходным кодом, хранящаяся в памяти» . terminusdb.com . Проверено 16 декабря 2021 г.
  29. ^ Скофилд, Бен (14 января 2010 г.). «NoSQL — смерть реляционным базам данных (?)» . Проверено 26 июня 2014 г.
  30. ^ «Переход от реляционного подхода к NoSQL: с чего начать» . Couchbase.com . Проверено 11 ноября 2019 г.
  31. ^ «Не можете выполнить соединения с помощью MarkLogic? Это всего лишь вопрос семантики! — General Networks» . Gennet.com . Архивировано из оригинала 3 марта 2017 года . Проверено 6 марта 2017 г.
  32. ^ «Ограничения сегментированной коллекции» . docs.mongodb.com . Проверено 24 января 2020 г.
  33. ^ «Справочник по SQL · Руководство по OrientDB» . OrientDB.com . Проверено 24 января 2020 г.

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e927d15332713a02158370961f5f4aae__1720203540
URL1:https://arc.ask3.ru/arc/aa/e9/ae/e927d15332713a02158370961f5f4aae.html
Заголовок, (Title) документа по адресу, URL1:
NoSQL - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)