C # - XML ​​против MySQL - PullRequest
       24

C # - XML ​​против MySQL

2 голосов
/ 19 ноября 2009

В этой программе, которую я пишу, потребуется частое взаимодействие с базой данных, и в данный момент я использую только файлы XML. Есть ли польза от использования MySQL или SQL в целом по сравнению с XML. Просто отметьте, что я использую C #, поэтому с MySQL не очень интересно иметь дело с этим (из моего небольшого опыта).

Ответы [ 4 ]

4 голосов
/ 19 ноября 2009

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

MySql, как и многие другие СУБД, предоставит гораздо больше, чем просто место для хранения ваших данных. Самым большим преимуществом использования современных БД, таких как MySql, является поддержка ACID . Это означает, что вы получаете транзакции «все или ничего», обеспечивая согласованность ваших данных.

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

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

0 голосов
/ 19 ноября 2009

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

SQL работает быстрее, чем XML.

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

0 голосов
/ 19 ноября 2009

Если у вас есть реляционные данные, база данных будет работать. В качестве альтернативы MySQL, если вы не ищете централизованное решение, вы можете использовать SQLite. SQLite запускается в процессе (это означает, что программа, на которой он запущен, является собственным «сервером базы данных») и не требует установки, кроме как распространение DLL-файла, содержащего его.

Роберт Симпсон написал System.Data.SQLite , поставщик данных SQLite для .Net framework. Он бесплатный и с открытым исходным кодом (например, SQLite), работает и чувствует себя так же, как System.Data.SqlClient. Он поддерживает стандартные соглашения ADO.Net, Linq и Entity Framework.

Я использовал System.Data.SQLite для рабочих проектов для приложений, которые должны работать быстро и кэшировать данные локально для сравнения между несколькими запусками (обработка данных и планирование заданий). Firefox является хорошим примером приложения, использующего SQLite, Firefox 3 использует SQLite для своих файлов cookie, истории загрузок, автозаполнения форм и, что наиболее важно, вашей истории веб-просмотров.

Опять же, SQLite предназначен для непосредственного использования приложения и не имеет таких функций, как аутентификация пользователя и разрешения схемы. Имеются проблемы, если несколько программ пытаются записать в одну и ту же базу данных (их можно обойти, но это не то, что может сделать настоящая СУБД). Это самое большое преимущество - его не нужно устанавливать и настраивать для работы, как это делает MySQL. В случае с C # все, что вам нужно сделать, это обратиться к System.Data.SQLite и скопировать файл .dll вместе с вашей программой, и он будет работать.

0 голосов
/ 19 ноября 2009

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

Существует поставщик ADO.NET для MySQL, поэтому у вас не должно быть больше проблем с базой данных MySQL, чем с MS SQL Server.

Вы даже можете загрузить DbLinq и попробовать их функции LINQ to MySQL. Может сделать все еще проще (или вы можете использовать Entity Framework с провайдером MySQL ADO.NET).

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