当前位置: 首页 > 专利查询>潘峰专利>正文

一种随机平滑分表方法、终端及存储介质技术

技术编号:31909466 阅读:28 留言:0更新日期:2022-01-15 12:49
本发明专利技术公开了一种随机平滑分表方法、终端及存储介质,其中随机平滑分表方法,预先将注解配置与待映射的数据库表在配置文件中关联,具体包括如下步骤:根据注解配置项扫描数据库表;判断扫描对象是否符合分表配置,如果不符合将以多线程并行的方式检查数据库属性是否有差异,如果无差异则结束,如果存在差异则生成更新数据库的SQL并执行至结束;如果符合分表配置,则自动赋予分表表名,并判断是否存在分表映射表,如果已存在分表映射表则以多线程并行的方式检查数据库属性是否有差异,如果不存在分表映射表则生成更新数据库的SQL并执行至结束。本发明专利技术提供一种随机平滑分表方法,全自动多线程并行更新数据库表结构,自动分表,显著提升开发效率。显著提升开发效率。显著提升开发效率。

【技术实现步骤摘要】
一种随机平滑分表方法、终端及存储介质


[0001]本专利技术涉及数据处理
,尤其涉及一种随机平滑分表方法、终端及存储介质。

技术介绍

[0002]基于Java的服务端应用数据持久化使用mybatis或Hibernate较多。这两个持久化框架中mybatis不支持自动更新表结构,且不能打印出调用持久化方法的类的具体行数和最终SQL;Hibernate虽然支持自动建表,但对分表不支持,且单线程速度较慢,同时也不能打印出调用持久化方法的类的具体行数和最终SQL。
[0003]市面上第三方分表方案或插件,同样存在单线程执行较慢,分表数量得提前指定,初次分表需要手动做迁移,且业务开发时还要手动查询数据具体路由到哪个分表,不利于快速开发。

技术实现思路

[0004]本专利技术的目的在于提供一种随机平滑分表方法,全自动多线程并行更新数据库表结构,自动分表,显著提升开发效率。
[0005]本专利技术公开的一种随机平滑分表方法所采用的技术方案是:一种随机平滑分表方法,预先将注解配置与待映射的数据库表在配置文件中关联,具体包括如下步骤:根据注解配置项扫描数据库表;判断扫描对象是否符合分表配置,如果不符合将通过多线程并行的方式检查数据库列属性和索引属性二者是否有差异,如果无差异则结束,如果存在差异则生成更新数据库的SQL语句并执行更新至结束;如果符合分表配置,则自动赋予分表表名,并判断是否存在分表映射表,如果已存在分表映射表则通过多线程并行的方式检查数据库列属性和索引属性二者是否有差异,如果不存在分表映射表则生成更新数据库的SQL语句并执行更新至结束。
[0006]作为优选方案,所述生成更新数据库的SQL语句并执行更新至结束步骤之间,还包括是否第一次生成分表映射表步骤:如果不是第一次生成分表映射表,则多线程并行执行更新至结束,如果是第一次生成分表映射表,则多线程并行添加映射至分表映射表。
[0007]作为优选方案,所述生成更新数据库的SQL语句并执行更新的具体步骤如下:调用内置的增、删、查、改接口;判断是否存在分表配置,如果不存在则直接生成更新数据库的SQL语句执行更新,如果存在则查询分表映射表中是否存在分表记录,如果存在则获取记录的分表名生成更新数据库的SQL语句执行更新,如果得到新增分表名,则向分表映射插入记录,随机调用权重随机分表方法生成更新数据库的SQL语句执行更新。
[0008]作为优选方案,所述调用内置的增、删、查、改接口步骤之后还需要判断是否为批
量操作,如果不是批量操作则保持不变,如果是批量操作,判断是否存在分表配置步骤需要按分表键分组,并按组循环执行。
[0009]作为优选方案,所述权重随机分表方法包括如下步骤:根据分表的数量生成按表明编号数组;根据可选权重参数notAllow(不允许)highest(高概率)lowest(低概率)分成三组,分别为defaultArr(为指定的默认组)highestArr(高概率组)loweatArr(低概率组);分表键值取Hash值的绝对值;取绝对值的随机数,并生成默认值,低概率区间开始数;在选择的组中随机获取一个生成分表名。
[0010]作为优选方案,上述步骤中还加载P6Spy组件,通过拦截SQL语句的功能,实现自动打印。
[0011]本申请还提供一种终端,所述终端包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如前述的随机平滑分表方法。
[0012]本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如前述的随机平滑分表方法。
[0013]本专利技术公开的一种随机平滑分表方法的有益效果是:预先将注解配置与待映射的数据库表在配置文件中关联,以供扫描。随机通过注解配置项扫描数据库表。判断扫描对象是否符合分表配置,如果不符合将通过多线程并行的方式检查数据库列属性和索引属性二者是否有差异,如果无差异则结束,如果存在差异则生成更新数据库的SQL语句并执行更新至结束。如果符合分表配置,则自动赋予分表表名,并判断是否存在分表映射表,如果已存在分表映射表则通过多线程并行的方式检查数据库列属性和索引属性二者是否有差异,如果不存在分表映射表则生成更新数据库的SQL语句并执行更新至结束。通过关联注解配置项扫描数据库表(实体类),实现全自动多线程并行更新数据库表结构,自动分表,显著提升开发效率。
附图说明
[0014]图1是本专利技术一种随机平滑分表方法的目录文件示意图。
[0015]图2是本专利技术一种随机平滑分表方法自动更新表,分表的使用方式图。
[0016]图3是本专利技术一种随机平滑分表方法引入方式图。
[0017]图4是本专利技术一种随机平滑分表方法的建立分表映射流程图。
[0018]图5是本专利技术一种随机平滑分表方法的自动分表的流程图。
[0019]图6是本专利技术一种随机平滑分表方法中权重随机分表方法的流程图。
[0020]图7是本专利技术一种随机平滑分表方法中调用P6Spy组件内方法打印日志的效果图。
具体实施方式
[0021]下面结合具体实施例和说明书附图对本专利技术做进一步阐述和说明:
请参考图1,一种随机平滑分表方法,预先将注解配置与待映射的数据库表在配置文件中关联。在database路径下,BaseAutoUpdateTable为自动建表更新表结构。BaseTable,BaseColumn为表配置属性注解,BaseIndex为索引属性定义注解,BaseShardingTable为分表配置属性注解,BaseSqlBuilder为权重随机分表算法类及Sql构建类,BaseMapper为内置方法接口。
[0022]其中注解配置具体根据注解自动更新表结构包含自定义注解BaseTable其属性有name(数据库对应表名)、indexes(数据库对应索引,它包含name:索引名,columns:索引列,indexType:索引类型)、shardingTable(分表属性,它包含column:分表字段,size:分表字段,notAllow:不允许新增的分表,highest:高优先级的分表,lowest:低优先级的分表),BaseColumn其属性有datatype(对应数据库数据类型)、defaultValue(默认值)、allowNull(能否为空)、comment(备注)、length(数据长度)。
[0023]请参考图2注解配置需要映射的数据库表(实体类)在配置文件中,quickcode.mysql.enable=true,quickcode.threadPool.enable=true,quickcode.scan.package=“所配置的包路径”即可获得自动建表更新表结构,自动迁移功能。
[0024]请参考图3在项目中,加入此代码,即执行本实施例所提供的方法,随机平滑分表方法具本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种随机平滑分表方法,其特征在于,预先将注解配置与待映射的数据库表在配置文件中关联,具体包括如下步骤:根据注解配置项扫描数据库表;判断扫描对象是否符合分表配置,如果不符合将通过多线程并行的方式检查数据库列属性和索引属性二者是否有差异,如果无差异则结束,如果存在差异则生成更新数据库的SQL语句并执行更新至结束;如果符合分表配置,则自动赋予分表表名,并判断是否存在分表映射表,如果已存在分表映射表则通过多线程并行的方式检查数据库列属性和索引属性二者是否有差异,如果不存在分表映射表则生成更新数据库的SQL语句并执行更新至结束。2.如权利要求1所述的一种随机平滑分表方法,其特征在于,所述生成更新数据库的SQL语句并执行更新至结束步骤之间,还包括是否第一次生成分表映射表步骤:如果不是第一次生成分表映射表,则多线程并行执行更新至结束,如果是第一次生成分表映射表,则多线程并行添加映射至分表映射表。3.如权利要求2所述的一种随机平滑分表方法,其特征在于,所述生成更新数据库的SQL语句并执行更新的具体步骤如下:调用内置的增、删、查、改接口;判断是否存在分表配置,如果不存在则直接生成更新数据库的SQL语句执行更新,如果存在则查询分表映射表中是否存在分表记录,如果存在则获取记录的分表名生成更新数据库的SQL语句执行更新,如果得到新增分表名,则向分表映射插入记录,随机调用权重随机分表方法生成更新数据库的SQL语句执行更新。4.如权利要求3所述的一种随机平滑分表方法,其特征...

【专利技术属性】
技术研发人员:潘峰
申请(专利权)人:潘峰
类型:发明
国别省市:

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

1