数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

大型数据库的设计原则与开发技巧


发布日期:2018年01月14日
 
大型数据库的设计原则与开发技巧

随着计算机技术越来越广泛地应用于国民经济的各个领域在计算机硬件不断微型化的同时应用系统向着复杂化大型化的方向发展数据库是整个系统的核心它的设计直接关系系统执行的效率和系统的稳定性因此在软件系统开发中数据库设计应遵循必要的数据库范式理论以减少冗余保证数据的完整性与正确性只有在合适的数据库产品上设计出合理的数据库模型才能降低整个系统的编程和维护难度提高系统的实际运行效率虽然对于小项目或中等规模的项目开发人员可以很容易地利用范式理论设计出一套符合要求的数据库但对于一个包含大型数据库的软件项目就必须有一套完整的设计原则与技巧

成立数据小组

大型数据库数据元素多在设计上有必要成立专门的数据小组由于数据库设计者不一定是使用者对系统设计中的数据元素不可能考虑周全数据库设计出来后往往难以找到所需的库表因此数据小组最好由熟悉业务的项目骨干组成

数据小组的职能并非是设计数据库而是通过需求分析在参考其他相似系统的基础上提取系统的基本数据元素担负对数据库的审核审核内容包括审核新的数据库元素是否完全能否实现全部业务需求对旧数据库(如果存在旧系统)的分析及数据转换数据库设计的审核控制及必要调整

设计原则

规范命名所有的库名表名域名必须遵循统一的命名规则并进行必要说明以方便设计维护查询

控制字段的引用在设计时可以选择适当的数据库设计管理工具以方便开发人员的分布式设计和数据小组的集中审核管理采用统一的命名规则如果设计的字段已经存在可直接引用否则应重新设计

库表重复控制在设计过程中如果发现大部分字段都已存在开发人员应怀疑所设计的库表是否已存在通过对字段所在库表及相应设计人员的查询可以确认库表是否确实重复

并发控制设计中应进行并发控制即对于同一个库表在同一时间只有一个人有控制权其他人只能进行查询

必要的讨论数据库设计完成后数据小组应与相关人员进行讨论通过讨论来熟悉数据库从而对设计中存在的问题进行控制或从中获取数据库设计的必要信息

数据小组的审核库表的定版修改最终都要通过数据小组的审核以保证符合必要的要求

头文件处理每次数据修改后数据小组要对相应的头文件进行修改(可由管理软件自动完成)并通知相关的开发人员以便进行相应的程序修改

设计技巧

分类拆分数据量大的表对于经常使用的表(如某些参数表或代码对照表)由于其使用频率很高要尽量减少表中的记录数量例如银行的户主账表原来设计成一张表虽然可以方便程序的设计与维护但经过分析发现由于数据量太大会影响数据的迅速定位如果将户主账表分别设计为活期户主账定期户主账及对公户主账等则可以大大提高查询效率

索引设计对于大的数据库表合理的索引能够提高整个数据库的操作效率在索引设计中索引字段应挑选重复值较少的字段在对建有复合索引的字段进行检索时应注意按照复合索引字段建立的顺序进行例如如果对一个万多条记录的流水表以日期和流水号为序建立复合索引由于在该表中日期的重复值接近整个表的记录数用流水号进行查询所用的时间接近而如果以流水号为索引字段建立索引进行相同的查询所用时间不到因此在大型数据库设计中只有进行合理的索引字段选择才能有效提高整个数据库的操作效率

数据操作的优化在大型数据库中如何提高数据操作效率值得关注例如每在数据库流水表中增加一笔业务就必须从流水控制表中取出流水号并将其流水号的数值加一正常情况下单笔操作的反应速度尚属正常但当用它进行批量业务处理时速度会明显减慢经过分析发现每次对流水控制表中的流水号数值加一时都要锁定该表而该表却是整个系统操作的核心有可能在操作时被其他进程锁定因而使整个事务操作速度变慢对这一问题的解决的办法是根据批量业务的总笔数批量申请流水号并对流水控制表进行一次更新即可提高批量业务处理的速度另一个例子是对插表的优化对于大批量的业务处理如果在插入数据库表时用普通的Insert语句速度会很慢其原因在于每次插表都要进行一次I/O操作花费较长的时间改进后可以用Put语句等缓沖区形式等满页后再进行I/O操作从而提高效率对大的数据库表进行删除时一般会直接用Delete语句这个语句虽然可以进行小表操作但对大表却会因带来大事务而导致删除速度很慢甚至失败解决的方法是去掉事务但更有效的办法是先进行Drop操作再进行重建

数据库参数的调整数据库参数的调整是一个经验不断积累的过程应由有经验的系统管理员完成以Informix数据库为例记录锁的数目太少会造成锁表的失败逻辑日志的文件数目太少会造成插入大表失败等这些问题都应根据实际情况进行必要的调整

必要的工具在整个数据库的开发与设计过程中可以先开发一些小的应用工具如自动生成库表的头文件插入数据的初始化数据插入的函数封装错误跟蹤或自动显示等以此提高数据库的设计与开发效率

避免长事务对单个大表的删除或插入操作会带来大事务解决的办法是对参数进行调整也可以在插入时对文件进行分割对于一个由一系列小事务顺序操作共同构成的长事务(如银行交易系统的日终交易)可以由一系列操作完成整个事务但其缺点是有可能因整个事务太大而使不能完成或者由于偶然的意外而使事务重做所需的时间太长较好的解决方法是把整个事务分解成几个较小的事务再由应用程序控制整个系统的流程这样如果其中某个事务不成功则只需重做该事务因而既可节约时间又可避免长事务

适当超前计算机技术发展日新月异数据库的设计必须具有一定前瞻性不但要满足当前的应用要求还要考虑未来的业务发展同时必须有利于扩展或增加应用系统的处理功能

相对于中小型数据库大型数据库的设计与开发要复杂得多因此在设计开发过程中除了要遵循数据库范式理论增加系统的一致性和完整性外还要在总体上根据具体情况进行分布式设计紧紧把握集中控制统一审核的基本原则保证数据库设计结构紧凑分布平衡定位迅速在数据库操作上要采用一定的技巧提高整个应用系统的执行效率并注意适当超前以适应不断变化的应用及系统发展的要求

上一篇:PowerBuilder与数据库的连接

下一篇:SQL实战新手入门