- 论坛徽章:
- 0
|
原帖由 zszyj 于 2008-6-26 11:11 发表 ![]()
我阐述的观点其实很简单, 对于普遍性的问题, 如果成熟的解决方案已经满足要求,没有必要花很大的代价另辟蹊径。技术人员的精力不应该放在这种低收益的工作上.
另外,数据库并不代表没有不重视算法, 恰恰数 ...
我看有些人还是没弄明白我的观点, 特转贴一个小品文, 希望大家能有所启发.
[转贴]
在遥远的古希腊,有一天柏拉图正在学院里看书,停下来休息的时候,正看到他的学生亚里士多德从外面走来。
亚:老师,马其顿王刚才有个任务交给我们,让我们处理一下学院内所有学生的资料。老师,我们怎么做呢?我听说遥远的东方那边有一个新东西,叫关系数据库,据说还不错,我们是不是拿来用一下。
柏:撇了撇嘴角:切,我们伟大的希腊,伟大的柏拉图学院怎么会用它们的东西,不就是存一些学生的数据么,我们自己来解决。你过来,我们设计一下。
亚走进前来,柏从书架上拿出一卷羊皮纸,开始画图,并给亚解释:嗯,你看我们在羊皮纸上顺序的存所有的学生,然后给每个学生编一个连续的号码,然后直接根据学号跳到对应的页数,不就可以了么。这样的效率可是O(1)的。听说那个数据库光准备阶段就要10张羊皮纸,还得把一些张做成服务型,真是没必要。慢死了。
亚:可是老师,如果某些学生被征去兵役,或者病死,那不是中间的某些号码就要缺失了么?
柏:嗯,这是个问题,这样吧,我们依旧要顺序存储,但是是排序的,找的时候像查字典那样,对半翻,这样效率也可以达到O(lgN)。怎么样?
亚:这样很好,不过我们可能会在前面插入学生的,因为听说那些长老院的子弟很喜欢带8的数字,他们一定会插到前面的。
柏:那我们可以做成链接的,有一个索引的表,就像两千多年后的B+树那个样子,这样就解决了插入的效率问题。。
亚:老师,可是。。
柏:你怎么这么多问题,真是的。
亚:老师,我是说,你连2000年后的事情都知道,真是希腊最伟大的哲学家!
柏:呵呵。。
亚:对了,老师,但是王一般都是按着名字来找人的,那我们怎么办?
柏:嗯,这个难不住我,我们另建一个索引表,把名字进行HASH查找,这样的效率是近似于O(1)的。
亚:老师真厉害,不过王还需要根据别的多个条件,比如大于18岁,家里父母健在的要去服兵役的。
柏:这个王也够麻烦的,那我们创造一个结构化查询语言好了,就叫他SQL好了,他的语法是这样这样的。。。。,对了,还得弄个接口去解释他。还有,后面那些东西业的弄个东西去管理。
不知不觉中,柏所画下的图已经铺满了整个大厅。
亚:老师,可是我听说东方那个关系数据库就是这个样子的,既然这样,我就去东方学系好了,因为听说他们已经作了很多年了,应该有很多人用!
说完,亚转身走出了学院,对这遥远的东方,亚喃喃自语:吾爱吾师,吾更爱真理! |
|