基于云服务的异构数据库管理系统的设计与实现

2018-02-13 01:38石明翔田济玮李文齐郭学节
计算机时代 2018年12期
关键词:云服务

石明翔 田济玮 李文齐 郭学节

摘  要: 为了解决企业中由于异构数据库增多而带来的管理难度增加、运维成本高涨等问题,设计实现了基于云服务的异构数据库管理系统,采用面向服务的SOA架构,分为应用层、云数据库应用服务接口、任务调度层、云数据库数据处理接口和云数据库等五层,能够对Docker环境下的异构数据库完成创建、管理、读写、分析等操作,为用户提供了一种高效方便的异构数据库管理工具。

关键词: 云服务; 异构数据库; Docker; 数据库管理系统

中图分类号:TP391          文献标志码:A     文章编号:1006-8228(2018)12-25-04

Abstract: In order to solve the problems such as increased management difficulty and high operation and maintenance cost caused by the increase of heterogeneous databases in enterprises, this paper designed and implemented a cloud service based heterogeneous database management system. The system adopts a service-oriented SOA architecture, which is divided into five layers, namely, application layer, cloud database application service interface, task scheduling layer, cloud database data processing interface and cloud database. It is able to complete the creation, management, reading and writing, analysis and other operations of heterogeneous database in Docker environment, providing users with an efficient and convenient heterogeneous database management.

Key words: cloud service; heterogeneous database; Docker; DBMS

0 引言

近年来,随着信息化建设不断深入,各企事业单位的数据信息呈几何倍数增长,从一两个数据库增长为多个甚至几十个不同种类、不同结构的数据库,而库与库之间又有很多业务交叉点,一个数据库的数据更新可能会影响到多个数据库。同时,数据库的多样化带来了诸多问题:一是不同种类的数据库对系统的软硬件环境有着不同要求;二是数据库的异构也增加了管理难度,要求管理人员不仅要熟悉多种数据库的接口,而且在管理不同数据库时也要投入大量时间。这些问题导致了数据库运维成本不断增加,异构数据库的整合和管理变得迫在眉睫。

本文主要依托于Docker技术,将多种不同种类的主流数据库(Oracle、SqlServer、Mysql)部署在云平台上,并开发基于云服务的异构数据库管理系统,能够对异构数据库完成快速创建、表数据快速录入、全文检索、一键查询、查询模版管理、多表查询、统计分析、导入导出等操作。系统还设置了用户管理、权限管理、选择数据管理、分级数据管理等主要模块,增加了系统安全性,不但为用户提供了一种清晰、方便的异构数据库管理分析工具,还对提高数据库的使用效率,降低企业人工成本有着很高的实际意义。

1 关键技术研究与介绍

本系统利用Java语言进行开发,采用面向服务的SOA架构,主要涉及云数据库虚拟化、数据交换格式、云数据库服务应用接口开发等技术。

1.1 云数据库虚拟化

将多种异构数据库部署到云端一般使用虚拟化技術,传统是将不同的数据库安装到对应的虚拟机中,但虚拟机技术实际上是在原有操作系统中安装独立的OS并利用Hypervisor技术虚拟出CPU、内存、IO等设备来达到资源隔绝的目的,因此,存在耗费资源较大、访问内存效率较低等问题[1-2]。

而近年出现的虚拟容器与虚拟机有着完全不同的实现原理,以Docker为例,它不必再安装独立的OS,而是使用更轻量级的LXC(Linux Containers)将虚拟机进程伪装为HOST进程,并利用命名空间(NameSpace)和群组控制(Cgroups)完成各个Docker进程间的隔离及资源分配,并且所有Docker共享宿主机的内核与硬件[3]。虚拟容器相比虚拟机有着读写内存效率高、启动时间快及资源利用率高等优势,同时独有的镜像发布也使应用的安装、备份和迁移变得更为便捷[4],因此本文使用Docker技术将Mysql、Oracle、SqlServer三种数据库部署到云端。

1.2 数据交换格式

JSON(JavaScript Object Notation)是由欧洲计算机协会于1999年制定的ECMAScript中的一个子集,采用轻量级的“名值对”集合来表示和存储数据[5],具备跨平台、跨语言、易解析、体积小等优点,比传统的XML更适合大数据量的网络传输[6],因此本文选用JSON作为异构数据库结果的表示格式。

1.3 云数据库服务接口开发

本文使用基于HTTP协议的轻量级架构Restful WebService开发应用服务层接口,相比于传统的SOAP WebService具有简洁、高效、操作性强等优势[7],并且Restful是一种面向资源的服务,其创建、获取、修改、删除资源的操作对应着HTTP协议提供的PUT、GET、POST及DELETE方法,这种针对WEB应用的设计方式,可以减小系统复杂度和耦合性,提升软件的可扩展性[8]。

2 系统架构及工作流程

本系统由应用服务层、云数据库应用服务接口、任务调度层、云数据库处理接口和Docker化的云数据库层等三层两个接口构成,系统架构如图1所示。

<E:\方正创艺5.1\Fit201812\图\smx图1.tif>

图1  系统架构图

用户从应用层发出的操作请求首先提交到云数据库应用服务接口,该接口会利用异构语义解析技术将用户请求解析成不同的逻辑操作集合并发送到任务调度层。任务调度层会将这些集合转换为对应的处理任务后发送给云数据库处理接口,该接口会将不同的子任务按对应数据源分发到不同数据库进行执行,最后将返回结果利用异构结果合成技术进行转换后以JSON格式发送至客户端。

3 系统实现

3.1 应用层

应用层为系统前端,主要负责与用户进行直接交互,包括创建服务、创建数据库、创建数据表、数据管理、分级表管理、选择表管理、数据查询、多表查询、统计分析、用户角色管理等功能,可以把用户的操作请求通过Http协议发送到云数据库应用服务接口进行处理,并将反馈结果呈现给用户。

3.2 云数据库应用服务接口

云数据库应用服务接口位于服务器端,以Restful WebService形式统一向外提供调用服务,主要包括用户操作语句解析和查询结果表示等功能。本接口的核心为操作语句解析模块,当模块收到应用层发来的操作请求后,会根据不同的数据源将请求解析成对应的逻辑操作子集合(例如:选择、连接、聚合等),并发送到任务调度层进行执行,待执行结果返回后再以JSON格式回传给应用层。其工作流程如图2所示。

3.3 任务调度层

任务调度层为系统缓冲层,主要负责接收云数据库应用服务接口发送来的逻辑操作子集合,并根据对应的数据源将其转换为处理任务后进行判断:如果是非实时任务则放入缓冲区等待;如果是实时任务则放入执行区,并依据先到先服务原则(FIFO)交由下一层进行处理。其处理流程如图3所示。

任务调度层的主要功能有以下。

⑴ 任务区管理

任务区主要包括执行区(实时任务排队)和缓冲区(非实时任务排队)。操作任务被分类后加入相应任务区中排队等待,如有新的任务提交或处理,任务管理模块会更新队列结构。

⑵ 任务提取

任务区中的数据结构采用队列(先进先出)结构,每当有新的请求到来时,任务管理模块会从对应的队列头部提取任务并提交。

⑶ 处理非实时任务

所有的非实时任务都会有时间戳属性,当执行时间到达时,任务管理模块会将该任务转换为实时任务后提交给判断模块进行处理。

⑷ 处理实时任务

为了降低下层数据库处理接口的负载,所有实时任务在被处理前会加入任务执行区,任务管理模块会依据下层接口的处理速度,从执行区取出待处理任务进行提交。

3.4 云数据库数据处理接口

该层为整个系统的核心,负责将上层执行任务解析成不同数据库的sql语句并执行,再将执行结果合成后上传到任务调度层。主要有异构语义映射和查询结果合成两个模块。

⑴ 异构语义映射

目前对关系数据库的操作主要通过结构化查询语言(SQL)来完成,但是不同数据库产商在实现时并没有严格执行ANSI(美国国家标准化组织)标准,这就导致不同数据库所支持的SQL语句在很多细节方面有所差异,以查看表结构为例,SqlServer语法是exec sp_help @tablename,Oracle语法为desc @tablename,MySql语法为describe @tablename。此外,三种数据库还在修改表名、修改列名、添加约束以及各种函数使用上存在诸多差异[9]。

为了能让用户操作被不同数据库正确执行,异构语义映射模块可以将上层传入的操作任务通过识别后转换为对应数据库所支持的sql語句,并交由相应的数据源进行执行。其核心类图如图4所示。

① DBConnection类:数据库连接类。getConnection方法用于返回不同数据库的连接。

② DBOperate接口:数据库操作接口。convertSql用法用于将操作任务转换为不同数据库的sql语句,execQuery方法用于执行查询操作,execNonQuery方法用于执行删除、更新等非查询操作。DBOperate接口的实现类为MySqlOperate、OracleOperate和SqlServerOperate,主要用于对MySql、Oracle、SqlServer等数据库进行操作。

③ SemanticMapping类:异构语义映射类。receiveTask方法用于接收上一层发送的数据库操作任务,operate方法用于执行操作任务,sendResult方法用于将数据库查询结果返回任务调度层。

⑵ 查询结果合成

查询结果合成模块主要将异构数据库返回的结果合成为具有相同格式的结果集,再以JSON形式返回给任务调度层。其主要步骤如下。

① 查询结果合成模块通过MySqlOperate、OracleOperate、SqlServerOperate等数据库操作类获取异构数据源数据。

② 利用Mybatis框架中的ORM技术将数据库表映射为Java的POJO对象,其中数据表的列被映射为对象属性,数据表的各行记录被转换为各个持久化对象。

③ 利用基于哈希表的集合差集算法去除记录集中的重复值并进行合并。算法的核心代码如下:

HashMap differenceFilter(HashMap<String, String>

map1,HashMap map2) {

HashMap resultMap=(HashMap)map1.clone();

//将map1中的所有记录拷贝至resultMap

Iterator<Entry<String, Integer>> it1=

map1.entrySet().iterator();

while(it1.hasNext()) { //通过遍历,找出存在于map2但不

存在于map1中的所有记录,并添加到resultMap中

Entry<String, String> entry1=it1.next();

String value2=tempMap.get(entry1.getKey());

if(value2==null||(!value2.equals(entry1.getValue()))) {

resultMap.put(entry1.getKey(),entry1.getValue());

}

}

return resultMap;

}

④ 将最终结果表示为JSON格式,返回给任务调度层。

4 结束语

本文依托于云计算平台,利用Docker虚拟容器技术将三种不同的异构数据库部署到云端,并综合应用Java、JSON、Restful Webservice和Mybatis等技術设计并实现了“基于云服务的异构数据库管理系统”,用于对异构数据库管理和操作。在系统实现过程中,重点解决了异构语义映射、异构结果合成、异构数据信息表示等技术难题。通过测试对比分析证明了系统无论是在运行效率还是可扩展性上都有良好的表现。

参考文献(References):

[1] 柯伟.异构数据库中表的相似性查询系统设计与实现[D].华中科技大学,2016.

[2] 汪青峰.面向多业务的异构数据库中间件的设计与实现[D].北京邮电大学,2016.

[3] 杜宝丽.基于Docker的云数据库服务系统的设计与实现[D].西安电子科技大学,2015.

[4] 王男.面向证券业务系统的虚拟化测试平台的研究[D].吉林大学,2015.

[5] JSON[EB/OL].http://json.org/json-zh.html

[6] XML[EB/OL].https://en.wikipedia.org/wiki/XML

[7] 王晓瑞.基于SOA的分布式异构数据库数据信息同步系统的研究与应用[D].河南大学,2016.

[8] 万一东,谢俊岱.云计算环境下异构数据库整合技术的研究与实现[J].电脑知识与技术,2013.5:3232-3235

[9] 熊现.基于JAVA_XML 的异构数据同步系统的设计和实现[D].上海交通大学,2007.

猜你喜欢
云服务
浅析如何拓展教育管理信息化云服务
云会计在中小企业中的应用研究
基于会计服务的SWOT分析
广电网络前端业务融合云服务平台设计
互联网背景下传媒业的转型
云服务环境中低碳型教育信息化模式研究
云服务环境下的高校协同创新研究
基于云服务的加密式门禁系统设计
云服务背景下的图书馆知识建构管理模型
浅析大众化的云计算服务