Я работаю с полдюжины БД. Все БД имеют одинаковые схемы, одинаковые SP и т. Д. В беседе с человеком, который изначально проектировал БД, большая часть мотивации для использования многих БД была эффективностью; альтернативой может быть добавление столбца практически к каждой таблице и указание в базе данных, указывающее, над каким набором данных ведется работа, в результате чего получается одна гигантская (и, следовательно, более медленная) БД вместо нескольких БД samll. Вместо того, чтобы иметь столбец, чтобы указать, какой набор данных запрашивается, строка подключения используется для выбора базы данных, к которой выполняется обращение.
Единственная причина, по которой мне действительно не нравится эта организация, заключается в том, что она требует много дублирования кода и, следовательно, вредит обслуживанию. Например, каждый раз, когда я хочу изменить хранимую процедуру, мне нужно запускать оператор alter для каждой базы данных.
Одно из решений, которое я рассмотрел, - объединить все данные в одну большую базу данных, добавив дополнительный столбец повсюду, чтобы указать, в какую базу данных будут входить данные, если бы я не объединил их. Затем я могу разделить все таблицы по значению этого столбца. Теоретически, результатом всего этого является то, что базовое представление всех самих данных будет морально таким же, как и сейчас, но без избыточности в индексах, схемах, SP и т. Д.
Мои вопросы:
- Это хорошая идея? Есть ли лучший способ сделать это?
- Есть ли в этом какие-то ошибки?
- Повлияет ли это на производительность?