Я присоединился к небольшой компании, которая по сути продает одно веб-приложение. Данные в веб-приложении очень чувствительны до такой степени, что все данные шифруются на уровне поля. Приложение написано в ASP.NET Web API 2 (C#), с интерфейсом html/javascript и SQL-сервером.Объединение базы данных для нескольких клиентов - хорошая идея?
На данный момент у них около 50 клиентов, а архитектура приложения заключается в том, что каждый клиент получает свою собственную базу данных. Все они развернуты в свой собственный виртуальный каталог IIS, который затем указывает на собственную БД. Код точно такой же среди всех клиентов.
Владелец сказал мне, что это все по дизайну для обеспечения безопасности. Тем не менее, это абсолютная боль для управления, и они только когда-либо получают больше клиентов.
Я предложил объединить все это в одну БД и добавить поле в основной таблице, которое идентифицирует, к какому клиенту принадлежат данные. Отсюда я могу фильтровать/присоединяться к этому полю.
Владелец этого не любит, поскольку он вводит риск: если есть дрянной код, один клиент может видеть другие данные клиентов. Это, очевидно, не может произойти с несколькими базами данных, поскольку строка подключения не будет пересекаться с другой БД.
Есть ли какой-либо возможный способ рискнуть этим? Я предложил переопределить класс авторизации, чтобы остановить доступ к информации неавторизованным пользователям, но это не решает проблему «плохого кода».
Есть ли что-нибудь, что я могу сделать, или я застрял, сохраняя целую кучу баз данных?
Отдельные базы данных также облегчают изоляцию базы данных как услуги в облаке. Автоматизация - это ключ в этом мире. –
Строка подключения получена из виртуального каталога, так как имя базы данных (исходный каталог) совпадает с тем, что используется в VDir. Мы старались максимально автоматизировать (развертывание с использованием развертывания в Интернете, обновления и т. Д.), Но все равно болезненно, когда все идет не так, и у нас только 50 клиентов на данный момент, не могу представить его на уровне 500 или 5000 :) – user3129594