Я смотрю на инструмент для мультитенантности в SQL Server. Я рассматриваю общую базу данных, общую схему и фильтр представления клиентов, описанные здесь. Единственный недостаток - фрагментированный пул соединений ...
За http://msdn.microsoft.com/en-au/architecture/aa479086, Фильтр просмотра арендатора описывается следующим образом:
"Представления SQL могут использоваться для предоставления отдельным арендаторам доступа к некоторым строкам в данной таблице, в то же время предотвращая их доступ к другим строкам.
В SQL представление - это виртуальная таблица, определяемая результатами запроса SELECT. Полученное представление затем может быть запрошено и использовано в хранимых процедурах, как если бы оно было реальной таблицей базы данных. Например, следующий оператор SQL создает представление таблицы с именем Employees, которая была отфильтрована так, что видны только строки, принадлежащие одному арендатору:
CREATE VIEW TenantEmployees AS
SELECT * FROM Employees WHERE TenantID = SUSER_SID()
Этот оператор получает идентификатор безопасности (SID) учетной записи пользователя, обращающегося к базе данных (которая, как вы помните, является учетной записью, принадлежащей арендатору, а не конечному пользователю) и использует ее для определения того, какие строки следует включить в представлении "
Если подумать, если у нас в одной базе данных хранится, скажем, 5000 разных арендаторов, пул соединений полностью фрагментируется, и каждый раз, когда запрос отправляется в базу данных, ADO.NET необходимо устанавливать новое соединение и проходить аутентификацию (помните, что пул соединений работает для каждой уникальной строки подключения), и этот подход означает, что у вас есть 5000 строк подключения ...
Насколько я должен беспокоиться об этом? Может ли кто-нибудь дать мне примеры из реальной жизни о том, как сильно пул соединений влияет на занятый мультитенантный сервер базы данных (скажем, обслуживание 100 запросов в секунду)? Могу ли я просто добавить больше оборудования к проблеме, и она исчезнет?
Мысли ??