Когда я буду использовать XML вместо SQL? [закрытый]



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



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

645   13  

13 ответов:

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

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

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

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

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

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

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

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

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

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

вещи, которые я использую XML для:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

нет.

попробовать выберите автора из книги

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

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

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

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

Comments

    Ничего не найдено.