接下来正式开篇讲解在实际中大型项目中oracle的高级设计及开发的内容,以下讲解的oracle内容以及示例程序都是基于oracle11R2。
为了防止脱离实际地搞一堆理论,本人尽量用实际工作中的例子来说明问题,当然一些必要的理论有时候还是需要讲解,因为说的内容是高级设计及开发,入门级的SQL以及数据库概念将不会做详细讲解。
绝大多数IT项目,都是围绕数据库进行各种业务的,所以也有人将这类项目称为数据库项目,也就是说数据库是重点,有过项目设计经验的都知道,好的数据库设计,可以让开发和维护变得简单,提升系统的扩展性。要想设计一个好的数据库系统,对数据库知识的掌握程度,加上个人的业务经验,直接决定了设计的好坏。
Oracle数据库是个庞大的体系,从大的方向可以分为oracle内部体系结构和外部体系结构。本人以后将陆陆续续通过实际例子引出oracle的各种知识结构。
言归正传,我们现在要开发一个百万级别访问量的商业问卷调查系统,参与调查的网民将参与抽奖活动,我们开始进行数据库设计。
因为是oracle高级设计和开发的讲解,具体的业务分析不深入,简单说明:从使用者角度,系统会分两部分,一个是网站前端,一个是管理后台;从业务上分类,则会包含会员管理模块、问卷内容管理模块、统计分析模块、积分模块、权限设置、系统设置等等。
接下来将截取会员管理模块部分,详细讲解数据库高级设计,引出各种oracle的各种知识,特别是可以优化设计和开发的知识,其中一些业务细节将被忽略。不当之处请见谅,谢谢高手们批评指正。
首先要判断系统的类型,毫无疑问,问卷调查系统是个OLTP系统。
其次评估数据量,评估下来会有2000万用户,活跃用户会有200万。2000万用户当然不算小,1个字节位就是20M的数据,假如一条会员记录信息有0.5K的话,会员表的大小就是10G。
由上面两个评估和判断可以得出结论,普通的企业管理软件的设计思路肯定不是好方法。
通常的会员系统中会员表会包括以下字段:
会员ID、会员登录名、会员登录密码、会员昵称、会员email、会员中文名、证件类型、证件号码、会员手机、会员性别、会员类别、会员QQ号码、联系电话、联系地址、邮政编码、会员所在地区、会员生日、兴趣爱好、职业、岗位、
自我介绍、个人头像、注册时间,等等
在设计上性能考虑就很重要,可以起码从以下五点考虑:
A)合理定义字段的数据类型
B)将会员表分拆成多个表
C)建立分区表
D)建立适当的索引
E)普通表数据对应的表空间和索引表对应的数据表空间分离
未完,针对上述五点论述,待续。。。