2015-04-29 2 views
2

Наша система состоит из различных компонентов. Поток данных в системе в виде XML. Каждый компонент обрабатывает XML и добавляет к нему некоторый контент и передает его следующему компоненту.Хранение XML в базе данных

Я хочу хранить все версии XML. Размер XML составляет 250-300 КБ. также существует довольно 20 версий XML для одной транзакции. Также транзакции могут быть в миллионах.

Ищет альтернативы хранения данных такого рода XML. Что если я буду хранить XML в БД. Будет ли это эффективным способом?

Кроме того, если я буду хранить XML в БД, есть ли способ поиска XML на основе его содержимого. И насколько это было бы эффективно.

Любые мысли помогут.

+3

* Довольно большой - 250-300 КБ * - тип данных 'XML' может обрабатывать ** до 2 ГБ ** данных! 300 КБ ** ничего ** ..... идти вперед - хранить этот XML! И да, вы можете использовать собственный XQuery для получения бит и частей из этого XML. –

+0

Я действительно понимаю, что 300 КБ - ничто. Но если на XML будет такой размер размером 20 миллионов, то хранилище БД будет расти. Также эти транзакции будут расти со временем. – priyas

+0

Где бы вы могли сохранить данные в противном случае? 20 миллионов x 300 КБ составляет около 6 ТБ. Я думаю, это зависит от временного интервала, который вы хотите сохранить. Сохраните текущие XML-файлы, которые вы хотите индексировать в БД. Архив старого XML в файловой системе. Архивированные файлы могут быть сжаты для сохранения дискового пространства. – Greg

ответ

0

Поскольку ваши потоки данных будут в небольших объемах 250-300 КБ, имеет смысл сохранить их в поле DB xml или nvarchar (max), например, упомянутый марк может хранить до 2 ГБ данных. Данные xml тип будет проверять правильность формирования XML, поэтому у вас есть и это преимущество. Вы также можете рассмотреть возможность индексирования столбца xml, если вы извлекаете большие XML-данные. Кроме того, вы можете использовать XQuery Language для поиска содержимого xml. Что касается эффективности, если вы просто храните файлы xml, то сохранение его в папке sytem будет работать хорошо, иначе сохраните его в базе данных. Надеюсь, что это поможет

Смежные вопросы