Документоориентированная БД NoSQL
Продолжаем разговор о типах СУБД NoSQL. В этот раз поговорим о документоориентированных нереляционных базах данных.
Данные, которые представлены парами ключ-значение, могут сжиматься в виде хранилища документов. Реализация похожа на хранилище «ключ-значение», но разница в том, что в документоориентированной БД хранимые значения (документы) характеризуются определённой структурой и кодировкой данных (XML, JSON, BSON).
В примере ниже мы рассмотрим данные в виде «документа», отображающего названия конкретных магазинов. Здесь важно отметить, что хотя все 3 примера и содержат местоположение, отображают они его по-разному:
{officeName: "3Pillar Noida", {Street: "B-25", City: "Noida", State: "UP", Pincode: "201301"} } {officeName: "3Pillar Timisoara", {Boulevard: "Coriolan Brediceanu No. 10", Block: "B, Ist Floor", City: "Timisoara", Pincode: "300011"} } {officeName: "3Pillar Cluj", {Latitude: "40.748328", Longitude: "-73.985560"} }
Ключевое различие между документированным хранилищем и хранилищем «ключ-значение» заключается в том, что первое включает метаданные, которые связаны с хранимым содержимым. Это, в свою очередь, позволяет делать запросы на основе содержимого. Допустим, в вышеописанном примере мы можем попытаться найти все документы, где «City» равно «Noida», что вернёт нам все документы, которые связаны с магазинами в данном городе.
Примером документоориентированной СУБД является Apache CouchDB. CouchDB применяет для хранения данных JSON, а в качестве языка запросов — JavaScript с использованием MapReduce и HTTP для API. При этом данные и отношения не хранятся в таблицах так, как это принято в традиционных реляционных БД, а, по большему счёту, являются набором независимых документов.
Также стоит упомянуть, что такие БД работают без схемы. Это упрощает задачу по добавлению полей в JSON-документы без надобности сначала заявлять об изменениях.
На сегодняшний день наиболее популярными документоориентированными СУБД являются Couchbase и MongoDB.
Источник — «EXPLORING THE DIFFERENT TYPES OF NOSQL DATABASES».