当前位置:编程学习 > C#/ASP.NET >>

C# 搜索的时候 读xml文件快 ,还是数据库快

数据库有张视图 牵连很多表

如果我一次把所有数据都读出来,做成 xml文件,然后用程序在xml里找  会不会更快

如果xml快的话

   再比较下

把视图单条数据做成xml文件 (就大概有几万个xml文件)  这样的话会怎的

@常规读很复杂的sql视图    @读视图做成的单个xml文件   @读单条数据做成的xml文件群(直接文件名配比)

那个快

--------------------编程问答-------------------- 理論上 XML 會更快,因爲VS非常支持XML 內部機制有 特別優化.但是 在 讀 XML的時候 會卡,慢一些.尤其是大數據量 --------------------编程问答-------------------- 霸王举顶 --------------------编程问答-------------------- 程序启动时全部读出来,放到一个服务器端的数据结构里(几万个记录,数据量不大),每次要读的时候,直接在在服务器里读。 --------------------编程问答-------------------- 我感觉数据库好一点 --------------------编程问答-------------------- 那么基本就是 xml快了

再往下看呢


@读视图做成的整张表的xml文件       @读单条数据做成的xml文件群(直接文件名配比)  --------------------编程问答-------------------- up --------------------编程问答-------------------- 理論上讀數據庫性能會好一些。具體速度會受實際情況影響。比如數據庫是否與程序在同一服務器還有硬件配置等 --------------------编程问答-------------------- 哈哈,我的东西是做成活的,到时想咋整就咋整。
现在暂时是用XML,配置文件下也好几千个xml了,当然这些xml我们专门写了配置工具,要改是很容易的。
今后实在是感觉太多文件难管理时就直接导入到数据库,改用数据库引擎。数据库维护及更新会方便些。 --------------------编程问答-------------------- 服务器么 双通 6300esb P4 2.8G 2G内存

数据假设是10000条 --------------------编程问答-------------------- up --------------------编程问答-------------------- 搜索用lucene啊 --------------------编程问答-------------------- 毫无疑问,当然是SQLSERVER快. --------------------编程问答-------------------- 我就是来看看 --------------------编程问答-------------------- up --------------------编程问答-------------------- 没有研究做基础 !不知道! --------------------编程问答-------------------- 感觉数据量小的时候XML快,上了百万条就一定是数据库快了,数据库有索引嘛。

你那10000条直接放在内存里读,最快了。不需要做成文件。 --------------------编程问答-------------------- 自己在内存里弄一个自定义的数组或者DataSet读起来很方便的,又快。 --------------------编程问答-------------------- 数据量比较小的时候XML快,数据量大时肯定数据库快。
XML没有任何索引等等机制。又是文本文件。XML文本更快的话,就没必要有数据库了。呵呵。 --------------------编程问答-------------------- 帮顶!! --------------------编程问答-------------------- 数据量大当然直接读数据库快啦... --------------------编程问答-------------------- 当然数据库快乐,特别是大数据量的时候,
因为数据库可以加索引,进行优化,但XML不可以,只是文本 --------------------编程问答-------------------- 这种问题自己动手测试一下就知道了

路过蹭分。 --------------------编程问答-------------------- 如果XML数据少当然是XML快,如果数据多的话还是数据库好一点! --------------------编程问答-------------------- 举双脚赞成数据库快.数据库是2进制,xml是文本,是多少进制?65k进制,哈哈.你存10000个int,看看数据库多大,然后看看xml多大.哈哈,结果吓死你.
要更快,就要建索引了.或者采用别的暂存技术. --------------------编程问答-------------------- 如果数据相对比较少的话,应该是XML快点
但是访问大数据的话,数据库肯定快了 --------------------编程问答-------------------- 读到内存里,从内存里面读,这样是最快的.表其实就一2维的数组. --------------------编程问答-------------------- xml快,数据库的读取是xml的格式进行的 --------------------编程问答-------------------- 数据相对较少的话,XML快 
大量数据的话,数据库快 --------------------编程问答-------------------- 数据量大的话用数据库快,数据量小的话没有必要用XML,不用考虑更新数据的问题,如果追求性能的话可以在数据库表中通过建索引、表空间分区、物化试图(数据量变动小时使用)等方式实现!
对于数据变动少或不会变动的可以考虑用XML。 --------------------编程问答-------------------- 这个事情肯定是这样的:

XML适合数据少的情况;
DB适合数据多的情况。

由于LZ并没有说他想在什么情况下操作数据,比如数据量、列数、表现形式等,所以以上各位所说的都是一些标准的解释。 --------------------编程问答-------------------- 在数据量小的时间的话用XML比较快的

但是如果数据量大的时候用数据量更快

视具体情况而定的 --------------------编程问答-------------------- 这个应该看数据量吧,数据量越大用数据库越好 --------------------编程问答-------------------- 看数据量,和你是否需要数据库的特性 --------------------编程问答-------------------- 个人认为数据库会快一些
读到xml里面的话,写入和提取的时间也是个问题。 --------------------编程问答-------------------- 数据量比较小的时候XML快,数据量大时肯定数据库快 --------------------编程问答-------------------- 一堆人都在胡说八道,什么数据量不数据量的,不管是读什么文件,只要是读文件的,都没有读数据库快! --------------------编程问答-------------------- 看数据量的大小了 大的用数据库  小的用xml
--------------------编程问答-------------------- 一堆人都在胡说八道,什么数据量不数据量的,不管是读什么文件,只要是读文件的,都没有读数据库快!

没错。呵呵。。但居然有人说理论上XML快。。不知怎么得到这结论的。。呵呵。。 --------------------编程问答-------------------- 说数据库快的给点依据吧,我们也学习一下 --------------------编程问答-------------------- 用XML也是万不得已,查的视图牵连很多表,而且又是经常性,基本每秒都有,所以数据库很累,所以才有想法弄成xml,,,,这么多人,分都要撒一会了... --------------------编程问答-------------------- 同意楼上! 数据量比较小的时候XML快,数据量大时肯定数据库快   --------------------编程问答-------------------- 数据存储量小的时候XML快,数据量大时肯定数据库快,不让还要开发什么关系型数据库作什么用
在数据库建立索引,提高查询效率 --------------------编程问答-------------------- 算了,还是建索引吧  --------------------编程问答-------------------- 理论上数据库快
因为数据库是随机直接存取的;
而XML是带有标记等非数据信息的文本文件,
是顺序读取的,就是说要从头开始读,还要根据读到的标记进行判断;
数据库系统的缺陷在于太庞大、太复杂,而且是唯一的,占资源比较多
连接的打开就要耗费不少时间
数据库访问有许多中间步骤与类型转换,这也要占用不少时间;
读文件就比较直接,而且文件IO的并发更容易,占资源更少~ --------------------编程问答-------------------- 大数据量一般都是文本,直接读取数据的话可能XML快写
但如果是搜索,XML就很吃力了;
如果再有复杂查询、汇总什么的,XML就完全无能为力了~ --------------------编程问答-------------------- 感觉数据多的话XML会慢点 --------------------编程问答-------------------- mark --------------------编程问答-------------------- 还是用sql吧。。。。数据量大的话。 --------------------编程问答-------------------- 维也纳 !!!!! 崇拜你

固定数据的话 就用XML  --------------------编程问答-------------------- 如果数据量非常具大,个人还是推荐使用SQL

要知道,数据搜索本身就是一个非常难的学科,而不是大家想像中的去遍历某一个表,或者让某一个函数去执行。

另外,XML的话是直接读取在内存中的,假设你要查找的表是一个int型,占8字节,然后。。。如果有100W条的数据,包括XML架构读取在内存中,你自己计算一下需要多少内存去支持吧。。。

而且,数据库通过对于主键,对于索引的维护来加快数据库的搜索,这种方式也是XML中不存在的。

所以,还是一句话:少量,多次访问数据用XML,大量,而并不是非常频繁地访问数据,还是使用SQL吧。
当然你也可以二种方法结合,具体要看你软件使用的环境 --------------------编程问答-------------------- 挖靠,这分怎么加啊,每人2分啊,谁认识斑竹啊 --------------------编程问答-------------------- 这个问题很深刻,比如DB2 9.0的版本中,有双引擎,经典数据库底层和纯XML底层,你如果去问IBM,哪种更快,我估计他们也答不上来。

其实,最终还是看具体应用的数据,如果是层次型的数据且层次较深,那么XML合适,如果是经典的数据库类型的扁平数据,那么数据库合适。

当然,如果数据量小,则没有什么比较的必要,内存里的东西自然比磁盘里的要快。

BTW 现在XML也支持各种丰富的查询(比如XQuery等),甚至也可以和SQL一起混合使用,可以参见DB2 PureXML --------------------编程问答-------------------- XML也不是一定要都读到内存里才能查询、操作,看了前面的帖子,这可能是大家的一个误区 --------------------编程问答-------------------- 关注 --------------------编程问答-------------------- 和维也纳一样想法,但是看上去yezi更技术 --------------------编程问答-------------------- 我觉得数据库快~~~~~~~~ --------------------编程问答-------------------- 应该是xml快 --------------------编程问答-------------------- 建议参考下面的文章

http://www.ibm.com/developerworks/cn/db2/library/techarticles/dm-0612nicola/index.html

当然这只是对IBM DB2来说的,其他的数据库产品据我所知目前还没有做到类似的Native XML效率 --------------------编程问答-------------------- 数据库快,随便比比就知道了。
--------------------编程问答-------------------- 读 XML 文件快。

理由: XML只是在读文件[一般情况是本地]。不用过太多的关口
而读数据库(例如sql)

你还要有帐号、密码、TCP/IP 等等一大串的协和关口等 --------------------编程问答-------------------- 如果是多的、大量的数据你只有放在数据库里。别无选择
况且 datareader 是个好东西。不会慢到哪去。
如果只读一个很小的数据。就放到 XML里 --------------------编程问答-------------------- XML块,但是大文件的时候效率就下来了。 --------------------编程问答--------------------
楼上很多人都以数据量来判断XML与数据库...
其实我觉得还有以个重要的因素是大家忽略的,就是并发量!
所谓并发量:就是同以时间访问同一数据表 or 同一字段的时候;

为什么MS SQL 2000 与Oracle 有如此大的差别呢
最大差别就是并发量...
Oracle对同一字段的并发量是20000
也就是说有20000人可以同时访问某一字段

而XML是文本格式,它的同时间写入写出会有保护的...
所以就算数据量不大,但并发量大,XML根本无法符合要求
--------------------编程问答-------------------- 当然是数据库快,因为数据库自身有快速存储的算法,其IO速度是非常快的,远高于普通的IO处理速度 --------------------编程问答-------------------- --------------------编程问答-------------------- 楼上 扯淡。。。  当然要分哪个快了 --------------------编程问答-------------------- 44楼回答的比较中肯 --------------------编程问答-------------------- 哇,旧帖又被顶上来了 --------------------编程问答-------------------- --------------------编程问答-------------------- 分情况了,如果你读取的文件需要访问多次数据库,那么建议你用XML,如果是只是在某一个特定的时候访问再取数据,还是建议用SQL吧





这是我的专用头像,咋能被盗用呢 --------------------编程问答-------------------- 居然还有那么肯定的说出 绝对是数据库快的 人....
我给你个完全相反的结论:不管在任何情况下,程序读取XML文件数据.永远要比读取数据库数据快

数据库首先就需要消耗你一个I/O连接操作. 这个保持连接的操作你认为很小吗?推开这些不谈.你以为数据库本身自己不是在操作文件吗. 你凭空多了个中间层还多了个通信操作,你凭借的什么就认为数据库要比直接读文件更快呢?

不妨看看我画的这个模型:
C#程序 ----I/O操作读取(磁盘路径索引)--> xml文件

方式1:C#程序 ----TCP连接(也是I/O操作)--> 数据库 ----(前置的SQL命令分析)读取(以及磁盘索引)--> 数据库文件到数据库控制的内存区域
进阶2:C#程序 ----TCP连接(也是I/O操作)--> 数据库 ----内存中的数据(SQL命令索引到内存数据)

看了这个分析,你还认为数据库在任何情况下都比直接读取XML要快吗?

那么数据库是否就没有意义呢:
数据库.exe只不过是 增加了一个逻辑操作层.这个逻辑操作层有异常强大的数据整合,操作能力.为什么要叫关系型数据库,这不就是吗!对于海量查找,数据关系匹配,复杂的数据操作,数据存储的结构,分布 等等系列与数据管理有关的东西 都由数据库帮你代理了.

所以:数据库存在的意义肯定不是让你快速读取数据.
而是:让你快速方便的管理数据! --------------------编程问答-------------------- 所以,我的结论是:
复杂数据结构用数据库, 结构简单用XML.

简单,并且海量 并且关系单纯, 不涉及到其他引用的 也推荐用XML.或者TXT
需要hashtable+海量操作的一些功底(实际上这是在自己实现数据库 hash索引的功能)

启动类别的预加载用XML (程序启动加载XML项), 数据存储类别的数据用数据库 (用户注册数据).

例:90%以上的网络游戏服务器的配置,资源,任务脚本 都是通过XML/其他文件方式加载的. 通过数据库搞这个基本没有. --------------------编程问答-------------------- 多年前的沉贴又复活了。为我一时的冲动忏悔.哪个快我没有试出来,因为没有可试性。期待大牛回复,结贴。 --------------------编程问答-------------------- 支持数据量比较小的时候XML快,数据量大时肯定数据库快。 --------------------编程问答-------------------- 这个影响因素很多, 比如网络状况
xml文件在较大的时候, 读取的时候会卡住

用一些如Sqlite  Perst.Net之类的嵌入式数据库, 应该能满足你的要求, 算是个折中方案 --------------------编程问答-------------------- 围观围观 --------------------编程问答-------------------- 很好很强大,很黄很暴力 --------------------编程问答--------------------
引用 27 楼 sknice 的回复:
xml快,数据库的读取是xml的格式进行的


这位朋友很暴力啊


数据库快,数据库专门就是干这个的。XML不过是文本的一种形式。 --------------------编程问答-------------------- XML --------------------编程问答--------------------
引用 18 楼 haiwangstar 的回复:
数据量比较小的时候XML快,数据量大时肯定数据库快。
XML没有任何索引等等机制。又是文本文件。XML文本更快的话,就没必要有数据库了。呵呵。

支持 --------------------编程问答-------------------- xml的话是分析慢。
数据库分析快, 但是有可能受网速影响。

我现在连一个破数据库就是死慢死慢的, 因为在新加坡。
从中国连过去, 都喝完半杯咖啡了。 --------------------编程问答-------------------- 疯狂鄙视楼主一个贴在拖了两年多。都给我拖成三个三角了。 --------------------编程问答-------------------- 看晕了。 --------------------编程问答-------------------- 楼上几位都不看 71,72楼的回帖, 不妨看看再发言... --------------------编程问答-------------------- 建议放在使用数据库,查询、修改都好办。
另外,大量的xml文件会造成磁盘碎片,即使现在快,时间久了也就不快了。 --------------------编程问答-------------------- XML要插入/修改 记录,可是比数据库慢多了。 --------------------编程问答-------------------- 量小xml快.量大,数据库快,不用争 --------------------编程问答-------------------- 理论上讲,数据库会更快一些。

当然,指的是设计合理的数据库。如果数据库设计不够合理,查询数据变成了全库检索,那和XML就没有太大差别了。 --------------------编程问答-------------------- 只读XML快 --------------------编程问答-------------------- jf................ --------------------编程问答-------------------- 毫无疑问,当然是SQLSERVER快。不过如果当你服务器启动的时候XML文件被缓存下来,之后的读取全部在缓存中读取的话就比SQLSERVER快了。 --------------------编程问答-------------------- 明确的告诉楼主:
肯定是数据库速度快,随着数据量的增加,这种差距越来越明显
一个很简单的道理:
XML的载体就是一个文本,是承载数据的简单介质
数据库是专业手段,历史上DB最先最早解决的就是小容量数据的性能,而后大容量数据的存储性能才不断提高
我们有关系型数据库、文档型数据库作为主流数据库可以选择
性能比不上文本?简直是笑话 --------------------编程问答-------------------- --------------------编程问答-------------------- 93楼表格引自:
http://www.51cto.com/art/200509/3148.htm
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,