[发明专利]一种分表方法、装置及电子设备有效
申请号: | 201710023995.7 | 申请日: | 2017-01-12 |
公开(公告)号: | CN106886568B8 | 公开(公告)日: | 2018-05-01 |
发明(设计)人: | 钱文品;刘伟平;王良;余菲;陈超 | 申请(专利权)人: | 掌阅科技股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京市广友专利事务所有限责任公司11237 | 代理人: | 祁献民 |
地址: | 100022 北京市朝阳区东三环中路3*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 方法 装置 电子设备 | ||
技术领域
本发明涉及数据处理技术领域,尤其涉及数据库分表处理技术。
背景技术
Hibernate是一个基于Java的开源的持久化中间件,对JDBC(Java Data Base Connectivity,Java数据库连接)做了轻量的封装。其采用ORM(Object Relation Mapping,对象关系映射)机制,实现Java对象和关系数据库之间的映射,把sql语句传给数据库,并且把数据库返回的结果封装成对象。内部封装了JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API。由于其可以以对象的形式操作数据,更换数据库时只要修改配值文件,而不用关心数据库种类,因而提高了开发效率。
分表是将一张大表切分为同一个数据库的多张表,抵抗因数据量过大而影响性能的一种方法。发明人在实现本发明的过程中发现,Hibernate-Shards开源框架是基于Hibernate的强大的分库框架,但是不支持分表。Hibernate NamingStrategy是Hibernate提供的表名替换策略,其可以进行简单的分表操作,但是不能根据实例参数动态决定表名,一般只能用于按时间进行分表的场景。Hibernate QueryInterceptor是Hibernate提供的查询拦截器,用户可以在生成sql语句时进行拦截,将相应的表名动态替换成具体的分表,需要解析sql语句,实现复杂,性能和维护性都较差,而且也不可以根据实例参数动态决定表名,一般只能用户按时间进行分表。
因此,需要一种基于Hibernate的更加简单有效的分表处理方法。
发明内容
有鉴于此,本发明实施例提供了一种分表方法、装置及电子设备,至少部分的解决现有技术中存在的问题。
第一方面,本发明实施例提供了一种分表方法,包括:
动态生成多个子表模型类;
在开源框架的配置中心注册所述子表模型类;
选择所述子表模型类中需要进行数据操作的子表模型类;
利用所述开源框架提供的数据操作功能,对所述需要进行数据操作的子表模型类的实例执行相应的数据操作。
根据本发明实施例的一种具体实现方式,在所述动态生成多个子表模型类之前,所述方法还包括:
在所述开源框架中定义单表模型类。
根据本发明实施例的一种具体实现方式,所述动态生成多个子表模型类,包括:
获取所述开源框架关联的数据库的分表需求;
基于所述分表需求,利用第三方开源类库动态生成多个子表模型类。
根据本发明实施例的一种具体实现方式,所述在开源框架的配置中心注册所述子表模型类,包括:
生成所述子表模型类对应的类文件;
将所述类文件保存在所述开源框架的预设扫描位置。
根据本发明实施例的一种具体实现方式,所述在开源框架的配置中心注册所述子表模型类,包括:
获取所述开源框架的会话接口文件;
基于所述会话接口文件,判断所述子表模型类是否采用动态方式进行加载;
当所述子表模型类采用动态方式进行加载时,更新所述开源框架的配置文件,并重新创建所述开源框架的会话接口文件。
根据本发明实施例的一种具体实现方式,所述选择所述子表模型类中需要进行数据操作的子表模型类,包括:
基于所述开源框架关联的数据库的分表需求定义散列方法;
获取所述开源框架关联的数据库的预设字段;
基于所述散列方法对所述预设字段进行数据运算;
根据所述数据运算的结果确定需要进行数据操作的子表模型类。
根据本发明实施例的一种具体实现方式,所述利用所述开源框架提供的数据操作功能,对所述需要进行数据操作的子表模型类的实例执行相应的数据操作,包括:
使用所述开源框架提供的数据增加、数据删除、数据修改及数据查询功能,显式指定所述需要进行数据操作的子表模型类进行相关数据操作。
根据本发明实施例的一种具体实现方式,所述利用所述开源框架提供的数据操作功能,对所述需要进行数据操作的子表模型类的实例执行相应的数据操作,还包括:
使用反射方法构建所述需要进行数据操作的子表模型类的模型实例;
使用不包含重复元素的类集对所述模型实例进行数据填充。
第二方面,本发明实施例还提供了一种分表装置,包括:
生成模块,用于动态生成多个子表模型类;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于掌阅科技股份有限公司,未经掌阅科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710023995.7/2.html,转载请声明来源钻瓜专利网。