可能看起来是一个奇怪的问题,但是将 XML 用于数据库而不是 MySQL 和表会有性能优势吗?
为了说明这一点,我将创建一个包含用户资料的网站。我比 MySQL 了解更多的 XML,并且知道大多数人将使用 MySQL 作为标准,但想知道是否有人可以通过这种方式来比较两者的比较,以及这个建议是否对于任何理解大 O 表示法的人来说都是无耻的是...
xml 文件越大,内存使用量就越多,因为您必须在运行脚本时将整个 xml 文件加载到 RAM。MySQL 数据库的平均大小约为 4mb。让我们把它变成一个 4 mb 的 xml 文件,加载到 ram 4 mb,从磁盘加载,在每次页面浏览时加载到 ram 中,在任何给定时刻大约有 25 个访问者已经丢失了 100 mb,假设他们浏览了很多页面它加起来到快速的 1 GB 内存。更不用说你每次都会增加大约 1 秒的页面加载时间,如果不是更长的话。更不用说继续读取和写入更改的变量的磁盘负载了。当两个 vitor 想要更新同一个 xml 文件时,线程分叉问题。
SQL 服务器没有这些问题。
好吧,这里有两个主要问题。
首先,如果您要使用数据库,您可以在 XML 数据库和关系数据库之间进行选择。选择主要取决于数据的性质(尤其是复杂性,以及使用方式)。
然后,您可以选择使用数据库还是使用简单文件(例如 XML 文件)。该选择主要取决于数据量和事务吞吐量。
由于您没有告诉我们太多有关数据性质或其数量或吞吐量要求的信息,因此很难就这两个问题向您提供具体建议。
MySQL 有索引,它针对您将要存储的二进制值进行了优化。xml 文件所拥有的只是一个普通文件。任何优化(缓存、索引、任何你能想到的)都将由你来实现。
XML 是一种很好的传输格式,每个人都说它.. 但您不想将它用于存储。
如果您已经了解 XML,但还不了解 MySQL.. 我会说您领先于游戏。您可能会发现编写 SQL 查询和获取结果比使用 xml 数据更直接。
正如我所看到的 - 有几种可用的 XML Db 解决方案 - 这些出现在一个简单的谷歌搜索中:
http://exist-db.org/exist/index.xml;jsessionid=1dowedwdr9hsanbcvdcom8aka
http://www.oracle.com/technetwork/database/features/xmldb/index.html
所以这里最重要的是发展的速度。如果您最熟悉 XML,那么使用其中之一可能会增加开发时间。但是 - 有很多关系数据库 ORM 产品 - 取决于编程语言,它们利用了最多的开发工作并使得使用网站数据库变得容易。因此,如果您对您的网站没有某些特定需求,您可以选择上述任何选项。
这取决于您的数据库的结构。在不了解您的数据的情况下,这个问题无法给出明确的答案。XML 与关系数据库的任何比较很大程度上取决于您选择的数据以及您计划的操作类型。
例如,您希望存储、索引和查询超过百万行,并且每一行都有很多相同的字段。这是一个简单而固定的结构,所有记录都是一样的。它非常适合关系数据库,可以存储在单个表中。关系数据库非常有效地处理这些固定记录。