Эластичная шкала Azure / база данных на клиента: как реализовать зависимую от данных маршрутизацию
На основе онлайн-приложений Microsoft Azure Elastic Scale мне удалось создать базы данных Shard Map Manager (SMM) и эластичного пула в Azure. Моя архитектура - отдельная база данных для каждого арендатора. Я использую Entity Framework в своем веб-приложении. Я использую хеш байта [] в качестве своего Shard Key на основе буквенно-цифрового имени клиента. Имя клиента вводится как часть имени пользователя, поэтому я могу определить уникальный ключ шарда во время входа в систему для передачи SMM.
Мои вопросы:
1.) Поскольку у каждого арендатора есть своя собственная база данных, нужно ли по-прежнему включать хэшированное имя клиента / ключ шарда в каждую строку таблиц клиентов?
2.) Я не понимаю, где информация ключа ключа передается SMM во время звонка на сервер. Это в контексте сущности или это должно быть частью самого запроса? Любой образец этого будет принята с благодарностью!
1 ответ
Вы получаете доступ к базе данных Shard Map Manager, когда находите строку подключения для конкретного арендатора. Получив строку подключения, вы подключаетесь к базе данных, специфичной для арендатора. Внутри базы данных вам вообще не нужно использовать ключ шарда.
Библиотека Elastic Database Tools имеет реализацию зависимой от данных маршрутизации (DDR). Но вы можете счесть это излишним, если у вас есть простая реализация шаблона разделения одного клиента. Вы всегда можете просто запросить базу данных карты шарда (или пользовательское хранилище конфигурации) при запуске и загрузить Dictonary<string,string>
сохранить CustomerName -> ConnectionString.