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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
3 234
8

Ответы 8

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

Спасибо, я только что изучал это.

Matt Luongo 28.01.2010 21:57

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

Microsoft SQL Server поддерживает столбцы XML. Это больше, чем просто поддержка BLOB / TEXT.

Вы можете использовать столбцы 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.)

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

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

Возможна версия DB2 9.x с поддержкой PureXML.

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

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

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

Если вы ищете собственный XML db, я определенно рекомендую Sedna. Блестящая поддержка разработчиков.

Начиная с 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");

Другие вопросы по теме