sqldeveloper导出数据字典_如何全面建设B端产品中的数据迁移方案

加关注,带你看世界

在新系统替换老系统或者系统升级的项目中,难免会存在数据迁移的工作,并且随着业务系统和数据结构的复杂性,数据迁移的难度越大。

这亦要求在项目实施的前期,根据客户的需求尽可能全面地考虑到各个方面,输出一份详细的数据迁移方案。

笔者将结合实际的项目工作经验,将一些在数据迁移中的感悟与各位分享共勉。

cb3366009891112f7b49eace3d46972c.png

一、迁移准备

迁移前需要调研的内容包含:

1. 老系统存储数据所使用的数据库类型

例如oracle、mysql、sqlserver等,或某些厂商封装的数据库,因为每种数据库的数据存储结构形式存在差异,新老系统如果使用不同的数据库,难免需要处理。对于常见的数据库转换,市面上有开源工具可批量处理。

2. 老系统存储数据的形式

是否包含图片、表单、音视频等多媒体内容;是否包含附件,附件是否可在线预览;系统内的数据是否有相互关联关系等。这些将作为迁移完成后,验证迁移效果的重要用例。

3. 老系统的业务分类

无论是CRM系统、OA系统、工单系统,都会细分具体的业务类型,数据迁移的时候,必然需要按照其对应的业务分类迁移,因此需要调研其详细的业务分类。

二、迁移内容

迁移的内容主要是需要根据客户的需求,来确定数据的哪些内容是需要迁移的,将其总结为如下几个方面:

1. 数据字段对应

根据调研,输出一个数据字典对照表,新系统和老系统存储数据的每个字段会不一样,但实际上对于业务来说,功能用处是一样的;另外,如果老系统含有特有字段,而新系统没有,那么就需要在新系统开发对应的数据表进行存储。

下表是项目中一个KM系统的数据字典对照表:

9f0601261838e16f7ea556847eff23b6.png

2. 数据的关联关系

数据库里数据之间的相互关联,和其他外部系统数据的相互关联,这部分内容在迁移的时候,需要有相互关联的关系表,一般是以数据ID之间的关联关系来识别,因为ID是每条数据的唯一标识。

3. 其他附件数据

这部分内容可能是挂在某条数据下面,也就和数据之间进行了关联,亦需要关联关系表,同样以ID来识别。

另外,也可能是单独上传的附件,这部分可直接获取。附件会存储在文件服务器上,且业务系统一般会在内网部署,迁移时,可直接读取附件URL地址进行下载上传。需要注意的是,在URL链接里需要拼接附件名字,不然只有附件的ID。

三、迁移方式

数据如何从一个系统迁移到另一个系统?

目前所接触有两种方式:

  • 一是离线的方式,导出本地文件,再导入;

  • 另一种是在线的方式,通过接口调用传参实现。

由于涉及到两个系统,意味着有第三方(而且往往是新系统的厂商要去替换老系统的厂商,也就是抢别人的饭碗),其第三方配合程度是不可控因素,两种迁移也就各有优缺点。

1. 离线方式

需客户协调老系统导出本地数据(可写SQL语句导出,也可写代码导出,根据业务内容决定),在导出之前,应根据迁移内容提供标准的数据模板,包括数据字典模板、关联关系模板、业务分类模板等。

3628845dad9e85a14e62be4836a0a677.png

优点:所有数据已导出,均在自己手中,实施迁移的时候,很多问题都在自己的可控范围。

缺点:

  1. 数据量过大时,导入导出时间长,且可能存在程序崩溃的风险(可考虑分批次);

  2. 在新老系统过度期间,需要多次执行导出导入。

2. 在线方式

接口传参需要第三方开发调用接口,同样在开发接口之前,需按照迁移内容提供标准的统一接口文档。同时,为不影响生产系统,也可能需过滤一些敏感信息,需建立中间库。

5f3b45c38d6454542ec75e8c98c19937.png

优点:在系统切换过度期间,可定时扫描调用接口传参(即增量数据)。

缺点:需要第三方开发,有工作量,且调试接口的时候,配合程度不可控。

四、实施迁移

实施迁移即数据整理与数据转换。数据整理就是将老系统数据整理为系统转换程序能够识别的数据;数据转换就是将整理完成后的数据按照一定的转换规则转换成新系统要求的数据格式。

同时这部分需要开发迁移代码,在代码完成后,特别注意的是需先进行小批量的迁移进行验证,无问题后,再进行大批量直至全量迁移。

五、迁移保障

为保障迁移的整个过程顺利和迁移数据完整准确性,过程中需要有如下几个方面可参考:

  1. 迁移的数据全量备份:防止系统崩溃,数据丢失;

  2. 迁移过程打印日志:(如:迁移了多少数据,其中成功多少条,失败多少条);

  3. 迁移完的验证:a.如在迁移准备中第2点描述的数据的集中类型,需核对是否与老知识库对应,展现形式是否完整;b.抽检数据验证,可按照GB2828-81中的AQL值为标准进行抽检,抽检的方式可按照分层抽样(即每多少条数据抽检几条验证)。

结语

以上为个人在项目中关于数据迁移的一些感悟总结,最后将整个数据迁移的过程以一张图总结下:

56ee0f69c67735678216960cb099f31d.pngdbbaee1435bbfbacb3b02c69635ac1cf.png

#声明#

本文由菜鸟店小二原创,产品会转载发布仅用于学习交流,如涉及版权问题,请联系小编,微信:hf16881688~ 产品会QQ群:140710383~ MVP联盟QQ群:213626555~

9babdca4db785bb13f3f1565e7e49749.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

声明对象_静态变量(使用同一个类声明的对象可以共享一个值)

要在属于同一种类的对象之间共享数据值,可以使用static。namespace demo3{ class point //定义点 { public int x; public int y; } class line { static public point origin new point(); public point ending ne…

centos6配置mysql远程访问_MariaDB 数据库配置 Navicat 程序远程访问权限

如果MySQL数据库采用的是 MariaDB 引擎,与普通的数据库配置有点不同 MariaDB 与普通的MySQL数据库的一个不同在于它的配置文件不止一个,它将不同的数据放入到不同的配置文件中,之前的/etc/mysql/my.cnf内容如下:从文件中的注释上来…

java读取mysql配置文件_Linux运维:MySQL读写分离解决方案

一次性付费进群,长期免费索取教程,没有付费教程。进微信群回复公众号:微信群;QQ群:460500587教程列表 见微信公众号底部菜单 | 本文底部有推荐书籍 微信公众号:计算机与网络安全ID:Computer-net…

的硬件报错_工程师经验:78%的硬件失效罪魁祸首 —— 焊接问题

工程师经验你是否长时间纠缠于线路板的失效分析?你是否花费大量精力在样板调试过程中?你是否怀疑过自己的原本正确的设计?也许许多硬件工程师都有过类似的心理对话。有数据显示,78%的硬件失效原因是由于不良的焊接和错误的物料贴片…

柔性体没有应变_灌注式半柔性道面材料抗冲击性能试验研究

文章来源:微信公众号"沥青路面”前言灌注式半柔性道面材料是一种刚度大于沥青混凝土,小于水泥混凝土的复合道面材料,在兼具了两种材料优势的同时避开了它们的缺陷。半柔性道面不存在裂缝,而且受温度影响远远小于沥青道面&…

html网页上传到服务器_JSP+Servlet实现文件上传到服务器功能

本文实例为大家分享了JSPServlet实现文件上传到服务器功能的具体代码,供大家参考,具体内容如下项目目录结构大致如下:正如我在上图红线画的三个东西:Dao、service、servlet 这三层是主要的结构,类似 MVC 架构&#xff…

gaf处理一维故障信号_【推荐文章】改进局部均值分解的齿轮箱复合故障特征提取...

《机械传动》2019年 第43卷 第8期文章编号:1004-2539(2019)08-0130-05DOI:10.16578/j.issn.1004.2539.2019.08.024引用格式:柴慧理, 叶美桃. 改进局部均值分解的齿轮箱复合故障特征提取[J]. 机械传动, 2019,43(8):130-134.CHAI…

dll模块化设计与编程_FPGA设计原则经验分享

一、面积和速度如何折中 面积和速度是芯片设计中一对相互制约、影响成本和性能的指标,贯穿FPGA设计的始终。在FPGA设计中,面积是指一个设计消耗的FPGA内部逻辑资源的数量,可以用消耗的触发器和查找表的个数或者是等效逻辑门数来衡量&#x…

div背景透明_为什么css3实现background-image和半透明边框这么麻烦

”background和border属性能有什么难的?"我经常听到新手觉得css的background和border属性简单。那好,我们来看下面这个比较“简单”的需求:父元素有一张背景,子元素有边框,且子元素有一张背景颜色。这时候子元素的…

c mysql 查询超时设置_MySQL查询超时的设置方法

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 这里顺带解释一下什么是non-interactive connection Non-Interactive Commands Just do a quick look up on a table without logging into the client, running the query then logging back out aga欢…

python聚类分析案例_深度解读|如何构建用户分级体系实现精细化运营?附案例实操...

本文内容较长,代码全部已展示在文中用户精细化分类也可以称做用户画像,是目前很常见的一种运营手段,目的是为了更好的服务不同性质的客户,提高每个环节的转化率,最大程度挖掘客户价值,创造利润。那么如何构…

单片机集成wifi等_从零制作单片机需要哪些知识?

请点击上面 免费关注...说一下从芯片制作开始到最后编写驱动程序整个过程中每一步所需要的知识。作者:彭谟威链接:https://www.zhihu.com/question/28580074/answer/93515413来来来,让我们一起,左手右手一个慢动作。每一个方向都值…

matlab案例_基于matlab和frost平台的cassie案例足式机器人运动学和动力学计算实现过程...

1、软件平台Maltab2019aMathematica 12.1.0Frost2、实现步骤(1)、安装matlab2019a(2)、安装Mathematica 12.1.0(3)、下载frost-dev-master软件说明:https://ayonga.github.io/frost-dev/pages/i…

计算机毕业设计----SSM实现的一个在线文具学习用品购买商城

项目介绍 本项目分为前后台,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登录,管理员信息管理,查看用户信息,新闻公告信息管理,文具类型信息管理,城市信息管理,配货点信息管理,文具信息管理,订单信息…

python2和3语法区别_python2和3语法区别

以下是Python2和Python3中的一些语法差异,有需要的小伙伴可以学习下。 print语句 在Python 2里,print是一个语句。无论你想输出什么,只要将它们放在print关键字后边就可以。在Python 3里,print()是一个函数。就像其他的函数一样&a…

python如何循环使用input_python基础知识input到while循环

j周笔记 输入与输出 1.输入 input (请输入内容) 字符串 2.输出 print(输出到控制台) 变量vairable 变量就是相当于我们人的名字 1.名字 2.存储位置 3.该存储位置的内容解释 ​ name(名字) 张三(值(存储位置)) 变量名 值 注意: 给变量取名字时,一定要遵循python语法规范 1.变量…

echarts tooltip被遮挡_echarts 的tooltip定位到当前图,避免溢出和遮挡

问题:tooltip初始是跟着鼠标移动,当内容过多(宽度高度过大),会被其他遮挡或者会溢出屏幕外解决:思路:根据官方文档,鼠标在左侧时,tip在右侧,鼠标在右侧时&…

idea mysql错误提示_idea提示错误:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

碰见了一个问题,一直无法解决,希望大家帮帮忙。这是连接mysql的JdbcUtils代码:public class JdbcUtils {// 配置文件private static Properties props null;// 静态块保证只加载一次static {InputStream in JdbcUtils.class.getClassLoader…

python中seed的用法_Python中的seed()方法怎么用

Python中的seed()方法怎么用?下面是seed()方法的相关介绍: 描述 seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。 语法 以下是 seed() 方法的语法:import random random.seed ( [x] ) 注意:seed(…

bootstrap 输入错误提示_win7系统提示explorer.exe应用程序错误怎么办

在电脑当中弹出错误提示框可谓是多种多样,详细有很多电脑都有碰到过,最近有位win7系统用户在使用电脑的过程中,系统总是提示“explorer.exe应用程序错误”,用户不知道怎么解决这个问题,为此非常苦恼,那么wi…