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

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

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

分享到:
评论

相关推荐

    数据库重构(英文)

    Jolt17大奖呀,大家下呀

    敏捷数据库技巧英文版Agile Database Techniques

    - 涵盖了敏捷模型驱动开发、测试驱动开发、数据库重构等内容。 - **第三部分:实用的数据导向开发技术**(Practical Data-Oriented Development Techniques) - 提供了一系列具体的技术指南,帮助开发者解决实际...

    XUNIT测试模式--测试码重构(英文版)

    ### XUNIT测试模式--测试码重构 #### 一、引言与背景介绍 《XUNIT测试模式--测试码重构》是一本在2008年荣获Jolt Award技术图书类生产力大奖的重要著作。该书由Gerard Meszaros撰写,他是ClearStream Consulting...

    sqltuning 英文版

    《SQL Tuning》英文版是一本专注于数据库性能优化的专业书籍,尤其关注SQL查询的调整与优化。SQL(Structured Query Language)是用于管理关系数据库的标准语言,它的效率和正确性直接影响到数据库系统的整体性能。...

    Visual Basic 2008 高级编程(英文版) PDF高清

    《Visual Basic 2008 高级编程(英文版)》是一本深入探讨VB编程技术的专业书籍,由知名出版机构Wrox发行。这本书旨在帮助读者掌握Visual Basic 2008这一强大开发工具的高级特性和应用。通过阅读本书,开发者能够提升...

    oracle to sybase迁移向导英文版

    了解这些组件有助于确定哪些部分需要调整或重构以适应新的数据库环境。 ##### 2.2 迁移数据 迁移数据是整个迁移过程中非常关键的一步。这包括: - **数据导出**:从Oracle数据库中导出数据。 - **数据转换**:...

    UML for Database Design UML数据库设计应用

    这个资源包含了一个关于如何利用UML进行数据库设计的书籍的中英文版,旨在帮助读者理解和实践UML在数据库系统中的应用。 1. **UML简介** UML作为一种通用的建模语言,提供了多种图表类型,如用例图、类图、对象图...

    ORACLE9i官方培训文档----数据库管理基础 II

    文档分为英文版和中文版,对于英语不太熟练的读者,中文版提供了方便的理解途径。 在Oracle 9i数据库管理基础 II中,主要涵盖了以下几个核心知识点: 1. **数据库概念**:这部分介绍了数据库的基本概念,包括关系...

    数据库系统实现 1st

    8. **数据库性能调优**:通过对查询语句的优化、存储参数的调整、索引的重构和硬件资源的优化,提升数据库的运行效率。 9. **分布式数据库**:随着云计算的发展,分布式数据库成为处理大规模数据的重要手段。它涉及...

    数据库对象命名参考

    - 在更新或重构数据库时,可以考虑在名称中添加版本号,以区分不同版本的对象,如`customers_v2`。 7. **规范化**: - 使用下划线 `_` 或驼峰式命名,避免空格和特殊字符,这有助于在各种编程语言中无缝集成。 8...

    SQL Server 2008查询性能优化(英文版)

    - **查询优化**:通过对查询进行分析和重构,可以显著提升查询效率。例如,避免全表扫描、减少子查询的使用等。 - **索引优化**:合理创建和使用索引可以大幅加快查询速度。书中介绍了多种索引类型(如聚集索引、非...

    [博客空间]WordPress 2.7.1 英文版_wordpress.zip

    【WordPress 2.7.1 英文版详解】 WordPress 是全球最受欢迎的开源内容管理系统(CMS),被广泛用于建立各种类型的网站,从个人博客到大型企业门户。2.7.1 版本是 WordPress 发展历程中的一个重要里程碑,它带来了...

    laravel 5 离线文档 英文版

    ### Laravel 5 离线文档 英文版 关键知识点概述 #### 一、文档基本信息 - **文档名称**:Laravel Master Docs - **版本**:基于 Laravel 5.1 版本创建 - **作者**:MNIslamShihan - **发布时间**:2015-06-09 - **...

    Visual Studio 2012 高级编程 (英文版)

    根据所提供的文件内容,关于《Visual Studio 2012 高级编程 (英文版)》这本书的知识点可以总结如下: 一、开发环境与基础 1. 快速入门:介绍Visual Studio 2012集成开发环境的基本布局和功能,如代码编辑、项目管理...

    MSSQL to MySQL【MSSQL到MySQL数据库转换程序

    这个V4.1英文绿色特别版的压缩包文件,名为"MSSQL to MySQL【MSSQL到MySQL数据库转换程序】 V4.1 英文绿色特别版.rar",包含的主要文件是"mss2sql",这通常是程序的可执行文件或脚本,用于执行转换过程。 MSSQL和...

    10步提高虚拟机下DB的性能(英文版)

    ### 10步提高虚拟机下数据库(DB)的性能 #### 概述 在虚拟机环境中运行数据库系统是一项挑战性的任务,特别是在硬件配置一般的设备上。然而,通过一系列精心设计的优化步骤,我们可以显著提升虚拟机环境下数据库的...

Global site tag (gtag.js) - Google Analytics