一种大数据访问和管理的中间件定制系统与方法技术方案

技术编号:12480462 阅读:139 留言:0更新日期:2015-12-10 17:15
本发明专利技术公开了一种大数据访问和管理的中间件定制系统与方法,包括JPQL语句转换模块,用于负责对开发人员提交的JPQL语句进行转化,以使得将JPQL语句转化成既适应于关系型数据库又适应于非关系型数据库的字符串形式;总体持久化模块,该模块封装了多个子持久化单元,用于将关系型数据库和非关系型数据库分别进行了封装,屏蔽了关系型数据库和非关系型数据库之间的区别;子持久化单元,用于定义实体,对实体进行管理,并且提供相应的数据库连接,将对实体的操作映射成对应的数据操作,本发明专利技术实现了对关系型数据库和非关系型数据库的透明访问,开发人员不需要了解数据库中表的具体的物理结构,不需要在程序中编写连接数据库的代码。

【技术实现步骤摘要】

本专利技术涉及。
技术介绍
传统模式下,应用程序通常使用JDBC直接连接各个关系型数据库,获取所需要的数据,使用SQL语句直接对数据库中的表进行增删改查操作,如MySQL、OracIe等,但是需要知道关系型数据库的物理结构。JDBC可以屏蔽关系数据库之间的区别,使用统一的方式连接不同的关系型数据库,但是不能连接非关系型数据库,但是网站每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的,而且SQL语言是一种非过程化的面向集合的语言,它虽然用起来非常简单,但由于是解释实现,效率不如人意。大数据访问中间件的定制需求,具有以下特点:首先,一个网站可能有成千上万的用户每天需要存储大量数据,只存储到关系型数据库中,可能导致数据存取速率降低,网站访问速度受影响,这就要求需要将低价值密度、海量的数据存储到非关系型数据库中。其次,开发人员并不想要了解底层数据库具体的物理结构,而是面向对象的访问数据,想要透明的访问底层数据库,就像数据库不存在一样。再次,需要有统一的语言操作关系型数据库和非关系型数据库,如果每种数据库使用一种语言容易混淆。最后,使用JDBC只能连接关系型数据库,关系型数据库对于海量数据的查询和存储效率比较低,所以需要一种中间件实现对关系型数据库和非关系型数据库的统一访问,并有选择的存储海量数据。
技术实现思路
本专利技术为了解决上述问题,提出了,本系统克服了传统JDBC只能连接关系型数据库的缺陷,可以把非结构化的、低价值密度的、大量的数据存储在非关系型数据库中,把结构化的、高价值密度、少量的数据存储在关系型数据库,提高数据的查询和存取效率。为了实现上述目的,本专利技术采用如下技术方案:—种大数据访问和管理的中间件定制系统,包括JPQL语句转换模块、总体持久化模块和子持久化单元;其中:所述JPQL语句转换模块,用于负责对提交的JPQL语句进行转化,以使得将JPQL语句转化成既适应于关系型数据库又适应于非关系型数据库的字符串形式;所述总体持久化模块,该模块封装了多个子持久化单元,用于将关系型数据库和非关系型数据库分别进行了封装,屏蔽了关系型数据库和非关系型数据库之间的区别;所述子持久化单元,用于定义实体,对实体进行管理,并且提供相应的数据库连接,将对实体的操作映射成对应的数据操作;定义多个子持久化单元,每个子持久化单元对应一种类型的数据库。所述子持久化单元内容至少包括:—个独立的子项目,该项目使用一个xml文件连接具体的数据库,还包括对应数据库中的实体,一个子项目只能连接一个具体的数据库,该项目中包含具体的数据库驱动以及相应的java持久化单元驱动;对应数据库中定义的实体,每个实体都有对应的实体定义,这里的实体是指数据库管理系统中的不同管理对象,再通过映射机制将实体映射成具体数据库中的数据,每个实体对应数据库中的一个表,关系型和非关系型数据库中实体映射都采用注解的方式;对应的配置文件,配置文件采用xml的格式,配置文件中用标识属性来标识自己的身份是子单元,每个子单元都有一个唯一的配置文件,并且配置文件的标识名称必须唯一,不能重复,每个配置文件连接一个数据库,并调用相应的实体。基于上述系统的工作方法,包括以下步骤:(I)提交JPQL语言操作实体对象请求,以面向对象的方式访问数据;(2)分析提交的JPQL语句,将其转化成既适应于关系型数据库又适应非关系型数据库的字符串形式来操作结果集;(3)通过Spring配置文件调用总体持久化单元、定义实体管理工厂、定义实体管理器和定义事务管理器来获得结果集;(4)总体持久化单元调用多个子持久化单元,将多个子持久化单元组合成一个,定义总体持久化单元属性;(5)多个子持久化单元分别调用定义的实体对象类,并分别连接关系型数据库和非关系型数据库;(6) JPQL语句转化后的字符串操作实体对象,实体映射后的数据分别存储到关系型数据库和非关系型数据库。所述步骤(I)中,开发人员提交JPQL语句请求,JPQL是面向对象的查询语言,在关系型数据库(MySQL)中测试了 JPQL所有的查询语句,关系型数据库完全支持JPQl的所有查询语句,但是当使用非关系型数据库(MongoDB)测试JPQL的所有查询语句时,非关系型数据库并不能完全支持直接使用JPQL语句。所述步骤⑵中,由于非关系型数据库不能完全支持直接使用JPQL语句,将JPQL转化成非关系型数据库和关系型数据库都支持的字符串形式,MongoDB不支持JPQL中的参数格式,将JPQL中的参数用字符串变量表示出来,然后再对总持久化单元层获得的实体对象进行操作。所述步骤(3)中,使用基于Spring架构的Web系统的应用系统,同时使用关系型数据库和非关系型数据库,在Spring架构的配置文件中调用定义的总体持久化单元,并定义实体管理工厂对获得的实体进行管理,还定义事务管理器管理事务。所述步骤(4)中,总体持久化单元中调用多个不同的子持久化单元,并将多个子持久化单元组合成一个,所以Spring层只需要调用这个总的持久化单元即可实现对多个数据库的透明访问。所述步骤(5)中,每个子持久化单元负责连接一个数据库,包括关系型数据库和非关系型数据库,并引用已经定义好的实体类,每个实体类是相应数据库表的映射,关系型数据库中的数据映射的实体类和非关系型数据库映射的实体类是不同的,各个子持久化单元名称是不同的。所述步骤(5)中,每个子持久化单元和它对应的实体放在同一个项目中,并将各个项目打成jar包的形式,供总体持久化单元调用,各个子持久化单元和实体对于上层的应用程序是透明的。所述步骤¢)中,JPQL语句转化后的既适应于关系型数据库又适应于非关系型数据库的字符串,直接操作封装好的实体类,然后将操作后的实体映射的数据分别存储到关系新数据库和非关系型数据库。本专利技术的工作原理为:提供了一个操作关系型数据库和非关系型数据库的统一接口,可以把非结构化的、低价值密度的、大量的数据存储在非关系型数据库中,把结构化的、高价值密度、少量的数据存储在关系型数据库,提高数据的查询和存取效率。然后,实现了对关系型数据库和非关系型数据库的透明访问,开发人员不需要了解数据库中表的具体的物理结构,使用户可以通过操作实体对象,通过实体对象和数据库表的映射关系来操作数据。最后,通过测试非关系型数据库并不完全支持直接使用JPQL查询语言,通过将JPQL语句转化成既适应于关系型数据库又适应于非关系型数据库的字符串形式解决这个问题。本专利技术的有益效果为:(I)克服了传统JDBC只能连接关系型数据库的缺陷,提供了一个操作关系型数据库和非关系型数据库的统一接口,可以把非结构化的、低价值密度的、大量的数据存储在非关系型数据库中,把结构化的、高价值密度、少量的数据存储在关系型数据库,提高数据的查询和存取效率;(2)实现了对关系型数据库和非关系型数据库的透明访问,开发人员不需要了解数据库中表的具体的物理结构,不需要在程序中编写连接数据库的代码,直接调用配置文件来连接各个数据库,使开发人员可以通过操作实体对象,通过实体对象和数据库表的映射关系来操作数据;(3)通过反复测试发现,非关系型数据库并不完全支持直接使用JPQL查询语言,通过将JPQL语句转化成既适应于关本文档来自技高网...
一种<a href="http://www.xjishu.com/zhuanli/55/CN105138692.html" title="一种大数据访问和管理的中间件定制系统与方法原文来自X技术">大数据访问和管理的中间件定制系统与方法</a>

【技术保护点】
一种大数据访问和管理的中间件定制系统,其特征是:包括JPQL语句转换模块、总体持久化模块和子持久化单元;其中:所述JPQL语句转换模块,用于负责对提交的JPQL语句进行转化,以使得将JPQL语句转化成既适应于关系型数据库又适应于非关系型数据库的字符串形式;所述总体持久化模块,该模块封装了多个子持久化单元,用于将关系型数据库和非关系型数据库分别进行了封装,屏蔽了关系型数据库和非关系型数据库之间的区别;所述子持久化单元,用于定义实体,对实体进行管理,并且提供相应的数据库连接,将对实体的操作映射成对应的数据操作;定义多个子持久化单元,每个子持久化单元对应一种类型的数据库。

【技术特征摘要】

【专利技术属性】
技术研发人员:孔兰菊李靖倪珮珮肖宗水
申请(专利权)人:山大地纬软件股份有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1