数据导入模块设计.docx
- 文档编号:9560820
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:10
- 大小:46.78KB
数据导入模块设计.docx
《数据导入模块设计.docx》由会员分享,可在线阅读,更多相关《数据导入模块设计.docx(10页珍藏版)》请在冰豆网上搜索。
数据导入模块设计
深圳市汉云科技
SCSDB-RDBMS数据导入模块概要设计
模块名称:
SCSDB-RDBMS数据导入模块
版本:
Error!
Unknowndocumentpropertyname.
完成日期:
2013-02-19
作者:
熊志强
审核:
批准:
文件状态:
■草稿□正式发布□正在修改
版本历史
版本/状态
责任人
起止日期
备注
草稿
熊志强
2013-02-19至
2013-02-21
1、完成接口定义。
具体的开发设计由合作者补充完成。
1.前言
1.1.项目简要说明
数据导入模块是SCSDB-RDBMS整个系统的一个子系统模块。
1.2.文档说明
本文档是数据导入模块的设计文档,包括接口概念、开发架构设计、逻辑架构设计等方面内容。
文档当前要紧描述了接口概念及一些重要的逻辑处置内容。
具体的其他设计内容由合作者补充完成。
1.3.术语
源数据库:
导出数据的数据库
目标(目的)数据库:
被导入数据的数据库
2.设计目标
2.1.关键功能
功能
描述
备注
数据库、表结构导入
能够将源数据库、表的结构信息导入目标数据库中。
主键、索引信息需要保留下来
由于SCSDB与mysql的无缝兼容,所以将mysql的数据库、表结构信息导入SCSDB是非常容易的,可以先期开发。
而oracle、sqlserver与SCSDB的差异较大,可以后期再开发
表数据导入
能够将源数据库、表中的数据导入到SCSDB
支持多种商用源数据库
能够支持将mysql、oracle、sqlserver的数据导入到SCSDB
模块需要全面支持将mysql、oracle、sqlserver的数据导入SCSDB
图表1关键功能列表
2.2.关键质量属性
质量属性
描述
备注
高可靠性
这里的高可靠性是指数据不丢失、数据不被修改,导入后的数据与源数据完全相同;表属性能正确保留,如索引、主键属性要保留;其他SCSDB不支持的属性可删除,如外键
高可靠性是数据导入模块的一个非常重要指标。
导入完成后,从目标数据库中查询到的数据与从源数据库查询到的数据完全相同,数据不丢失、不截留(只保留了小数点前几位)。
SCSDB支持的数据类型、属性可能与其他商业数据库有些不同,如SCSDB不支持外键,在处理类型、属性时请积极与SCSDB开发者沟通,确定开发方案
高稳定性
在长时间导入大数据时能够稳定运行
高性能
在导入大数据表(kw级别以上)时,能有较好的性能表现
通过多线程并行导入等各种手段提高数据导入的性能
多线程安全
调用者在多线程方式下调用本模块应是线程安全的
可维护性
有良好的可维护性,方便其他人员维护本模块
详细的设计文档;良好的编码规范;详细的注释
可扩展性
模块要划分清晰;各子模块、接口间要弱耦合
图表2质量属性列表
2.3.约束条件
约束条件
描述
备注
系统支持
能够支持Windows(XP/VISTA/VIN7)、linux()系统
Windows系统输出和文件,linux系统输出和文件
服务不中断
在数据导入过程中,不能中断源数据库服务器的服务
采用各种手段,尽量保证服务不中断或只中断部分服务。
如从mysql导入数据,可以进行locktable操作,暂停增删改服务,但不影响查询服务
图表3约束条件列表
3.逻辑架构设计
图表4数据导入模块逻辑架构
封装接口API层:
负责封装本模块的接口,供上层挪用者利用。
数据导入逻辑操纵层:
依照必然的逻辑,挪用基层的查询源数据库、数据分析、导入目标数据库子模块,来实现数据导入功能。
查询源数据库:
通过向源数据库发送查询命令,从而获取源数据库的表结构信息或表数据。
数据分析:
对从源数据库中查询到的数据进行分析,以转换成适合导入到目标数据库的数据。
导入目标数据:
将转换后的目标数据导入目标数据库。
数据库访问接口层:
相应数据库厂商提供的访问基层数据库的接口API。
4.开发架构设计
4.1.关键目录、文件组织
目录、文件名
目的
数据导入模块封装的对外接口API的定义
数据导入模块重要的、公共对外的数据类型定义
数据导入模块的错误码、错误消息定义
图表5关键目录、文件列表
4.2.程序单元组织
明确描述各单元编译依托关系。
4.3.数据结构设计
//列举目标数据库(表)存在时的处置方式
typedefenum
{
EXIT_DEL,//若是目标数据库(表)已存在,那么先删除目标数据库(表)
EXIT_IGN,//若是目标数据库已存在,那么忽略,继续后面的操作;
//若是目标数据表已存在,那么忽略,继续后面其他数据表的导入
EXIT_ABORT//若是目标数据库(表)已存在,那么终止本次导入操作
}IF_EXIT;
//列举数据库类型
typedefenum
{
DB_SCSDB,//SCSDB类型数据库
DB_MYSQL,//MYSQL类型数据库
DB_ORACLE,
DB_SQLSERVER
}DB_TYPE;
//连接数据库效劳器的一些必要参数
typedefstruct
{
DB_TYPEdb_type;//数据库类型
constchar*ip;//数据库效劳器ip
intport;//数据库效劳端口号
constchar*user;//连接、操作数据库的用户名
constchar*pwd;//密码
}DB_SERVER_CON;
//import接口参数的结构体
typedefstruct
{
DB_SERVER_CONsrc_server;//源数据库效劳器
DB_SERVER_CONdst_server;//目标数据库效劳器
constchar*db;//将要导入的数据库名称,不能为NULL
constchar*table;//将要导入的数据表名称,假设不为NULL,那么只导入table指定的数据表
//假设为NULL,那么导入数据库db中的所有数据表
intip_struct;//是不是导入表结构,表示不导入表结构,表示导入表结构,其他值非法
intip_data;//是不是导入表中数据,表示不导入表中数据,表示导入表中数据,其他值非法
IF_EXITdb_exit;//目标数据库已存在时,需要进行的处置
IF_EXITtable_exit;//目标数据表已存在时,需要进行的处置
}IMPORT_ARG;
后续在此补充重要的数据结构设计。
4.4.接口概念
//初始化库。
如分派内存、初始化全局变量等。
//成功返回0,不然返回错误码
intsip_library_init();
//终止库利用,进行清理。
如析构对象、释放内存等
//成功返回0,不然返回错误码
intsip_library_end();
classCSCSDBImport
{
public:
CSCSDBImport();
virtual~CSCSDBImport();
//获取执行失败的错误码
intget_errno();
//获取执行失败的错误信息
stringget_error();
//导入数据库、表的接口挪用
//成功返回0,其他表示错误
intimport(IMPORT_ARGip_arg);
private:
intnErr;
stringstrErr;
};
后续再开发进程中假设需要提供更多的接口,需在此补充。
4.5.关键处置逻辑流程
图表6数据导入的逻辑处置流程
数据导入的逻辑处置流程如上图所示,在该图中引用到的“导入数据表”的逻辑处置流程如下。
图表7数据表导入的逻辑处置流程
在数据表的导入进程中,在“导入表数据”时,应采纳多线程的方式来提高运行效率。
“导入表数据”的处置流程如下。
图表8导入表数据的处置流程
5.物理架构设计
图表9数据导入物理架构设计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 导入 模块 设计