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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Не.

Попробуйте SELECT author FROM book

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

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

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

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