Полегче, я вам подарю. Безопасный ... ну, безопасность очень мало связана с физическим расположением сервера базы данных.
Чтобы ответить на три вопроса:
- Сначала рассмотрим, как можно ограничить доступ к таблицам базы данных, используя модель безопасности серверов базы данных. А именно, если вашему приложению не нужно удалять таблицы, убедитесь, что у пользователя, к которому оно подключается, такой возможности нет. Во-вторых, посмотрите, как зашифровать соединение между сервером базы данных и вашим приложением. В окнах это довольно прозрачно через kerberos и может даже быть применено параметрами групповой политики, не уверенными в других платформах В-третьих, посмотрите, какие функции есть в базе данных для шифрования данных «в состоянии покоя». Имеется в виду, поддерживает ли он изначально шифрование самих файлов данных?
Суть в том, что ваше приложение является единственной возможной точкой входа на сам сервер базы данных. Спросите себя, что произойдет, если кто-то сможет подключиться напрямую без прохождения через ваше приложение с использованием учетных данных приложений. Затем спросите, что может произойти, если они обнаружат проблему с SQL-инъекцией. Кроме того, спросите себя, какую информацию можно получить, если кто-то сможет отслеживать IP-трафик, проходящий между вашим приложением и сервером. Могут ли они различить любые данные? Наконец, спросите себя, что если они получат копию самой базы данных?
Длина, которую вы выберете для # 1, будет зависеть от нескольких факторов, таких как: Насколько ценны данные (например: что будет с вами, вашей компанией или вашими клиентами, если они будут потеряны); и сколько времени у вас есть, чтобы найти идеальное решение?
масштабируемость: это просто функция нагрузки. К сожалению, единственный способ масштабирования большинства приложений баз данных - это масштабирование. Это означает, что вы приобретаете больший сервер базы данных по мере необходимости. Переполнение стека прошло через это не так давно. Некоторые типы баз данных (nosql, mongodb и т. Д.) Поддерживают концепцию, известную как уничтожение или разбиение. MySql, PostGreSql и т. Д. Нет. Вместо этого вам придется специально разработать приложение, чтобы справиться с ним. Это означает, что не нужно использовать такие вещи, как автоинкрементные ключи и т. Д. Это может быть королевская PITA ... поэтому масштабирование гораздо проще в зависимости от вашего приложения.
Другая виртуальная машина не доступна через "localhost". localhost определяет доступ к вашему текущему серверу. Является ли этот сервер виртуальной машиной или нет, не имеет значения. Вам придется ссылаться на ваш сервер базы данных по имени. Теперь переход виртуальной машины базы данных на другой физический сервер должен иметь нулевой эффект, поскольку вы ссылаетесь на нее по имени. Кроме этого нет никаких других соображений.