Модульная структура базы данных: правильный подход для моего варианта использования? - PullRequest
2 голосов
/ 30 марта 2012

Я работаю над модульным веб-приложением Java.Зависимости между модулями (видимый уровень) и бизнес-уровень / уровень базы данных разрешаются с помощью gradle.Технически, моя база данных должна содержать таблицы только для сущностей, которые фактически используются развернутыми видимыми модулями.Но это может привести к потенциальным проблемам, когда я хочу перенести базу данных в производственную среду.Таким образом, кроме создания схемы базы данных из зависимостей, я вижу два варианта:

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

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

Сервер для баз данных будет выглядеть следующим образом:

  • MySqlServer
    • AuthorizationDatabase
      • UserTable
      • RoleTable
      • UserRoleRelationshipTable
    • BlogPostDatabase
      • PostTable
      • CommentsTable

и т.д ..

Однако я не знаю, приведет ли идея множества небольших баз данных вместо одной монолитной базы данных к потенциальной проблеме.Особенно в отношении производительности.

1 Ответ

0 голосов
/ 07 июля 2012

Я бы порекомендовал одну базу данных по следующим причинам:

a) MySQL может обрабатывать несколько тысяч таблиц в зависимости от доступных ресурсов сервера

b) Управлять проще

в) Если клиентская база выходит за пределы одного сервера, вы можете создать новый сервер для обработки новой группы клиентов, а затем масштабировать ее также

...