Эластичная шкала Azure / база данных на клиента: как реализовать зависимую от данных маршрутизацию - PullRequest
0 голосов
/ 10 июня 2018

На основе примеров приложений Microsoft Azure Elastic Scale в Интернете мне удалось создать базы данных Shard Map Manager (SMM) и эластичного пула в Azure.Моя архитектура - отдельная база данных для каждого арендатора.Я использую Entity Framework в своем веб-приложении.Я использую хеш байта [] в качестве своего Shard Key на основе буквенно-цифрового имени клиента.Имя клиента вводится как часть имени пользователя, поэтому я могу определить уникальный ключ шарда во время входа в систему для передачи SMM.

Мои вопросы:

1.) Посколькуу каждого арендатора есть своя собственная база данных. Нужно ли мне включать хэшированное имя клиента / ключ шарда в каждую строку таблиц клиента?

2.) Я не понимаю, куда передается информация о ключе шардаСММ во время звонка на сервер.Находится ли он в контексте сущности или он должен быть частью самого запроса?Любой образец этого будет принята с благодарностью!

1 Ответ

0 голосов
/ 10 июня 2018

Вы получаете доступ к базе данных Shard Map Manager, когда находите строку подключения для определенного арендатора.Когда у вас есть строка подключения, вы подключаетесь к конкретной базе данных арендатора.Внутри базы данных вам вообще не нужно использовать ключ шарда.

В библиотеке Elastic Database Tools реализована зависимая от данных маршрутизация (DDR) .Но вы, возможно, сочтете это излишним, если у вас есть простая реализация шаблона разделения одного клиента .Вы всегда можете просто запросить базу данных карты сегментов (или хранилище пользовательских настроек) при запуске и загрузить Dictonary<string,string> для сохранения поиска CustomerName -> ConnectionString.

...