Горизонтальное сегментирование базы данных Azure - лучшее решение для мультитенантного приложения C# asp.net
У нас есть корпоративное приложение, и мы находимся в процессе перехода в облако. До этого момента в нашем приложении несколько пользователей получали доступ к информации через базу данных, расположенную на их главном сервере.
Мы пытаемся понять, что лучше всего настроить для переноса программного обеспечения в облако. Я провел некоторое исследование по сегменту базы данных для базы данных Azure Sql.
Мы пытаемся достичь, когда пользователь переходит на наш веб-сайт, у него будет возможность войти в систему или зарегистрироваться для входа в систему. Если пользователь не знаком с программным обеспечением, мы хотели бы создать новую базу данных для этой компании пользователей, которая использовала схему нашей основной базы данных. Используя сегментирование базы данных, я считаю, что это будет называться добавлением осколка, и затем пользователь будет добавлен в наш ShardMapManager и получит ключ осколка, который позволит им читать и записывать данные во вновь созданную базу данных (Shard). Внутри программного обеспечения пользователь может добавить больше пользователей, которые дадут им тот же ключ шарда, что и пользователь с правами администратора.
Это лучшее возможное решение для программного обеспечения, которое должно иметь собственную базу данных для каждой компании из-за конфиденциальности, или есть лучшее решение для того, что мы пытаемся сделать.
Также, если я думаю об этом правильно, не нужно ли нам делать запрос, чтобы найти ключ осколка из диспетчера карты осколков, чтобы текущий пользователь мог читать и записывать данные для приложения?
Любой вклад приветствуется!
1 ответ
Я думаю, вы ищете эластичный пул Azure SQL: https://docs.microsoft.com/en-us/azure/sql-database/sql-database-elastic-pool
Идея ручного управления шардами также возможна, но она усложнит вашу команду. Взгляните и на другие шаблоны, описанные здесь: https://docs.microsoft.com/en-us/azure/sql-database/saas-tenancy-app-design-patterns