2009-11-19 3 views
2

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

ответ

4

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

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

Вы также получаете referential integrity, чтобы убедиться, что связанные записи остались нетронутыми и не оставляют вас заброшенными ссылками на другие записи данных. Мы могли продолжать и обсуждать значение locking или мощность stored procedures.

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

+0

Perrty well, в каждой базе данных, с которой я работал, были проблемы с референциальной целостностью (в основном из-за отсутствия нормализации, предположительно по соображениям производительности). Это не бесплатно и требует уровня компетентности, который, судя по всему, не существует в дикой природе. –

+0

А? Правда, можно создавать базы данных для * не * использовать ссылки на внешние ключи, но если они реализованы, я обнаружил, что они обычно работают. – jro

0

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

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

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

0

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

SQL быстрее, чем использование XML.

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

0

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

Роберт Симпсон написал System.Data.SQLite, поставщик данных SQLite для .NET-инфраструктуры. Он бесплатный и с открытым исходным кодом (например, 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-файл вместе с вашей программой, и это сработает.