数据导入模块设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

深圳市汉云科技

SCSDB-RDBMS数据导入模块概要设计

版本历史

目录

1.前言 (1)

1.1.项目简要说明 (1)

1.2.文档说明 (1)

1.3.术语 (1)

2.设计目标 (1)

2.1.关键功能 (1)

2.2.关键质量属性 (1)

2.3.约束条件 (2)

3.逻辑架构设计 (3)

4.开发架构设计 (3)

4.1.关键目录、文件组织 (3)

4.2.程序单元组织 (3)

4.3.数据结构设计 (4)

4.4.接口定义 (5)

4.5.关键处理逻辑流程 (6)

5.物理架构设计 (7)

1. 前言

1.1. 项目简要说明

数据导入模块是SCSDB-RDBMS整个系统的一个子系统模块。

1.2. 文档说明

本文档是数据导入模块的设计文档,包括接口定义、开发架构设计、逻辑架构设计等方面内容。

文档当前主要描述了接口定义及一些重要的逻辑处理内容。具体的其他设计内容由合作者补充完成。

1.3. 术语

源数据库:导出数据的数据库

目标(目的)数据库:被导入数据的数据库

2. 设计目标

2.1. 关键功能

图表1 关键功能列表

2.2. 关键质量属性

图表2 质量属性列表2.3. 约束条件

图表3 约束条件列表

图表4 数据导入模块逻辑架构

封装接口API层:负责封装本模块的接口,供上层调用者使用。

数据导入逻辑控制层:按照一定的逻辑,调用下层的查询源数据库、数据分析、导入目标数据库子模块,来实现数据导入功能。

查询源数据库:通过向源数据库发送查询命令,从而获取源数据库的表结构信息或表数据。

数据分析:对从源数据库中查询到的数据进行分析,以转换成适合导入到目标数据库的数据。

导入目标数据:将转换后的目标数据导入目标数据库。

数据库访问接口层:相应数据库厂商提供的访问下层数据库的接口API。

4. 开发架构设计

4.1. 关键目录、文件组织

图表5 关键目录、文件列表

4.2. 程序单元组织

明确描述各单元编译依赖关系。

//枚举目标数据库(表)存在时的处理方法

typedef enum

{

EXIT_DEL, //如果目标数据库(表)已存在,则先删除目标数据库(表)

EXIT_IGN, //如果目标数据库已存在,则忽略,继续后面的操作;

//如果目标数据表已存在,则忽略,继续后面其他数据表的导入EXIT_ABORT//如果目标数据库(表)已存在,则终止本次导入操作

}IF_EXIT;

//枚举数据库类型

typedef enum

{

DB_SCSDB, //SCSDB类型数据库

DB_MYSQL, //MYSQL类型数据库

DB_ORACLE,

DB_SQLSERVER

}DB_TYPE;

//连接数据库服务器的一些必要参数

typedef struct

{

DB_TYPE db_type; //数据库类型

const char* ip; //数据库服务器ip

int port; //数据库服务端口号

const char* user; //连接、操作数据库的用户名

const char* pwd; //密码

}DB_SERVER_CON;

//import接口参数的结构体

typedef struct

{

DB_SERVER_CON src_server; //源数据库服务器

DB_SERVER_CON dst_server; //目标数据库服务器

const char* db; //将要导入的数据库名称,不能为NULL

const char* table; //将要导入的数据表名称,若不为NULL,则只导入table指定的数据表

//若为NULL,则导入数据库db中的所有数据表int ip_struct; //是否导入表结构,表示不导入表结构,表示导入表结构,其他值非法

int ip_data; //是否导入表中数据,表示不导入表中数据,表示导入表中数据,其他值非法

IF_EXIT db_exit; //目标数据库已存在时,需要进行的处理

IF_EXIT table_exit; //目标数据表已存在时,需要进行的处理

}IMPORT_ARG;

后续在此补充重要的数据结构设计。

4.4. 接口定义

//初始化库。如分配内存、初始化全局变量等。

//成功返回0,否则返回错误码

int sip_library_init();

//结束库使用,进行清理。如析构对象、释放内存等

//成功返回0,否则返回错误码

int sip_library_end();

class CSCSDBImport

{

public:

CSCSDBImport();

virtual ~CSCSDBImport();

//获取执行失败的错误码

int get_errno();

//获取执行失败的错误信息

string get_error();

//导入数据库、表的接口调用

//成功返回0,其他表示错误

int import(IMPORT_ARG ip_arg);

private:

int nErr;

string strErr;

};

后续再开发过程中若需要提供更多的接口,需在此补充。

相关文档
最新文档