Я работаю над веб-приложениями, управляемыми базами данных, уже несколько лет и недавно взял на себя проект, связанный с CMS, поддерживающей XML. Это заставило меня задуматься об использовании XML / XSLT в целом и о том, в каких ситуациях он был бы более полезен, чем подход, который я всегда использовал, когда все мои данные хранятся в базе данных (My) SQL, а затем используются PHP / Python / и т. Д. для работы с ним в сети по мере необходимости.
Очевидно, я кое-что не понимаю ... может ли кто-нибудь привести мне примеры приложений, в которых предпочтительнее было бы хранить данные в файлах XML, а не в базе данных?
Ответы:
Чтобы процитировать эту книгу (Эффективный XML: 50 конкретных способов улучшить свой 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:
Между этими вариантами использования и вариантами использования базы данных не так много совпадений. Некоторые, но не очень.
По иронии судьбы, где я наиболее активно использую 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, необходимо использовать другой SQL для каждой из 12 баз данных для одной и той же операции (SELECT, INSERT и т. Д.).
Один из вариантов внедрения операторов SQL в веб-приложение - разместить их в файлах XML. Каждый XML-файл содержит набор операторов SQL для одной из дюжины баз данных. Код определяет, к какой базе данных осуществляется доступ для вошедшего в систему пользователя, и извлекает соответствующий SQL из указанного файла XML.
Как и в случае с хранимыми процедурами, SQL в файле XML можно обновлять без остановки или перекомпиляции приложения.
источник
Некоторые приложения используют файлы XML для хранения конфигурации, я предпочитаю использовать для этого SQLite .
источник
Я бы никогда не использовать XML для хранения своих данных.
Мы используем преобразования XSLT в качестве уровня абстракции данных в нашем приложении SOA. Все объекты отправляют друг другу данные в XSLT, поэтому им нужно понимать только один язык. За исключением коннектора базы данных, который должен иметь возможность преобразовывать данные в SQL для отправки их в БД.
Таким образом, у вас не будет генерации строки SQL, распределенной по миллиону объектов в вашем приложении. Значительно упрощает обслуживание.
источник