[发明专利]一种水电数据库自动建表分表的方法有效
申请号: | 201911239181.2 | 申请日: | 2019-12-06 |
公开(公告)号: | CN111177148B | 公开(公告)日: | 2023-03-24 |
发明(设计)人: | 陈意;郑键兵;花胜强;蔡杰;丁琳;吴宁;李宁宁;向南;周锡琅 | 申请(专利权)人: | 南京南瑞水利水电科技有限公司;国电南瑞科技股份有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 南京纵横知识产权代理有限公司 32224 | 代理人: | 耿英 |
地址: | 210009 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 水电 数据库 自动 建表分表 方法 | ||
1.一种水电数据库自动建表分表的方法,其特征是,包括以下步骤:
1)虚拟数据库前端按照mysql数据库标准底层通讯协议建立数据库服务侦听,后端按照真实的数据库连接信息、用户名和密码建立物理数据库连接线程池,水电业务系统按照真实的mysql的链接信息连接到虚拟数据库;
2)水电业务系统的数据访问层向虚拟数据库提交sql请求,虚拟数据库侦听到sql请求语句,将sql请求语句进行解析,比对预设的分表表名和分表算法,查看该条sql请求语句是否需要进行分表处理;如果该条语句无需进行分表处理,直接将该请求提交至后端物理数据库;
3)对于需要进行分表处理的sql请求语句,解析语句查询条件,根据预设的分表算法计算出该条语句涉及的子表名称,按语句类型、排序和分组进行类别归类;
4)根据子表名称查询子表缓存,查看子表在物理数据库是否存在,如果不存在,在物理数据库创建相应的子表,如果存在该子表,表示该子表已经被创建,则进入步骤5),对该子表进行请求提交;
5)对提交的sql请求语句进行修正,将其拆分成多个子表请求,将所有请求异步提交给物理数据库执行,将每个子表请求的返回结果放置缓存于结果集;等待所有子表请求完成,进入步骤6)进行结果集合并;
6)所有的子查询结果集按照步骤3)整理的类别进行归并处理,将归并的结果集按照标准的mysql协议返回给水电业务系统;
分表处理的内容包括定义表的分片规则来实现分片,每个表格捆绑一个分片规则,每个分片规则指定一个分片字段并绑定一个函数,来实现动态分片算法;
当用来进行分表的逻辑库收到一个SQL请求语句时,先解析这个SQL请求语句,查找涉及到的表,然后查看此表的定义,如果有分片规则,则获取到SQL请求语句里分片字段的值,并匹配分片函数,得到该SQL请求语句对应的分片列表,然后将SQL请求语句发往这些分片去执行,最后收集和处理所有分片返回的结果数据,并输出到客户端;
步骤4)中,子表创建的步骤为:预先设置子表创建脚本模板,当子表不存在时,子表结构直接模仿主表进行复制创建;
所述虚拟数据库中的分表配置中心构建有分表算法注册中心,直接参与分表的表名、字段名以及指定分表算法的实现类路径。
2.根据权利要求1所述的水电数据库自动建表分表的方法,其特征是,步骤2)中,分表处理的方法为:通过sql语法分析器,将输入sql请求语句的查找条件、子查找条件和分表字段值处理进行缓存分析,循环计算分表范围,确定所有的分片节点以后,对所有分片并行进行子表语句执行。
3.根据权利要求1所述的水电数据库自动建表分表的方法,其特征是,将主表的约束和主表触发器复制给子表,相关的约束和触发器按照模板进行自动创建。
4.根据权利要求1所述的水电数据库自动建表分表的方法,其特征是,步骤6)中的归并处理包括再排序和分组。
5.根据权利要求1所述的水电数据库自动建表分表的方法,其特征是,在所述虚拟数据库定义线程池,与真实的物理数据库建立连接,当多条sql请求语句请求处理时,并发构建多个会话和物理数据库进行通讯。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京南瑞水利水电科技有限公司;国电南瑞科技股份有限公司,未经南京南瑞水利水电科技有限公司;国电南瑞科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911239181.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:基于视差分析的草地识别系统
- 下一篇:一种锯条加工用旋转式焊接装置