#sql #база_данных #nosql
Задача состоит в том, чтобы формировать пользовательские данные в XML виде. XSD схема для этих файлов часто меняется, заказчик выпускает новые форматы (меняются типы, иерархия и т.д.) Какую модель бд лучше использовать в данном случае: классическую реляционную, или документарную (NoSQL)?
Ответы
Ответ 1
Не совсем ответ, скорее размышления. У нас сейчас аналогичная задача. Приходят на обработку финансовые документы в виде XML, форматов много, периодически выходят новые версии. Хранить как-то надо. У нас Oracle+Java, так что выбора в пользу No SQL особо не было:) На пути к сохранению идёт два преобразования: XML -> Java объект(JaxB) -> Java объект в нашем внутреннем формате, который ложится в РСУБД. Есть некоторый абстрактный класс А, который содержит в себе общие поля для всех документов(дата, инициатор, счета и прочее) Для разных типов документов создаются наследники А (В1 В2 В3), и для их хранения создаются таблицы, которые содержат поля из А и дополнительно поля из В1 В2 В3. Средствами наследования различаем типы документов. В чем плюс? Можно строить составные индексы по полям как из класса А так и из В. Различия версий одного типа документа (если появляются новые поля итп) дополняются хвостами (ссылки из B на объекты классов B11 B12 B13), которые имеют связь с В1 один к одному в случае с таблицами. Т.е. для новой версии мы не меняем структуру данных, а добавляем новые сущности, при том что бОльшая часть алгоритмов продолжает успешно работать с любыми версиями без изменений. У нас всё несколько строго ещё и из-за того, что Java объекты хранятся в IMDG(хранение ВСЕХ данных в оперативной памяти грида), и в будущем планируется отказ от Oracle как от персистентного хранилища в пользу No SQL. Т.е. РСУБД уйдёт, а структура хранения Java-объектов в IMDG останется. Я говорил не столько о выборе между РСУБД и No SQL, а о борьбе с меняющимися форматами данных и их хранении. Надеюсь сказал что-то полезное.:)
Комментариев нет:
Отправить комментарий