База данных документов – это тип баз данных NoSQL, которые предназначены для хранения и запроса данных в виде документов в формате, подобном JSON. JavaScript Object Notation (JSON) – это открытый формат обмена данными, который читается как человеком, так и машиной. Разработчики могут использовать документы JSON в своем коде и сохранять их непосредственно в базе данных документов. Гибкий, полуструктурированный, иерархический характер документов и их баз данных позволяет им развиваться в соответствии с потребностями приложений.

База данных документов JSON
Запрос к базе данных документов JSON

В чем преимущества баз данных документов?

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

Простота разработки

Документы JSON соответствуют объектам – распространенному типу данных в большинстве языков программирования. При разработке приложений разработчики могут гибко создавать и обновлять документы непосредственно из кода. Это означает, что они тратят меньше времени на предварительное создание моделей данных. Таким образом, разработка приложений происходит быстрее и эффективнее.

Гибкая схема

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

Производительность при любом масштабе

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

Каковы варианты использования баз данных документов?

Модель документа хорошо подходит для каталогов, управления контентом и датчиками, и многого другого. Каждый документ для каждого случая использования уникален и развивается с течением времени.

Управление контентом

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

Каталоги

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

Управление датчиками

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

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

Как работают базы данных документов

В базах данных документов данные хранятся в виде пар «ключ-значение» в формате JSON. Чтение и запись документов в формате JSON в базы данных можно осуществлять программно.

Структура документов JSON

JSON представляет данные тремя способами:

Ключевое значение

Пары «ключ-значение» записаны в фигурных скобках. Ключ – это строка, а значение может быть любым типом данных, например целым, десятичным или логическим. Например, простое ключевое значение: {"year": 2013}.

Массив

Массив – это упорядоченный набор значений, определенных в левых ([) и правых (]) скобках. Элементы массива разделены запятыми. Например, {"fruit": ["apple","mango"]}.

Объекты

Объект – это набор пар «ключ-значение». По сути, документы JSON дают разработчикам возможность встраивать объекты и создавать вложенные пары. Например, {"address": {"country": "USA","state": "Texas"}}.

Пример документов JSON

В следующем примере в документе типа JSON описывается набор данных о фильме.

[
    {
        "year" : 2013,
        "title" : "Turn It Down, Or Else!",
        "info" : {
            "directors" : [ "Alice Smith", "Bob Jones"],
            "release_date" : "2013-01-18T00:00:00Z",
            "rating" : 6.2,
            "genres" : ["Comedy", "Drama"],
            "image_url" : "http://ia.media-imdb.com/images/N/O9ERWAU7FS797AJ7LU8HN09AMUP908RLlo5JF90EWR7LJKQ7@@._V1_SX400_.jpg",
            "plot" : "A rock band plays their music at high volumes, annoying the neighbors.",
            "actors" : ["David Matthewman", "Jonathan G. Neff"]
        }
    },
    {
        "year": 2015,
        "title": "The Big New Movie",
        "info": {
            "plot": "Nothing happens at all.",
            "rating": 0
        }
    }
]

Можно заметить, что в документе JSON достаточно гибко хранятся простые значения, массивы и объекты. Можно даже создать массив с объектами JSON. Таким образом, базы данных, ориентированные на документы, позволяют создавать неограниченную иерархию встроенных объектов JSON. Какая схема будет использоваться в хранилище документов, зависит только от вас.

Операции с базой данных документов

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

Создание

В базе данных можно создавать документы. Каждый документ имеет уникальный идентификатор, который служит ключом.

Чтение

Для чтения данных документа можно использовать API или язык запросов. Можно выполнять запросы, используя значения полей или ключи, а также добавлять индексы в базу данных для повышения производительности чтения.

Обновление

Вы можете гибко обновлять существующие документы. Можно переписать весь документ или обновить отдельные значения.

В чем разница между базами данных документов и хранилищами пар «ключ-значение»?

База данных «ключ‑значение» – это база данных NoSQL, в которой для хранения данных используется простой метод «ключ‑значение». Это дает возможность хранить данные как совокупность пар «ключ‑значение», в которых ключ служит уникальным идентификатором. Как ключи, так и значения могут представлять собой что угодно: от простых до сложных составных объектов.

База данных, ориентированная на документы, – это особый тип хранилища пар «ключ-значение», где ключи могут быть только строками. Кроме того, документ кодируется с использованием таких стандартов, как JSON, или сопутствующих языков, таких как XML. Можно также хранить PDF-файлы, изображения или текстовые документы непосредственно в виде значений.

При запросе в хранилище документов вы можете прочитать значение или его часть, особенно если это значение является другим объектом JSON. Например, можно задать {"book": {"id": 1,"price": $10}}, затем запросить book.price, и база данных вернет значение 10. Базы данных «ключ-значение» всегда возвращают целое значение с информацией об идентификаторе и цене.

Как AWS может удовлетворить ваши требования по работе с базой данных документов

Amazon DocumentDB (совместимость с MongoDB) – это полностью управляемый встроенный сервис баз данных документов JSON, поддерживающий рабочие нагрузки с документами, в том числе MongoDB. Для запуска и масштабирования рабочих нагрузок в Amazon DocumentDB, а также для управления ими разработчики могут использовать тот же код приложения, драйверы и инструменты MongoDB, с которыми работают сейчас. Вы получите усовершенствованную производительность, масштабируемость и доступность, не беспокоясь об управлении базовой инфраструктурой. С помощью Amazon DocumentDB вы сможете выполнять указанные ниже действия.

  • Масштабировать до миллионов запросов на чтение и запись в секунду с помощью эластичных кластеров Amazon DocumentDB практически не влияя на производительность и не управляя базовой инфраструктурой.
  • Повысить производительность чтения с использованием до 15 реплик чтения, работающих с одним и тем же базовым хранилищем, без необходимости выполнять запись на узлах реплик благодаря разделению хранения и вычислений.
  • Автоматизировать недифференцированные задачи ручного управления базами данных без лицензионных платежей, в том числе в части аппаратного обеспечения, исправлений, настройки и многого другого.
  • Обеспечить 99,99 % доступности с помощьюГлобальных кластеров Amazon DocumentDB для распределенных по всему миру приложений, поддерживающих высокую производительность локального чтения. 
  • Получить надежность в 99,99 % за счет автоматической репликации, непрерывного резервного копирования и строгой сетевой изоляции.
  • Добиться высокой надежности и долговечности благодаря отказоустойчивому и самовосстанавливающемуся хранилищу, восстановлению на момент времени, непрерывному резервному копированию и многим другим функциям. Amazon DocumentDB обеспечивает долговечность данных в трех зонах доступности в пределах одного региона за счет репликации новых записей шестью способами. При этом вы платите только за одну копию.
  • Воспользоваться высокой степенью защиты благодаря стандартному шифрованию при хранении, сетевой изоляции и расширенному аудиту, а также возможностью управления разрешениями на уровне ресурсов и точным доступом.
  • Извлечь пользу из широкого охвата соответствия требованиям, включая SOC (1, 2 и 3), PCI DSS, HIPAA и многим другим.

Начните работу с базами данных документов на AWS, создав бесплатный аккаунт уже сегодня!

Моделирование данных с помощью Amazon DocumentDB
Знакомство с эластичными кластерами Amazon DocumentDB