В чем разница с использованием баз данных XML и MySQL? Какой я должен использовать? - PullRequest
12 голосов
/ 06 августа 2009

Ну, я знаю, это немного глупо. Если я хочу хранить большое количество данных. Должен ли я использовать XML или базы данных (MySQL)?

Почему вы выбираете (тот) один?

Каковы плюсы и минусы использования xml?

Какие плюсы и минусы в использовании MySQL?

Clubpenguin, habbo hotel, эти виртуальные миры используют xml или mysql ??

Ответы [ 9 ]

20 голосов
/ 06 августа 2009

MySQL (или SQL Server, Oracle, DB2 и т. Д.) - это движки баз данных: это специфические приложения, которые были созданы для хранения и обработки данных и очень хорошо справляются с этим; они также могут работать на сервере, отличном от того, на котором находится ваша основная программа, что позволяет распределять нагрузку.

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

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

Также, обязательна ссылка Джоэля Спольски .

4 голосов
/ 06 августа 2009

Подумайте, есть ли у вас документ XML с вложенным элементом person, который содержит информацию о каждом из ваших пользователей, и у вас есть 3000 пользователей. Если вы хотите получить информацию для одного человека, вам будет достаточно разобрать этот огромный файл, чтобы найти информацию этого человека. Вы могли бы использовать некоторые умные попытки перескочить по файлу, но в конечном счете будет много последовательного доступа.

С базой данных у вас обычно будут индексы, которые позволят вам очень быстро выполнять задачи поиска, подобные приведенным выше. В приведенном выше сценарии поиск индивидуума в индексированной таблице, вероятно, будет в 100 раз быстрее.

3 голосов
/ 06 августа 2009

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

Еще один вариант, который вы можете попробовать, - это использование базы данных XML, например, Xindice (http://xml.apache.org/xindice/).. В настоящее время базы данных XML используются не так часто, в основном потому, что у нас нет хороших математических теорий об иерархических базах данных. может быть действительно полезным, если у вас есть правильная проблема ...

2 голосов
/ 12 августа 2009

Markmail.org может вас удивить - это xml store.

Чтение Рона Баррета (http://www.rpbourret.com/xml/XMLAndDatabases.htm) - отличный источник по этому вопросу.

1 голос
/ 06 августа 2009

Ну, я знаю, это немного глупо. Если я хочу хранить большое количество данных. Должен ли я использовать XML или базы данных (MySQL)?

Прежде всего, XML является иерархическим по своей природе, тогда как MySQL является реляционным .

Если вы будете хранить свои данные как XML документ:

<customer>
 <address/>
 <address/>
</customer>

, очень легко получить все адреса клиентов, но не так просто получить клиентов по данному адресу.

Во-вторых, XML более ориентирован на пользователя. Вы можете легко редактировать его в своем любимом текстовом редакторе. В MySQL это не так просто.

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

Если ваши данные являются реляционными и вам нужны быстрые операции с большими объемами данных, используйте MySQL.

1 голос
/ 06 августа 2009

Это скорее вопрос StackOverflow , а не вопрос ServerFault. В любом случае ..

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

Если вам не нужно хранить данные с реляционными свойствами, вы можете попробовать хранилище ключей / значений или ориентированную на документы базу данных вместо СУБД для повышения производительности / масштабируемости в обмен на меньшее количество функций.

0 голосов
/ 06 августа 2009

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

mySQL - это программный продукт, который относится к классу продуктов, называемых СУБД (Система управления базами данных). СУБД управляют вашими данными и предоставляют различные возможности хранения, поиска, индексации, запросов и транзакций.

Вам нужно решить, нужен ли вам формат файла или система управления. В зависимости от этого, вы можете выбрать XML (или другой формат, например, JSON или простой текстовый файл) или mySQL (или другую реляционную СУБД, например MS SQL Server или Oracle - или даже нереляционную СУБД) .

0 голосов
/ 06 августа 2009

Я полагаю, что более вероятно, что они используют Полноценную СУБД в качестве резервного хранилища и только генерируют / анализируют XML в качестве интерфейса.

XML слишком тяжел для использования в базе данных с большим объемом данных.

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

Преимущество СУБД в том, что она обеспечивает гораздо более эффективное хранение упакованных данных с предсказуемым поиском / поиском по записям, множеству хранилищ данных и множеству признаков.

0 голосов
/ 06 августа 2009

Большинство крупных сайтов используют такие базы данных, как MySQL.

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

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