免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: eye_onme
打印 上一主题 下一主题

读写文件不是效率很低的嘛,那么数据库为何效率高呢 [复制链接]

论坛徽章:
0
101 [报告]
发表于 2005-11-26 12:23 |只看该作者
原帖由 bennie 于 2005-11-26 12:13 发表

看一下我的小品文,你说的这些我自己处理文件也都可以作!而且,oracle能做的这些并不是数据库本身的性质,那只是一种针对特定环境的优化而已。


呵呵,小品文不错. 不过有点离题了. 你可以另开一贴去讨论.
操作系统和数据库针对存储考虑的重点不完全是一致的.
bennie 该用户已被删除
102 [报告]
发表于 2005-11-26 12:32 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
103 [报告]
发表于 2005-11-27 19:19 |只看该作者
看了半天,也不知道确切讨论什么,题目是讨论文件和数据库,转来转去变成文件系统和数据库了。
数据库也是构建在文件的基础上面的呀,裸设备也是文件呀。
在应用中,涉及到数据的使用和管理。数据量的大小与采用何种方式是直接相关的。
下面是4种常见的数据组织形式及简单的对比

方式        I/O   数据量  数据组织  使用   API                             数据管理/查看
普通文件  高     小        简单        难      自己设计I                     无法直接查看/借助通用编辑器
文件DB    高     中        简单        中      专有的API                    借助偕同工具查询
LDAP      中     大        中           中      统一的API                    可以直观察看
SQLDB    低     超大     复杂        易     专有丰富API及SQL语言  借助标准SQL语言

文件DB指专有的一些以专有方式的文件数据组织形式,代表的如BekleyDB,存放一些key-value对,是非常方便快捷的。
SQLDB特指关系型数据库。
数据量增大,相关的组织管理复杂度就会增高,也就意味着I/O的下降。而我们的数据使用不是简简单单的,而往往带有复杂的条件的。但对于事务操作的性能反而由于良好的数据组织而得到大幅度的提高。将简单的文件I/O和事务性能(I/O)比较,是没有可比性的。

[ 本帖最后由 mirnshi 于 2005-11-27 19:27 编辑 ]

论坛徽章:
0
104 [报告]
发表于 2005-11-28 09:58 |只看该作者
原帖由 sunsroad 于 2005-4-18 17:17 发表
首先,我希望大家搞清楚我们所讨论的本质:不是说数据库将系统I/O的速度提高,而是说其效率要高过文件系统,这两者是有区别的。对于一个特定的设备,譬如说一个硬盘,你是很难通过软件的手法来提高他的性能的。我 ...

分析精辟,偶来顶一个。

论坛徽章:
0
105 [报告]
发表于 2005-11-28 10:44 |只看该作者
write/read 过程实际上就是操作系统调用某个中断的过程int 13
所以读写文件的过程可以看成:          操作系统fs -> int 13中断

数据库系统在没有使用裸设备的时候,   数据库系统 -> 操作系统fs -> int 13中断

数据库系统在使用裸设备的时候:           数据库系统fs -> int 13中断
绕过了操作系统,直接对硬盘进行读写,

所以在使用裸设备的情况下,并且算法效率相同的情况下,数据库系统和操作系统在从硬盘读写数据的效率应该是一样。

至于CACHE , 数据库和操作系统fs都可以用,不是使用数据库而不直接用文件的根本原因。
引用101楼的“数据库的重点是如何在文件系统的基础上更有效的组织数据”在下强烈同意。
在下认为,这才是使用数据库的原因。

[ 本帖最后由 hubertCD 于 2005-11-28 10:47 编辑 ]

论坛徽章:
0
106 [报告]
发表于 2006-04-08 14:29 |只看该作者
认真看了这么多回帖,谈谈我对大家的话的理解。

首先,我们认为数据库高效,其实是指通过数据库对数据的有结构的组织使得我们可以高效的查询到我需要的那部分数据;

第二,很大一部分人把数据库的高效归结为数据库绕过了操作系统的I/O服务,而直接去操作硬件,在自己操作I/O时利用内了缓存和“有组织”的读写硬盘因而提高了I/O效率,所以高效。但是另一部分人反对这个观点,认为文件系统的I/O操作效率比数据库的i/o效率高。正如楼上“hubertCD ”兄台所言,我认为后者正确;因为数据库采用缓存、文件系统同样可以采用缓存,而且现在的文件系统确实也采用了缓存,不见得你数据库采用了缓存就比文件系统采用缓存后效率高了。数据库绕过操作系统直接读写硬盘,文件系统也是通过驱动直接读写硬盘的;凭什么你数据库直接操作读写硬盘就会比文件系统快?所以,如何提高我以为I/O的效率这件事,我认为还是应该让文件系统来做。数据库要作的是按照某种结构组织数据,提高查询等操作的效率。

第三,因为数据库在读写数据时还有很多附加操作,所以在都知道数据在哪里的前提下,从文件系统中读取数据效率比从数据库读取数据的效率高。

结论:数据库的高效是体现在对于关系数据的组织、访问、查询上。设计优良的数据库I/O效率最多和设计优良的文件系统的I/O效率在同一数量级。关于数据库的高效我觉得前面一位兄台的小品文写得很好。

这是我的理解,请指正。

[ 本帖最后由 2eye 于 2006-4-8 14:31 编辑 ]

论坛徽章:
0
107 [报告]
发表于 2006-04-08 23:29 |只看该作者
原帖由 FH 于 2005-4-10 06:59 发表
谁说数据库效率高的?

同意!

往一个文件中写20万条记录,和往数据库中插入20万条记录试试。

内存访问-->文件访问-->数据库访问
时间大概都是1000倍的差。

文件主要是顺序组织,而数据库可以按照键值来组织。
如果一个表中的数据没有键值(定位一条记录顺序遍历)那还不如使用文件来的快(前提数据库不要搞成内存数据库)。

论坛徽章:
0
108 [报告]
发表于 2006-04-09 01:31 |只看该作者
根本看不懂嘛,英语不好

论坛徽章:
0
109 [报告]
发表于 2006-08-05 13:25 |只看该作者
乱七八糟的.有点.

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
110 [报告]
发表于 2006-08-05 16:54 |只看该作者
看了这么多,感觉乱七八糟,而且大多数没有价值,当然有价值的是有的.
首先,讨论的是什么问题好象很多人都不统一,就感觉是一活人在互相讨论不同的问题。
文件系统,文件系统,文件的系统,文件是什么?堆放数据,整理成格式的就叫文件。
一般文件系统,数据库,都是拿来存放文件的,我们的虚拟机,windows上看来就一个文件,难道就不是文件系统。
在那里比较谁快谁慢,感觉就如同讨论每天上厕所和每个星期去一趟超市哪个更爽一样。
无可比性,不同的东西不同的用途。
数据库要实现的是如何快速的在海量数据里面快速插入,查找,删除,整理等。你说它速度慢,那么我倒想问问
单一的find,grep 很快吗?
一般文件系统是给人一个清晰的界面。
用处不同,不要用一个东西的这个用处比较另外一个东西的那个用处
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP