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

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

99
задан Patrick Lewis 23 February 2013 в 19:53
поделиться

12 ответов

К кавычке Эта Книга (Эффективный XML: 50 Особенных методов Улучшить Ваш XML):

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

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

97
ответ дан ConcernedOfTunbridgeWells 24 November 2019 в 05:05
поделиться

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

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

21
ответ дан Thronk 24 November 2019 в 05:05
поделиться

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

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

14
ответ дан James Curran 24 November 2019 в 05:05
поделиться

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

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

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

10
ответ дан Dave Markle 24 November 2019 в 05:05
поделиться

Вещи я использую XML для:

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

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

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

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

5
ответ дан Robert Rossney 24 November 2019 в 05:05
поделиться

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

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

1
ответ дан billb 24 November 2019 в 05:05
поделиться

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

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

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

1
ответ дан John Topley 24 November 2019 в 05:05
поделиться

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

1
ответ дан milot 24 November 2019 в 05:05
поделиться

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

у разработчика веб-сайта нет способности создать хранимые процедуры на удаленных базах данных. SQL должен быть отправлен непосредственно от веб-приложения до базы данных. Так как каждая база данных имеет немного отличающийся синтаксис SQL и схему, необходимо использовать различный SQL для каждой из этих 12 баз данных для той же операции (ВЫБОР, ВСТАВИТЬ, и т.д.).

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

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

1
ответ дан DOK 24 November 2019 в 05:05
поделиться

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

0
ответ дан CMS 24 November 2019 в 05:05
поделиться

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

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

Этот путь Вам не распределили генерацию строки SQL по огромному количеству объектов в Вашем приложении. Делает обслуживание намного легче.

0
ответ дан Treb 24 November 2019 в 05:05
поделиться

Не надо.

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

1
ответ дан 24 November 2019 в 05:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: