Хорошие вопросы.
Одна вещь, которая приходит на ум, это то, что если у вас есть несколько баз данных, которые вы развертываете поэтапно, чтобы уменьшить вероятность взлома всех ваших клиентов, вам придется решить вопрос, что делать, если структура БД изменения. Вы должны будете либо быть очень строгими в отношении обеспечения обратной совместимости, либо развернуть отдельные версии своей базы кода и каким-либо образом управлять, какие арендаторы связаны с какими базами данных.
Мы также предоставляем наше приложение, используя модель SaaS.
Первоначально это было приложение для Windows, которое работало аналогично вашему предложению с несколькими базами данных. После входа в систему приложение win будет проходить аутентификацию в одной базе данных «лицензиата», которая затем будет отвечать информацией о соединении для базы данных, специфичной для этого лицензиата. Приятно то, что это обеспечивало 1) физическое разделение данных лицензиата, которое нравилось нашим клиентам, и 2) позволяло нам физически размещать базу данных на сервере, географически ближе к пользователям, что одновременно повышает производительность и позволяет избежать некоторых потенциально сложных юридических и нормативные вопросы в отношении предоставления данных за пределы страны.
Конечно, так как приложение было толстым клиентским приложением, мы могли бы с легкостью вносить изменения в базу данных и отправлять их одному лицензиату за раз. Когда мы были готовы к обновлению, мы могли выдвинуть обновленный толстый клиент вместе с новой базой данных - таким образом гарантируя, что кодовая база соответствовала базе данных. Пока общая база данных аутентификации «лицензиата» оставалась согласованной, это работало довольно хорошо.
Однако, с другой стороны, это решение принесло с собой все проблемы, связанные с обслуживанием и управлением подходом «толстого клиента», что в итоге привело нас к «клиентскому» подходу на основе браузера.
В нашей новой модели все находится в одной базе данных. Когда у нас есть обновления, мы одновременно выдвигаем и код, и базу данных. Это решает проблему поддержания базы кода в соответствии со структурой базы данных. Однако сейчас мы сталкиваемся с проблемами, упомянутыми в пунктах 1 и 2 выше, которые нам еще предстоит решить.
Надеюсь, это даст вам пищу для размышлений.
Меня тоже интересует этот вопрос.
Спасибо за сообщение.
-S