Документо-орієнтована система керування базами даних

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Документо-орієнтована система керування базами даних (англ. document-oriented database) — система керування базами даних, спеціально призначена для зберігання ієрархічних структур даних (документів) і зазвичай реалізована за допомогою підходу NoSQL. В основі документо-орієнтованих СКБД лежать документні сховища (англ. document store), котрі мають структуру дерева (іноді лісу). Структура дерева починається з кореневого вузла і може містити кілька внутрішніх і листових вузлів. Листові вузли містять дані, які при додаванні документа заносяться в індекси, що дозволяє навіть при досить складній структурі знаходити місце (шлях) шуканих даних. API для пошуку дозволяє знаходити за запитом документи та частини документів. На відміну від сховищ типу ключ-значення, вибірка за запитом до документного сховища може містити частини великої кількості документів без повного завантаження цих документів в оперативну пам'ять[1].

Документи можуть бути організовані (згруповані) в колекції. Їх можна вважати віддаленим аналогом таблиць реляційних СУБД, але колекції можуть містити інші колекції. Хоча документи колекції можуть бути довільними, для ефективнішого індексування краще об'єднувати у колекцію документи зі схожою структурою[1][2].

Документо-орієнтовані бази даних застосовуються у системах керування вмістом, видавничій справі, документальному пошуку тощо. Приклади СУБД даного типу — CouchDB, Couchbase, MarkLogic, MongoDB, eXist, Berkeley DB XML[3].

Документи[ред. | ред. код]

Центральним поняттям документо-орієнтованих баз даних є Документ. Деталі визначення цієї головної концепції різняться у різних реалізаціях документо-орієнтованих баз даних, але загалом всі вони мають на увазі, що документ ізолює дані та кодує їх (або інформацію) у певному форматі або кодуванні. Це кодування може використовувати XML, YAML, JSON, BSON, а також бінарні формати, такі як PDF чи документи Microsoft Office (MS Word, Excel, тощо).

Документи всередині документо-орієнтованої бази даних у певному розумінні подібні до записів або рядків реляційних баз даних, але вимоги до них не такі жорсткі. Вони не потребують задовольняти стандартній схемі, ані мати однакові секції, частини або ключі. Наприклад, такий документ

{
    Ім'я: "Микола", 
    Адреса: "Коцюбинського, 5", 
    Захоплення: "рибалка"
}

Другий документ може бути:

{
    Ім я: "Петро", 
    Адреса: "Панаса Мирного, 15", 
    Діти: [
        {Ім я: "Михайло", Вік: 10}, 
        {Ім я: "Євгенія", Вік: 8}, 
        {Ім я: "Одарка", Вік: 5}, 
        {Ім я: "Олена", Вік: 2}
    ]
}

Ці два документи мають спільні структурні елементи, але кожен має і свої власні унікальні елементи. На відміну від реляційних баз даних, де кожен запис містить однакові поля, невикористані з яких залишаються порожніми, у документно-орієнтованих базах нема пустих полів в жодному документі (запису), як у прикладі вище. Такий підхід дозволяє додавати нову інформацію у запис без потреби, щоб кожен інший подібний запис бази даних мав таку саму структуру.

Ключі[ред. | ред. код]

Документо-орієнтована СКБД звертається до документів через унікальний ключ, який представляє документ. Цей ключ часто є простим рядком, URI або шляхом. Ключ використовується для отримання документу з бази даних. Звичайно СКДБ зберігає індекс ключів для прискорення одержання документів.

Пошук[ред. | ред. код]

Іншою визначальною характеристикою документо-орієнтованих систем керування базами даних є спосіб, у який, крім простого пошуку за схемою ключ-документ, можна одержати документ. Для цього база даних надає програмний інтерфейс (API) або мову запитів, котрі дають користувачеві засоби шукати документ. Наприклад, ви хочете запитати всі документи з певним набором полів і з певними значеннями. Набір інтерфейсу запитів або мов запитів у реалізаціях, так само як і очікувана продуктивність запитів, дуже різниться від одної імплементації документо-орієнтованої СКДБ до іншої.

Організація[ред. | ред. код]

Реалізації відрізняються наборами способів організації документів, включаючи такі поширені як

Реалізації[ред. | ред. код]

Назва Видавець Ліцензія Мова Примітки RESTful API
ArangoDB triAGENS [Архівовано 15 квітня 2011 у Wayback Machine.] Apache License 2.0 C, C++ & Javascript розподілена багато-модельне, високопродуктивне сховище документів та графічна база даних так [4]
BaseX BaseX Team [Архівовано 28 вересня 2007 у Wayback Machine.] BSD License Java, XQuery Support for XML, JSON and binary formats; client-/server based architecture; concurrent structural and full-text searches and updates; REST APIs. так
Cassandra Apache Software Foundation Apache License Java JSON over HTTP так
Cloudant Cloudant, Inc. [Архівовано 25 червня 2014 у Wayback Machine.] власницька Erlang, Java, Scala та C розподілена служба баз даних на основі BigCouch, відкритого форку CouchDB від Apache так
Clusterpoint Clusterpoint Ltd. вільна спільнотна ліцензія / комерційна[5] C++ безсхемна, докумнто-орієнтована платформа з сервером зберігання даних, рушій повнотекстового пошуку, інформаційне ранжування пошукової релевантності і кластерізація так
Couchbase Server Couchbase, Inc. Apache License Erlang та C розподілена NoSQL так [6]
CouchDB Apache Software Foundation Apache License Erlang JSON через REST/HTTP з Multi-Version Concurrency Control та обмеженими ACID властивостями. Використовує MapReduce для видів і запитів[7] так [8]
eXist eXist, [1] [Архівовано 27 травня 2020 у Wayback Machine.] LGPL XQuery, Java XML через REST/HTTP, WebDAV, повнотекстовий пошук Lucene, валідація, контроль версій, кластеризація, триґери, перезапис URL, колекції, ACLS, XQuery Update так [9]
FleetDB FleetDB MIT License Clojure JSON-заснована безсхемна база даних, оптимізована для швидкої розробки (невідомо)
Jackrabbit Apache Software Foundation Apache License Java (невідомо)
Informix IBM власницька різні (сумісні з MongoDB API) реляційна база даних з JSON, реплікація, шардинг та відповідність ACID (невідомо)
Inquire Infodata Systems, Inc. власницька невідомо всередині 80-х це була домінуюча документо-орієнтована комерційна база даних, поширена і успішна. Схоже компанія вийшла з бізнесу у 2005. (невідомо)
Lotus Notes IBM власницька LotusScript, Java, Lotus @Formula (невідомо)
MarkLogic MarkLogic Corporation Free Developer license or Commercial REST, Java, XQuery, XSLT, C++ розподілена документо-орієнтована база даних з Multi-Version Concurrency Control, інтегрованим повнотекстовим пошуком та семантикою ACID-відповідних транзакцій так
MongoDB MongoDB, Inc GNU AGPL v3.0 for the DBMS, Apache 2 License for the client drivers[10] C++ Document database with replication and sharding Optional [11]
MUMPS Database[12] Proprietary and Affero GPL[13] MUMPS Commonly used in health applications. (невідомо)
OrientDB Orient Technologies [Архівовано 20 квітня 2012 у Wayback Machine.] Apache License Java JSON over HTTP так
RavenDB Hibernating Rhinos LTD [Архівовано 15 березня 2022 у Wayback Machine.] власницька та модифікована Affero GPL[14] C#, JavaScript так
Redis BSD License ANSI C Key-value store supporting lists and sets with binary-safe protocol (невідомо)
RethinkDB GNU APGL for the DBMS, Apache 2 License for the client drivers C++ (невідомо)
Rocket U2 Rocket Software власницька UniData, UniVerse так (Beta)
Sqrrl Enterprise sqrrl власницька Java Distributed, real-time database featuring cell-level security and massive scalability. так

Виноски[ред. | ред. код]

  1. а б McCreary, Kelly, 2013, 4.4. Document stores.
  2. Tiwari, 2011, Chapter 4: Understanding the Storage Architecture — Document Store Internals.
  3. McCreary, Kelly, 2013, 1.1. What is NoSQL?.
  4. ArangoDB REST API. Архів оригіналу за 4 липня 2014. Процитовано 14 червня 2014.
  5. Clusterpoint DBMS Licensing Options. Архів оригіналу за 2 травня 2012. Процитовано 14 червня 2014.
  6. Documentation [Архівовано 20 серпня 2012 у Wayback Machine.]. Couchbase. Retrieved on 2013-09-18.
  7. CouchDB Overview. Архів оригіналу за 20 жовтня 2011. Процитовано 14 червня 2014.
  8. CouchDB Document API. Архів оригіналу за 1 березня 2013. Процитовано 14 червня 2014.
  9. eXist-db Open Source Native XML Database [Архівовано 27 травня 2020 у Wayback Machine.]. Exist-db.org. Retrieved on 2013-09-18.
  10. Архівована копія. Архів оригіналу за 5 вересня 2015. Процитовано 14 червня 2014.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  11. MongoDB REST Interfaces. Архів оригіналу за 29 січня 2013. Процитовано 14 червня 2014.
  12. Extreme Database programming with MUMPS Globals (PDF). Архів оригіналу (PDF) за 6 липня 2016. Процитовано 14 червня 2014.
  13. GTM MUMPS FOSS on SourceForge. Архів оригіналу за 17 квітня 2021. Процитовано 14 червня 2014.
  14. Ravendb Licensing. Архів оригіналу за 8 червня 2014. Процитовано 14 червня 2014.

Посилання[ред. | ред. код]