首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载 | ||
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试 MPA考试 | 中科院 |
||
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT 新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语 |
||
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证 华为认证 | Java认证 |
||
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格 报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师 人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平 驾驶员 | 网络编辑 |
||
卫生资格 | 执业医师 | 执业药师 | 执业护士 | ||
会计从业资格考试(会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师 注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师 |
||
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师 质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师 设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师 城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师 |
||
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏 |
引言
过去几年中,我们将敏捷方法应用于数据库设计,总结出一些技巧,使得当应用程序发展时,数据库也能够进化,这是敏捷方法的一个重要属性。我们的方法是通过持续集成以及自动重构,通过数据库管理人员(DBA)和应用开发人员的紧密合作来设计数据库。这些技巧在应用开发的各个时期都有效。
1 敏捷方法学
近年来,出现了一种新的软件开发方法学——敏捷方法学。这给数据库设计提出了一些新的、巨大的需求。这些需求的一个中心就是进化设计。在一个敏捷项目中,需要假定我们并不能事先确定系统的需求,因此在项目的初期有一个详细设计阶段的想法是不现实的。系统的设计必须随着软件的变化而进化。敏捷方法,尤其是极限编程(XP),通过一些实践使这种进化设计成为可能。在数据库设计采用敏捷方法,反复迭代。
许多人会怀疑敏捷方法能否用于有大型数据库组件的系统,但我们的确使用了许多敏捷和XP技巧,用于解决基于大型数据库的项目中的进化与迭代问题。
4 变化法则
如同任何实践一样,这些原则必须根据你特殊的环境变化。没有一成不变的项目,我们必须要应对变化。
4.1 保持多个数据库在一个系统中
简单项目也许只需要一个主数据库。但是复杂项目需要有多个数据库,即数据库系。如果在投入生产之前数据库必须分支,那么我们可以创建新的数据库系。数据库系类似于代码的分支,需要不同测试数据集来进行测试。
当开发人员从主数据库中获取了一份拷贝,必须注册他们在修改哪个数据库系。当DBA更新主数据库某个数据库系时,同时更新了所有注册这个数据库系的开发人员的数据库。
4.2 不需要专职的DBA
所有这些听上去好像需要大量的工作,但它并不需要大量的人力资源。在最大的项目中,我们有30个开发人员,项目组规模100人(包括质量评价、分析人员和管理人员),我们大概有100多个不同系列的产品分布在各工作站上。但所有这些工作只需要一个专职DBA,只有两个编程人员业余帮忙。
在小项目中甚至不需要专职DBA。当我们将这些技巧用于更小的项目--12人左右的小项目时,发现该项目不需要一个专职的DBA,与此相反,我们依靠两个对数据库感兴趣的开发人员业余处理DBA任务。
这是自动化的功劳,如果对每项任务进行自动化处理,就可以用更少的人来完成更多的工作。
5 辅助工具
数据库进化需要大量的重复性工作,我们可以开发一些简单工具来帮助我们解决大量的重复性工作。
自动化的最有价值的地方就是有一个通用数据库任务简单代码集。自动化的任务包括:
(1) 用户资料与现在管理员的资料一致
(2) 创建新用户
(3) 复制数据库计划并协同修改
(4) 移动并合成数据库
(5) 删除用户
(6) 导出用户,这样项目组成员可以分发离线数据库备份。
(7) 导入用户,这样项目组成员可以拥有数据库备份,导入数据库,创建新计划。
(8) 导出基线,将主数据库进行备份,这是导出用户的一个特例。
(9) 创建不同计划的报告,以便比较。
(10) 将计划与主计划作比较,这样开发人员就可以将他们本地拷贝与主数据库作比较
(11) 列出所有的用户
分析人员和质量评价人员常常会去看测试数据,并且需要改变他们,因此我们用VBA语句开发一个Excel应用程序,从数据库里面提取数据到Excel文件中,允许用户修改这个文件,修改后又返回到数据库中去。当然,也可以使用其他工具来浏览和编辑数据库的内容,但是我们使用excel,因为很多人熟悉它。
项目组的所有成员应该很容易获取数据库设计的详细内容,从而发现什么表格可以获得,以及如何使用这些表格。我们建立了基于HTML的工具,使用servlets来查询数据库元数据。因此开发人员在添加字段之前,可以先通过搜索表和字段的元数据来看一看数据库中有没有这个字段。我们使用Erwin建模,将数据从Erwin提取到我们的元数据表中。
6 结束语
当然,这并不是敏捷方法在数据库设计中的全部应用,也不是数据库进化设计的全部,还有集成数据库和24*7小时实施以及其他一些没有解决的问题,数据库进化设计还需要进行进一步的研究工作。
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |