Преимущества / недостатки XML по сравнению с RDMS - PullRequest
2 голосов
/ 13 февраля 2009

Есть ли недостатки в использовании XML вместо RDMS? Я спрашиваю об этом потому, что мои данные более естественно представлены XML-структурой, а не RDBMS. Сначала я думал о хранении данных в реляционной базе данных , но мне не хватало гибкости реляционной базы данных для обработки древовидной структуры данных. Поэтому я думаю о том, чтобы просто хранить данные в XML.

Одна вещь, которую я боюсь, это снижение производительности. Хотя СУБД может обрабатывать большие наборы данных, я не уверен, можно ли сказать то же самое о XML. Кроме того, запросы к базе данных довольно хорошо проработаны и довольно просты в использовании и конструировании, как насчет XML-запросов? Я не знаю.

Я делаю .Net приложение.

Ответы [ 6 ]

5 голосов
/ 14 апреля 2011

Если вы работаете с данными XML, то почти нет сомнений в том, что вам следует искать базу данных Native XML.

Две из самых популярных баз данных Native XML MarkLogic server и eXist предоставляют чрезвычайно надежные и эффективные механизмы индексации, а также многие функции, упомянутые в этом списке.

На самом деле, сервер MarkLogic для многих поисковых приложений решительно выполняет базы данных SQL, особенно в больших наборах данных xml. Это связано с тем, что он создан специально для работы с XML и знает лучший способ его индексировать, что без нормализации SQL невозможно.

Исходя из текущей тенденции рынка, очевидно, что, хотя SQL не уходит, его явно теряющая рыночная доля подходит к NoSQL, особенно когда речь идет о данных, ориентированных на документы.

Подробнее ----

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

Современные собственные базы данных xml позволяют легко добавлять и эффективно индексировать массовые объемы неподтвержденных (но проверенных схемой) данных.

Использование xpath для запроса этих документов является гораздо более естественным способом обхода и извлечения данных, поскольку запросы представляют собой представление структуры.

Он также легко трансформируется с помощью XQuery и XSLT.

Конечный результат - более высокий ROI для разработчиков. Вы пишете меньше кода и получаете больше. Я писал в основном в приложениях php / sql. Как только мы перевели нашу архитектуру на Native XML и XQuery, я смог заменить тысячи строк кода гораздо более простым и эффективным XQuery.

Если у вас есть бюджет (~ 250 тыс.), Проверьте сервер MarkLogic. Это одна из самых впечатляющих и масштабируемых систем баз данных, когда-либо созданных, и все это Native XML. Насколько я знаю, он поддерживает транзакции, откат и т. Д. И все другие функции, которые предоставляет SQL.

eXist (http://exist -db.org) - проект с открытым исходным кодом, который имеет:

  • полная поддержка XQuery / XPath / XSLT
  • эффективные механизмы индексации
  • Встроенный полнотекстовый поиск
  • Поддержка REST / WebDAV / SOAP / ATOM / XMLRPC
  • Versioning
4 голосов
/ 13 февраля 2009

Не следует сравнивать XML с СУБД, поскольку это две взаимодополняющие технологии; XML не следует рассматривать или рассматривать как замену RDMBS.

RDMBS предназначен для последовательного хранения больших объемов данных. СУБД должна заботиться о согласованности данных и т. Д. *

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

2 голосов
/ 13 февраля 2009

На мой взгляд, это факторы, которые следует учитывать

  1. Что больше соответствует вашим приложениям
  2. Какой объем данных вам нужно обработать?
  3. Вы передаете данные между приложениями или собираетесь запросить их?

1011 *
*

После рассмотрения этих факторов я бы предложил вам принять решение использовать СУБД, если у вас большие потребности в обработке данных и запросах, а также XML, если вам нужно экспортировать данные или передавать их между приложениями. Я также хотел бы предложить, чтобы вы рассмотрели ограничения на ваши данные и потребности в целостности, как предложил Ник.

У меня мало опыта в этой области, однако это то, что я слышал от других в моей школе.

Всего наилучшего.

1 голос
/ 13 февраля 2009

То, что СУБД обеспечивает, что XML не более или менее в порядке важности:

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

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

XML - нормальный формат сериализации для объектной модели. Это хорошо для взлома моделей данных относительно свободной формы, к которым вы также можете получить доступ через XPath - особенно если вы собираетесь преобразовать эти данные в XML или HTML через XSLT. И это имеет заслугу быть стандартным и независимым от платформы.

Но если вы слишком амбициозны с этим, вы быстро попадете на ту территорию, которая приводит к тому, что вы пишете о том, насколько ужасен XML. (Я говорю с вами, Джефф Этвуд .)

0 голосов
/ 13 февраля 2009

Вы можете иметь лучшее из обоих миров, ваши данные могут храниться в базе данных, и это должно быть лучшим решением. Поскольку БД работает быстрее, безопаснее, имеет резервное копирование и восстановление, откат, инструменты администратора и так далее ...

Звучит так, как будто ваши данные имеют иерархический характер, базы данных можно принудительно хранить иерархии без особых проблем.

Когда дело доходит до использования ваших данных, если вы извлекаете их как Xml. Я знаю, если вы используете Sql Server, который работает «из коробки», я не уверен в этом для Oracle.

0 голосов
/ 13 февраля 2009

Два больших неотъемлемых преимущества СУБД:

  1. индексирование. Значительно повышает производительность.
  2. сдерживание. Вы можете определить отношения между элементами, которые помогают поддерживать целостность ваших данных.

Имейте в виду, что вы можете поместить xml на сервер SQL и запросить его с помощью xpath, поэтому в зависимости от формы ваших данных вы сможете получить лучшее из обоих миров.

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