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

大型数据库的设计原则与开发技巧 收藏 随着计算机技术越来越广泛地应用于国民经济的各个领域,在计算机硬件不断微型化的同时, 应用系统向着复杂化、大型化的方向发展。数据库是整个系统的核心,它的设计直接关系系 统执行的效率和系统的稳定性。因此在软件系统开发中,数据库设计应遵循必要的数据库范式 理论,以减少冗余、保证数据的完整性与正确性。只有在合适的数据库产品上设计出合理的数 据库模型,才能降低整个系统的编程和维护难度,提高系统的实际运行效率。虽然对于小项目 或中等规模的项目开发人员可以很容易地利用范式理论设计出一套符合要求的数据库,但对 于一个包含大型数据库的软件项目,就必须有一套完整的设计原则与技巧。 一、成立数据小组 大型数据库数据元素多,在设计上有必要成立专门的数据小组。由于数据库设计者不一定是使 用者,对系统设计中的数据元素不可能考虑周全,数据库设计出来后,往往难以找到所需的库 表,因此数据小组最好由熟悉业务的项目骨干组成。 数据小组的职能并非是设计数据库,而是通过需求分析,在参考其他相似系统的基础上,提取系 统的基本数据元素,担负对数据库的审核。审核内容包括审核新的数据库元素是否完全、能否实 现全部业务需求;对旧数据库(如果存在旧系统)的分析及数据转换;数据库设计的审核、控制 及必要调整。 二、设计原则 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.适当超前。计算机技术发展日新月异,数据库的设计必须具有一定前瞻性,不但要满足当前的 应用要求,还要考虑未来的业务发展,同时必须有利于扩展或增加应用系统的处理功能。 相对于中小型数据库,大型数据库的设计与开发要复杂得多,因此在设计、开发过程中,除了要遵 循数据库范式理论、增加系统的一致性和完整性外,还要在总体上根据具体情况进行分布式设计, 紧紧把握集中控制、统一审核的基本原则,保证数据库设计结构紧凑、分布平衡、定位迅速。在数据 库操作上,要采用一定的技巧提高整个应用系统的执行效率,并注意适当超前,以适应不断变化的 应用及系统发展的要求。 http://blog.youkuaiyun.com/creazyfrog/archive/2007/10/22/1836725.aspx
GCdepth散点图绘制 基因组组装完成后,需要对组装结果进行评估,其中GC_depth图是一个比较重要的指标,改图的横坐标是GC含量,纵坐标是平均深度。以30k为窗口(window)无overlap计算其GC含量和平均深度。如果存在样品污染,通常能够从GC含量分析中呈现出来。下文探索了几种绘制GC_depth散点图的方法思路。 阅读详情

相关推荐

SDR实战(五)-AD9361多芯片同步技术详解

本文详细解析了AD9361多芯片同步技术在SDR系统中的实现方法,涵盖硬件连接方案、软件配置流程及同步验证技巧。通过等长时钟走线、低抖动时钟分配和精确的SYNC信号控制,解决MIMO系统中多AD9361芯片的时钟同步难题,提升系统性能与稳定性。

weixin_30952535的博客 761

谷粒商城 (四) --------- 项目结构创建 & 初始化数据库

谷粒商城项目结构创建、初始化数据库

在森林里麋了鹿 1065

东方通TongWeb虚拟主机配置全流程:从创建到应用部署的保姆级教程

本文提供东方通TongWeb虚拟主机从创建、HTTP通道配置到应用部署的完整实战指南。重点解析虚拟主机的逻辑隔离价值、通道参数调优原理及企业级多应用部署架构,并涵盖常见报错排查与性能优化建议,旨在帮助运维和开发人员高效、稳定地完成应用系统部署。

oil88的博客 530

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

大型数据库的设计原则与开发技巧 目前,计算机技术已经广泛地应用于国民经济的各个领域当中,在计算机硬件不断微型化的同时,应用系统也逐渐向着复杂化、大型化的方向发展。数据库是 整个系统的核心,它的设计直接关系系统执行的效率和系统的稳定性。因此在软件系统开发中,数据库设计应遵循必要的数据库范式理论,以减少冗余、保证数据的 完整性与正确性。只有在合适的数据库产品上设计出合理的数据库模型,才能降低...

lovecontry 116

DSPF28335:从零到一,实战GPIO与外部中断的嵌入式系统交互设计

本文以德州仪器DSPF28335芯片为例,详细讲解了嵌入式系统中GPIO与外部中断(EXTI)的实战配置方法。通过一个完整的按键控制LED并触发ADC采样的项目,深入剖析了GPIO寄存器配置、三级中断机制(外设-PIE-CPU)以及中断服务函数编写的核心要点,帮助开发者掌握嵌入式交互设计的基石,并提供了关键的避坑指南与调试清单。

weixin_29169899的博客 115

CentOS7下Node.js v20+安装与常见依赖库问题解决指南

本文详细介绍了在CentOS7系统下安装Node.js v20+的完整流程及常见依赖库问题的解决方案。通过升级glibc到2.28+、配置环境变量以及处理libstdc++版本问题,帮助开发者顺利在老旧系统上部署最新版Node.js,提升开发效率。

weixin_30689307的博客 156

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

随着计算机技术越来越广泛地应用于国民经济的各个领域,在计算机硬件不断微型化的同时,应用系统向着复杂化、大型化的方向发展。数据库是整个系统的 核心,它的设计直接关系系统执行的效率和系统的稳定性。因此在软件系统开发中,数据库设计应遵循必要的数据库范式理论,以减少冗余、保证数据的完整性与正 确性。只有在合适的数据库产品上设计出合理的数据库模型,才能降低整个系统的编程和维护难度,提高系统的实际运...

dingdingshinie1008的博客 118

基于phpstudy搭建pikachu靶场

一、phpstudy下载安装配置 phpstudy介绍 简单介绍一下phpstudy,详细请参考百度解读。pikachu是基于PHP环境搭建的,需要数据库支持,所以装pikachu之前需要先安装它需要的环境,就像你养鱼需要给它提供水环境一样。安装phpstudy能满足pikachu的需求,所以先安装phpstudy。 phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是

ptxybird的博客 1万+

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

讲解大型数据库的设计原则与开发技巧原文引自:http://tech.ccidnet.com/art/1105/20080315/1391565_1.html目前,计算机技术已经广泛地应用于国民经济的各个领域当中,在计算机硬件不断微型化的同时,应用系统也逐渐向着复杂化、大型化的方向发展。数据库是整个系统的核心,它的设计直接关系系统执行的效率和系统的稳定性。...

weixin_34270865的博客 149

华为OD机试 - 敌情监控 - 滑动窗口(Java 双机位C卷 200分)

说明 第一行第一个正整数5,表示敌人有5个营地,第二个正整数2,表示连续营地 的数量是2, 第3个正整数3, 表示后续会有3条查询的命令;接下来一行有 5个正整数,分别表示每个营地里开始的人的数,第1个营地开始有1个人,第 2个营地开始有2个人,第3个营地开始有2个人,第4个营地开始有3个人,第 5 个营地开始有3个人;第3条命令:Query 2 4 表示查询第2到第4个营地的总人数,结果:2+8=10 第一个输出是: 10,注意这里第3个营地人数在第2条命令中增加了6。第一行3个正整数:N K L。

学Java,找哪吒 764

PCL ——LevenbergMarquardt非线性最小二乘法拟合圆柱(C++详细过程版)

使用C++详细过程版实现的LevenbergMarquardt非线性最小二乘法拟合圆柱

点云侠的博客 606
上一篇: 如何让你的SQL运行得更快
下一篇: Java对象的强、软、弱和虚引用
wangbin83_gmail_com
博客等级 码龄18年 0粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值