Однако, конечно, есть компании, которые опасаются, что их данные могут быть скомпрометированы, поэтому мы оцениваем другие решения.
Это прискорбно, поскольку клиенты иногда ошибочно думают, что только физическая изоляция может обеспечить достаточную безопасность.
Есть интересная статья MSDN под названием « Многопользовательская архитектура данных» , которую вы, возможно, захотите проверить. Вот как авторы рассмотрели заблуждение относительно общего подхода:
Распространенное заблуждение состоит в том, что только физическая изоляция может обеспечить надлежащий уровень безопасности. Фактически, данные, хранящиеся с использованием общего подхода, также могут обеспечить надежную безопасность данных, но требуют использования более сложных шаблонов проектирования.
Что касается технических и деловых соображений, в статье дается краткий анализ того, где один подход может быть более уместным, чем другой:
Количество, характер и потребности клиентов, которых вы ожидаете обслуживать, по-разному влияют на ваше решение об архитектуре данных. Некоторые из следующих вопросов могут склонить вас к более изолированному подходу, в то время как другие могут склонить вас к более общему подходу.
Сколько потенциальных арендаторов вы планируете привлечь? Возможно, вы далеки от того, чтобы авторитетно оценить предполагаемое использование, но думайте в терминах порядков: вы создаете приложение для сотен арендаторов? Тысячи? Десятки тысяч? Больше? Чем больше, по вашему мнению, будет ваша клиентская база, тем больше у вас будет шансов рассмотреть возможность использования более коллективного подхода.
Сколько места для хранения вы ожидаете от данных среднего арендатора? Если вы ожидаете, что некоторые или все арендаторы будут хранить очень большие объемы данных, вероятно, лучше всего подойдет подход с отдельной базой данных. (Действительно, требования к хранению данных могут вынудить вас в любом случае принять модель отдельной базы данных. Если это так, будет намного проще спроектировать приложение таким образом с самого начала, чем переходить к подходу с отдельной базой данных позже.)
Сколько одновременных конечных пользователей будет поддерживать средний арендатор? Чем больше число, тем более подходящим будет более изолированный подход для удовлетворения требований конечного пользователя.
Ожидаете ли вы предложить какие-либо дополнительные услуги для каждого арендатора, такие как возможность резервного копирования и восстановления для каждого арендатора? Такие услуги легче предложить с помощью более изолированного подхода.
ОБНОВЛЕНИЕ: дальнейшая информация об ожидаемом количестве арендаторов.
Это ожидаемое количество клиентов (10 тыс.) Должно исключать подход с несколькими базами данных для большинства, если не для всех сценариев. Не думаю, что вам понравится идея поддерживать 10 000 экземпляров базы данных и создавать сотни новых каждый день.
По одному только этому параметру кажется, что подход с общей базой данных и единой схемой является наиболее подходящим. Тот факт, что вы будете хранить всего около 50 МБ на каждого арендатора, и что не будет никаких надстроек для каждого арендатора, делает этот подход еще более подходящим.
В цитированной выше статье MSDN упоминаются три шаблона безопасности, учитывающие соображения безопасности для подхода с общей базой данных:
Если вы уверены в мерах безопасности данных своего приложения, вы сможете предложить своим клиентам Соглашение об уровне обслуживания, которое обеспечивает надежные гарантии безопасности данных. В соглашении об уровне обслуживания, помимо гарантий, вы также можете описать меры, которые вы будете предпринимать, чтобы гарантировать, что данные не будут скомпрометированы.
ОБНОВЛЕНИЕ 2: По-видимому, ребята из Microsoft переместили / сделали новую статью по этой теме, исходная ссылка исчезла, и это новая: шаблоны аренды многопользовательской базы данных SaaS (слава Шай Керер)