Выявление шаблонов доступа для приложения
При проектировании модели данных для базы данных NoSQL цель — гарантировать, что операции с данными выполняются с наименьшим возможным количеством запросов. Для этого необходимо понимать связи между данными, а также способ доступа к данным в приложении. Эти шаблоны доступа важны, так как они вместе с связями определяют, как свойства различных сущностей группируются и хранятся в документах в контейнерах в Azure Cosmos DB для NoSQL.
В Azure Cosmos DB для NoSQL документы называются элементами и контейнерами часто называются коллекциями.
Выявление шаблонов доступа для сущностей клиентов
Начнем с сущностей клиентов в базе данных электронной коммерции. На следующей диаграмме показаны три сущности и связи между ними. Три сущности: Customer (Клиент), CustomerAddress (Адрес клиента) и CustomerPassword (Пароль клиента). Сущности Customer и CustomerAddress имеют отношение "один ко многим". У сущностей Customer и CustomerPassword имеют отношение "один к одному".
В нашем приложении мы будем выполнять три операции с сущностями Customer.
- Создание клиента: когда новый пользователь впервые посещает сайт электронной коммерции, создается новый клиент.
- Обновление клиента: когда существующий пользователь обновляет данные профиля, запись клиента обновляется.
- Получение клиента: когда существующий пользователь посещает сайт, он будет выполнять вход с паролем. Во время этого сеанса будет необходим доступ к другим данным клиента, чтобы приобретать новые элементы, такие как адрес.
Для каждой из этих операций нам потребуются все эти данные одновременно. Если они были моделировались в виде отдельных документов, для создания, обновления и извлечения данных клиента потребуется несколько циклов. Это неэффективно.
Моделирование сущностей клиентов
Azure Cosmos DB сохраняет данные в формате JSON, поэтому мы можем смоделировать отношение "один ко многим" между Customer и СustomerAddress и внедрять данные адреса клиента в виде массива. Для связи 1:1 между Customer и CustomerPassword мы можем внедрить это как объект в наш новый документ клиента. Затем приложение электронной коммерции сможет создавать, изменять или извлекать данные клиента одним запросом.
На следующей диаграмме показано, как выглядит наша сущность клиента.