SQL Server 2005 - несколько баз данных - PullRequest
1 голос
/ 04 февраля 2010

Мы используем SQL Server 2005 на работе, и когда началась разработка, было решено создать несколько баз данных. Например, у нас есть одна база данных для Individual, скажем, dbIndividual, а другая - для перевода, скажем, dbLocale.

Пока что это значительно упростило резервное копирование и потенциальное восстановление, поскольку нам просто нужно сделать резервную копию того, что нам нужно (если нет способа сделать резервную копию / восстановить только схему, о которой мы не знаем).

Это заставляет нас иметь несколько запросов с JOINS для нескольких таблиц и файлов базы данных.

например:

select customer.firstname, address.addressL1, addressType.value
from dbIndividual.dbo.customer
inner join dbIndividual.dbo.address
    on fkCustomerID = iCustomerID
inner join dbLocale.translation.addressType
    on fkAddressTypeID = iAddressTypeID
    and fkLangID = 1

Есть ли какой-нибудь недостаток к этому? Помимо очевидного, что мы не можем обеспечить целостность данных в нескольких дБ. Не замедлит ли это соединение при соединении, поскольку данные потенциально находятся на совершенно другой части диска?

Причина, по которой я спрашиваю, заключается в том, что мы находимся в процессе реорганизации нашей инфраструктуры, и это одна потенциальная проблема, которая продолжала появляться.

Ответы [ 4 ]

6 голосов
/ 04 февраля 2010

В настоящее время рекомендуется использовать одну и ту же базу данных с несколькими схемами. Каждая схема может быть помещена в отдельный файл, который затем можно легко скопировать. Это также позволяет применять ограничения внешнего ключа.

Мы использовали модель с несколькими базами данных, как ваша компания, и недавно мы переключили все новые разработки на использование только схем. Таким образом, мы ничего не потеряли и получили возможность применять наши внешние ключи, что огромно.

5 голосов
/ 04 февраля 2010

Внешние ключи являются одной из основных причин использования реляционной базы данных. если вы не можете использовать их, когда они необходимы, потому что данные находятся в разных базах данных, то разбивать таблицы по нескольким базам данных - это плохо.

3 голосов
/ 04 февраля 2010

почему вы не использовали SCHEMA и FILEGROUPS для этого? Таким образом, у вас все еще есть разделение, и вы можете восстанавливать и резервировать только файловые группы, если вы не хотите делать полное резервное копирование. И у вас не будет проблем с ссылочной целостностью, так как вы можете иметь внешние ключи

0 голосов
/ 04 февраля 2010

Я укажу, что вы можете обеспечить ссылочную целостность в базах данных, используя триггеры, и это следует делать в вашем текущем проекте. Сказано, что мне нравится та же база данных с моделью нескольких схем, которую предложили Кейт Руссо и SQLMenace.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...