Стратегии управления схемой базы данных в приложении с использованием моделирования на основе XML - PullRequest
0 голосов
/ 08 февраля 2012

Приложение, над которым я сейчас работаю, использует базу данных MySQL.Мы планируем изменить архитектуру приложения для обработки данных в формате XML.Таким образом, объектная модель для приложения будет управляться XML-схемой.Теперь мы можем использовать такие инструменты, как JAXB, для анализа XML и создания структуры объектов в памяти.Однако основные проблемы, которые я вижу: -

  1. Как отобразить структуру объекта в реляционную базу данных.Мы могли бы использовать Hibernate здесь.
  2. Другая проблема заключается в том, что схема XML будет меняться на регулярной основе, и мы должны поддерживать предыдущие версии схемы.

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

Поэтому мой главный вопрос заключается в том, каковы наилучшие стратегии дляуправлять такими изменениями версий, как с точки зрения объектного моделирования, так и с точки зрения схемы базы данных?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

Развивающаяся природа схемы XML означает, что использование JAXB не масштабируемо, поскольку это будет означать статическое генерирование нового пакета классов каждый раз, когда схема изменяется. Все предыдущие версии схемы должны поддерживаться системой.

Я решил использовать XSOM для разбора схемы XML. Это означает, что правильная версия схемы может быть выбрана и обработана динамически во время выполнения. Таким образом, мы можем создать общий способ синтаксического анализа схем и создания экземпляров соответствующих классов.

0 голосов
/ 08 февраля 2012

Решение будет следующим:

Продолжайте обогащать вашу схему, но убедитесь, что она обратно совместима с предыдущими схемами, чтобы JAXB мог анализировать и отображать самые старые и новейшие XML на основе схемы в ваши объекты.Это будет означать изменения в вашей схеме базы данных с той же целью снова, чтобы иметь схему, которая совместима со старыми объектами, которые вы хотите отобразить;также пространства имен схемы и т. д. должны быть одинаковыми для всех версий для работы JAXB.Я предполагаю, что у вас будет много пустых столбцов и т. Д. Это в будущем рискованно, но это может сработать, если все сделано правильно.

О, теперь я вижу, что вы отредактировали свой комментарий и дали мне больше информации так:

Поскольку схема постоянно меняется, я бы предложил пропустить JAXB.JAXB не создан для такого рода постоянных изменений.Smooks (установить плагины JBoss Tools в свой Eclipse) есть.Это позволит вам определить разные определения сопоставления для каждой версии XML на основе схемы с вашими классами сущностей Hibernate.Таким образом, вы будете поддерживать отображения Smooks, классы сущностей Hibernate и схему базы данных.Что касается схемы базы данных, есть способы сделать ее эволюционной без структурных изменений, но вам придется пожертвовать ссылочной целостностью ... Я бы не

Полагаю, у вашей проблемы есть много решений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...