у нас есть следующая проблема. В нашем корпоративном приложении есть база данных в MySQL, и кажется, что ее структура становится слишком сложной - где больше 100 таблиц (оно разрабатывается уже 7 лет).
Однако большинство таблиц вообще не имеют отношения к другим таблицам. Есть какие-то общие таблицы (словари), которыми пользуются все (их около двадцати), но это все. Возник вопрос, как сделать эту базу более быстрой и надежной.
Я много читал о декомпозиции базы данных. То есть вы размещаете таблицы, относящиеся к разным доменам, в разных базах данных. Например, все, что связано с накладными и другими бумажными материалами, помещается в базу данных под названием «Бумаги», а все, что связано с клиентами и их заказами, помещается в базу данных под названием «Клиенты» и так далее.
Здесь две проблемы:
- Пользователь должен видеть, что корпоративное приложение действует в одном домене. Разработчики должны изменить ядро, работающее с базой данных, таким образом, чтобы оно могло обращаться к нескольким базам данных.
- Общие таблицы создают проблему. Они должны храниться в одной базе данных и не могут быть реплицированы во всех базах данных после декомпозиции. Следовательно, как нам сделать запрос SELECT * FROM A JOIN B, если A и B находятся в разных базах данных (на разных серверах)?
Оба вопроса фактически касаются одной и той же проблемы - есть ли какие-либо общие шаблоны Enterprise (например, GoF) для решения этой проблемы? Меня особенно интересуют шаблоны, подходящие для Java EE.