今天在某群中看到“文件保存到数据库与用FileStream直接写到磁盘中,哪个效率更高?”的讨论,并贴出了一个CU上类似主题的帖子链接。此帖2005年4月发表,标题是“读写文件不是效率很低的嘛,那么数据库为何效率高呢?”,讨论十分热烈。
这两个问题都提到数据库的效率,前者是因MS-SQL2008的一项新功能而起,后者问题本身就引起了争论,后面的跟帖集中在“数据直接存储在文件系统和存储数据库中哪一个效率高”之辩。跟帖中有一位参与讨论的仁兄写了篇生动的小文章来阐述他对数据库的理解,我觉得是亮点,转过来分享一下。另一位仁兄列出了几种常见的数据组织形式简单对比,具备一些参考价值,同样也转一下。还有一位仁兄(2eye@CU)总结了大家的看法,认为数据库的高效,“是通过对数据的更有效组织使得我们可以更高效的查询到我需要的那部分数据”,精辟的理解。
1、四种常见数据组织形式对比
(作者mirnshi@CU,个别文字调整)
方式 |
I/O |
数据量 |
数据组织 |
使用 |
API |
数据管理 |
普通文件 |
高 |
小 |
简单 |
难 |
自己设计 |
无法直接查看/借助通用编辑器 |
文件DB |
高 |
中 |
简单 |
中 |
专有的API |
借助工具查询 |
LDAP |
中 |
大 |
中 |
中 |
统一的API |
可以直观察看 |
SQL DB |
低 |
超大 |
复杂 |
易 |
专有丰富的API及SQL语言 |
借助标准SQL语言 |
文件DB指以key/value的形式来组织数据,可实现相对方便快捷的访问,如Berkeley DB。
SQL DB特指关系型数据库。
2、为什么要有关系数据库
(作者bennie@CU,校正个别文字,标题为后加)
在遥远的古希腊,有一天柏拉图正在学院里看书,停下来休息的时候,正看到他的学生亚里士多德从外面走来。