Большинство вопросов, связанных с заголовком этого поста, касаются запуска Hibernate или какого-либо другого уровня доступа в контейнере OSGi. Или они спрашивают, чтобы источник данных работал в контейнере OSGi.
Мои вопросы касаются влияния модульности OSGi на структуру самой базы данных. В частности:
- Как сделать структуру самой базы данных модульной, чтобы
когда мы загружаем модуль - скажем, Contact Management - схема
обновлены, чтобы включить таблицы, специально связанные с этим модулем?
- Как влияет вышеизложенный подход на отношения?
Я думаю, что второй вопрос более интересен. Допустим, что Contact Management и Project Management - это два разных модуля OSGi. Каждый из них будет иметь свой собственный набор таблиц в схеме. Но что, если на уровне базы данных нам нужно сформировать межмодульные отношения между двумя или более таблицами? Может быть, мы хотим увидеть список проектов, над которыми работает или работал определенный контакт.
Кажется, любое решение ведет к тому, что различные модули должны слишком много знать друг о друге. Мы могли бы написать в спецификации Project Management, что этот модуль ожидает источник контактов, а затем абстрагировать такое ожидание с помощью сервисов, интерфейсов, pub-sub и т. Д. Это похоже на большую работу, чтобы избежать жесткой связи между базовые таблицы двух модулей.
Какой смысл быть модульным вверху и посередине, если нам, возможно, потребуется разбить эту модульность с помощью связей между таблицами внизу? Являются ли денормализация и сервисная шина действительно полезным решением?
Есть мысли?
Спасибо.