Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Документ-ориентированная база данных , или документ , магазин , является компьютерной программой системы и хранения данных предназначены для хранения, извлечения и управления документами , ориентированных на информацию, также известную как полуструктурированные данные . [1]

Документно-ориентированные базы данных являются одной из основных категорий баз данных NoSQL , и популярность термина «документно-ориентированная база данных» выросла [2] с использованием самого термина NoSQL. Базы данных XML - это подкласс документно-ориентированных баз данных, оптимизированных для работы с документами XML . Базы данных графов похожи, но добавляют еще один уровень, взаимосвязь , который позволяет им связывать документы для быстрого просмотра.

Документно-ориентированные базы данных по своей сути являются подклассом хранилища ключей и значений , еще одной концепции базы данных NoSQL. Разница заключается в способе обработки данных; в хранилище "ключ-значение" данные считаются непрозрачными для базы данных, тогда как система, ориентированная на документы, полагается на внутреннюю структуру документа для извлечения метаданных, которые ядро ​​базы данных использует для дальнейшей оптимизации. Хотя разница часто незначительна из-за инструментов в системах, [а] концептуально хранилище документов разработано, чтобы предложить более богатый опыт работы с современными методами программирования.

Базы данных документов [b] сильно отличаются от традиционных реляционных баз данных (RDB). Реляционные базы данных обычно хранят данные в отдельных таблицах , определенных программистом, и один объект может быть распределен по нескольким таблицам. Базы данных документов хранят всю информацию для данного объекта в единственном экземпляре в базе данных, и каждый хранимый объект может отличаться от любого другого. Это устраняет необходимость объектно-реляционного сопоставления при загрузке данных в базу данных.

Документы [ править ]

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

Документы в хранилище документов примерно эквивалентны программной концепции объекта. От них не требуется придерживаться стандартной схемы, и при этом они не будут иметь одинаковые разделы, слоты, части или ключи. Как правило, программы, использующие объекты, имеют много разных типов объектов, и эти объекты часто имеют много необязательных полей. Каждый объект, даже принадлежащий к одному классу, может выглядеть совершенно по-разному. Хранилища документов похожи в том, что они позволяют хранить разные типы документов в одном хранилище, допускают, чтобы поля в них были необязательными, и часто позволяют их кодировать с использованием разных систем кодирования. Например, это документ, закодированный в JSON:

{  "FirstName" :  "Bob" ,  "Address" :  "Oak St. 5" ,  "Хобби" :  "парусный спорт" }

Второй документ может быть закодирован в XML как:

 <contact>  <firstname> Боб </firstname>  <lastname> Смит </lastname>  <phone  type = "Cell" > (123) 555-0178 </phone>  <phone  type = "Work" > (890) 555- 0133 </phone>  <address>  <type> Home </type>  <street1> 123 Back St. </street1>  <city> Boys </city>  <state> AR </state>  <zip> 32225 </ zip >  <страна> США </ country>  </address>  </contact>

Эти два документа имеют общие структурные элементы друг с другом, но каждый также имеет уникальные элементы. Структура, текст и другие данные внутри документа обычно называются содержимым документа, и на них можно ссылаться с помощью методов поиска или редактирования (см. Ниже). В отличие от реляционной базы данных, где каждая запись содержит одни и те же поля, а неиспользуемые поля остаются пустыми; ни в одном документе (записи) в приведенном выше примере нет пустых «полей». Такой подход позволяет добавлять новую информацию к некоторым записям, не требуя, чтобы все остальные записи в базе данных имели одинаковую структуру.

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

CRUD операции [ править ]

Основные операции, которые документно-ориентированная база данных поддерживает для документов, аналогичны другим базам данных, и хотя терминология не полностью стандартизирована, большинство практиков распознают их как CRUD :

  • Создание (или вставка)
  • Извлечение (или запрос, поиск, чтение или поиск)
  • Обновить (или отредактировать)
  • Удаление (или удаление)

Ключи [ править ]

Документы адресуются в базе данных с помощью уникального ключа, который представляет этот документ. Этот ключ представляет собой простой идентификатор (или ID), обычно строку , URI или путь . Ключ можно использовать для извлечения документа из базы данных. Обычно база данных сохраняет индекс ключа для ускорения поиска документа, а в некоторых случаях ключ требуется для создания или вставки документа в базу данных.

Получение [ править ]

Другой определяющей характеристикой документно-ориентированной базы данных является то, что помимо простого поиска по ключу к документу, который можно использовать для извлечения документа, база данных предлагает API или язык запросов, который позволяет пользователю извлекать документы на основе содержимого (или метаданные). Например, вам может потребоваться запрос, который извлекает все документы с определенным полем, для которого задано определенное значение. Набор доступных API запросов или функций языка запросов, а также ожидаемая производительность запросов значительно различаются от одной реализации к другой. Аналогичным образом, конкретный набор доступных параметров индексации и конфигурации сильно зависит от реализации.

Именно здесь хранилище документов больше всего отличается от хранилища "ключ-значение". Теоретически значения в хранилище ключей и значений непрозрачны для хранилища, они по сути являются черными ящиками. Они могут предлагать системы поиска, аналогичные тем, что используются в хранилищах документов, но могут иметь меньшее понимание организации контента. Хранилища документов используют метаданные в документе для классификации содержимого, позволяя им, например, понимать, что одна серия цифр - это номер телефона, а другая - почтовый индекс. Это позволяет им выполнять поиск по этим типам данных, например, по всем телефонным номерам, содержащим 555, при этом почтовый индекс 55555 игнорируется.

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

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

Организация [ править ]

Реализации базы данных документов предлагают множество способов организации документов, включая понятия

  • Коллекции: группы документов, где, в зависимости от реализации, документ может быть принудительно размещен внутри одной коллекции или может быть разрешен для существования в нескольких коллекциях.
  • Теги и невидимые метаданные: дополнительные данные вне содержимого документа
  • Иерархии каталогов: группы документов, организованные в древовидную структуру, обычно на основе пути или URI.

Иногда эти организационные понятия различаются по степени логического и физического представления (например, на диске или в памяти).

Связь с другими базами данных [ править ]

Связь с хранилищами ключей и значений [ править ]

Документно-ориентированная база данных - это специализированное хранилище ключей и значений , которое само по себе является другой категорией баз данных NoSQL. В простом хранилище "ключ-значение" содержимое документа непрозрачно. Документно-ориентированная база данных предоставляет API или язык запросов / обновлений, который предоставляет возможность запрашивать или обновлять данные на основе внутренней структуры документа . Это различие может быть незначительным для пользователей, которым не нужны более обширные API запросов, извлечения или редактирования, которые обычно предоставляются базами данных документов. Современные хранилища ключей и значений часто включают функции для работы с метаданными, стирающие границы между хранилищами документов.

Связь с поисковыми системами [ править ]

Некоторые поисковые системы (также известные как поиск информации ), такие как Elasticsearch, предоставляют достаточно основных операций с документами, чтобы соответствовать определению документно-ориентированной базы данных.

Связь с реляционными базами данных [ править ]

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

Например, приложение адресной книги обычно должно хранить имя контакта, необязательное изображение, один или несколько номеров телефонов, один или несколько почтовых адресов и один или несколько адресов электронной почты. В канонической реляционной базе данных таблицы будут созданы для каждой из этих строк с предопределенными полями для каждого бита данных: таблица CONTACT может включать столбцы FIRST_NAME, LAST_NAME и IMAGE, а таблица PHONE_NUMBER может включать COUNTRY_CODE, AREA_CODE, PHONE_NUMBER и TYPE ( дом, работа и т. д.). Таблица PHONE_NUMBER также содержит столбец внешнего ключа «CONTACT_ID», который содержит уникальный идентификационный номер, присвоенный контакту при его создании. Чтобы воссоздать исходный контакт, ядро ​​базы данных использует внешние ключи для поиска связанных элементов в группе таблиц и восстановления исходных данных.

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

Ключевое различие между документно-ориентированной и реляционной моделями состоит в том, что форматы данных не определены заранее в случае документа. В большинстве случаев любой документ может храниться в любой базе данных, и эти документы могут измениться по типу и форме в любое время. Если кто-то желает добавить COUNTRY_FLAG в CONTACT, это поле можно добавлять в новые документы по мере их вставки, это не повлияет на базу данных или уже сохраненные документы. Чтобы облегчить поиск информации из базы данных, документно-ориентированные системы обычно позволяют администратору давать подсказки.в базу данных для поиска определенных типов информации. Они работают аналогично индексам в реляционном случае. Большинство из них также предлагают возможность добавлять дополнительные метаданные вне содержимого самого документа, например, отмечая записи как часть адресной книги, что позволяет программисту извлекать связанные типы информации, такие как «все записи адресной книги» . Это обеспечивает функциональность, аналогичную таблице, но отделяет концепцию (категории данных) от ее физической реализации (таблиц).

В классической нормализованной реляционной модели объекты в базе данных представлены в виде отдельных строк данных без какой-либо внутренней структуры, кроме той, которая им дана при их извлечении. Это приводит к проблемам при попытке трансляции программных объектов в связанные с ними строки базы данных и из них, проблема известна как несоответствие объектно-реляционного импеданса . [4] Документ хранит более внимательно или, в некоторых случаях, напрямую отображает программные объекты в хранилище. Они часто продаются с использованием термина NoSQL .

Реализации [ править ]

Реализации базы данных XML [ править ]

Большинство баз данных XML являются базами данных, ориентированными на документы.

См. Также [ править ]

  • Теория баз данных
  • Иерархия данных
  • Анализ данных
  • Полнотекстовый поиск
  • База данных в памяти
  • Протокол доступа к сообщениям в Интернете (IMAP)
  • Машиносчитываемые документы
  • Многомодельная база данных
  • NoSQL
  • База данных объектов
  • Онлайн база данных
  • База данных в реальном времени
  • Реляционная база данных

Заметки [ править ]

  1. ^ До такой степени, что системы, ориентированные на документы, и системы "ключ-значение" часто можно менять местами в работе.
  2. ^ И хранилища "ключ-значение" в целом.

Ссылки [ править ]

  1. Дрейк, Марк (9 августа 2019 г.). «Сравнение систем и моделей управления базами данных NoSQL» . DigitalOcean . Архивировано из оригинального 13 августа 2019 года . Проверено 23 августа 2019 . Документно-ориентированные базы данных или хранилища документов - это базы данных NoSQL, которые хранят данные в форме документов. Хранилища документов - это тип хранилища "ключ-значение": каждый документ имеет уникальный идентификатор - свой ключ, а сам документ служит значением.
  2. ^ «Рейтинг движков DB по категории модели базы данных» .
  3. ^ "Описание основ нормализации базы данных" . Microsoft .
  4. ^ Wambler, Скотт. «Объектно-реляционное несоответствие импеданса» . Гибкие данные .
  5. ^ "Документация | Aerospike - Магазин ключевых значений" . docs.aerospike.com . Проверено 3 мая 2021 года .
  6. ^ "Документация | Aerospike" . docs.aerospike.com . Проверено 3 мая 2021 года .
  7. ^ "Протокол HTTP для AllegroGraph" .
  8. ^ "Многомодельная высокодоступная база данных NoSQL" . ArangoDB .
  9. Документация, заархивированная 20 августа 2012 г., на Wayback Machine . Диван. Проверено 18 сентября 2013.
  10. ^ "Apache CouchDB" . Apache Couchdb . Архивировано из оригинального 20 октября 2011 года.
  11. ^ "HTTP_Document_API - Couchdb Wiki" . Архивировано из оригинала на 2013-03-01 . Проверено 14 октября 2011 .
  12. ^ «Создать контейнер конечной точки HTTP HTTP (заархивированная копия)» . Архивировано из оригинала на 2015-06-22 . Проверено 22 июня 2015 .
  13. ^ eXist-db База данных XML с открытым исходным кодом . Exist-db.org. Проверено 18 сентября 2013.
  14. ^ «Сравните редакции Informix версии 12» . 22 июля 2016 г.
  15. ^ «Лицензирование MarkLogic» . Архивировано из оригинала на 2012-01-12 . Проверено 28 декабря 2011 .
  16. ^ «Лицензирование MongoDB» .
  17. ^ "Новый драйвер MongoDB Rust" . MongoDB . Проверено 1 февраля 2018 .
  18. ^ «Справочник по драйверам, поддерживаемым сообществом» .
  19. ^ «HTTP-интерфейс - экосистема MongoDB» . Документы MongoDB .
  20. ^ «GitHub - mongodb / docs-экосистема: Документация экосистемы MongoDB» . 27 июня 2019 г. - через GitHub.
  21. ^ "GT.M Высокопроизводительный механизм базы данных TP" .
  22. ^ «PostgreSQL: Лицензия» . PostgreSQL .
  23. ^ «Передача авторских прав Linux Foundation, перелицензирование RethinkDB под ASLv2» . github.com . Проверено 27 января 2020 года .

Дальнейшее чтение [ править ]

  • Ассаф Аркин. (2007, 20 сентября). Согласованность чтения: немые базы данных, интеллектуальные службы.


Внешние ссылки [ править ]

  • DB-Engines Рейтинг хранилищ документов по популярности, обновляется ежемесячно