C#-XML与MySQL

C#-XML与MySQL,c#,mysql,xml,comparison,C#,Mysql,Xml,Comparison,在我正在编写的这个程序中,它需要频繁的数据库通信,目前我只使用XML文件。与XML相比,一般使用MySQL或SQL真的有好处吗。请注意,我使用的是C#所以MySQL在其中处理起来不是很有趣(因为我的经验很少)。如果存在真正的关系数据……使用RDBMS几乎总能让您受益匪浅。有了查询引擎的支持,检索数据的速度会更快,而不是将XML节点捆绑在一起。在向结构中插入数据时,还将获得引用完整性 MySQL有一个ADO.NET提供程序,因此处理MySQL数据库应该不会比处理MS SQL Server更困难 您

在我正在编写的这个程序中,它需要频繁的数据库通信,目前我只使用XML文件。与XML相比,一般使用MySQL或SQL真的有好处吗。请注意,我使用的是C#所以MySQL在其中处理起来不是很有趣(因为我的经验很少)。

如果存在真正的关系数据……使用RDBMS几乎总能让您受益匪浅。有了查询引擎的支持,检索数据的速度会更快,而不是将XML节点捆绑在一起。在向结构中插入数据时,还将获得引用完整性

MySQL有一个ADO.NET提供程序,因此处理MySQL数据库应该不会比处理MS SQL Server更困难


您甚至可以下载DbLinq并尝试一下他们的linqtomysql功能。可以使事情变得更简单(或者您可以使用实体框架和MySQL ADO.NET提供程序)。

XML文档的大小可能是一个很大的因素。在XML中,您要么生成包含大量附加数据的大型复杂文本文件,要么将数据拆分为多个文件。管理这些文件可能是一件令人头痛的事。使用SQL数据库可以减少磁盘空间的浪费

SQL比使用XML更快


任何SQL数据库都可以让您访问一整套权限和角色功能,而使用XML可能很难实现这些功能。

如果您有关系数据,数据库就可以工作。作为MySQL的替代方案,如果您不寻求集中式解决方案,可以使用SQLite。SQLite在进程中运行(意味着运行它的程序是它自己的“数据库服务器”),除了分发包含它的DLL文件之外,不需要安装

Robert Simpson编写了一个.Net框架的SQLite数据提供程序。它是免费的、开源的(比如SQLite),工作起来感觉就像System.Data.SqlClient一样原生。它支持标准ADO.Net约定、Linq和实体框架

对于需要快速运行并在本地缓存数据以便在多次运行(数据处理和作业调度)之间进行比较的应用程序,我使用System.Data.SQLite进行项目工作。Firefox是使用SQLite的应用程序的一个很好的例子,Firefox3使用SQLite进行cookie、下载历史记录、表单自动完成,最重要的是您的web浏览历史记录


同样,SQLite是用于直接应用程序使用的,并且缺少用户身份验证和模式权限等功能。如果多个程序试图写入同一个数据库,则会出现问题(可以解决这些问题,但与真正的RDBMS不同)。它最大的优点是不需要像MySQL那样安装和设置。在C#情况下,您所要做的就是引用System.Data.SQLite并将.dll文件与程序一起复制,它就会工作。

在维护存储在XML文件中的数据方面,与关系数据库(在您的情况下是Mysql)相比,该数据库比简单的XML文件要健壮得多。但这只是确定应用程序需求的一个练习

MySql和许多其他RDBMS一样,将提供的不仅仅是一个存放数据的地方。使用MySql等现代数据库的最大优势是支持。这意味着您可以获得全部或全部事务,从而确保数据的一致性

您还可以确保相关记录保持完整,不会留下对其他数据记录的废弃引用。我们可以继续讨论的价值或权力


但是,你应该考虑你的申请的需要。如果您在保持数据有序方面做了大量的练习,或者在尝试读取和写入数据时关心共享访问和文件锁定,那么您需要在XML文件的基础上下赌注。当一个基本的mysql数据库能够解决这些问题时,不需要试图找到解决这些问题的方法。

Perrty我使用过的每个数据库都有引用完整性问题(主要是由于缺乏规范化,可能是出于性能原因),它不是免费的,而且需要一种在野外似乎不存在的能力水平,嗯?诚然,可以将数据库设计为不使用外键引用,但如果实现,我发现它们通常是有效的。