`
李宏喜
  • 浏览: 116185 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据库重构『英文版』读后的个人总结

阅读更多
一,在敏捷开发中,当用户story进入开发阶段时,首先是判断现有代码是否能够完成用户的story。重构,将会伴随整个的开发过程。重构在保持原有的行为语义不变的基础上,采用渐进地(演进式)方式,逐步实现代码结构的渐进式地优化。并且在这个渐进的过程中,采用回归测试的方式,以保持语义的不变性。而数据库重构不仅要保持行为语义的不变,还要保持信息语义的不变。我们在进行数据库重构的时候, 需要由项目的集成环境提交到生产环境中, 在发布的过度期里,需要旧的schema和新的schema并行存在,但是呢,又不能造成数据信息重复和丢失,我们可以通过”结构代码” 粘合在一起, 以确保信息语义的一致性。例如使用触发器,在旧表和新表之间保持信息语义的不变。
二,如果应用程序的现有代码结构不合理,就需要重构现有的代码。要重构,就必须先了解代码的语义。最好局部和全局的区分,语义也有重点, 在重构的过程中,尽量去掉“坏味道”,应用程序有坏味道,数据库的设计也有坏味道,主要是 多义表,多字段表, 多记录表, 含义不明确的字段等。在数据库重构时,对于多记录表,可以做垂直切分和水平切分 如何做切分,应该主要根据数据的不同的特性和字段间关系做区分。
三,在做数据库重构时,要注意外围扩展程序的重构。通过小地,聚焦地,渐进式地,持续不断地重构, 使数据库的外围的程序的结构得到不断的优化。回归测试,要尽可能的自动化。但是在进行数据库重构的时候,要注意数据的迁移。
四,在数据库的重构中,每一次的脚本变化,都可以放在类似于stack的一个模型中,在管理脚本变化的过程中,可以把过期的脚本从statck中去掉,最终的脚本变化,可以捆绑到每一次的发布中,这样或许我们可以看到每个版本的数据库的脚本的变化的分布情况,从开发环境中发布到生产环境中,需要有计划的,可以在系统活动不频繁的时间进行发布。
五,计算字段的选择,如何选择计算字段,采用触发器的方式,保持数据的同步。过多的联合主键,会影响数据的性能,可以采用替代主键,没有实际的业务含义,但可以保持一定的数据库的性能,也可以和业务实体保持一致。自然键也可以保留,以支持查询。在外键关联表中,自然键可以删除
六,在数据库的设计中,有lob型的字段,有可能是保存的比较复杂的数据结构,在程序中处理是比较复杂的,可以尝试在一个表中的多个字段,或者是一个新表来重构原来的表,这样程序的复杂度将会降低。当然,反之,我们重新解析lob型数据的时候,程序在逻辑上有可能会复杂一些
七,一对多的关系,是多对多关系的子集。在一对多关联的两表之间,建立关系表,可以为后来的多对多关系的重构做好调整
八,拆分字段,这样信息会更明确一点,要先添加字段。然后做数据的同步。保持数据库的信息语义的一致。要更新外围代码,数据库持久层的改动,拆分表, 把重复数据拆分出一个独立的表, 提高查询的性能, 把一些查询频率不是很高的clob型的字段拆分出一个独立的表,把访问权限不一样的字段拆分出一个单独的表
九,为了保证数据的质量,数据完整性的约束,非空的约束,主外键的约束

分享到:
评论

相关推荐

    数据库重构(英文)

    Jolt17大奖呀,大家下呀

    数据库重构下部(PDF)

    本书前5章介绍了演进式数据库开发的基本思想和技术,后6章详细描述了每一类重构,包括结构、数据质量、参照完整性、架构、方法的重构;另外还描述了不属于重构范畴的转换技术。书中的示例代码是用Java、Hibernate和...

    数据库重构.rar

    数据库重构.rar

    数据库重构(下)

    ( 数据库重构(下)

    数据库重构中文高清版带完整书签

    数据库重构 中文高清版 带完整书签 是在项目过程中学习如何重构当初定义的数据库一份不错的资料。其他地方下载的没带书签的,我制作了一份完整的书签。

    数据库重构下

    数据库重构

    数据库重构

    本书介绍专门针对数据库系统设计的强大的重构技术。

    数据库重构.part1

    数据库重构.part1数据库重构.part1数据库重构.part1数据库重构.part1

    数据库重构.part2

    数据库重构.part2数据库重构.part2数据库重构.part2数据库重构.part2

    数据库重构.part3

    数据库重构.part3数据库重构.part3数据库重构.part3数据库重构.part3

    数据库重构.part4

    数据库重构.part4数据库重构.part4数据库重构.part4

    数据库重构【上】(pdf)part2

    . 本书前5章介绍了演进式数据库开发的基本思想和技术,后6章详细描述了每一类重构,包括结构、数据质量、参照完整性、架构、方法的重构;另外还描述了不属于重构范畴的转换技术。 2007年第17届Jolt生产效率...

    重构英文版

    是fowler写的英文版的重构书籍,共享之 是fowler写的英文版的重构书籍,共享之 是fowler写的英文版的重构书籍,共享之 是fowler写的英文版的重构书籍,共享之

    重构(Refactoring)英文版

    重构英文版 M. Fowler, K. Beck, J. Brant, W. Opdyke and D. Roberts 重构(Refactoring)是指在不改变软件系统外部功能的前提下,对软件系统的内部结构重新设计,以提高代码的可复用性和可扩展性等质量。本书是...

    【数据库】《数据库重构》.part1(1/5)

     本书前第5章介绍了演进式数据库开发的基本思想和技术,后6章详细描述了每一类重构,包括结构、数据质量、参照完整性、架构、方法的重构;另外还描述了不属于重构范畴的转换技术。  书中的示例代码是用Java、...

    【数据库】《数据库重构》.part5(5/5)

     本书前第5章介绍了演进式数据库开发的基本思想和技术,后6章详细描述了每一类重构,包括结构、数据质量、参照完整性、架构、方法的重构;另外还描述了不属于重构范畴的转换技术。  书中的示例代码是用Java、...

    【数据库】《数据库重构》.part4(4/5)

     本书前第5章介绍了演进式数据库开发的基本思想和技术,后6章详细描述了每一类重构,包括结构、数据质量、参照完整性、架构、方法的重构;另外还描述了不属于重构范畴的转换技术。  书中的示例代码是用Java、...

    【数据库】《数据库重构》.part3(3/5)

     本书前第5章介绍了演进式数据库开发的基本思想和技术,后6章详细描述了每一类重构,包括结构、数据质量、参照完整性、架构、方法的重构;另外还描述了不属于重构范畴的转换技术。  书中的示例代码是用Java、...

Global site tag (gtag.js) - Google Analytics