一种虚拟分布式数据库访问系统与方法
技术领域
本发明涉及一种虚拟分布式数据库访问系统与方法,属于数据查询
技术领域
。背景技术
在信息化建设过程中,政府或企业先后构建起多个信息系统。由于开发的时间、需求以及开发商的不同,以至于在企业内部,每个部门都建立了自己独立的信息系统,每个系统都使用独立的数据库,导致数据分散,用户很难进行统一的数据查询。为了满足用户统一查询数据的需求,当前也有一些解决方案,例如:
1、ETL工具,如OracleGoldenGate,主要是围绕Oracle的同步工具,通过运行在源端的Extract进程抓取数据库的DML、DDL操作,通过运行在目标端的Replicate去重新构造DML或DDL操作并应用到目标端数据库上,其对源系统和目标系统侵入性比较强,且对数据存储要求高,需要进行数据拷贝,机器浪费资源;
2、数据库自身提供的跨数据库访问功能,如Oracle的DBLink;该方法要求用户在查询时能知道所有目标数据库的用户名密码等信息,使用不方便,安全性也受到影响;
3、服务接口方式,一般通过对数据进行WebService接口封装后提供相应的服务,接口开发和对接成本较大。
因此,如何建立唯一的虚拟数据库作为用户访问入口,能够使用户安全便捷的访问所有分布的独立数据库成为了数据库推广应用的重中之重。
发明内容
本发明的目的在于,克服现有技术中存在的问题,提供一种虚拟分布式数据库访问系统,通过建立唯一的虚拟数据库作为用户访问入口,用户可以方便地访问到所有分布的独立数据库。
本发明的一种虚拟分布式数据库访问系统,包括虚拟数据库,所述虚拟数据库包括数据映射模块、数据缓存模块、指令解释及控制模块和通信模块,所述通信模块与数据库通信连接。
本发明的一种虚拟分布式数据库访问方法,采用虚拟分布式数据库访问系统,进行两部分操作:
S1:系统管理员配置;
S2:用户查询,所述用户查询包括单数据库查询和数据库关联信息查询。
进一步的,所述系统管理员配置具体包括如下子步骤:
S1.1:系统管理员在虚拟数据库上配置源数据库信息;
S1.2:系统管理员指定源数据库别名alias,虚拟数据库的源数据库别名不重复,设置虚拟数据库中的表名=源数据库别名+源数据库表名;
S1.3:将步骤S1.1和步骤S1.2中的信息存储到虚拟数据库的数据映射模块。
进一步的,所述步骤S2包括如下子步骤:
S2.1:用户查询时以虚拟数据库和虚拟数据库的表名编写查询命令;
S2.2:进行单数据库查询或数据库关联信息查询;
S2.3:查询流程结束。
进一步的,所述单数据库查询具体包括如下步骤:
A201、指令解释及控制模块收到用户的查询指令,根据指令分析只涉及单个数据库;
A202、指令解释及控制模块从数据映射模块查询数据库信息,并将查询指令转化为SELECT * FROM TABLE1;
A203、指令解释及控制模块将A202中处理过的数据库信息交给通信模块处理;
A204、通信模块和数据库建立连接并执行查询指令;
A205、通信模块将步骤A204的查询结果返回到指令解释及控制模块。
进一步的,所述数据库关联信息查询具体包括如下步骤:
B201、指令解释及控制模块收到用户的查询指令,根据用户的查询指令分析涉及相关联的若干个数据库的操作;
B202、指令解释及控制模块从数据映射模块查询数据库信息,并将查询指令转化相应数据库的SELECT * FROM TABLE1;
B203、指令解释及控制模块将B202中处理过的数据库信息交给通信模块处理;
B204、通信模块分别与相关联的数据库建立连接并执行查询指令;
B205、通信模块将步骤B204的查询结果返回到指令解释及控制模块;
B206、指令解释及控制模块收到B205的查询结果后,将数据交给数据缓存模块;数据缓存模块建立临时数据库缓存所有数据;
B207、指令解释及控制模块在缓存完毕所有源数据库查询的返回结果后,向数据缓存模块执行查询指令;数据缓存模块在临时数据库中执行查询指令并向指令解释和控制模块返回结果。
进一步的,所述数据库信息包括IP地址、端口号、用户名和密码信息。
本发明的有益效果是:(1)数据不需要重复存储,节约存储空间。
(2)用户操作简单,无需单独对独立的源数据库进行操作,简化了操作步骤。
(3)源数据库的用户名、密码只在初始化时进行一次配置,降低了安全风险,有利于保护用户的私人信息。
附图说明
图1为本发明中虚拟分布式数据库访问系统的结构图;
图2为本发明中单数据库查询的流程图;
图3为本发明中数据库关联信息查询的流程图。
具体实施方式
现在结合附图对本发明作进一步详细的说明。这些附图均为简化的示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成。
如图1所示,本发明的一种虚拟分布式数据库访问系统,包括虚拟数据库,所述虚拟数据库包括数据映射模块、数据缓存模块、指令解释及控制模块和通信模块,所述通信模块与数据库通信连接。
本发明的一种虚拟分布式数据库访问方法,采用虚拟分布式数据库访问系统,进行两部分操作:
S1:系统管理员配置;
系统管理员配置具体包括如下子步骤:
S1.1:系统管理员在虚拟数据库上配置源数据库信息;
S1.2:系统管理员指定源数据库别名alias,虚拟数据库的源数据库别名不重复,设置虚拟数据库中的表名=源数据库别名+源数据库表名;
S1.3:将步骤S1.1和步骤S1.2中的信息存储到虚拟数据库的数据映射模块。
S2:用户查询,用户查询包括单数据库查询和数据库关联信息查询,步骤S2包括如下子步骤:
S2.1:用户查询时以虚拟数据库和虚拟数据库的表名编写查询命令;
S2.2:进行单数据库查询或数据库关联信息查询;
S2.3:查询流程结束。
如图2所示,根据指令分析只涉及数据库A的操作,在虚拟数据库中使用SQL语句SELECT*FROMA_TABLE1;单数据库查询具体包括如下步骤:
A201、指令解释及控制模块收到用户的查询指令,根据指令分析只涉及单个数据库;
A202、指令解释及控制模块从数据映射模块查询数据库信息,包括数据库A的IP地址、端口号、用户名和密码信息并将查询指令转化为SELECT * FROM TABLE1;
A203、指令解释及控制模块将A202中处理过的数据库信息交给通信模块处理;
A204、通信模块和数据库建立连接并执行查询指令;
A205、通信模块将步骤A204的查询结果返回到指令解释及控制模块。
如图3所示,查询数据库A的表1和数据库B表1中id字段相同的记录,可以在虚拟数据库中使用下面SQL语句查询SELECT * FROM A_TABLE1 a,B_TABLE1 b WHERE a.id=b.id;
数据库关联信息查询具体包括如下步骤:
B201、指令解释及控制模块收到用户的查询指令,根据用户的查询指令分析涉及相关联的若干个数据库的操作;
B202、指令解释及控制模块从数据映射模块查询数据库信息,并将查询指令转化相应数据库的SELECT * FROM TABLE1;
指令解释及控制模块从映射模块查询数据库A和B的IP地址、端口号、用户名、密码信息,并将查询命令转化为两条操作,分别为数据A的SELECT * FROM TABLE1和数据库B的SELECT * FROM TABLE1;
B203、指令解释及控制模块将B202中处理过的数据库信息交给通信模块处理;
B204、通信模块分别与相关联的数据库建立连接并执行查询指令即通信模块分别与数据库A和数据库B建立连接并执行查询命令;
B205、通信模块将步骤B204的查询结果返回到指令解释及控制模块;
B206、指令解释及控制模块收到B205的查询结果后,将数据交给数据缓存模块;数据缓存模块建立临时数据库缓存所有数据;
B207、指令解释及控制模块在缓存完毕所有源数据库查询的返回结果后,向数据缓存模块执行查询指令;数据缓存模块在临时数据库中执行查询指令并向指令解释和控制模块返回结果。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。