Я работаю над модульным веб-приложением Java.Зависимости между модулями (видимый уровень) и бизнес-уровень / уровень базы данных разрешаются с помощью gradle.Технически, моя база данных должна содержать таблицы только для сущностей, которые фактически используются развернутыми видимыми модулями.Но это может привести к потенциальным проблемам, когда я хочу перенести базу данных в производственную среду.Таким образом, кроме создания схемы базы данных из зависимостей, я вижу два варианта:
1) У меня всегда есть одна схема для всех доступных объектов.Поэтому моя фактическая база данных содержит таблицы для всех сущностей, даже тех, которые не используются ни одним из развернутых модулей.Это делает миграцию в производственной среде очень простой, но загромождает базу данных и папки, которые содержат сущности во время разработки.
2) У меня есть несколько независимых схем, которые логически разделены.Каждая схема приведет к созданию базы данных на сервере.Какие схемы необходимы, определяется зависимостями модуля.Я переношу каждую схему на себя.Таким образом, миграция все еще будет управляемой.
Сервер для баз данных будет выглядеть следующим образом:
- MySqlServer
- AuthorizationDatabase
- UserTable
- RoleTable
- UserRoleRelationshipTable
- BlogPostDatabase
и т.д ..
Однако я не знаю, приведет ли идея множества небольших баз данных вместо одной монолитной базы данных к потенциальной проблеме.Особенно в отношении производительности.