Я хочу разделить данные для упрощения управления GDPR и т. д. Поэтому я подумал о том, чтобы иметь по одной MongoDb с CosmosDb для каждого микросервиса. Итак, 10 микросервисов — это 10 баз данных MongoDb.
Тогда мне нужна поддержка нескольких арендаторов. Поэтому я подумал, что у каждого арендатора может быть своя коллекция внутри баз данных. (Общая пропускная способность).
Таким образом, один сервис имеет одну базу данных и множество коллекций. Если 100 клиентов, это 100 коллекций.
Но тогда мне нужен способ хранить мои документы. Поэтому я подумал, что каждый тип может быть моим ключом раздела. Нравиться. "Ворота", "Заказ", "Пользователь" и т.д...
Раньше я использовал один db для каждого клиента, но стоимость была проблемой.
Я не хочу совместно использовать данные жильцов, поэтому думаю об этом разделении. И я могу легко позволить разработчикам быть собственным арендатором в системе, чтобы они не запрашивали данные других арендаторов по ошибке.
Логически это сработает, технически тоже. Но я не уверен, что это хорошая практика - иметь так много коллекций. Я не могу найти ограничения на количество коллекций, но, может быть, они есть?
GateServiceDb
3343-414-1441-141441 (Tenant collection)
Gate - Partion (Document type)
Entrence - Partion (Document type)
...
3252-532-252-141441 (Tenant collection)
Gate - Partion (Document type)
Entrence - Partion (Document type)
...
123-445-1441-141441 (Tenant collection)
Gate - Partion (Document type)
Entrence - Partion (Document type)
...
...
На высоком уровне, в зависимости от масштаба ваших арендаторов, вы можете выбрать секционирование по базе данных или коллекции. В тех случаях, когда данных арендатора меньше, а количество арендаторов выше, мы рекомендуем хранить данные для нескольких арендаторов в одной коллекции, чтобы уменьшить общие ресурсы, необходимые для вашего приложения. Вы можете идентифицировать своего арендатора по свойству в документе и выполнять фильтрационные запросы для получения данных, специфичных для арендатора. Вы также можете использовать пользователей и разрешения DocumentDB, чтобы изолировать данные арендатора и ограничить доступ на уровне ресурсов с помощью ключей авторизации.
В случаях, когда арендаторы крупнее, нуждаются в выделенных ресурсах или нуждаются в дополнительной изоляции, вы можете выделить для арендаторов выделенные коллекции или базы данных. В любом случае DocumentDB возьмет на себя значительную часть операционной нагрузки при масштабировании хранилища данных вашего приложения.
Итак, возвращаясь к вашему исходному вопросу, один сервис имеет одну базу данных и множество коллекций,
Знаете ли вы, будет ли ваше приложение и данные достаточно большими, чтобы вы захотели разделить одну БД на каждую службу Micro, или это будет работать как одна коллекция для каждой службы Micro?
Ваш другой вопрос «Я не могу найти ограничения на количество коллекций» :
Как вы, возможно, уже знаете, коллекция — это контейнер для ваших документов JSON. Коллекции также являются единицей разделения и границы DocumentDB для выполнения запросов и транзакций. Каждая коллекция обеспечивает зарезервированное количество пропускной способности. Вы можете масштабировать свое приложение как с точки зрения хранилища, так и с точки зрения пропускной способности, добавляя больше коллекций и распределяя документы по ним.
Каковы ограничения хранилища Azure Cosmos DB?
Общий объем данных, которые контейнер может хранить в Azure Cosmos DB, не ограничен.
Каковы ограничения пропускной способности Azure Cosmos DB?
Общий объем пропускной способности, которую контейнер может поддерживать в Azure Cosmos DB, не ограничен. Основная идея состоит в том, чтобы примерно равномерно распределить рабочую нагрузку между достаточно большим количеством ключей разделов.
Спасибо :) Вроде такой же вывод делаю и я. Так что я теперь спросил клиентов об этом. Как они видят организационные структуры клиентов. Арендатором может быть крупная компания с множеством других компаний.
Понял, дайте мне знать, если вам нужна дополнительная помощь. Также я хотел бы попросить вас принять в качестве ответа, так как это поможет другим, у кого такая же проблема.
Насколько я знаю, нет ограничений на количество коллекций, которые вы можете создать, но просто хочу поделиться тем, что ключ раздела CosmosDB имеет ограничение в 10 ГБ. Я не могу вспомнить, какой из них физический или логический.