CN105138692A - 一种大数据访问和管理的中间件定制系统与方法 - Google Patents
一种大数据访问和管理的中间件定制系统与方法 Download PDFInfo
- Publication number
- CN105138692A CN105138692A CN201510601248.8A CN201510601248A CN105138692A CN 105138692 A CN105138692 A CN 105138692A CN 201510601248 A CN201510601248 A CN 201510601248A CN 105138692 A CN105138692 A CN 105138692A
- Authority
- CN
- China
- Prior art keywords
- database
- entity
- jpql
- persistence
- relational database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种大数据访问和管理的中间件定制系统与方法,包括JPQL语句转换模块,用于负责对开发人员提交的JPQL语句进行转化,以使得将JPQL语句转化成既适应于关系型数据库又适应于非关系型数据库的字符串形式;总体持久化模块,该模块封装了多个子持久化单元,用于将关系型数据库和非关系型数据库分别进行了封装,屏蔽了关系型数据库和非关系型数据库之间的区别;子持久化单元,用于定义实体,对实体进行管理,并且提供相应的数据库连接,将对实体的操作映射成对应的数据操作,本发明实现了对关系型数据库和非关系型数据库的透明访问,开发人员不需要了解数据库中表的具体的物理结构,不需要在程序中编写连接数据库的代码。
Description
技术领域
本发明涉及一种大数据访问和管理的中间件定制系统与方法。
背景技术
传统模式下,应用程序通常使用JDBC直接连接各个关系型数据库,获取所需要的数据,使用SQL语句直接对数据库中的表进行增删改查操作,如MySQL、Oracle等,但是需要知道关系型数据库的物理结构。JDBC可以屏蔽关系数据库之间的区别,使用统一的方式连接不同的关系型数据库,但是不能连接非关系型数据库,但是网站每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的,而且SQL语言是一种非过程化的面向集合的语言,它虽然用起来非常简单,但由于是解释实现,效率不如人意。
大数据访问中间件的定制需求,具有以下特点:首先,一个网站可能有成千上万的用户每天需要存储大量数据,只存储到关系型数据库中,可能导致数据存取速率降低,网站访问速度受影响,这就要求需要将低价值密度、海量的数据存储到非关系型数据库中。其次,开发人员并不想要了解底层数据库具体的物理结构,而是面向对象的访问数据,想要透明的访问底层数据库,就像数据库不存在一样。再次,需要有统一的语言操作关系型数据库和非关系型数据库,如果每种数据库使用一种语言容易混淆。最后,使用JDBC只能连接关系型数据库,关系型数据库对于海量数据的查询和存储效率比较低,所以需要一种中间件实现对关系型数据库和非关系型数据库的统一访问,并有选择的存储海量数据。
发明内容
本发明为了解决上述问题,提出了一种大数据访问和管理的中间件定制系统与方法,本系统克服了传统JDBC只能连接关系型数据库的缺陷,可以把非结构化的、低价值密度的、大量的数据存储在非关系型数据库中,把结构化的、高价值密度、少量的数据存储在关系型数据库,提高数据的查询和存取效率。
为了实现上述目的,本发明采用如下技术方案:
一种大数据访问和管理的中间件定制系统,包括JPQL语句转换模块、总体持久化模块和子持久化单元;其中:
所述JPQL语句转换模块,用于负责对提交的JPQL语句进行转化,以使得将JPQL语句转化成既适应于关系型数据库又适应于非关系型数据库的字符串形式;
所述总体持久化模块,该模块封装了多个子持久化单元,用于将关系型数据库和非关系型数据库分别进行了封装,屏蔽了关系型数据库和非关系型数据库之间的区别;
所述子持久化单元,用于定义实体,对实体进行管理,并且提供相应的数据库连接,将对实体的操作映射成对应的数据操作;定义多个子持久化单元,每个子持久化单元对应一种类型的数据库。
所述子持久化单元内容至少包括:
一个独立的子项目,该项目使用一个xml文件连接具体的数据库,还包括对应数据库中的实体,一个子项目只能连接一个具体的数据库,该项目中包含具体的数据库驱动以及相应的java持久化单元驱动;
对应数据库中定义的实体,每个实体都有对应的实体定义,这里的实体是指数据库管理系统中的不同管理对象,再通过映射机制将实体映射成具体数据库中的数据,每个实体对应数据库中的一个表,关系型和非关系型数据库中实体映射都采用注解的方式;
对应的配置文件,配置文件采用xml的格式,配置文件中用标识属性来标识自己的身份是子单元,每个子单元都有一个唯一的配置文件,并且配置文件的标识名称必须唯一,不能重复,每个配置文件连接一个数据库,并调用相应的实体。
基于上述系统的工作方法,包括以下步骤:
(1)提交JPQL语言操作实体对象请求,以面向对象的方式访问数据;
(2)分析提交的JPQL语句,将其转化成既适应于关系型数据库又适应非关系型数据库的字符串形式来操作结果集;
(3)通过Spring配置文件调用总体持久化单元、定义实体管理工厂、定义实体管理器和定义事务管理器来获得结果集;
(4)总体持久化单元调用多个子持久化单元,将多个子持久化单元组合成一个,定义总体持久化单元属性;
(5)多个子持久化单元分别调用定义的实体对象类,并分别连接关系型数据库和非关系型数据库;
(6)JPQL语句转化后的字符串操作实体对象,实体映射后的数据分别存储到关系型数据库和非关系型数据库。
所述步骤(1)中,开发人员提交JPQL语句请求,JPQL是面向对象的查询语言,在关系型数据库(MySQL)中测试了JPQL所有的查询语句,关系型数据库完全支持JPQl的所有查询语句,但是当使用非关系型数据库(MongoDB)测试JPQL的所有查询语句时,非关系型数据库并不能完全支持直接使用JPQL语句。
所述步骤(2)中,由于非关系型数据库不能完全支持直接使用JPQL语句,将JPQL转化成非关系型数据库和关系型数据库都支持的字符串形式,MongoDB不支持JPQL中的参数格式,将JPQL中的参数用字符串变量表示出来,然后再对总持久化单元层获得的实体对象进行操作。
所述步骤(3)中,使用基于Spring架构的Web系统的应用系统,同时使用关系型数据库和非关系型数据库,在Spring架构的配置文件中调用定义的总体持久化单元,并定义实体管理工厂对获得的实体进行管理,还定义事务管理器管理事务。
所述步骤(4)中,总体持久化单元中调用多个不同的子持久化单元,并将多个子持久化单元组合成一个,所以Spring层只需要调用这个总的持久化单元即可实现对多个数据库的透明访问。
所述步骤(5)中,每个子持久化单元负责连接一个数据库,包括关系型数据库和非关系型数据库,并引用已经定义好的实体类,每个实体类是相应数据库表的映射,关系型数据库中的数据映射的实体类和非关系型数据库映射的实体类是不同的,各个子持久化单元名称是不同的。
所述步骤(5)中,每个子持久化单元和它对应的实体放在同一个项目中,并将各个项目打成jar包的形式,供总体持久化单元调用,各个子持久化单元和实体对于上层的应用程序是透明的。
所述步骤(6)中,JPQL语句转化后的既适应于关系型数据库又适应于非关系型数据库的字符串,直接操作封装好的实体类,然后将操作后的实体映射的数据分别存储到关系新数据库和非关系型数据库。
本发明的工作原理为:提供了一个操作关系型数据库和非关系型数据库的统一接口,可以把非结构化的、低价值密度的、大量的数据存储在非关系型数据库中,把结构化的、高价值密度、少量的数据存储在关系型数据库,提高数据的查询和存取效率。然后,实现了对关系型数据库和非关系型数据库的透明访问,开发人员不需要了解数据库中表的具体的物理结构,使用户可以通过操作实体对象,通过实体对象和数据库表的映射关系来操作数据。最后,通过测试非关系型数据库并不完全支持直接使用JPQL查询语言,通过将JPQL语句转化成既适应于关系型数据库又适应于非关系型数据库的字符串形式解决这个问题。
本发明的有益效果为:
(1)克服了传统JDBC只能连接关系型数据库的缺陷,提供了一个操作关系型数据库和非关系型数据库的统一接口,可以把非结构化的、低价值密度的、大量的数据存储在非关系型数据库中,把结构化的、高价值密度、少量的数据存储在关系型数据库,提高数据的查询和存取效率;
(2)实现了对关系型数据库和非关系型数据库的透明访问,开发人员不需要了解数据库中表的具体的物理结构,不需要在程序中编写连接数据库的代码,直接调用配置文件来连接各个数据库,使开发人员可以通过操作实体对象,通过实体对象和数据库表的映射关系来操作数据;
(3)通过反复测试发现,非关系型数据库并不完全支持直接使用JPQL查询语言,通过将JPQL语句转化成既适应于关系型数据库又适应于非关系型数据库的字符串形式解决这个问题。
附图说明
图1为一种大数据访问中间件的定制系统示意图;
图2为一种大数据访问中间件的定制方法详细流程图。
具体实施方式:
下面结合附图与实施例对本发明作进一步说明。
图1中,一种大数据访问中间件的定制方法示意图,该中间件包括:
JPQL语句转换模块201,负责对开发人员提交的JPQL语句进行相应的转化,我们通过测试发现非关系型数据库并不完全支持直接使用JPQL查询语言,通过将JPQL语句转化成既适应于关系型数据库又适应于非关系型数据库的字符串形式解决这个问题。
总体持久化模块202,该模块封装了多个子持久化单元,将关系型数据库和非关系型数据库分别进行了封装,屏蔽了关系型数据库和非关系型数据库之间的区别。总持久化单元指定了交易类型和服务器平台,并且包含一个属性来标识它作为一个总的持久化单元,它里面也包含了所有已定义的子持久化单元的导出jar包,并且在配置文件中引用了这些jar包。开发人员可以通过实体管理工厂调用该功能模块,从而基于实体操作数据。
子持久化单元203,在该单元中定义实体,对实体进行管理,并且提供相应的数据库连接,将对实体的操作映射成对应的数据操作;可以定义多个子持久化单元,一般一个子持久化单元对应一种类型的数据库。
所述各个子持久化单元2031,2032,2033内容包括:
每个子持久化单元对应一个独立的子项目,该项目用于连接具体的数据库,还包括各个相应的实体映射。一个子项目只能连接一个具体的数据库,该项目中包含具体的数据库驱动以及相应的java持久化单元驱动。
对应数据库中定义的实体,每个实体都有对应的实体定义,再通过映射机制将实体映射成具体数据库中的数据,关系型和非关系型数据库中实体映射都采用注解的方式,只是注解不一样。
对应的配置文件,配置文件采用xml的格式,配置文件中用标识属性来标识自己的身份是子单元,每个子单元都有一个唯一的配置文件,并且配置文件的标识名称必须唯一,不能重复。
图2中,一种大数据访问中间件的定制方法详细流程图,具体步骤包括:
步骤101,开发人员提交JPQL语言操作实体对象请求,以面向对象的方式访问数据;
步骤102,分析提交的JPQL语句,转化成既适应于关系型数据库又适应非关系型数据库的字符串形式来操作结果集;
步骤103,结果集是通过以下步骤获得:Spring配置文件调用总体持久化单元,定义实体管理工厂,定义实体管理器,定义事务管理器等;
步骤104,总体持久化单元调用多个子持久化单元,将多个子持久化单元组合成一个,定义总体持久化单元属性;
步骤105,多个子持久化单元分别调用定义的实体对象类,并分别连接关系型数据库和非关系型数据库,每个子持久化单元对应一个数据库的连接;
步骤106,JPQL语句转化后的字符串操作实体对象,实体映射后的数据分别存储到关系型数据库和非关系型数据库。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (10)
1.一种大数据访问和管理的中间件定制系统,其特征是:包括JPQL语句转换模块、总体持久化模块和子持久化单元;其中:
所述JPQL语句转换模块,用于负责对提交的JPQL语句进行转化,以使得将JPQL语句转化成既适应于关系型数据库又适应于非关系型数据库的字符串形式;
所述总体持久化模块,该模块封装了多个子持久化单元,用于将关系型数据库和非关系型数据库分别进行了封装,屏蔽了关系型数据库和非关系型数据库之间的区别;
所述子持久化单元,用于定义实体,对实体进行管理,并且提供相应的数据库连接,将对实体的操作映射成对应的数据操作;定义多个子持久化单元,每个子持久化单元对应一种类型的数据库。
2.如权利要求1所述的一种大数据访问和管理的中间件定制系统,其特征是:所述子持久化单元内容至少包括:
一个独立的子项目,该项目使用一个xml文件连接具体的数据库,还包括对应数据库中的实体,一个子项目只能连接一个具体的数据库,该项目中包含具体的数据库驱动以及相应的java持久化单元驱动;
对应数据库中定义的实体,每个实体都有对应的实体定义,再通过映射机制将实体映射成具体数据库中的数据,每个实体对应数据库中的一个表,关系型和非关系型数据库中实体映射都采用注解的方式;
对应的配置文件,配置文件采用xml的格式,配置文件中用标识属性来标识自己的身份是子单元,每个子单元都有一个唯一的配置文件,并且配置文件的标识名称必须唯一,不能重复,每个配置文件连接一个数据库,并调用相应的实体。
3.基于如权利要求1或2所述的系统的工作方法,其特征是:包括以下步骤:
(1)提交JPQL语言操作实体对象请求,以面向对象的方式访问数据;
(2)分析提交的JPQL语句,将其转化成既适应于关系型数据库又适应非关系型数据库的字符串形式来操作结果集;
(3)通过Spring配置文件调用总体持久化单元、定义实体管理工厂、定义实体管理器和定义事务管理器来获得结果集;
(4)总体持久化单元调用多个子持久化单元,将多个子持久化单元组合成一个,定义总体持久化单元属性;
(5)多个子持久化单元分别调用定义的实体对象类,并分别连接关系型数据库和非关系型数据库;
(6)JPQL语句转化后的字符串操作实体对象,实体映射后的数据分别存储到关系型数据库和非关系型数据库。
4.如权利要求3所述的工作方法,其特征是:所述步骤(1)中,开发人员提交JPQL语句请求,JPQL是面向对象的查询语言,在关系型数据库中测试了JPQL所有的查询语句,关系型数据库完全支持JPQl的所有查询语句,但是当我们使用非关系型数据库测试JPQL的所有查询语句时,非关系型数据库并不能完全支持直接使用JPQL语句。
5.如权利要求3所述的工作方法,其特征是:所述步骤(2)中,由于非关系型数据库不能完全支持直接使用JPQL语句,将JPQL转化成非关系型数据库和关系型数据库都支持的字符串形式,MongoDB不支持JPQL中的参数格式,将JPQL中的参数用字符串变量表示出来,然后再对总持久化层获得的实体对象进行操作。
6.如权利要求3所述的工作方法,其特征是:所述步骤(3)中,使用基于Spring架构的Web系统的应用系统,同时使用关系型数据库和非关系型数据库,在Spring架构的配置文件中调用定义的总体持久化单元,并定义实体管理工厂对获得的实体进行管理,还定义事务管理器管理事务。
7.如权利要求3所述的工作方法,其特征是:所述步骤(4)中,总体持久化单元中调用多个不同的子持久化单元,并将多个子持久化单元组合成一个,所以Spring层只需要调用这个总的持久化单元即可实现对多个数据库的透明访问。
8.如权利要求3所述的工作方法,其特征是:所述步骤(5)中,每个子持久化单元负责连接一个数据库,包括关系型数据库和非关系型数据库,并引用已经定义好的实体类,每个实体类是相应数据库表的映射,关系型数据库中的数据映射的实体类和非关系型数据库映射的实体类是不同的,各个子持久化单元名称是不同的。
9.如权利要求3所述的工作方法,其特征是:所述步骤(5)中,每个子持久化单元和它对应的实体放在同一个项目中,并将各个项目打成jar包的形式,供总体持久化单元调用,各个子持久化单元和实体对于上层的应用程序是透明的。
10.如权利要求3所述的工作方法,其特征是:所述步骤(6)中,JPQL语句转化后的既适应于关系型数据库又适应于非关系型数据库的字符串,直接操作封装好的实体类,然后将操作后的实体映射的数据分别存储到关系新数据库和非关系型数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510601248.8A CN105138692B (zh) | 2015-09-18 | 2015-09-18 | 一种大数据访问和管理的中间件定制系统与方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510601248.8A CN105138692B (zh) | 2015-09-18 | 2015-09-18 | 一种大数据访问和管理的中间件定制系统与方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105138692A true CN105138692A (zh) | 2015-12-09 |
CN105138692B CN105138692B (zh) | 2018-07-03 |
Family
ID=54724039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510601248.8A Active CN105138692B (zh) | 2015-09-18 | 2015-09-18 | 一种大数据访问和管理的中间件定制系统与方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105138692B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103383636A (zh) * | 2013-06-05 | 2013-11-06 | 上海斐讯数据通信技术有限公司 | 通信系统及通信方法 |
CN105808776A (zh) * | 2016-03-29 | 2016-07-27 | 中国建设银行股份有限公司 | 一种分布式数据库的数据管理系统及方法 |
CN106933564A (zh) * | 2015-12-31 | 2017-07-07 | 远光软件股份有限公司 | 通过Fitler模型及注解扩展实现ECP平台数据访问的查询方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339559A (zh) * | 2008-07-18 | 2009-01-07 | 北京航空航天大学 | 一种数据持久化实现方法 |
US20100122239A1 (en) * | 2008-11-10 | 2010-05-13 | Andrea Neufeld | Method and apparatus for monitoring runtime of persistence applications |
CN101980213A (zh) * | 2010-11-23 | 2011-02-23 | 中国科学院软件研究所 | 一种基于j2ee的数据持久化方法及系统 |
CN105808776A (zh) * | 2016-03-29 | 2016-07-27 | 中国建设银行股份有限公司 | 一种分布式数据库的数据管理系统及方法 |
-
2015
- 2015-09-18 CN CN201510601248.8A patent/CN105138692B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339559A (zh) * | 2008-07-18 | 2009-01-07 | 北京航空航天大学 | 一种数据持久化实现方法 |
US20100122239A1 (en) * | 2008-11-10 | 2010-05-13 | Andrea Neufeld | Method and apparatus for monitoring runtime of persistence applications |
CN101980213A (zh) * | 2010-11-23 | 2011-02-23 | 中国科学院软件研究所 | 一种基于j2ee的数据持久化方法及系统 |
CN105808776A (zh) * | 2016-03-29 | 2016-07-27 | 中国建设银行股份有限公司 | 一种分布式数据库的数据管理系统及方法 |
Non-Patent Citations (1)
Title |
---|
陈诚: "混合数据存储的对象关系映射框架的设计与实现", 《万方数据库》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103383636A (zh) * | 2013-06-05 | 2013-11-06 | 上海斐讯数据通信技术有限公司 | 通信系统及通信方法 |
CN106933564A (zh) * | 2015-12-31 | 2017-07-07 | 远光软件股份有限公司 | 通过Fitler模型及注解扩展实现ECP平台数据访问的查询方法 |
CN105808776A (zh) * | 2016-03-29 | 2016-07-27 | 中国建设银行股份有限公司 | 一种分布式数据库的数据管理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105138692B (zh) | 2018-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107402988B (zh) | 一种分布式NewSQL数据库系统和半结构化数据查询方法 | |
US10831753B2 (en) | Query plan generation and execution in a relational database management system with a temporal-relational database | |
US7599948B2 (en) | Object relational mapping layer | |
CN101546325B (zh) | 基于soa的网格异构数据集成方法 | |
CN107239479A (zh) | 一种基于区块链的数据存储以及查询的方法及装置 | |
CN106407302B (zh) | 支持通过简单sql调用中间件数据库特有功能的方法 | |
CN104573115A (zh) | 支持多类型数据库操作的集成接口的实现方法及系统 | |
CN107766526B (zh) | 数据库访问方法、装置及系统 | |
CN111078702B (zh) | 一种sql语句分类管理及统一查询方法和装置 | |
US10977224B2 (en) | Dynamic modeling of data in relational databases | |
CN107291471B (zh) | 一种支持可定制化数据采集的元模型框架系统 | |
US8954461B2 (en) | Systems and methods for object to relational mapping extensions | |
CN105224613A (zh) | 基于数据联邦技术的异构数据源整合系统及其整合方法 | |
CN105808776A (zh) | 一种分布式数据库的数据管理系统及方法 | |
CN107977446A (zh) | 一种基于数据分区的内存网格数据加载方法 | |
US8868597B2 (en) | Directory server processing requests based on hierarchical models while using backend servers operating based on relational models | |
CN105138692A (zh) | 一种大数据访问和管理的中间件定制系统与方法 | |
CN103455335A (zh) | 一种多级分类的Web实现方法 | |
CN104615713A (zh) | 一种基于多数据库类型的sql执行方法和装置 | |
CN102750384A (zh) | 从多数据库引擎获取数据的装置和方法 | |
WO2022242634A1 (zh) | 查询用sql记录的管理装置及应用系统 | |
CN105205103A (zh) | 访问数据库的方法和装置 | |
CN105550333A (zh) | 基于MongoDB的测试数据存储查询方法及系统 | |
CN105389342A (zh) | 一种数据库访问工具、系统和方法 | |
CN112860802B (zh) | 数据库操作语句的处理方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |