Где различия используют базу данных XML и MySQL? Который я должен использовать?

Вы входите в ту серую область, где могло бы быть лучше постобработать эту внешнюю сторону мир SQL.

, По крайней мере, это - то, что я сделал бы: я был бы просто ORDER BY вместо GROUP BY и цикл через результаты обработать группировку как фильтр, сделанный на клиентском языке:

  1. Запускаются путем инициализации last_id к ПУСТОМУ УКАЗАТЕЛЮ
  2. Выборка следующая строка набора результатов (если нет большего количества строк, переходят к шагу 6)
  3. , Если идентификатор строки отличается, чем last_id, запускают новую выходную строку:

    a., если last_id не является ПУСТЫМ тогда, производят сгруппированную строку

    , b. устанавливают новую сгруппированную строку = входная строка, но хранят имя как единственный массив элемента

    , c. устанавливают last_id на значение текущего идентификатора

  4. Иначе (идентификатор совпадает с last_id), добавляют название строки на существующую сгруппированную строку.

  5. Возвращаются к шагу 2
  6. Иначе, Вы закончили; если эти last_id не является ПУСТЫМ, тогда производит существующую строку группы.

Тогда Ваш вывод заканчивается включая имена, организованные как массив, и может решить, как Вы хотите обрабатывать/выходить/форматировать их тогда.

, Какой язык/систему Вы используете? PHP? Perl? Java?

12
задан topher 10 October 2013 в 17:09
поделиться

9 ответов

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

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

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

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

20
ответ дан 2 December 2019 в 04:53
поделиться

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

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

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

1
ответ дан 2 December 2019 в 04:53
поделиться

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

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

3
ответ дан 2 December 2019 в 04:53
поделиться

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

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

4
ответ дан 2 December 2019 в 04:53
поделиться

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

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

0
ответ дан 2 December 2019 в 04:53
поделиться

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

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

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

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

0
ответ дан 2 December 2019 в 04:53
поделиться

Я знаю, что это немного глупо. Если я хочу хранить большой объем данных. Что мне следует использовать: xml или базу данных (mysql)?

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

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

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

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

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

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

1
ответ дан 2 December 2019 в 04:53
поделиться

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

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

2
ответ дан 2 December 2019 в 04:53
поделиться

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

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

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

0
ответ дан 2 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

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