CN114356929A - 一种基于sql缓存的分布式数据处理方法 - Google Patents
一种基于sql缓存的分布式数据处理方法 Download PDFInfo
- Publication number
- CN114356929A CN114356929A CN202111673326.7A CN202111673326A CN114356929A CN 114356929 A CN114356929 A CN 114356929A CN 202111673326 A CN202111673326 A CN 202111673326A CN 114356929 A CN114356929 A CN 114356929A
- Authority
- CN
- China
- Prior art keywords
- sql
- node
- database
- hash table
- distributed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 8
- 238000000034 method Methods 0.000 claims abstract description 21
- 230000008569 process Effects 0.000 claims abstract description 13
- 238000004458 analytical method Methods 0.000 claims abstract description 12
- 230000005012 migration Effects 0.000 claims description 3
- 238000013508 migration Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于SQL缓存的分布式数据处理方法,属于分布式数据库网关领域,本发明通过分布式数据库网关分发SQL语句后,利用最近最少使用(LRU)算法进行缓存执行SQL的数据库节点ID。将SQL语句进行哈希作为键,节点ID作为值。当下一次收到的SQL语句在缓存列表中时,可以直接将SQL语句分发到指定节点,这样可以节省部分SQL解析过程,也减轻了网络负载。本发明可以提高分布式数据库的SQL执行效率,减轻网络负载。
Description
技术领域
本发明涉及分布式数据库网关领域,尤其涉及一种基于SQL缓存的分布式数据处理方法。
背景技术
数据库网关是一种支持数据库远程访问的数据库连接服务。通过数据库网关,可以安全且低成本地将云或本地的数据库接入至其他系统中。数据库网关提供安全、可靠、低成本的数据库接入服务。数据库网关的工作原理大致如下:在本地安装一个数据库网关代理后,通过它负责与数据库网关服务建立安全的通道,数据库提供的服务也基于此进行通信。
现有的数据库网关大多数都具有负载均衡的作用,而且是基于连接层进行负载均衡的。在数据库的客户端与后端建立连接时,数据流经的通道就确定了下来。后续的SQL请求都会通过已经确立的连接进行传递,数据被转发到后端的数据库节点上,进行SQL解析与存储过程的实现。当一个客户端与数据库网关建立连接时,其发送的所有SQL请求都会被转发到同一个数据库节点上。当数据量过大时,会导致此节点的处理压力增大,而其他节点的处理能力却没有利用起来。
在一般的分布式数据库网关中,多采用轮询的方式将收到的SQL语句分发到后面的数据库节点上,每个节点进行SQL解析后找到该SQL的数据存放在哪几个节点上,然后在该节点上执行SQL并返回给数据库网关。在此过程中,SQL解析以及网络上转发数据包所带来的负载是不可忽视的,尤其在集群规模较大时,对于SQL的执行效率产生很大的负面效果。
鉴于此,网关需要一种SQL缓存技术,对于高频的SQL语句可以直接分发到数据分布的节点上执行,大大减少集群的负载。
发明内容
针对分布式数据库SQL解析过程长和网络负载高导致的SQL执行效率较低的特点,本发明提供了一种基于SQL缓存的分布式数据处理方法。通过分布式数据库网关将SQL语句计算哈希值,再缓存到哈希表中,减少了分布式数据库的解析过程、减轻了网络负载,提升了SQL执行效率。
本发明的技术方案是:
一种基于SQL缓存的分布式数据处理方法,通过分布式数据库网关分发SQL语句后,利用最近最少使用(LRU)算法进行缓存执行SQL的数据库节点ID。将SQL语句进行哈希作为键,节点ID作为值。当下一次收到的SQL语句在缓存列表中时,可以直接将SQL语句分发到指定节点,这样可以节省部分SQL解析过程,也减轻了网络负载。本发明可以提高分布式数据库的SQL执行效率,减轻网络负载。
进一步的,
数据库网关初始化一个链表和有长度限制的哈希表,每当收到一条SQL语句,将其转化为字符串,并通过MD5散列函数为它计算一个哈希值,作为哈希表的键。
从哈希表中查找这个键是否命中缓冲,如果命中,就将这一组键值对移动到链表的首部即把最近被使用的一组键值对移动到链表的最前面;如果没有命中,先检测哈希表是否已经达到长度上限,若是,就移除链表尾部的节点即把缓存中最久未被使用的一组键值对删除;否则跳过这一步。
将SQL语句轮询转发到分布式数据库节点,经过SQL解析后,数据库各个节点经过协商后找到执行SQL的节点,记录下这个节点的ID作为值,与经过哈希的SQL语句组成一组键值对插入到链表的首部,更新哈希表。
哈希表的长度限制根据分布式数据库的集群规模、数据副本的份数、网络的延迟、硬件设施协调而定。
数据库的数据副本保持分布在原有节点中,当发生副本合并、拆分时,应设置成在本节点中完成平衡。
如果缓存在哈希表中的SQL语句的数据副本发生节点迁移,SQL被转发到节点后将重新执行存储过程来解析出存储数据的节点,并将新的节点ID作为值更新到哈希表中。
本发明的有益效果是
相比于现有技术中,分布式数据库网关每次接收到SQL语句时都轮询发送到后端的数据库节点。本方案通过将SQL语句计算哈希值,再缓存到哈希表中,减少了分布式数据库的解析过程、减轻了网络负载,提升了SQL执行效率。
附图说明
图1是本发明的工作流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明中的数据库网关和后端的数据库的每一个节点都建立连接。也就是说,当一个客户端连接到数据库网关上时,后者会和后端的每一个数据库节点建立安全、可靠的TCP连接,然后把从客户端收到的数据进行协议解析后转发到后端的数据库节点上。网关会在此过程中对数据报文进行事务的分割,以保证同一个事务的报文被分发到同一个数据库节点上,使每一个事务顺利执行。待每个数据库节点将应答数据返回给网关时,网关对数据根据请求顺序进行整合,一起发送给客户端。由于数据库网关只是解析协议而不解析SQL,所以SQL被轮询发送到数据库节点后进行SQL解析,并转发到最终执行SQL的节点上。当数据量增加时,SQL的解析及转发将耗费大量的计算和网络资源。
因此,本发明中使用了基于LRU算法和哈希表实现的SQL缓存的分布式数据处理方法,具体实现如下:
数据库网关初始化一个链表和有长度限制的哈希表,每当收到一条SQL语句,将其转化为字符串,并通过MD5散列函数为它计算一个哈希值,作为哈希表的键。
然后从哈希表中查找这个键是否命中缓冲,如果命中,就将这一组键值对移动到链表的首部(也就是把最近被使用的一组键值对移动到链表的最前面);如果没有命中,先检测哈希表是否已经达到长度上限,若是,就移除链表尾部的节点(也就是把缓存中最久未被使用的一组键值对删除);否则跳过这一步。
接下来将SQL语句轮询转发到分布式数据库节点,经过SQL解析后,数据库各个节点经过协商后找到执行SQL的节点,记录下这个节点的ID作为值,与经过哈希的SQL语句组成一组键值对插入到链表的首部,更新哈希表。
在此方案下,每当分布式数据库网关接收到缓存在链表中的SQL语句时,可以直接将其转发到真正执行SQL的数据库节点,大大提高了SQL执行的效率,减少了数据库集群的大量的解析过程和网络负载。
关于哈希表的长度限制,并没有一个固定的最优解,需要根据分布式数据库的集群规模、数据副本的份数、网络的延迟、硬件设施等多种因素协调而定。一般来说,哈希表的长度与数据库集群的处理SQL的效率呈现先上升再下降的趋势。具体来说,当硬件资源足够多时,哈希表的长度可以设置的足够大来存储更多的SQL语句,这将大大减少SQL解析过程,大部分SQL语句可以通过网关直接转发到存储数据的数据库节点上。然而,当哈希表的长度增长到某个阈值时,由于维护哈希表占用的内存过大,导致硬件资源紧张,数据库集群会出现处理SQL的能力下降的情况。因此,为了避免哈希表过长而占用大量内存导致网关性能下降的现象出现,在部署网关时要进行多轮测试来确定哈希表的长度。
对于数据库的数据副本来说,应该尽量保持分布在原有节点中。当发生副本合并、拆分时,应设置成尽量在本节点中完成平衡,这样缓存在哈希表的键值对才能发挥其最大作用。如果缓存在哈希表中的SQL语句的数据副本发生节点迁移,SQL被转发到节点后将重新执行存储过程来解析出存储数据的节点,并将新的节点ID作为值更新到哈希表中。
本发明通过网关缓存执行SQL的节点ID,当收到重复的SQL语句时,可以直接把SQL转发到存储数据的节点,提高了SQL的执行效率。
以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (8)
1.一种基于SQL缓存的分布式数据处理方法,其特征在于,
分布式数据库网关每次接收到SQL语句时,将SQL语句计算哈希值,再缓存到哈希表中。
2.根据权利要求1所述的方法,其特征在于,
通过分布式数据库网关分发SQL语句后,利用最近最少使用(LRU)算法进行缓存执行SQL的数据库节点ID;
将SQL语句进行哈希作为键,节点ID作为值;当下一次收到的SQL语句在缓存列表中时,直接将SQL语句分发到指定节点。
3.根据权利要求2所述的方法,其特征在于,
数据库网关初始化一个链表和有长度限制的哈希表,每当收到一条SQL语句,将其转化为字符串,并通过MD5散列函数为它计算一个哈希值,作为哈希表的键。
4.根据权利要求3所述的方法,其特征在于,
从哈希表中查找这个键是否命中缓冲,如果命中,就将这一组键值对移动到链表的首部即把最近被使用的一组键值对移动到链表的最前面;如果没有命中,先检测哈希表是否已经达到长度上限,若是,就移除链表尾部的节点即把缓存中最久未被使用的一组键值对删除;否则跳过这一步。
5.根据权利要求4所述的方法,其特征在于,
将SQL语句轮询转发到分布式数据库节点,经过SQL解析后,数据库各个节点经过协商后找到执行SQL的节点,记录下这个节点的ID作为值,与经过哈希的SQL语句组成一组键值对插入到链表的首部,更新哈希表。
6.根据权利要求5所述的方法,其特征在于,
哈希表的长度限制根据分布式数据库的集群规模、数据副本的份数、网络的延迟、硬件设施协调而定。
7.根据权利要求6所述的方法,其特征在于,
数据库的数据副本保持分布在原有节点中,当发生副本合并、拆分时,应设置成在本节点中完成平衡。
8.根据权利要求7所述的方法,其特征在于,
如果缓存在哈希表中的SQL语句的数据副本发生节点迁移,SQL被转发到节点后将重新执行存储过程来解析出存储数据的节点,并将新的节点ID作为值更新到哈希表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111673326.7A CN114356929A (zh) | 2021-12-31 | 2021-12-31 | 一种基于sql缓存的分布式数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111673326.7A CN114356929A (zh) | 2021-12-31 | 2021-12-31 | 一种基于sql缓存的分布式数据处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114356929A true CN114356929A (zh) | 2022-04-15 |
Family
ID=81104549
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111673326.7A Pending CN114356929A (zh) | 2021-12-31 | 2021-12-31 | 一种基于sql缓存的分布式数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114356929A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101567006A (zh) * | 2009-05-25 | 2009-10-28 | 中兴通讯股份有限公司 | 一种数据库系统及分布式sql语句执行计划重用方法 |
CN103064960A (zh) * | 2012-12-31 | 2013-04-24 | 华为技术有限公司 | 数据库查询方法及设备 |
CN109885585A (zh) * | 2019-02-18 | 2019-06-14 | 星环信息科技(上海)有限公司 | 支持存储过程、触发器与视图的分布式数据库系统和方法 |
CN113392126A (zh) * | 2021-08-17 | 2021-09-14 | 北京易鲸捷信息技术有限公司 | 基于分布式数据库的执行计划缓存及读取方法 |
-
2021
- 2021-12-31 CN CN202111673326.7A patent/CN114356929A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101567006A (zh) * | 2009-05-25 | 2009-10-28 | 中兴通讯股份有限公司 | 一种数据库系统及分布式sql语句执行计划重用方法 |
CN103064960A (zh) * | 2012-12-31 | 2013-04-24 | 华为技术有限公司 | 数据库查询方法及设备 |
CN109885585A (zh) * | 2019-02-18 | 2019-06-14 | 星环信息科技(上海)有限公司 | 支持存储过程、触发器与视图的分布式数据库系统和方法 |
CN113392126A (zh) * | 2021-08-17 | 2021-09-14 | 北京易鲸捷信息技术有限公司 | 基于分布式数据库的执行计划缓存及读取方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8937942B1 (en) | Storing session information in network devices | |
CN104050276B (zh) | 一种分布式数据库的缓存处理方法及系统 | |
US7581028B2 (en) | Method for efficient image distribution and management | |
CN109905480B (zh) | 基于内容中心性的概率缓存内容放置方法 | |
US20120079484A1 (en) | System, methods, and media for providing in-memory non-relational databases | |
CN102971732A (zh) | 键/值存储器的集成分级查询处理的系统结构 | |
CN103428093A (zh) | 一种基于名字路由前缀存储、匹配及更新方法与装置 | |
US8539041B2 (en) | Method, apparatus, and network system for acquiring content | |
CN107454120A (zh) | 网络攻击防御系统和防御网络攻击的方法 | |
CN113595822B (zh) | 一种数据包管理方法、系统和装置 | |
CN109905720B (zh) | 命名数据网络下基于视频点播系统的缓存替换方法 | |
WO2020181820A1 (zh) | 数据缓存方法、装置、计算机设备和存储介质 | |
US20050216554A1 (en) | Use of cache memory for decreasing the number of requests forwarded to server computers | |
CN107180034A (zh) | MySQL数据库的集群系统 | |
CN114356929A (zh) | 一种基于sql缓存的分布式数据处理方法 | |
WO2010031297A1 (zh) | 一种wap网关提取业务的实现方法和系统 | |
CN110581873B (zh) | 一种跨集群重定向方法及监控服务器 | |
CN117056246A (zh) | 一种数据缓存方法及系统 | |
CN113672583B (zh) | 基于存储与计算分离的大数据多数据源分析方法及系统 | |
CN107092529B (zh) | Olap服务方法、装置及系统 | |
KR102235622B1 (ko) | IoT 환경에서의 협력 에지 캐싱 방법 및 그를 위한 장치 | |
CN109062694B (zh) | 一种将应用程序迁移到云平台的方法 | |
CN109933279B (zh) | 一种支持混合存储系统的内容过滤方法 | |
CN116257521B (zh) | 一种基于fpga的kv存储方法 | |
CN117997964A (zh) | 一种基于ndn的区块链数据缓存方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20221129 Address after: Room 305-22, Building 2, No. 1158 Zhangdong Road and No. 1059 Dangui Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 200120 Applicant after: Shanghai Yunxi Technology Co.,Ltd. Address before: Building S02, 1036 Gaoxin Langchao Road, Jinan, Shandong 250100 Applicant before: Shandong Inspur Scientific Research Institute Co.,Ltd. |
|
TA01 | Transfer of patent application right |