[发明专利]一种分布式系统分库分表后非分片键字段查询数据的方法有效
申请号: | 202110052017.1 | 申请日: | 2021-01-15 |
公开(公告)号: | CN112380276B | 公开(公告)日: | 2021-09-07 |
发明(设计)人: | 李长彬 | 申请(专利权)人: | 四川新网银行股份有限公司 |
主分类号: | G06F16/2458 | 分类号: | G06F16/2458;G06F16/22;G06F16/28 |
代理公司: | 成都智言知识产权代理有限公司 51282 | 代理人: | 蒋秀清 |
地址: | 610094 四川省成都市*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分布式 系统 分库分表后非 分片 字段 查询 数据 方法 | ||
1.一种分布式系统分库分表后非分片键字段查询数据的方法,其特征在于,其是将索引实体对象存储到Elasticsearch,当向Elasticsearch发起数据查询时,通过Elasticsearch提供的API获取到索引数据对应的分片键字段值,然后通过分片算法工具定位到具体对应的分片上进行数据查询操作,最终将查询结果返回,实现数据查询;所述索引实体对象包含有用作主键的序号字段,以及数据分片键字段和其它非分片键字段;
所述分片算法工具包含有一个基于序号的求余取模分片算法类,该类包含有一个分片方法,用于返回分片数据源;并且该分片方法包含有两个参数,第一个参数是hashmap,键是数据源名称,值是数据源;第二个参数是分片键列表。
2.根据权利要求1所述的一种分布式系统分库分表后非分片键字段查询数据的方法,其特征在于,将索引实体对象存储到Elasticsearch的具体步骤如下:
(1.1)将索引实体对象转换为JSON字符串格式,得到Elasticsearch文档对象;
(1.2)调用Elasticsearch中的API存储Elasticsearch文档对象,从而将索引实体对象存储到Elasticsearch;
(1.3)循环步骤(1.1)、(1.2),使索引实体对象连续存储到Elasticsearch并更新。
3.根据权利要求1或2所述的一种分布式系统分库分表后非分片键字段查询数据的方法,其特征在于,所述分片方法返回分片数据源的具体过程如下:
(2.1)调用第一个参数hashmap的size方法,得到分片数;
(2.2)遍历第二个参数分片键列表,将列表中的分片键值逐个读取;
(2.3)根据得到的分片键值%得到的分片数,得到模数;
(2.4)遍历第一个参数hashmap逐个读取数据源名称和数据源;如果得到的数据源名称以步骤(2.3)得到的模数结尾,则表示命中分片并直接返回该数据源;如果未命中则直到命中为止;如果直到最后都没有命中分片,则对外抛出运行时异常并提示未命中分片错误信息。
4.根据权利要求3所述的一种分布式系统分库分表后非分片键字段查询数据的方法,其特征在于,通过分片算法工具定位到具体对应的分片上进行数据查询操作并将查询结果返回的具体步骤如下:
(3.1)定义数据查询输入对象,该对象用来定义数据检索要素,得到数据查询输入对象;
(3.2)调用Elasticsearch的API,若Elasticsearch文档对象不存在,则直接返回,查询结束;反之,则将获得的Elasticsearch文档对象进行解析,读取分片键信息,得到分片键值,然后执行步骤(3.3);
(3.3)根据步骤(3.2)得到的分片键值,调用分片算法工具的分片方法得到数据源;
(3.4)根据数据查询输入对象构建查询SQL语句;
(3.5)从步骤(3.3)得到的数据源获取数据库链接;
(3.6)调用数据库链接,并输入查询SQL语句,得到预编译语句执行器;
(3.7)调用预编译语句执行器的查询方法,并返回结果集;
(3.8)遍历查询的结果集并返回查询数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川新网银行股份有限公司,未经四川新网银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110052017.1/1.html,转载请声明来源钻瓜专利网。