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

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

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

Я думаю, что вопрос более точен в сравнении XML с СУБД, а не с SQL.

JAL 30.12.2009 14:46
en.wikipedia.org/wiki/Xml_database
Max Toro 25.01.2010 01:59

Я думаю, что вопрос точнее ФАЙЛ против РСУБД, а не XML против SQL.

pfeds 25.02.2013 10:30

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

Jeffrey Bosboom 27.06.2015 23:26
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
103
4
85 942
13
Перейти к ответу Данный вопрос помечен как решенный

Ответы 13

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

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

Обновление ссылки от 06.09.2012: xml.silmaril.ie/index.html

wip 06.09.2012 03:41

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

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

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

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

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

Ответ принят как подходящий

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

“XML is not a database. It was never meant to be a database. It is never going to be a database. Relational databases are proven technology with more than 20 years of implementation experience. They are solid, stable, useful products. They are not going away. XML is a very useful technology for moving data between different databases or between databases and other programs. However, it is not itself a database. Don't use it like one.“

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

Я понимаю, что этот ответ был написан в 2008 году, но с появлением ряда систем баз данных на основе файлов я задаюсь вопросом, имеют ли они больше смысла, чем обычные СУБД в ряде ситуаций. SQL был разработан в темные времена, когда дисковое пространство было дорогостоящим, и стал образцом мышления в индустрии программного обеспечения. Это не значит, что это правильно с точки зрения современных методов.

pfeds 25.02.2013 10:32

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

ConcernedOfTunbridgeWells 25.02.2013 14:22

Более эффективное управление дисковым пространством - не единственное преимущество реляционных баз данных. Большинство реляционных баз данных работают с фиксированными длинами полей и записей, что позволяет им реагировать в постоянное время на любой запрос, в то время как XML-, Yaml-, JSon- и другие текстовые хранилища данных в основном основаны на тексте, поэтому все запросы выполняются посредством синтаксического анализа текста, который требует огромных затрат процессорного времени и может выполняться за непредсказуемое количество времени. Это можно было обойти только с помощью дорогостоящей (с точки зрения процессорного времени) предварительной буферизации с огромными требованиями к памяти.

mg30rg 28.11.2013 12:43

Если я напишу SQL SP для извлечения данных и использую HTML для отображения вместо файла XSLT, будет ли это быстрее или примерно так же?

SearchForKnowledge 21.10.2014 18:09

в настоящее время вы можете использовать XQuery для баз данных XML.

Don Dilanga 08.07.2018 17:37

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

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

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

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

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

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

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

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

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

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

«Все объекты отправляют друг другу данные в XSLT» Серьезно?

Goran 14.10.2008 20:02

Все те, кто общается по служебной шине.

Treb 14.10.2008 21:14

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

Goran 15.10.2008 18:26

Да, вы правы, мне нужно перефразировать это.

Treb 15.10.2008 19:09

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

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

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

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

Для чего я использую XML:

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

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

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

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

Не надо.

Попробуйте ВЫБРАТЬ автора ИЗ книги

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

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

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