- 论坛徽章:
- 0
|
原帖由 spender 于 2008-6-26 07:48 发表 ![]()
花了半个小时,大致浏览了一下大家的发言:
我发表两个看法:
一、不能因为服务器足够强劲儿忽略算法问题
现在很多程序员认为服务器太强大了,我单位就有配置48颗CPU的小型机,应用还是慢,确实 ...
对于看法一提出的问题, 我认为与查找用户名是否重复不是一回事. google问题其实是按索引查找,即已经明确知道ID号,从已对该字段作索引的表中查找记录, 即"ID='abcdef'"; 而你说的是模糊查询, 即不知道名字的全称,只知道部分字符要找出表中所有名字字段匹配这些字符的的所有记录, 其实是全表扫描,这是两码事,不可比.一般来讲, 在大表中执行like, match之类的操作,即使数据库再强大,也是要避免的.
对于看法二, hash表的搜索方式,只适合小规模的内存数据, 不适合大规模数据量基础上的查找; 只适合静态数据, 不适合象用户信息这类不断增删改查的数据.此外, 我坚持一个观点, 就是大规模数据量上的按索引查找这种简单高效的工作, 数据库的性能足以胜任, 用不着48C, 一颗CPU就可达到惊人的效果,犯不着动则什么高深算法. 算法, 不是用来解决那种1+1=2之类的简单问题的. 而且, 象前面提到的所谓HASH算法, 还要考虑碰撞问题,用户ID是否重复,不是检测正确率达到99%就可以了, 是必须达到100%的.另外还要考虑并发访问,数据持久性的保证等问题,并不是想的那么简单. 因此, 对于这类问题, 数据库是最合适的方案, 即使将全地球人的用户ID都放到一个数据库里, 也不见得是大问题,况且根本不可能出现这种情况. |
|