Предположим, у меня есть класс модели, который выглядит следующим образом:
public class Relationship
{
public Guid PartitionKey { get; set; }
public Guid Id { get; set; }
public DateTime CreatedOn { get; set; }
}
PartitionKey
- это ключ раздела контейнера Relationship
, который представлен идентификатором пользователя, за которым следят. (Приемник)
Id
- это идентификатор контейнера, который представлен идентификатором пользователя, который следует за другим пользователем. (Отправитель)
Эта модель гарантирует, что один и тот же Id
не может быть добавлен к одному и тому же PartitionKey
, так что отношение подписчик / подписчик может быть создано только один раз между двумя пользователями. Это также позволяет мне легко просматривать список всех подписчиков для конкретного человека, что крайне важно.
Проблема в том, что каждый логический раздел ограничен 10 ГБ данных. Учитывая, что фактическая модель Relationship
, вероятно, имеет больше свойств, и есть автоматическое индексирование, которое происходит за кулисами, и у некоторых пользователей есть миллионы подписчиков, этот предел будет достигнут, и будет невозможно разрешить новые отношения для того же ключа раздела.
Как можно разработать эту модель в Cosmos DB, чтобы она была действительно масштабируемой?