Когда я буду использовать XML вместо SQL?

Я уже несколько лет работаю над веб-приложениями, управляемыми базами данных, и недавно взял на себя проект с CMS, который поддерживает XML. Это заставило меня задуматься об использовании XML/XSLT в целом и в каких ситуациях это было бы более полезно, чем подход, который я всегда использовал, который хранит все мои данные в (My) SQL-базе данных и затем использует PHP/Python/и т.д.. для работы с ним в Интернете по мере необходимости.

Очевидно, что я не "получаю" здесь. Может ли кто-нибудь дать мне примеры приложений, где сохранение данных в XML файлах, а не в базе данных было бы предпочтительнее?

Ответ 1

Процитировать Эта книга (Эффективный XML: 50 конкретных способов улучшить ваш XML):

"XML не является базой данных. означает базу данных. Это никогда будет база данных. реляционный базы данных - это проверенная технология с более 20 лет реализации опыт. Они твердые, стабильные, полезные продукты. Они не идут далеко. XML - очень полезная технология для перемещения данных между различными базы данных или между базами данных и другие программы. Однако это не сама база данных. Не используйте его как один".

Я думаю, что это подводит итог, если немного грубо. XML - это формат обмена данными. Можно иметь библиотеки разбора XML, которые могут запрашивать DOM с выражениями XPath, но это не то же самое, что СУБД. Вы можете создать СУБД с интерфейсом DOM/XPath, но для получения свойств ACID или масштабирования для больших наборов данных, необходимых для реализации механизма СУБД и формата данных с индексами, протоколированием и другими артефактами СУБД, которые (по определению) делают это нечто иное, чем XML.

Ответ 2

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

Следующая ссылка не плохо описать при использовании XML: Почему мне следует использовать XML?

Ответ 3

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

SQL хорош для хранения и поиска. XML хорош для передачи и форматирования.

Ответ 4

1) Когда вам нужно обмениваться данными с другими. XML - это " lingua franca" в Интернете - практически каждый может читать и интерпретировать его, в отличие от файла базы данных.

2) Когда ваш объем данных мал, и вам не нужно выполнять сложные запросы против него. Файлы XML хороши для таких вещей, как сохранение конфигурации или шаблонов документов.

3) Когда у вас не так много писателей, пытающихся получить доступ к тем же данным. В SQL-базах задействованы механизмы concurrency, которые работают за кулисами для вас. Базы данных SQL могут быстро поддерживать индексы для быстрого поиска информации о больших наборах данных...

Ответ 5

Я использую XML для:

  • Сохранение иерархии объектов.
  • Перемещение данных с одного процесса или машины на другой.
  • Данные, которые редко меняются, если вообще; настройки конфигурации и т.п.
  • Как вход в преобразования XSLT: вообще говоря, если одна из моих программ испускает HTML, она использует XSLT для этого, и поэтому исходные данные будут представлены как XML в некоторых
  • Текстовая разметка. (Не забывайте, что!)

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

По иронии судьбы, когда я делаю самое большое использование XML на данный момент, в настольном приложении, которое создает ADO DataSet в памяти и использует методы DataSet WriteXml и ReadXml для их сохранения и извлечения. Я использую ADO, потому что намного проще динамически строить модель данных, определенную метаинформацией, с использованием ADO, чем было бы реализовать мою собственную объектную модель для задачи.

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

Ответ 6

Я считаю, что существует довольно много коммерческих приложений, которые сильно используют XML в качестве носителя данных. Я сделал это для приложения планирования проекта, где пользователь хранит каждый проект в собственном файле. Приложение работает на USB-накопителе и требует нулевой установки. Все данные извлекаются из XML и обрабатываются в памяти, поэтому getRecord (id) быстро гаснет.

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

Ответ 7

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

Также как упоминалось предыдущий плакат, формат обмена.

Ответ 8

И XML, и RDMS могут использоваться как хранилища данных, но каждая реализация имеет свои преимущества и недостатки.

Использование XML для хранения данных для веб-приложения обычно не является большой проблемой, пока вы не начнете обрабатывать большие объемы данных, или вы решите, что хотите узнать другую информацию из своих данных (например: интеллектуальный анализ данных). Другими словами, хранение больших объемов XML файлов для источника данных не очень масштабируемо, но облегчает перемещение данных. XML также может использоваться для сериализации сложных объектов в нереляционном формате, что может устранить необходимость в ORM, если вы можете сериализовать/десериализовать объекты непосредственно из XML

RDMS (базы данных) обычно более масштабируемы, предлагают большую поддержку concurrency и намного быстрее работают с большими объемами данных. Реляционная модель облегчает передачу данных позже. Базы данных страдают от несоответствия объектно-реляционного импеданса (http://en.wikipedia.org/wiki/Object-Relational_impedance_mismatch), который может потребовать от вас писать уродливый код или использовать сложные ORM.

Ответ 9

Я бы пошел, если у меня были ограниченные базы данных mysql на моем хосте, тогда я увижу возможность использования XML в качестве хранилища данных.

Ответ 10

Вот пример использования XML с SQL: Аутентифицированные пользователи читают и записывают данные в различные базы данных, не все из которых являются одной и той же СУБД. Пользователи для компании A используют данные из локальной базы данных SQL Server. Пользователи для компании B используют данные из удаленной базы данных Oracle. И так далее. Десять разных баз данных, каждая из которых имеет несколько разные схемы для одних и тех же базовых данных.

Разработчик веб-сайта не имеет возможности создавать хранимые процедуры в удаленных базах данных. SQL должен быть отправлен непосредственно из веб-приложения в базу данных. Поскольку каждая база данных имеет немного отличающийся синтаксис и схему SQL, для каждой из 12 баз данных для одной и той же операции необходимо использовать разные SQL (SELECT, INSERT и т.д.).

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

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

Ответ 12

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

Ответ 13

Я бы никогда не использовал какой-либо XML для хранения моих данных.

Мы используем преобразования XSLT в качестве слоя абстракции данных в нашем приложении SOA. Все объекты отправляют друг другу данные в XSLT, поэтому есть только один язык, который им нужно понять. За исключением соединителя базы данных, который должен иметь возможность преобразовывать данные в SQL, для отправки его в БД.

Таким образом, у вас нет генерации строки SQL, распределенной по zillion-объектам в вашем приложении. Делает техническое обслуживание намного проще.