Выбор правильного подхода для построения многопользовательской архитектуры с Azure Cosmos DB (MongoDB) - PullRequest
0 голосов
/ 15 апреля 2020

Меня немного смущает выбор подходящего подхода к созданию базы данных / коллекций для мультитенантной системы в MongoDB в CosmosDB API. У меня будет 500 арендаторов для моего приложения, где данные каждого арендатора могут увеличиться до 3-5 ГБ, и первоначально каждому арендатору могут потребоваться минимальные RU (400 RU / s).

Для этого варианта использования у меня будет несколько вариантов go с: 1. PartitionKey (на каждого арендатора) 2. Контейнер с общей пропускной способностью (на одного арендатора) 3. Контейнер с выделенной пропускной способностью (на одного арендатора) 4. Учетная запись базы данных (на клиент)

С учетом Изоляция производительности, стоимость, доступность и безопасность, могу ли я узнать, какой вариант подойдет для упомянутого варианта использования? Пожалуйста, дайте мне знать ваши входные данные, так как у меня меньше подверженности No SQL и дорожке Cosmos.

1 Ответ

0 голосов
/ 15 апреля 2020

Ответ может быть несколько вариантов, и это зависит от вашего c вариантов использования арендатора.

Арендатор / Раздел является наименее дорогим с предельными затратами на ноль арендатора. Это отличный вариант для предоставления "бесплатного уровня" в вашем приложении, но вы также можете увеличить его до платного уровня для своих клиентов. Максимальный размер хранилища составляет 20 ГБ. С этой схемой вам нужно будет реализовать собственное управление ресурсами. Вам нужно будет убедиться, что клиенты не «перегреваются» и не потребляют пропускную способность и объем хранилища, которые резко отличаются от других пользователей. Однако, если вы создаете мультитенантное приложение, управление ресурсами - это то, что вы уже должны делать.

Арендатор / Контейнер обходится дороже на 400 RU / s в месяц (25 $ / месяц), что является минимальным пропускная способность для контейнера. Это идеально, если у вас есть очень крупные арендаторы, которым требуется изоляция от других на предыдущем уровне.

Арендатор / Учетная запись - та же предельная стоимость, что и Арендатор / Контейнер. Это полезно, если у вас есть клиенты, у которых есть требования GDPR, которые запрещают или требуют репликации в определенных c Azure регионах.

Обратите внимание, что я НЕ рекомендую арендатору / контейнеру использовать общую пропускную способность базы данных. Причина в том, что с этой схемой все контейнеры имеют одинаковую пропускную способность, которую вы получаете с Tenant / Partition, но производительность не предсказуема с общей пропускной способностью базы данных, поэтому это не лучший выбор. Кроме того, вы ограничены 25 контейнерами для каждой базы данных, что делает ее плохим выбором.

Наконец, для вашего приложения вам нужно будет внедрить механизм для миграции клиентов с одного уровня на другой. Вам также, конечно, потребуется какой-то механизм auth-n / auth-z. Для Cosmos DB вы можете по желанию использовать наших собственных пользователей и разрешения и использовать маркеры ресурсов для безопасного доступа к данным.

Мы провели презентацию об этом в прошлом году на BUILD с нашим клиентом Citrix, который создал собственное облачное предложение. поверх Azure с использованием Cosmos DB в качестве хранилища метаданных пользователя. Определенно стоит проверить и предоставит вам более подробную информацию и идеи, Важные мультитенантные приложения с Cosmos DB

PS: если вы создаете новый сервис на Cosmos DB, я рекомендую использовать наш основной (SQL) API, а не MongoDB. Это наш родной сервис, и вы получите лучшую производительность и характеристики. Наш MongoDB API - лучший выбор для клиентов, которые хотят перейти на новую версию и хотят получить полностью управляемый интерфейс MongoDB.

Надеюсь, это полезно.

...