`

详细讲解大型数据库的设计原则与开发技巧

    博客分类:
  • SQL
阅读更多

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

 

一、成立数据小组

 

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

 

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

 

二、设计原则

 

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

三、设计技巧

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

分享到:
评论

相关推荐

    第10章 图书管理系统数据库设计实例讲解.pdf

    * 必要的工具:在整个数据库的开发与设计过程中,可以先开发一些小的应用工具,以提高数据库的设计和开发效率。 通过本章的学习,读者可以了解数据库设计的原则和技巧,从而设计出一个高效、可靠的数据库,为软件...

    SQL Server 2008数据库设计与实现

    整体而言,《SQL Server 2008数据库设计与实现》不仅为读者提供了丰富的理论知识,而且通过大量实践案例和技巧,帮助数据库开发者深入理解关系型数据库的设计原则,有效地实现和管理SQL Server 2008数据库系统。...

    visual basic数据库开发实例精粹

    三层架构是大型数据库应用系统中常用的设计模式,它将应用程序分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。在VB中实现三层架构,可以帮助开发者更好地分离关注点,提高代码的复用性和可测试性。表现层...

    Oracle数据库应用与开发实例教程.rar

    本教程《Oracle数据库应用与开发实例教程》旨在提供一套详细的学习路径,帮助初学者和有经验的开发者深入理解Oracle数据库的原理、操作及开发技巧。 教程首先会介绍Oracle数据库的基础知识,包括数据库的概念、...

    oracle数据库整体学习资料

    `数据库设计准则(三大范式).ppt`将讲解数据库设计的基本原则,即第一范式(1NF)、第二范式(2NF)和第三范式(3NF),这些是确保数据无冗余、避免更新异常和插入异常的关键。 `数据库设计案例实践.ppt`和`附数据库...

    VC SQL数据库应用系统开发与实例3

    在"Chp9"中,可能会涵盖上述的一些或全部内容,特别是对于更复杂的应用场景,如大型数据库的设计,高级查询技巧,或者特定的数据库设计原则和最佳实践。通过对这一章的学习,读者将能够更好地理解和掌握如何在VC++...

    SQL Server数据库应用与开发:第02章 创建与管理数据库.ppt

    - 数据库分区是大型数据库管理的重要工具,将大表分成多个物理部分,提高查询性能。 8. **小结**: - 学习这些知识后,开发者应能理解数据库的核心概念,掌握创建和管理数据库的技巧,以及如何设计满足需求的规范...

    《Delphi7 高效数据库程序设计》源码含数据库

    9. **性能优化**:针对大型数据集和复杂查询,提供了提高数据库应用性能的策略和技巧。 压缩包中的"2ccc.com.nfo"文件通常包含有关发布者、版权信息或软件说明的文本文件。而"DelphiDBProgramming"可能是包含所有源...

    Oracle数据库应用开发综合设计实验.7z

    总之,Oracle数据库应用开发综合设计实验旨在通过实践让你掌握Oracle数据库的使用和开发技巧,理解数据库设计原理,熟悉数据库管理工具,并能将其应用到实际项目中。这不仅要求理论知识的积累,更需要动手能力的锻炼...

    精通C#数据库开发 精典之作

    不仅如此,本书还会涉及数据库设计原则,如范式理论、关系模型和ER图,以及数据库优化技巧,如索引创建、查询优化等。数据库安全性,如权限管理、角色和身份验证,也是不容忽视的部分,本书可能有深入的阐述。 最后...

    SQL教程 ppt sql Oracle 大型数据库

    此外,还可能涉及到数据库设计原则,如范式理论,以确保数据的一致性和完整性。 【PPT格式】 PPT,全称PowerPoint,是微软公司的演示文稿软件。在本教程中,PPT被用作教学媒介,以图形、图表和文字相结合的方式,...

    Visual C++数据库通用模块及典型系统开发实例导航

    "第9章"可能涉及事务处理和并发控制,这是大型数据库应用中不可忽视的部分。读者将了解事务的概念,ACID属性,以及如何在C++程序中实现事务的提交、回滚和并发控制策略。 "第11章"可能探讨了错误处理和调试技巧,这...

    Java高端培训系列教材_Oracle实用教程_数据库设计

    本教程将这些内容结合Java开发背景,以实例驱动的方式进行讲解,旨在帮助学员掌握Oracle数据库设计的核心技术和最佳实践,提升在Java开发中与数据库交互的能力。通过深入学习,不仅能够提升个人技能,也有助于在职场...

    大型网站系统与Java中间件实践.rar

    3. **数据库技术**:大型网站通常涉及到复杂的数据库设计,包括关系型数据库MySQL、Oracle等,以及NoSQL数据库如MongoDB、Redis的使用场景和优化技巧。 4. **缓存机制**:为了提高性能,大型网站会广泛使用缓存,如...

    ADO.NET访问数据库.rar_mysteriousi9b_基于ADO.net的数据库访问_数据库_访问数据库

    这个压缩包文件很可能是对ADO.NET数据库访问技术的详细讲解,涵盖数据库设计规范和三层架构下的数据访问层实现。通过学习,开发者可以深入理解如何使用ADO.NET与数据库进行高效交互,并掌握数据库设计的最佳实践,...

    大型网站系统与Java中间件开发实践 完美书签 高清

    1. **架构设计**:书中首先会讲解大型网站系统的基本架构模式,如微服务架构、SOA(Service-Oriented Architecture)和分布式系统设计原则。它会深入阐述如何根据业务需求选择合适的架构,以及如何通过模块化和解耦...

    Java 数据库编程宝典

    此外,数据库设计原则,如范式理论,也将被提及,帮助开发者创建高效、稳定的数据库结构。 第五,性能优化是数据库编程中的重要环节。书中会涵盖SQL查询优化技巧,例如索引的创建和使用,查询计划分析,以及如何...

Global site tag (gtag.js) - Google Analytics