嗯,我知道它有点愚蠢。如果我想存储大量数据。我应该使用xml还是数据库(mysql)?
为什么选择那个?
使用xml有什么优缺点?
使用mysql有什么优缺点?
Clubpenguin,habbo酒店,那些虚拟世界都在使用xml或mysql ??
答案 0 :(得分:20)
MySQL(或SQL Server,Oracle,DB2等)是数据库引擎:它们是为数据存储和处理而构建的特定应用程序,并且非常擅长这样做;它们也可以在与主程序不同的服务器上运行,从而实现负载共享。
XML文件只是存储在您的计算机或其他计算机上的文本文件;它们需要被读取,解析和写入,只有你的程序才能这样做。由于它们的文本特性,它们也非常非常低效:读取和解析文本文件非常慢,修改它甚至更糟。
XML文件适用于存储配置设置和在不同系统之间传递数据,但数据存储和处理绝对应该存在于适当的DBMS中。
答案 1 :(得分:4)
考虑您是否有一个带有嵌套人员元素的XML文档,其中包含有关每个用户的信息,并且您有3000个用户。如果你想为一个人提取信息,那么你将完成解析这个庞大文件的任务,找到那个人的信息。您可能会使用一些聪明的搜索来跳转文件,但最终会有很多顺序访问。
使用数据库,您通常会有索引,这样您就可以非常快速地执行上述搜索任务。在上面的场景中,在索引表中查找个人可能会快100倍。
答案 2 :(得分:3)
很大程度上取决于您要存储的数据类型。如果您主要存储面向文档的东西,XML可能是一个不错的选择。如果要存储大量小型层次结构,则XML可能比SQL更好。读取和解析XML文件的时间肯定是从数据库中获取简单查询所需的时间。但是,如果您的数据自然不适合数据库,那么查询的成本可能会急剧上升,实际上不仅仅是使用XML文件。
您可以尝试的另一个选项是使用XML数据库,例如Xindice(http://xml.apache.org/xindice/)。 XML数据库目前使用的并不多,主要是因为我们没有关于层次数据库的良好数学理论。但如果你有正确的问题,它们真的很有用......
答案 3 :(得分:2)
Markmail.org可能会让您大吃一惊 - 这是一个xml商店。
阅读Ron Burret(http://www.rpbourret.com/xml/XMLAndDatabases.htm)是这个主题的重要来源。
答案 4 :(得分:1)
这似乎更像是StackOverflow问题,而不是ServerFault问题。不管怎么说..
如果您需要随机访问数据元素,请使用真实数据库。如果您只是进行批处理或其他什么,xml将起作用,但数据库仍然可以。
如果您不需要存储具有关系属性的数据,您可以尝试使用键/值存储或面向文档的数据库而不是RDBMS,以获得更好的性能/可伸缩性,以换取更少的功能。
答案 5 :(得分:1)
嗯,我知道它有点愚蠢。如果我想存储大量数据。我应该使用xml还是数据库(mysql)?
首先,XML
本质上是层次结构,而MySQL
是关系。
如果您将数据存储为XML
文档:
<customer>
<address/>
<address/>
</customer>
,获取客户的所有地址非常容易,但获取特定地址的客户却不那么容易。
其次,XML
更加面向用户。您可以使用自己喜欢的文本编辑器轻松编辑它。在MySQL
,这并不容易。
鉴于上述情况,如果您的数据是分层的,尺寸较小,并且您需要在没有任何前端的情况下轻松编辑它们,请使用XML
。
如果您的数据是关系型的,并且您需要对大量数据进行快速设置操作,请使用MySQL
。
答案 6 :(得分:0)
大多数大型网站都在使用像MySQL这样的数据库。
您需要回答的最重要问题是您希望如何访问数据。如果你想让很多人每秒多次查看(例如一个受欢迎的网站),那就使用像mysql这样的数据库。
答案 7 :(得分:0)
我相信他们更有可能将完全成熟的DBMS用作后备存储,并且只生成/解析XML作为接口。
XML非常重,无法用于高数据存储数据库。
结构过于分析,即使你有某种服务器启动,解析,然后根据XML数据运行,初始化时间也会很凶,每次数据重新编译阶段都是如此。写完了。
RDBMS的优势在于拥有更高效的打包数据存储,可通过记录和多个数据存储以及多个指标进行可预测的搜索/搜索。
答案 8 :(得分:0)
XML不是数据库,它是文件格式(或者更确切地说,是输入或输出流格式)。它允许您使用XML的语法元素定义自己的格式,然后您可以将内存对象转换为XML流并将其保存到磁盘。
mySQL是一种软件产品,属于称为DBMS(数据库管理系统)的产品类。 DBMS管理您的数据并提供各种存储,检索,索引,查询和事务功能。
您需要决定的是您是否需要文件格式或管理系统。根据这一点,您的选择可能是XML(或其他一些格式,例如JSON或纯文本文件)或mySQL(或其他关系DBMS,例如MS SQL Server或Oracle - 或者甚至可能是非关系型DBMS)