BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

数据库迁移后的检查清单

| 作者 崔康 关注 1 他的粉丝 发布于 2013年5月17日. 估计阅读时间: 8 分钟 | AICon 关注机器学习、计算机视觉、NLP、自动驾驶等20+AI热点技术和最新落地成功案例。

在实际的应用环境中,随着业务的发展变化,数据库管理员可能会面临不同数据库的迁移,这是一个高风险的过程。资深软件架构师Amol D. Barsagade以从 Sybase 到 DB2 的迁移为例,详细总结了数据库迁移的最佳实践,其中分享了迁移后的检查清单。

迁移后的验证和确认检查列表包括:

  • 数据库结构
    • 识别来源/目标数据库中所有可用的对象。
    • 针对来源数据库验证和确认目标数据库中的所有对象。
    • 验证和确认是否遵循了规范化的流程。
    • 验证和确认数据库设计。
    • 验证和确认是否遵循了充分的容量规划。
    • 验证和确认一次数据冗余检查。
    • 验证和确认系统和它的环境。
    • 验证和确认数据库增长。
    • 验证和确认安全设计。
    • 验证和确认系统日志的结构。
    • 验证和确认事务日志的结构。
    • 验证和确认并发性控制。
    • 验证和确认目标数据库中的表总数。
    • 验证和确认表名称。
    • 针对来源目标数据库表验证和确认每个表中的列数。
    • 验证和确认每个数据类型映射和大小。
    • 验证和确认用户定义的数据类型(如果存在)。
    • 验证和确认默认值。
    • 验证和确认空值。
    • 验证和确认身份列。
    • 验证和确认主键和外键约束。
    • 验证和确认 FK、触发器和 SP 等对象的依赖关系。
    • 验证和确认目标索引。
  • 存储过程
    • 针对来源数据库 SP 验证和确认 SP 总数。
    • 验证和确认过程名称。
    • 验证和确认是否存在任何用户定义的数据类型。
    • 验证和确认输入/输出参数和数据类型。
    • 验证和确认返回值和返回数据类型。
    • 验证和确认事务模式(连锁/未连锁-@@tranchained)。
    • 验证和确认事务-开始/结束/保存/提交/回调。
    • 验证和确认隔离级别 0/1/2/3。
    • 验证和确认 @@transtate/@@trancount/@@isolation。
    • 验证和确认锁定模式 share/exclusive。
    • 验证和确认服务器/所有者命名约定。
    • 验证和确认重新编译选项。
    • 验证和确认业务逻辑。
    • 验证和确认对象依赖关系。
    • 验证和确认 SET NOCOUNT 打开/关闭、QUOTED IDENTIFIER 打开/关闭等。
    • 验证和确认开放查询/链接服务器的正确实现(如果存在)。
    • 验证和确认动态查询语句。
    • 验证和确认 DCL 语句、GRANT 权限等(如果存在)。
    • 验证和确认联结 (join) 和 DML 语句形式的各种输入的正确输出行为。
  • 用户定义的函数
    • 针对来源数据库 UDF 验证和确认 UDF 的总数。
    • 验证和确认 UDF 名称。
    • 验证和确认 I/O 参数传递。
    • 验证和确认输入参数传递顺序。
    • 验证和确认返回数据类型。
    • 验证和确认用户定义的数据类型。
    • 验证和确认对象的依赖关系。
    • 验证和确认业务逻辑。
  • 视图
    • 针对来源数据库视图验证和确认视图总数。
    • 验证和确认视图名称。
    • 验证和确认视图定义的对象和来源数据库是否正确。
  • 索引
    • 针对来源数据库验证和确认索引总数。
    • 验证和确认索引名称。
    • 验证和确认目标数据库的集群化 (PK)/非集群化索引。
  • 触发器
    • 验证和确认触发器总数。
    • 验证和确认触发器名称。
    • 验证和确认触发器依赖关系。
    • 验证和确认业务逻辑/触发事件。
    • 验证和确认插入/更新/删除触发器。
    • 验证和确认标准格式/最佳实践。
  • 约束
    • 验证和确认约束总数。
    • 验证和确认约束名称。
    • 验证和确认、FK、PK、检查、null 和默认约束。
  • 规则
    • 验证和确认规则总数。
    • 验证和确认规则名称。
    • 验证和确认目标数据库中的规则条件和逻辑。
  • 默认设置
    • 验证和确认默认设置。
  • 游标
    • 验证和确认游标总数。
    • 验证和确认游标名称。
    • 验证和确认 holdlock/noholdlock/shared。
    • 验证和确认只读/用于更新的游标。
    • 验证和确认分配和解除分配游标。
    • 验证和确认 @@sqlstatus/@@rowcount。
    • 验证和确认子句的流向。
  • 临时表
    • 验证和确认全局/临时表。
  • 内置函数
    • 验证和确认内置函数。
  • 系统变量
    • 验证和确认系统定义的/全局变量。
  • 其他
    • 验证和确认 Sybase 的USE 关键字。
    • 验证和确认 GO 关键字。
    • 验证和确认 while 循环中的 break/continue。
    • 验证和确认用于异常处理的 raiserror/@@error。
    • 验证和确认转换函数。
    • 验证和确认 @@error/@@transtate/@@sqlstatus/@@tranchained/@@textsize/@@rowcount。
  • 数据测试
    • 验证和确认来源和目标数据库中的记录总数。
    • 验证和确认加载的记录是否与来源记录相同。
    • 验证和确认空值和废弃的值。
    • 验证和确认数据。
  • 数据库性能测试
    • 迁移数据库和应用程序后,检查应用程序的总体性能。使用可用的 DB2 实用程序,得出与目标 DB2 服务器等效或更好的应用程序性能。
  • 表的完整性检查
    • 使用 Sybase Central 对来源表进行完整性检查。
    • 使用 IBM Data Studio 对目标表进行完整性检查。
    • 确保来源和目标数据库中的表名称是相同的。
    • 确保表具有相同的列数。
    • 确保每个列的数据类型与来源表中相同,或者兼容来源数据类型。
    • 对于 char 和 varchar 等数据类型,确保大小正确。
    • 对于 decimal 和 numeric 等数据类型,确保比例是正确的。
    • 确保拥有列 null/not null/default values。
    • 确保设置了检查约束,如果它存在。
    • 确保设置了表的主要约束,如果它存在。
    • 确保设置了表的外键约束,如果它存在。
    • 确保所有索引都已正确的顺序创建。
    • 确保表和它的索引已在各自的表空间中创建。
    • 确保表为各个用户设置了正确的访问权限。
    • 确保身份列已正确复制到目标数据库中。
    • 确保它的名称相同。
    • 确保它拥有相同或兼容的数据类型。
    • 确保它以正确的初始值开头。
    • 确保它拥有相同的增量值。
    • 确保它的下一个值与预期的值相同。
  • 序列的完整性检查:
    • 确保序列是使用相同名称创建的。
    • 确保序列拥有相同或兼容的数据类型。
    • 确保开始值和结束值已适当提及(如果存在)。
    • 确保增量值是正确的。
    • 确保与序列关联的触发器已正确创建(如果存在)。
  • 视图的完整性检查:
    • 确保视图名称是正确的。
    • 确保视图拥有相同的列数。
    • 确保视图列数据类型相同或兼容。
    • 确保视图列名称是相同的。
    • 确保视图定义是正确的。
    • 确保存在依赖于视图的表。
    • 确保视图为各个用户提供了相同的访问权限。
  • 主键的完整性检查:
    • 确保数据库中存在表和相应的字段。
    • 确保字段是使用目标数据库中的 not null 属性创建的。
    • 确保主键名称是正确的。
  • 外键的完整性检查:
    • 确保目标数据库中存在基础表和相应的数据类型。
    • 确保目标数据库中存在参考表。
    • 确保外键名称是正确的。
  • 索引的完整性检查:
    • 确保目标数据库中存在该表和相应的字段。
    • 确保字段列表和它们的顺序相同。
    • 确保索引已以正确的顺序创建(升序/降序或允许逆向扫描)。

有关更具体的检查清单和数据库迁移的最佳实践,读者可以查看Amol D. Barsagade的系列文章

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT