У меня есть база данных, в которой 90% таблиц только для чтения. 10% таблиц имеют данные с возможностью записи. Нам нужно масштабировать приложение ASP.NET. Нам нужно добавить больше пользователей, которые не будут писать в базу данных. Мы думаем о добавлении еще одного сервера и маршрутизации пользователей, которым нужен доступ только для чтения к этому серверу. Есть ли способ реплицировать только некоторые таблицы на другой сервер базы данных. Поскольку 90% данных не изменяется, мы не хотим настраивать полную репликацию базы данных. Пожалуйста, порекомендуйте.
Я бы хотел возразить против «мы не хотим настраивать полную репликацию базы данных», поскольку в SQL Server 2012 есть довольно изящная функция: AlwaysOn.
Благодаря этому вы можете настроить подчиненные серверы только для чтения (синхронные или асинхронные) и использовать новый брокер соединений для автоматической маршрутизации запросов чтения на один или несколько серверов. Это включает в себя некоторую работу, касающуюся запросов на соединение (в частности, добавление READ_ONLY в строку подключения, чтобы брокер мог правильно перенаправить).
Это чрезвычайно простой способ масштабирования до 4 серверов SQL (один основной, 3 только для чтения).
По какой причине вы пытаетесь масштабировать приложение? Вы уверены, что приложение необходимо масштабировать? Вы полностью уверены, что индексы настроены правильно, чтобы чтение было максимально быстрым? Вы просто ограничены в памяти? У вас ограниченный процессор? Вы ограничены вводом-выводом? Обычно увеличение размера одного сервера обходится дешевле, чем лицензии SQL Server, необходимые для второго сервера.
Предполагая, что ваше приложение полностью настроено ...
Если вашим пользователям нужен доступ для чтения к данным, им потребуется доступ для чтения ко всем данным. Если вы на 100% уверены, что им не нужен доступ для чтения ко всем данным, вы можете использовать репликацию SQL Server и использовать фильтры для статей, так что вам нужно реплицировать только некоторые данные.
Если вы собираетесь перейти на SQL Server 2012, вы можете взглянуть на AlwaysOn, но это функция Enterprise Edition, поэтому лицензии будут довольно дорогими.