一种分表方法、装置及电子设备制造方法及图纸

技术编号:15704881 阅读:214 留言:0更新日期:2017-06-26 10:13
本发明专利技术实施例公开了一种分表方法、装置及电子装置,涉及数据处理技术领域。本发明专利技术实施例的分表方法包括:动态生成多个子表模型类,在开源框架的配置中心注册所述子表模型类,选择所述子表模型类中需要进行数据操作的子表模型类,以及利用所述开源框架提供的数据操作功能,对所述需要进行数据操作的子表模型类的实例执行相应的数据操作。此外,本发明专利技术实施例还公开了一种分表装置及电子设备。通过本发明专利技术实施例的方案,能有效的提高分表的效率。

【技术实现步骤摘要】
一种分表方法、装置及电子设备
本专利技术涉及数据处理
,尤其涉及数据库分表处理技术。
技术介绍
Hibernate是一个基于Java的开源的持久化中间件,对JDBC(JavaDataBaseConnectivity,Java数据库连接)做了轻量的封装。其采用ORM(ObjectRelationMapping,对象关系映射)机制,实现Java对象和关系数据库之间的映射,把sql语句传给数据库,并且把数据库返回的结果封装成对象。内部封装了JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API。由于其可以以对象的形式操作数据,更换数据库时只要修改配值文件,而不用关心数据库种类,因而提高了开发效率。分表是将一张大表切分为同一个数据库的多张表,抵抗因数据量过大而影响性能的一种方法。专利技术人在实现本专利技术的过程中发现,Hibernate-Shards开源框架是基于Hibernate的强大的分库框架,但是不支持分表。HibernateNamingStrategy是Hibernate提供的表名替换策略,其可以进行简单的分表操作,但是不能根据实例参数动态决定表名,一般只能用于按时间进行分表的场景。HibernateQueryInterceptor是Hibernate提供的查询拦截器,用户可以在生成sql语句时进行拦截,将相应的表名动态替换成具体的分表,需要解析sql语句,实现复杂,性能和维护性都较差,而且也不可以根据实例参数动态决定表名,一般只能用户按时间进行分表。因此,需要一种基于Hibernate的更加简单有效的分表处理方法。
技术实现思路
有鉴于此,本专利技术实施例提供了一种分表方法、装置及电子设备,至少部分的解决现有技术中存在的问题。第一方面,本专利技术实施例提供了一种分表方法,包括:动态生成多个子表模型类;在开源框架的配置中心注册所述子表模型类;选择所述子表模型类中需要进行数据操作的子表模型类;利用所述开源框架提供的数据操作功能,对所述需要进行数据操作的子表模型类的实例执行相应的数据操作。根据本专利技术实施例的一种具体实现方式,在所述动态生成多个子表模型类之前,所述方法还包括:在所述开源框架中定义单表模型类。根据本专利技术实施例的一种具体实现方式,所述动态生成多个子表模型类,包括:获取所述开源框架关联的数据库的分表需求;基于所述分表需求,利用第三方开源类库动态生成多个子表模型类。根据本专利技术实施例的一种具体实现方式,所述在开源框架的配置中心注册所述子表模型类,包括:生成所述子表模型类对应的类文件;将所述类文件保存在所述开源框架的预设扫描位置。根据本专利技术实施例的一种具体实现方式,所述在开源框架的配置中心注册所述子表模型类,包括:获取所述开源框架的会话接口文件;基于所述会话接口文件,判断所述子表模型类是否采用动态方式进行加载;当所述子表模型类采用动态方式进行加载时,更新所述开源框架的配置文件,并重新创建所述开源框架的会话接口文件。根据本专利技术实施例的一种具体实现方式,所述选择所述子表模型类中需要进行数据操作的子表模型类,包括:基于所述开源框架关联的数据库的分表需求定义散列方法;获取所述开源框架关联的数据库的预设字段;基于所述散列方法对所述预设字段进行数据运算;根据所述数据运算的结果确定需要进行数据操作的子表模型类。根据本专利技术实施例的一种具体实现方式,所述利用所述开源框架提供的数据操作功能,对所述需要进行数据操作的子表模型类的实例执行相应的数据操作,包括:使用所述开源框架提供的数据增加、数据删除、数据修改及数据查询功能,显式指定所述需要进行数据操作的子表模型类进行相关数据操作。根据本专利技术实施例的一种具体实现方式,所述利用所述开源框架提供的数据操作功能,对所述需要进行数据操作的子表模型类的实例执行相应的数据操作,还包括:使用反射方法构建所述需要进行数据操作的子表模型类的模型实例;使用不包含重复元素的类集对所述模型实例进行数据填充。第二方面,本专利技术实施例还提供了一种分表装置,包括:生成模块,用于动态生成多个子表模型类;注册模块,用于在开源框架的配置中心注册所述子表模型类;选择模块,用于选择所述子表模型类中需要进行数据操作的子表模型类;执行模块,用于利用所述开源框架提供的数据操作功能,对所述需要进行数据操作的子表模型类的实例执行相应的数据操作。根据本专利技术实施例的一种具体实现方式,所述装置还包括:定义模块,用于在所述开源框架中定义单表模型类。根据本专利技术实施例的一种具体实现方式,所述生成模块,还用于:获取所述开源框架关联的数据库的分表需求;基于所述分表需求,利用第三方开源类库动态生成多个子表模型类。根据本专利技术实施例的一种具体实现方式,所述注册模块,还用于:生成所述子表模型类对应的类文件;将所述类文件保存在所述开源框架的预设扫描位置。根据本专利技术实施例的一种具体实现方式,所述注册模块,还用于:获取所述开源框架的会话接口文件;基于所述会话接口文件,判断所述子表模型类是否采用动态方式进行加载;当所述子表模型类采用动态方式进行加载时,更新所述开源框架的配置文件,并重新创建所述开源框架的会话接口文件。根据本专利技术实施例的一种具体实现方式,所述选择模块,包括:定义模块,用于基于所述开源框架关联的数据库的分表需求定义散列方法;获取模块,用于获取所述开源框架关联的数据库的预设字段;运算模块,用于基于所述散列方法对所述预设字段进行数据运算;确定模块,用于根据所述数据运算的结果确定需要进行数据操作的子表模型类。根据本专利技术实施例的一种具体实现方式,所述执行模块,包括:指定模块,用于使用所述开源框架提供的数据增加、数据删除、数据修改及数据查询功能,显式指定所述需要进行数据操作的子表模型类进行相关数据操作。根据本专利技术实施例的一种具体实现方式,所述执行模块,还包括:构建模块,用于使用反射方法构建所述需要进行数据操作的子表模型类的模型实例;填充模块,用于使用不包含重复元素的类集对所述模型实例进行数据填充。第三方面,本专利技术实施例还提供了一种电子设备,该电子设备包括:至少一个处理器;以及,与该至少一个处理器通信连接的存储器;其中,该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行前述任第一方面或第一方面的任一实现方式中的分表方法。第四方面,本专利技术实施例还提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使该计算机执行前述第一方面或第一方面的任一实现方式中的分表方法。第五方面,本专利技术实施例还提供了一种计算机程序产品,该计算机程序产品包括存储在非暂态计算机可读存储介质上的计算程序,该计算机程序包括程序指令,当该程序指令被计算机执行时,使该计算机执行前述第一方面或第一方面的任一实现方式中的分表方法。本专利技术实施例提供的分表方法、装置、电子设备、非暂态计算机可读存储介质及计算机程序,通过动态生成多个子表模型类并结合Hibernate的数据操作功能,进而能够在不明显影响性能和维护性的前提下实现了基于Hibernate框架来实现分表ORM的功能。由于分表过程中能够根据实例参数动态决定表名,用户仅需制定根据实例参数动态决定表名的规则即可,故达到了实现方式简单、可理解性强并大幅减少本文档来自技高网...
一种分表方法、装置及电子设备

【技术保护点】
一种分表方法,其特征在于,包括:动态生成多个子表模型类;在开源框架的配置中心注册所述子表模型类;选择所述子表模型类中需要进行数据操作的子表模型类;利用所述开源框架提供的数据操作功能,对所述需要进行数据操作的子表模型类的实例执行相应的数据操作。

【技术特征摘要】
1.一种分表方法,其特征在于,包括:动态生成多个子表模型类;在开源框架的配置中心注册所述子表模型类;选择所述子表模型类中需要进行数据操作的子表模型类;利用所述开源框架提供的数据操作功能,对所述需要进行数据操作的子表模型类的实例执行相应的数据操作。2.根据权利要求1所述的分表方法,其特征在于,在所述动态生成多个子表模型类之前,所述方法还包括:在所述开源框架中定义单表模型类。3.根据权利要求1所述的分表方法,其特征在于,所述动态生成多个子表模型类,包括:获取所述开源框架关联的数据库的分表需求;基于所述分表需求,利用第三方开源类库动态生成多个子表模型类。4.根据权利要求1所述的分表方法,其特征在于,所述在开源框架的配置中心注册所述子表模型类,包括:生成所述子表模型类对应的类文件;将所述类文件保存在所述开源框架的预设扫描位置。5.根据权利要求1所述的分表方法,其特征在于,所述在开源框架的配置中心注册所述子表模型类,包括:获取所述开源框架的会话接口文件;基于所述会话接口文件,判断所述子表模型类是否采用动态方式进行加载;当所述子表模型类采用动态方式进行加载时,更新所述开源框架的配置文件,并重新创建所述开源框架的会话接口文件。6.根据权利要求3所述的分表方法,其特征在于,所述选择所述子表模型类中需要进行数据操作的子表模型类,包括:基于所述开源框架关联的数据库的分表需求定义散列方法;获取所述开源框架关联的数据库的预...

【专利技术属性】
技术研发人员:钱文品余菲陈超
申请(专利权)人:掌阅科技股份有限公司
类型:发明
国别省市:北京,11

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

1