Возможно ли это из коробки или с помощью дополнительных инструментов или фреймворков?
Я хочу настроить как минимум две одновременно активные машины, чтобы лучше понять, как работает высокая масштабируемость для баз данных. Такие сайты, как Facebook, должны использовать несколько узлов для обслуживания огромного объема запросов и обновлений, верно?
Если я пропустил какие-либо полезные ресурсы в моем поиске в Google, были бы признательны даже ссылки.
Это станет возможным с помощью специального дизайна (распределенные секционированные представления) и бизнес-уровня, который позаботится о том, куда отправлять запрос. Существует эталонный дизайн с bwin.com. С распределенными секционированными представлениями можно выполнить обновление на любом узле, но (без изменений на верхних уровнях), но я рекомендую сделать это изменение, чтобы получить оптимальную производительность.
Проверьте это сообщение MVP и сертифицированного мастера Microsoft Брента Озара:
http://www.brentozar.com/archive/2011/06/scaling-sql-server-growing-out/
Все сводится к репликации, и это непросто.
SQL Server поддерживает только активно-пассивную кластеризацию. Он не предлагает ничего, что можно было бы сравнить с Oracle RAC или IBM PureScale. Поэтому невозможно иметь несколько активных экземпляров базы данных.
Для приложений типа запросов можно клонировать одну и ту же базу данных несколько раз. Для рабочих нагрузок типа обновления можно разделить набор данных и разрешить только одному активному узлу обновлять соответствующий «раздел» данных. Разделение, описанное в последнем предложении, не имеет ничего общего с функциональностью разделения, оно описывает владение данными узлами.
Но обычно, если такое требование необходимо поддерживать, лучше переключиться на продукт, который поддерживает эту функциональность (например, Oracle RAC). Вышеупомянутые решения просто плохо масштабируются с точки зрения времени разработки и управляемости.