Какая база данных имеет наилучшую поддержку XML?

#xml #database

Вопрос:

У меня есть система, которая ежедневно генерирует большое количество XML-документов (порядка 1 миллиона), и я хотел бы иметь возможность хранить и индексировать их, чтобы я мог, например, искать все документы с определенным полем, установленным на заданное значение.

Я понимаю, что в принципе существует два типа XML-базы данных: те, которые обеспечивают поддержку XML поверх обычной реляционной базы данных, и те, которые являются «родной» базой данных XML. Учитывая, что я открыт для использования любого из них, что бы вы порекомендовали?

Ответ №1:

Microsoft SQL Server поддерживает столбцы XML. Это больше, чем просто поддержка больших двоичных объектов/ТЕКСТА.

Вы можете использовать XML-столбцы неструктурированным образом, где SQL Server просто гарантирует, что они являются правильным XML. Это позволяет хранить произвольные XML-документы внутри SQL Server, но при этом гарантирует, что вы имеете дело с XML, а не только с произвольными байтами/символами. SQL Server позволяет выполнять запросы в дополнение к этому с помощью XQuery.

Вы также можете создавать XML-столбцы, соответствующие схеме, используя XSD. Что еще более интересно, SQL Server позволяет индексировать XML, чтобы ваши запросы XPath могли работать хорошо.

Дополнительные сведения см. в разделе «Что нового для XML в SQL Server 2008«. (Хотя большая часть поддержки XML существует в SQL Server 2005.)

Ответ №2:

Вы также можете захотеть проверить сервер MarkLogic или существовать.

Если у вас есть умеренный объем контента(пара ГБ) , то eXist подойдет. Помимо этого, вы, вероятно, захотите заглянуть в MarkLogic.

Вы можете скачать и проверить их оба, так как eXist бесплатен, а у MarkLogic есть лицензия сообщества, с которой вы можете поиграть.

Ответ №3:

Если вы ищете собственную XML-базу данных, я определенно предлагаю Sedna. Также отличная поддержка разработчиков.

Ответ №4:

Я не могу предложить вам хорошего кандидата, но если вы хотите избежать выбора плохого, избегайте Oracle XmlDB. Это чертовски медленно и глючно. Одно из худших расширений Oracle, внесенных в его СУБД.

Комментарии:

1. Спасибо, я как раз этим занимался.

Ответ №5:

DB2 9.x с поддержкой pureXML-это возможность.

Ответ №6:

По словам людей, которые работали над этим, MonetDB вполне способен обрабатывать xml. В принципе, когда вы хотите выполнить xquery для содержимого, вам нужно что-то, что может сделать это правильно. Структура XML-документа, который является очень гибким и неопределенной длины, принципиально отличается от структуры СУБД. Это означает, что вещи нужно хранить и грамотно индексировать. Для традиционных систем СУБД это простой способ сохранить xml в виде большого двоичного объекта (двоичного объекта). Но большие двоичные объекты, как правило, не индексируются и находятся в основном за пределами основного хранилища данных. Для правильного анализа xml система должна входить в xml при хранении. MonetDB, по-видимому, делает это.

Ответ №7:

Начиная с DB2 Viper, IBM DB2 начала предоставлять встроенную поддержку хранения XML-данных, а также запросов к XML-данным.

DB2 предназначена для оптимизации доступа к XML и реляционным данным, и эти возможности доступны для C , .NET, COBOL, Java и PHP.

XQuery-это новый язык, используемый для запроса xml-данных в DB2

демонстрационный запрос:

 create table person(name varchar(20), data xml);

insert into person values('bane', XMLPARSE(DOCUMENT '
<person>
<first-name>Tom</first-name>
<last-name>Hardy</last-name>
<mobile>89898989</mobile>

</person>
' STRIP WHITESPACE))


some simple xQueries

SELECT *
FROM googolplex.person
WHERE xmlexists('$s[person/first-name="bane"]' PASSING person AS "s");
 

Ответ №8:

Обязательно попробуйте MS-SQL, Oracle и другие существующие системы, поддерживающие XQuery.

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