数据量大的系统就用反模式去设计,合理吗?

frogdan 2003-11-18 11:07:05
我刚接了个项目,已到尾声。数据库用的是Oracle9i,共有三十张表左右,实际有上千万条记录吧。项目是BS结构,用JSP + Tomcat,中间是自己实现的DB Pool和Cache。
我在编码的时候发现数据库的设计有很多冗余,例如员工表中把所属部门的ID和Name都包括了,这显然不符合数据库范式的要求。经理说这是因为数据量大,为提高查询效率所做的反模式应用。但我很难接受这样的方法,在这里想请教一下各位高手,对于数据量大的系统,应该怎样去设计?
...全文
52 94 打赏 收藏 转发到动态 举报
写回复
用AI写文章
94 条回复
切换为时间正序
请发表友善的回复…
发表回复
gks_cn 2004-03-10
  • 打赏
  • 举报
回复
当数据比较稳定,而且如果不做冗于,连接的表很多的时候。查询比较慢,
这个时候做冗于比较好。
如果数据跟心很快,维护数据一直的代价很高的时候就不适合做冗于。
aceplus 2004-03-10
  • 打赏
  • 举报
回复
mark
panadaa 2004-03-03
  • 打赏
  • 举报
回复
借光。
帮忙看看:
(很简单的问题啊, 概念性的东西,为什么没人回答》?)
难道没有人搞清楚这个?
http://expert.csdn.net/Expert/topic/2784/2784459.xml?temp=.1080133
warp_drive 2004-02-29
  • 打赏
  • 举报
回复
我认为你的经理是对的,万事没有绝对,事事都有矛盾,是好是坏只是尺度问题。
wbgigi 2004-02-24
  • 打赏
  • 举报
回复
看了我一个上午,一个字,值啊!学习!
xunua 2004-02-09
  • 打赏
  • 举报
回复
赞成适当冗余,它所带来的问题可以用触发器来解决。
sailang 2004-02-05
  • 打赏
  • 举报
回复
既然说话了,那小弟就继续说几句吧.
小弟是做电信的..
电信用户数向来是甚大..比如说就100万吧..
单个用户的基本资料也就那么几十个字段吧..
加上历史记录,用户表也就是那么个100多万
单个用户平均使用的产品也就是4,5个吧..
用户市话不敢做详单,单单长话的清单一个月平均10条吧..
.....
大家有心情可以计算计算..
总之我头经常被搞晕...
sailang 2004-02-05
  • 打赏
  • 举报
回复
碎片说的很好,分析精辟,厉害.我看完碎片说的后都不太想看下面的东西了...
也许很多人没有做过大数据量的项目,但你做过后才会知道是为什么了...
如果规范化的设计能够解决所有的问题,那还要其他的比如优化,反规范化,数据仓库,多维数据库..干什么?
yfjyz 2004-02-05
  • 打赏
  • 举报
回复
如何自己编写DB Pool和Cache呢?
qingbai 2004-01-15
  • 打赏
  • 举报
回复
甚是可笑!好好学懂规范化、反规范化,以及关系优化这些概念再说话吧!注意我说的是“学懂”
孬毛毛 2004-01-15
  • 打赏
  • 举报
回复
mark
春秋2000 2004-01-13
  • 打赏
  • 举报
回复
这里人气很足,有意思。
jdsnhan 2004-01-10
  • 打赏
  • 举报
回复
学习。
foxittle 2004-01-10
  • 打赏
  • 举报
回复
gz
Nickle_Final 2004-01-06
  • 打赏
  • 举报
回复
模式也行,非模式也行,只要能让系统性能更优,我就采用它!
dancedog 2003-12-24
  • 打赏
  • 举报
回复
谁是负责人,谁拍板。
dabinzeng 2003-12-23
  • 打赏
  • 举报
回复
mark
bu2ront 2003-12-18
  • 打赏
  • 举报
回复
up
dgwangfang 2003-12-15
  • 打赏
  • 举报
回复
员工表的数据量会是海量?会超过1000万条记录?
tseug 2003-12-14
  • 打赏
  • 举报
回复
对于一个系统的设计需要考虑问题很多,而且不同位置上的人有不同的出发点。经理考虑的可能是如何缩短开发时间,降低成本;一般的开发人员可能考虑如何能够采用一些自己刚学到的技术;用户可能考虑这个系统是不是很实用,很方便,等等。至于范式和模式都是一个方法,一种解决问题的方法,如果把问题和方法割裂开来,那么在好的方法也没有什么实际用处,作程序要讲究具体问题具体分析。数据量大是一个问题,如果仅仅从这个问题上来考虑是没有什么唯一的答案的,也不可能有一个完善的解决方案的。这就需要进一步分析,是什么数据的数据量大,更新的频度有多少,主要是哪一类的操作;同时还要考虑,是什么环境,系统的配置如何,那些地方可以充分利用硬件完成,等等;手中有了这些基本的资料就可以进一步分析了。在进一步的分析时,就需要经理根据项目的资源、资金、工期等情况作折衷了,所以如果有时候一些技术人员看到经理没有采用自己的方案就说经理不懂技术什么的,其实完全不是这样的情况,经理可以不懂技术,但他一定要知道如何控制进度、如何控制成本。搞技术的人员一定要记住这样一句话:技术上最优的方案未必是最佳方案。就如同孙子说的,百战百胜,非善之善者,不战而屈人之兵,善之善者。
加载更多回复(74)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧