Выявление шаблонов доступа для приложения

Завершено

При проектировании модели данных для базы данных NoSQL цель — гарантировать, что операции с данными выполняются с наименьшим возможным количеством запросов. Для этого необходимо понимать связи между данными, а также способ доступа к данным в приложении. Эти шаблоны доступа важны, так как они вместе с связями определяют, как свойства различных сущностей группируются и хранятся в документах в контейнерах в базах данных Azure Cosmos DB для NoSQL.

В Azure Cosmos DB для NoSQL документы называются "Элементы" и контейнеры часто называются коллекциями.

Выявление шаблонов доступа для сущностей клиентов

Начнем с сущностей клиентов в базе данных электронной коммерции. На следующей диаграмме показаны три сущности и связи между ними. Три сущности: Customer (Клиент), CustomerAddress (Адрес клиента) и CustomerPassword (Пароль клиента). Сущности Customer и CustomerAddress имеют отношение "один ко многим". У сущностей Customer и CustomerPassword имеют отношение "один к одному".

Diagram that shows the relational model for customer entities.

В нашем приложении мы будем выполнять три операции с сущностями Customer.

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

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

Моделирование сущностей клиентов

Azure Cosmos DB сохраняет данные в формате JSON, поэтому мы можем смоделировать отношение "один ко многим" между Customer и СustomerAddress и внедрять данные адреса клиента в виде массива. Для связи 1:1 между Customer и CustomerPassword мы можем внедрить это как объект в наш новый документ клиента. Затем приложение электронной коммерции сможет создавать, изменять или извлекать данные клиента одним запросом.

На следующей диаграмме показано, как выглядит наша сущность клиента.

Diagram that shows a modeled customer document.