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