CN117556452A - 一种针对数据库的访问控制方法及相关设备 - Google Patents
一种针对数据库的访问控制方法及相关设备 Download PDFInfo
- Publication number
- CN117556452A CN117556452A CN202410039720.2A CN202410039720A CN117556452A CN 117556452 A CN117556452 A CN 117556452A CN 202410039720 A CN202410039720 A CN 202410039720A CN 117556452 A CN117556452 A CN 117556452A
- Authority
- CN
- China
- Prior art keywords
- target
- current limiting
- template
- query statement
- query
- 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
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000008569 process Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 13
- 238000004422 calculation algorithm Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 10
- 230000008859 change Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 5
- CYTYCFOTNPOANT-UHFFFAOYSA-N Perchloroethylene Chemical compound ClC(Cl)=C(Cl)Cl CYTYCFOTNPOANT-UHFFFAOYSA-N 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- RWSOTUBLDIXVET-UHFFFAOYSA-N Dihydrogen sulfide Chemical compound S RWSOTUBLDIXVET-UHFFFAOYSA-N 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- 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/242—Query formulation
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Bioethics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Automation & Control Theory (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书提供了一种针对数据库的访问控制方法及相关设备,针对所述数据库预先配置有至少一个限流规则,每个限流规则包含与预设的限流业务相关的查询语句模版以及对应的限流值。该方法包括:响应于针对所述数据库的目标访问请求,对目标访问请求中包含的与目标业务相关的目标查询语句进行模版化处理,得到与目标查询语句对应的目标查询语句模版;确定目标查询语句模版是否与至少一个限流规则中包含的查询语句模版匹配;若是,则根据至少一个限流规则中包含的与该查询语句模版对应的限流值,对目标访问请求进行限流处理。
Description
技术领域
本说明书一个或多个实施例涉及数据库技术领域,尤其涉及一种针对数据库的访问控制方法及相关设备。
背景技术
在大促活动期间或者在数据库被恶意地高频访问的情况下,都会导致数据库的流量激增,大量请求会并发地到达数据库,使得数据库的负载压力过大,每个请求的处理延时变长,甚至可能出现部分机器宕机的后果,严重影响用户体验。
为了解决此类问题并确保数据库系统的稳定运行,限流机制被引入到数据库中。其中,限流机制可以通过限制访问数据库的流量数,有效控制并发访问的数量,从而避免数据库的负载压力过大,保证用户的正常使用。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种针对数据库的访问控制方法及相关设备。
第一方面,本说明书提供了一种针对数据库的访问控制方法,针对所述数据库预先配置有至少一个限流规则,其中,每个限流规则包含与预设的限流业务相关的查询语句模版,以及与该查询语句模版对应的限流值;所述方法包括:
响应于针对所述数据库的目标访问请求,对所述目标访问请求中包含的与目标业务相关的目标查询语句进行模版化处理,得到与所述目标查询语句对应的目标查询语句模版;
确定所述目标查询语句模版是否与所述至少一个限流规则中包含的查询语句模版匹配;
若所述目标查询语句模版与所述至少一个限流规则中包含的任一查询语句模版匹配,则根据所述至少一个限流规则中包含的与该查询语句模版对应的限流值,对所述目标访问请求进行限流处理。
第二方面,本说明书提供了一种分布式数据库,所述分布式数据库为基于多个服务端构建的数据库;所述多个服务端中的任一服务端中维护了与所述数据库对应的至少一个限流规则,其中,每个限流规则包含预先配置的与预设的限流业务相关的查询语句模版,以及与该查询语句模版对应的限流值;所述多个服务端中的任一服务端:
响应于针对所述数据库的目标访问请求,对所述目标访问请求中包含的与目标业务相关的目标查询语句进行模版化处理,得到与所述目标查询语句对应的目标查询语句模版;
确定所述目标查询语句模版是否与所述至少一个限流规则中包含的查询语句模版匹配;
若所述目标查询语句模版与所述至少一个限流规则中包含的任一查询语句模版匹配,则根据所述至少一个限流规则中包含的与该查询语句模版对应的限流值,对所述目标访问请求进行限流处理。
第三方面,本说明书提供了一种针对数据库的访问控制装置,针对所述数据库预先配置有至少一个限流规则,其中,每个限流规则包含与预设的限流业务相关的查询语句模版,以及与该查询语句模版对应的限流值;所述装置包括:
模版化处理单元,用于响应于针对所述数据库的目标访问请求,对所述目标访问请求中包含的与目标业务相关的目标查询语句进行模版化处理,得到与所述目标查询语句对应的目标查询语句模版;
模版匹配单元,用于确定所述目标查询语句模版是否与所述至少一个限流规则中包含的查询语句模版匹配;
限流处理单元,用于若所述目标查询语句模版与所述至少一个限流规则中包含的任一查询语句模版匹配,则根据所述至少一个限流规则中包含的与该查询语句模版对应的限流值,对所述目标访问请求进行限流处理。
相应地,本说明书还提供了一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由所述处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述第一方面所述的针对数据库的访问控制方法。
相应地,本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如上述第一方面所述的针对数据库的访问控制方法。
综上所述,本申请可以先针对数据库预先配置至少一个限流规则,其中,每个限流规则可以包含预先配置的与预设的限流业务相关的查询语句模版,以及与该查询语句模版对应的限流值。响应于针对该数据库的目标访问请求,可以对该目标访问请求中包含的与目标业务相关的目标查询语句进行模版化处理,得到与该目标查询语句对应的目标查询语句模版。然后,可以确定该目标查询语句模版是否与其维护的至少一个限流规则中包含的查询语句模版匹配;若该目标查询语句模版与该至少一个限流规则中包含的任一查询语句模版匹配,则可以根据该至少一个限流规则中包含的与该查询语句模版对应的限流值,对该目标访问请求进行限流处理。如此,本申请考虑到与某一类业务相关的访问请求中所包含的查询语句往往具有固定的查询语句模版,从而可以根据实际需求预先配置与指定的限流业务相关的查询语句模版及其对应的限流值。基于此,若后续接收到的访问请求中所包含的查询语句的模版与上述预先配置的任一查询语句模版相匹配,则可以对该访问请求进行精准的限流处理,同时不妨碍与其他业务相关的访问请求的正常执行,保证了数据库的稳定运行以及用户的使用体验。
附图说明
图1是一示例性实施例提供的一种针对数据库的访问控制系统的系统结构示意图;
图2是一示例性实施例提供的一种分布式数据库的结构示意图;
图3是一示例性实施例提供的一种针对数据库的访问控制方法的流程示意图;
图4是一示例性实施例提供的另一种针对数据库的访问控制方法的流程示意图;
图5是一示例性实施例提供的一种针对数据库的访问控制装置的结构示意图;
图6是一示例性实施例提供的一种计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
需要说明的是,本申请中所述的“多个”是指两个或者两个以上。
如上所述,为了避免大量并发请求使得数据库的负载压力过大,进而影响数据库系统的稳定运行和用户的使用体验,限流机制被引入到数据库中。
其中,限流机制通常可以被分为两大类:基于请求限流和基于资源限流。
基于请求限流:统计数据库收到的全部请求,并统一限制数据库每秒能够处理的请求数,超过数量限制的请求将会被直接拒绝或者令其排队等候;或者,限制数据库的网络流量,以防止数据库在短时间内接收或发送过多的数据,从而保护数据库的带宽和资源。
基于资源限流:常见的有CPU\内存负载限流和网络连接数限流,可以防止因过多的计算任务或占用过多内存而导致的数据库性能下降或崩溃。一般可以采用数据库资源管理器(Database Resource Manager)设置资源计划和限制并发连接数来控制访问数据库的流量数。例如在CPU/内存占用率超过一定限制后,就直接拒绝后续的所有访问请求,或者令其排队等待。
如上所述,无论是基于请求限流还是基于资源限流,在超过限制流量或者资源占用率的情况下都会无差别的拒绝后续所有访问请求,即二者都是针对所有访问请求的无差别限流,限流机制不够灵活,导致一些重要业务的请求或者没有恶意的请求将无法被正常、及时地执行,进而严重影响用户的使用体验,甚至会给用户造成严重的经济损失。
基于此,本说明书提供了一种技术方案,通过预先配置与需要限流的业务相关的查询语句模版和限流值,以精准地对特定业务相关的访问请求进行限流,不妨碍数据库中与其他业务相关的访问请求的正常执行。
在实现时,本申请可以先针对数据库预先配置至少一个限流规则,其中,每个限流规则可以包含预先配置的与预设的限流业务相关的查询语句模版,以及与该查询语句模版对应的限流值。响应于针对该数据库的目标访问请求,可以对该目标访问请求中包含的与目标业务相关的目标查询语句进行模版化处理,得到与该目标查询语句对应的目标查询语句模版。然后,可以确定该目标查询语句模版是否与其维护的至少一个限流规则中包含的查询语句模版匹配;若该目标查询语句模版与该至少一个限流规则中包含的任一查询语句模版匹配,则查询引擎可以根据该至少一个限流规则中包含的与该查询语句模版对应的限流值,对该目标访问请求进行限流处理。
在以上技术方案中,本申请考虑到与某一类业务相关的访问请求中所包含的查询语句往往具有固定的查询语句模版,从而可以根据实际需求预先配置与指定的限流业务相关的查询语句模版及其对应的限流值。基于此,若后续接收到的访问请求中所包含的查询语句的模版与上述预先配置的任一查询语句模版相匹配,则可以对该访问请求进行精准的限流处理,同时不妨碍与其他业务相关的访问请求的正常执行,保证了数据库的稳定运行以及用户的使用体验。
请参阅图1,图1是一示例性实施例提供的一种针对数据库的访问控制系统的系统架构示意图。如图1所示,该系统架构中可以包括计算机设备100和计算机设备200。其中,计算机设备100和计算机设备200可以通过任何可能的方式进行通信。示例性的,计算机设备100和计算机设备200可以通过蓝牙、Wi-Fi或移动网络等无线通信方式进行通信,或者通过数据线等有线通信方式进行通信,等等,本说明书对此不做具体限定。
如图1所示,计算机设备100可以作为办理线上业务的服务端设备,其中搭载有数据库300,或者与数据库300对接,用于向用户提供针对数据库300的各项线上业务。
如图1所示,计算机设备200可以作为办理线上业务的客户端设备,其中可以运行有相应的客户端,该客户端可以向用户提供基于数据库300的各项线上业务。示例性的,线上业务可以包括:执行交易,查询商家的交易记录,分析公司的历年财务状况,查询公司的组织架构,等等,本说明书对此不做具体限定。
如图1所示,用户基于自己当前的业务办理需求,可以通过计算机设备100中运行的客户端,发起针对数据库300的访问请求(request)。其中,该访问请求中可以包含与用户需要办理的业务相关的查询语句。
在一示出的实施方式中,数据库300可以是关系型数据库。相应的,上述针对数据库300的访问请求中包含的查询语句可以是基于结构化查询语言(Structured QueryLanguage,SQL)的查询语句。
在一示出的实施方式中,数据库300可以是图数据库(Graph Database)。相应的,上述针对数据库300的访问请求中包含的查询语句可以是基于图查询语言(Graph QueryLanguage,GQL)的查询语句。
需要说明的是,在各式各样的线上业务中,某一类业务所使用的查询语句往往具有固定的查询语句模版,不同的查询语句之间可能仅有部分参数不同。在一示出的实施方式中,该参数例如可以是查询语句所包含的查询条件中的查询参数,例如当前办理业务的用户id、查询条件中的时间范围、金额范围,等等,本说明书对此不做具体限定。
基于此,若访问数据库的某一类业务流量激增,往往代表着具有与该类业务相关的查询语句模版的查询语句高并发的传入数据库,根据这一特点,本申请提供了根据查询语句模版的数据库限流功能。
首先,本申请可以针对数据库300预先配置与预设的至少一个限流业务相关的至少一个限流规则,每个限流规则中可以包括与预设的限流业务相关的查询语句模版,以及与该查询语句模版对应的限流值。
在一示出的实施方式中,该限流业务可以是用户(例如数据库管理员)指定的需要进行限流处理的业务,例如重要程度较低的业务,也可以是检测到其存在流量激增的问题性业务,还可以是预测到其后续可能存在流量激增的业务(例如零点时刻的电商大促活动),等等,本说明书对此不做具体限定。
在一示出的实施方式中,该限流值可以理解为管理员限定的与该查询语句模版相关的查询语句的可用流量,以约束一些流量激增的可能存在安全隐患的查询语句,同时避免影响其他正常业务。示例性的,该限流值具体可以为每秒查询率(Queries Per Second,QPS),以限制数据库每秒能够处理的与限流业务相关的访问请求的数量,也即限制数据库每秒能够处理的具备该限流业务相关的查询语句模版的查询语句的数量。
进一步地,如上所述,用户可以通过图1所示的计算机设备100中运行的客户端发起针对数据库300的访问请求,例如目标访问请求,该目标访问请求中可以包含与用户需要办理的目标业务相关的目标查询语句。相应的,数据库300可以响应于该目标访问请求,对该目标访问请求进行访问控制。
首先,数据库300可以对该目标访问请求中包含的该目标查询语句进行模版化处理,得到与该目标查询语句对应的目标查询语句模版。
进一步地,数据库300可以确定该目标查询语句模版是否与其维护的至少一个限流规则中包含的查询语句模版匹配。
在一示出的实施方式中,若该目标查询语句模版与与其维护的至少一个限流规则中包含的任一查询语句模版匹配,也就是说,上述目标业务即为预设的限流业务,则数据库300可以根据预先配置的至少一个限流规则中包含的与该查询语句模版对应的限流值,对上述目标访问请求进行限流处理。
如此,本申请考虑到与某一类业务相关的查询语句往往具有固定的模版,通过预先配置与需要限流的业务相关的查询语句模版和限流值,可以精准地对特定业务的访问请求进行限流,不妨碍数据库中其他业务的访问请求的正常执行。
在一示出的实施方式中,计算机设备100可以是具备上述功能的智能可穿戴设备、智能手机、平板电脑、笔记本电脑、台式电脑,等等,本说明书对此不做具体限定。
在一示出的实施方式中,计算机设备200可以是具备上述功能的台式电脑、服务器或者由多台服务器构成的服务器集群,等等,本说明书对此不做具体限定。
应理解,图1所示的系统架构仅做示例性说明,在一些可能的实施方式中,该系统中还可以包括比图1所示更多或者更少的设备,本说明书对此不做具体限定。
请参阅图2,图2是一示例性实施例提供的一种分布式数据库的结构示意图。
如图2所示,该分布式数据库可以是基于多个服务端构建的数据库,每个服务端均可以用于处理用户发起的针对该分布式数据库的访问请求。如图2所示,该多个服务端例如可以包括服务端102-1、服务端102-2……服务端102-N,N为大于1的整数。
如图2所示,该分布式数据库还可以包括与多个服务端分别对接的管理端101,该管理端101可以用于管理该多个服务端。在一示出的实施方式中,该管理端101可以包括用于维护与该分布式数据库对应的元数据的服务端,例如元数据服务端(metaserver)。
如图2所示,分布式数据库的多个服务端中的每个服务端内可以搭载有用于维护预先配置的限流规则的限流模块(module),以及用于处理用户发起的访问请求的查询引擎,该查询引擎中可以包括用于执行具体的物理执行计划的执行器,或者称之为执行引擎(executeEngine)。
在一示出的实施方式中,查询引擎中可以设置有专门用于对访问请求进行限流控制的功能模块,其具体功能可以参考图1对应实施例的描述,此处不再进行赘述。
如图2所示,用户可以在管理端101配置相应的限流规则。在一示出的实施方式中,用户可以通过基于数据控制语言(Data Control Language,DCL)的规则配置语句在管理端101上配置相应的限流规则。
示例性的,用户输入的规则配置语句可以如下所示:
ALTER SYSTEM ADD GQL_TEMPLATE_FLOW_CONTROL 'query' (flow_rule:value);
其中,'query'可以代表用户需要进行限流的查询语句,以该分布式数据库为分布式图数据库为例,该查询语句可以是GQL查询语句,例如具体可以是“match (n where @idin (1,2,3)) return n.@id”。
在一示出的实施方式中,管理端101在接收到用户输入的上述 DCL语句后,可以按照预设的模版规则,自动将其中包含的query查询语句解析为对应的查询语句模版。示例性的,以上述查询语句“match (n where @id in (1,2,3)) return n.@id”为例,与其对应的查询语句模版可以为“MATCH(n where @id in ($1,$2,$3))RETURN n.@id”,查询语句模版对大小写敏感。具体的模版化过程可以参考下述图3对应实施例的描述,此处不再展开详述。
其中,value可以代表为该查询语句模版设置的限流值,例如为100、500或者10000等,本说明书对此不做具体限定。在一示出的实施方式中,value的数据类型可以为int32,如果将value设置为-1,则表示不限流,相应的,数据库可以自动将该查询语句模版的value设置为int32_MAX,相当于无限制流量。
示例性的,以value为500为例,则配置好的该限流规则可以表示:针对查询语句模版“MATCH(n where @id in ($1))RETURN n.@id”,数据库每秒最多可处理500个该模版的查询语句。
需要说明的是,在限流规则配置完成后,无需重启分布式数据库,该限流规则即可生效。
进一步地,如图2所示,管理端101可以将配置好的限流规则发送至分布式数据库中的每个服务端,具体可以发送至每个服务端中的限流模块,以由限流模块来维护限流规则。相应的,每个服务端可以接收管理端101发送的限流规则,并且,还可以将管理端101发送的多个限流规则整理成相应的限流规则列表(list),表中的每一行可以表示一条限流规则,其中包括查询语句模版以及与其对应的限流值。
进一步地,在一示出的实施方式中,数据库还可以自动地为每个查询语句模版分配对应的模版标识,示例性的,该模版标识可以为模版id。
在一示出的实施方式中,本申请还可以对服务端中维护的限流规则进行查询。
示例性的,可以通过输入以下语句来查询限流规则:
ALTER SYSTEM GET GQL_TEMPLATE_FLOW_CONTROL template_options;
针对上述语句的解释可以如下所示:
template_options: /* empty */ | ON [id_list] | ON ’query’;
id_list: id_list , id | ’id’;
如上所述,语句中的template_options可以为空(empty),以查询所有模版的限流规则;template_options也可以包含模版id,以查询与该模版id对应的查询语句模版的限流规则;template_options也可以包含具体的查询语句,以识别与该查询语句对应的查询语句模版。
具体示例可以如下所示:
示例一:根据模版id列出模版1与模版2的限流规则。
ALTER SYSTEM GET GQL_TEMPLATE_FLOW_CONTROL ON [1, 2];
示例二:列出所有模版的限流规则。
ALTER SYSTEM GET GQL_TEMPLATE_FLOW_CONTROL;
示例三:识别查询语句"match (n where @id in (1,2,3)) return n.@id"的模版。
ALTER SYSTEM GET GQL_TEMPLATE_FLOW_CONTROL ON "match (n where @id in(1,2,3)) return n.@id";
在一示出的实施方式中,本申请还可以根据实际需求,例如用户对限流业务的业务需求的变更,对限流模块中维护的各个限流规则进行调整。
示例性的,可以通过输入以下语句来调整限流规则:
ALTER SYSTEM SET GQL_TEMPLATE_FLOW_CONTROL template_options;
具体示例可以如下所示:
示例一:对模版1和模版2添加限流规则,限流值均为100。
ALTER SYSTEM SET GQL_TEMPLATE_FLOW_CONTROL ON [1, 2] (query_count_per_sec:100);
示例二:对模版3添加限流规则,限流值为500。
ALTER SYSTEM SET GQL_TEMPLATE_FLOW_CONTROL ON [3] (query_count_per_sec:500);
示例三:对全部模版添加限流规则,限流值均为12000。
ALTER SYSTEM SET GQL_TEMPLATE_FLOW_CONTROL(query count per sec:12000);
示例四:设置当前数据库不采取限流处理,将语句中的限流值设为-1,所有模版对应的限流值会自动被设为最大值。
ALTER SYSTEM SET GQL_TEMPLATE_FLOW_CONTROL (query_count_per_sec:-1);
在一示出的实施方式中,本申请还可以根据实际需求,删除相应的限流规则。
示例性的,可以通过输入以下语句来删除限流规则:
ALTER SYSTEM DELETE GQL_TEMPLATE_FLOW_CONTROL template_options;
具体示例可以如下所示:
示例一:删除模版1的限流规则。
ALTER SYSTEM DELETE GQL_TEMPLATE_FLOW_CONTROL ON [2];// 删除template+ flow control value;
示例二:删除全部模版的限流规则。
ALTER SYSTEM DELETE GQL_TEMPLATE_FLOW_CONTROL;
如图2所示,分布式数据库的任一服务端中的查询引擎可以接收用户发起的针对该分布式数据库的访问请求,例如目标访问请求,该目标访问请求中可以包含的与用户需要办理的目标业务相关的目标查询语句。相应的,查询引擎可以响应于该目标访问请求,基于上述模版规则,对其中包含的该目标查询语句进行模版化处理,得到与该目标查询语句对应的目标查询语句模版。进一步地,查询引擎可以确定该目标查询语句模版是否与限流模块中维护的至少一个限流规则中包含的查询语句模版匹配。若是,则查询引擎可以根据其维护的至少一个限流规则中包含的与该查询语句模版对应的限流值,对上述目标访问请求进行限流处理。若否,则查询引擎可以生成与该目标访问请求中包含的目标查询语句对应的物理执行计划,并将该物理执行计划下发至图2所示的执行器中执行。
需要说明的是,查询引擎在接收到上述目标访问请求后,可以先确定限流模块中是否存在已配置好的限流规则。若查询引擎确定限流模块中存在至少一个限流规则,则可以执行上述针对目标访问请求的访问控制操作,若查询引擎确定限流模块中不存在任何限流规则,则表示此时数据库不需要进行限流,可以直接执行该目标访问请求。
在一示出的实施方式中,图2所示的分布式数据库可以包括分布式图数据库。应理解,图2所示的分布式数据库结构仅做示例性说明,在一些可能的实施方式中,上述限流模块也可以设置在查询引擎内部,以及在一些可能的实施方式中,该分布式数据库中还可以包括比图2所示更多或者更少的部件,例如还可以包括存储引擎等,本说明书对此不做具体限定。
请参阅图3,图3是一示例性实施例提供的一种针对数据库的访问控制方法的流程示意图。该方法可以应用于图1或图2所示的系统架构,具体可以应用于数据库中的查询引擎。如图3所示,该方法具体可以包括如下步骤S301-步骤S303。
步骤S301,响应于针对数据库的目标访问请求,对所述目标访问请求中包含的与目标业务相关的目标查询语句进行模版化处理,得到与所述目标查询语句对应的目标查询语句模版;针对所述数据库预先配置有至少一个限流规则,其中,每个限流规则包含与预设的限流业务相关的查询语句模版,以及与该查询语句模版对应的限流值。
在一示出的实施方式中,如上所述,数据库的限流模块中维护了与该数据库对应的至少一个限流规则,其中,每个限流规则包含预先配置的与预设的限流业务相关的查询语句模版,以及与该查询语句模版对应的限流值。
在一示出的实施方式中,数据库的查询引擎可以响应于用户发起的针对该数据库的目标访问请求,对该目标查询语句进行模版化处理,得到与所述目标查询语句对应的目标查询语句模版。需要说明的是,查询引擎可以按照上述配置限流规则时所采用的预设的模版规则,对该目标查询语句进行模版化处理,以保证后续限流处理的精确性。
在一示出的实施方式中,在对该目标查询语句进行模版化处理的过程中,查询引擎可以先识别该目标查询语句中的可替换参数,并将该可替换参数替换为模版中指定的预设值。示例性的,该可替换参数可以为目标查询语句的查询条件中包含的查询参数。相应的,查询引擎可以先解析该目标查询语句,确定该目标查询语句中包含的查询条件,并将该查询条件中包含的查询参数统一替换为模版中指定的预设值。示例性的,该查询参数例如可以包括:当前办理业务的用户id、查询条件中的时间范围、金额范围,等等,本说明书对此不做具体限定。示例性的,该预设值例如可以为$i,i为大于或者等于1的整数,或者,该预设值也可以为&j,j为大于或者等于1的整数,等等,本说明书对此不做具体限定。
进一步地,查询引擎还可以将目标查询语句中的干扰项统一进行标准化处理。具体地,可以将目标查询语句中包含的至少一个预设元素转换成模版中指定的预设格式。
在一示出的实施方式中,上述至少一个预设元素包括以下示出的至少一个:目标查询语句中包含的空格符、回车符、关键字的大小写格式,等等,本说明书对此不做具体限定。
相应的,将目标查询语句中包含的至少一个预设元素转换成模版中指定的预设格式,具体可以包括以下示出步骤中的至少一个:
将目标查询语句中的每处空白区域内包含的空格符的数量统一为预设数量,该空白区域可以是由空格符构成的空白区域;删除目标查询语句中包含的回车符;将目标查询语句中包含的小写格式的关键字转换成大写格式的关键字,等等,本说明书对此不做具体限定。
示例性的,上述空格符的预设数量可以为1个,或者2个,等等,本说明书对此不做具体限定。
示例性的,目标访问请求中包含的目标查询语句可以如下所示:
match (n1:node1{@id:8000013400})-[e:edge_n1_n2]->(n2:node2{@id:800013500}) return n2.@id, n2.p_long;
通过将该目标查询语句中的关键字match和关键字return转换为大写格式,并将其中的查询参数“8000013400”和“800013500”分别替换为“$1”和“$2”后,得到的目标查询语句模版可以如下所示:
MATCH (n1:node1{@id:$1})-[e:edge_n1_n2]->(n2:node2{@id:$2})RETURNn2.@id, n2.p_long;
示例性的,目标访问请求中包含的目标查询语句可以如下所示:
match (n1:node1{@id:8000013400})-[e:edge_n1_n2]->(n2:node2{@id:800013500});
return n2.@id, n2.p_long;
通过将该目标查询语句中的关键字match和关键字return转换为大写格式,并将其中的查询参数“8000013400”和“800013500”分别替换为“&1”和“&2”,以及删除回车符后,得到的目标查询语句模版可以如下所示:
MATCH (n1:node1{@id:&1})-[e:edge_n1_n2]->(n2:node2{@id:&2}) RETURNn2.@id, n2.p_long;
在一些可能的实施方式中,上述回车符也可以不删除,又或者查询参数也可以替换为其他任何可能的预设值,例如#1和#2等,本说明书对此不做具体限定。
步骤S302,确定所述目标查询语句模版是否与所述至少一个限流规则中包含的查询语句模版匹配。
进一步地,在得到与目标查询语句对应的目标查询语句模版后,查询引擎可以确定该目标查询语句模版是否与其维护的至少一个限流规则中包含的查询语句模版匹配。
在一示出的实施方式中,所谓确定目标查询语句模版是否与维护的至少一个限流规则中包含的查询语句模版匹配,可以包括:确定目标查询语句模版是否与维护的至少一个限流规则中包含的查询语句模版相同。
在一示出的实施方式中,本申请还可以根据预设的模版标识分配规则,为至少一个限流规则中包含的查询语句模版分配对应的模版标识。示例性的,该模版标识可以为上述图2对应实施例所述的模版id。
相应的,在确定目标查询语句模版是否与维护的至少一个限流规则中包含的查询语句模版匹配时,可以包括:根据上述预设的模版标识分配规则,确定与该目标查询语句模版对应的目标模版标识,并进一步确定该目标模版标识是否与维护的至少一个限流规则中包含的查询语句模版的模版标识匹配。
在一示出的实施方式中,所谓确定该目标模版标识是否与维护的至少一个限流规则中包含的查询语句模版的模版标识匹配,可以包括:确定该目标模版标识是否与维护的至少一个限流规则中包含的查询语句模版的模版标识相同。
步骤S303,若所述目标查询语句模版与所述至少一个限流规则中包含的任一查询语句模版匹配,则根据所述至少一个限流规则中包含的与该查询语句模版对应的限流值,对所述目标访问请求进行限流处理。
在一示出的实施方式中,若目标查询语句模版与查询引擎维护的至少一个限流规则中包含的任一查询语句模版匹配,则可以根据该至少一个限流规则中包含的与该查询语句模版对应的限流值,对该目标访问请求进行限流处理。
示例性的,查询引擎中维护了预先配置的4个限流规则,可以包括:查询语句模版A,以及与其对应的限流值a;查询语句模版B,以及与其对应的限流值b;查询语句模版C,以及与其对应的限流值c;查询语句模版D,以及与其对应的限流值d。
若查询引擎确定目标查询语句模版与上述4个限流规则中包含的查询语句模版A匹配,则可以根据该查询语句模版A的限流值a对目标访问请求进行限流处理,或者说对该目标查询语句进行限流处理。示例性的,所谓根据该查询语句模版A的限流值a对目标访问请求进行限流处理,可以包括:若当前数据库中与该目标业务相关的访问请求的QPS大于该限流值a,则可以直接拒绝执行该目标访问请求或者令其排队等候,若当前数据库中与该目标业务相关的访问请求的QPS小于或等于该限流值a,则可以直接执行该目标访问请求。
在一示出的实施方式中,在根据预设的模版标识分配规则为每个查询语句模版分配模版标识的前提下,若确定目标查询语句模版的目标模版标识与至少一个限流规则中包含的任一查询语句模版的模版标识匹配,则可以在该至少一个限流规则中查询与该查询语句模版对应的限流值,并根据该限流值对目标访问请求进行限流处理。
示例性的,根据上述预设的模版标识分配规则,查询语句模版A的模版标识可以为001,查询语句模版B的模版标识可以为002,查询语句模版C的模版标识可以为003,查询语句模版D的模版标识可以为004。同样根据上述预设的模版标识分配规则,若确定该目标查询语句模版的目标模版标识为001,即目标模版标识与上述查询语句模版A的模版标识匹配,则可以根据查询语句模版A对应的限流值a对目标访问请求进行限流处理。
请参阅图4,图4是一示例性实施例提供的另一种针对数据库的访问控制方法的流程示意图。该方法可以应用于图1或图2所示的系统架构,具体可以应用于数据库中的查询引擎。如图4所示,该方法具体可以包括如下步骤S401-步骤S406。
步骤S401,接收针对数据库的目标访问请求。
步骤S402,对目标访问请求中包含的与目标业务相关的目标查询语句进行模版化处理,得到与所述目标查询语句对应的目标查询语句模版。
在一示出的实施方式中,步骤S402具体可以参考上述图3对应实施例的步骤S301中的描述,此处不再进行赘述。
步骤S403,确定所述目标查询语句模版是否与预先配置的至少一个限流规则中包含的查询语句模版匹配;若是,则执行步骤S404,若否,则执行步骤S405。
在一示出的实施方式中,步骤S403具体可以参考上述图3对应实施例的步骤S302中的描述,此处不再进行赘述。
步骤S404,确定数据库当前与所述目标业务相关的流量是否大于该至少一个限流规则中包含的与该查询语句模版对应的限流值;若是,则执行步骤S406,若否,则执行步骤S405。
在一示出的实施方式中,若目标查询语句模版与维护的至少一个限流规则中包含的任一查询语句模版匹配,则可以从该至少一个限流规则中查询出与该查询语句模版对应的限流值,并进一步确定数据库当前与该目标业务相关的流量是否大于该限流值。
在一示出的实施方式中,数据库当前与该目标业务相关的流量可以包括:数据库在预设时间内接收到与该目标业务相关的访问请求的数量,例如数据库每秒接收到与该目标业务相关的访问请求的数量,即与该目标业务相关的访问请求的QPS,本说明书对此不做具体限定。
步骤S405,执行所述目标访问请求。
在一示出的实施方式中,若目标查询语句模版与至少一个限流规则中包含的任一查询语句模版均不匹配,则可以直接执行该目标访问请求,即不需要对该目标业务相关的访问请求进行限流。
在一示出的实施方式中,若目标查询语句模版与至少一个限流规则中包含的任一查询语句模版匹配,但是数据库当前与该目标业务相关的流量小于该至少一个限流规则中包含的与该查询语句模版对应的限流值,则可以直接执行该目标访问请求,即不需要对该目标业务相关的访问请求进行限流。
在一示出的实施方式中,执行该目标访问请求可以包括:查询引擎解析该目标访问请求中包含的目标查询语句,生成相应的逻辑执行计划,对逻辑执行计划进行优化,得到对应的物理执行计划,并将该物理执行计划发送至执行引擎,以使该执行引擎执行该物理执行计划,从而得到最终的执行结果并返回至用户,等等,本说明书对此不做具体限定。
步骤S406,不执行所述目标访问请求,或者,将所述目标访问请求添加至等待队列中,以待执行。
在一示出的实施方式中,若数据库当前与该目标业务相关的流量大于该至少一个限流规则中包含的与该查询语句模版对应的限流值,则可以不执行该目标访问请求,即直接拒绝该目标访问请求,以保证数据库的稳定运行。
或者,在一示出的实施方式中,若数据库当前与该目标业务相关的流量大于该至少一个限流规则中包含的与该查询语句模版对应的限流值,也可以将该目标访问请求添加至等待队列中,以待执行。其中,该等待队列中可以包括多个待执行的访问请求,这多个待执行的访问请求可以根据发起的时间先后顺序在等待队列中按序排列。
进一步地,响应于该等待队列中位于目标访问请求之前的其他访问请求已执行完成,且数据库当前与目标业务相关的流量小于上述限流值,则可以直接执行该目标访问请求。
在一示出的实施方式中,本申请可以通过预设的限流算法来确定在需要对目标访问请求进行限流时,具体是直接不执行该目标访问请求,还是将其添加至等待队列中以待执行。示例性的,该预设的限流算法可以是令牌桶算法或者其他任何可能的算法,本说明书对此不做具体限定。
综上所述,本申请考虑到与某一类业务相关的访问请求中所包含的查询语句往往具有固定的查询语句模版,从而可以根据实际需求预先配置与预设的限流业务相关的查询语句模版及其对应的限流值。基于此,若后续接收到的访问请求中所包含的查询语句的模版与上述预先配置的任一查询语句模版相匹配,则可以对该访问请求进行精准的限流处理,同时不妨碍与其他业务相关的访问请求的正常执行,保证了数据库的稳定运行以及用户的使用体验。
与上述方法流程实现对应,本说明书的实施例还提供了一种针对数据库的访问控制装置。请参阅图5,图5是一示例性实施例提供的一种针对数据库的访问控制装置的结构示意图。该装置50可以应用于图1所示系统架构中的数据库300,其中,针对该数据库300预先配置有至少一个限流规则,其中,每个限流规则包含预先配置的与预设的限流业务相关的查询语句模版,以及与该查询语句模版对应的限流值。如图5所示,该装置50包括:
模版化处理单元501,用于响应于针对所述数据库的目标访问请求,对所述目标访问请求中包含的与目标业务相关的目标查询语句进行模版化处理,得到与所述目标查询语句对应的目标查询语句模版;
模版匹配单元502,用于确定所述目标查询语句模版是否与所述至少一个限流规则中包含的查询语句模版匹配;
限流处理单元503,用于若所述目标查询语句模版与所述至少一个限流规则中包含的任一查询语句模版匹配,则根据所述至少一个限流规则中包含的与该查询语句模版对应的限流值,对所述目标访问请求进行限流处理。
在一示出的实施方式中,所述模版化处理单元501,具体用于:
解析所述目标访问请求中包含的与目标业务相关的目标查询语句;
确定所述目标查询语句中包含的查询条件,并将所述查询条件中包含的查询参数统一替换为模版中指定的预设值;以及,
将所述目标查询语句中包含的至少一个预设元素转换成模版中指定的预设格式。
在一示出的实施方式中,所述至少一个预设元素包括以下示出的至少一个:所述目标查询语句中包含的空格符、回车符、关键字的大小写格式;
所述模版化处理单元501,具体用于:
将所述目标查询语句中每处空白区域内包含的空格符的数量统一为预设数量;和/或,
删除所述目标查询语句中包含的回车符;和/或,
将所述目标查询语句中包含的小写格式的关键字转换成大写格式的关键字。
在一示出的实施方式中,所述装置50还包括模版标识分配单元504,用于:
为所述至少一个限流规则中包含的查询语句模版分配对应的模版标识;
根据所述模版标识查询与其对应的查询语句模版的限流规则。
在一示出的实施方式中,所述限流处理单元503,具体用于:
确定所述数据库在预设的时间范围内接收到的与所述目标业务相关的访问请求的数量,是否大于所述至少一个限流规则中包含的与该查询语句模版对应的限流值;
若是,则通过预设的限流算法,确定不执行所述目标访问请求,或者,将所述目标访问请求添加至等待队列中,以待执行;
若否,则执行所述目标访问请求。
在一示出的实施方式中,所述预设的限流算法包括令牌桶算法。
在一示出的实施方式中,所述限流处理单元503,具体用于:
将所述目标访问请求添加至等待队列中;其中,所述等待队列中包括多个待执行的访问请求;
响应于所述等待队列中位于所述目标访问请求之前的其他访问请求已执行完成,且所述数据库在预设的时间范围内接收到的与所述目标业务相关的访问请求的数量小于所述限流值,则执行所述目标访问请求。
在一示出的实施方式中,所述装置50还包括执行单元505,用于:
若所述目标查询语句模版与所述至少一个限流规则中包含的任一查询语句模版均不匹配,则执行所述目标访问请求。
在一示出的实施方式中,所述装置50还包括限流规则调整单元506,用于:
响应于用户对任一限流业务的业务需求的变更,更新所述至少一个限流规则中与该限流业务相关的限流规则中的限流值,或者,删除所述至少一个限流规则中与该限流业务相关的限流规则。
在一示出的实施方式中,所述数据库为关系型数据库,所述查询语句为基于结构化查询语言SQL的查询语句。
在一示出的实施方式中,所述数据库为图数据库,所述查询语句为基于图查询语言GQL的查询语句。
在一示出的实施方式中,所述限流规则为根据接收到的基于数据控制语言DCL的规则配置语句,所配置的限流规则。
上述装置50中各个单元的功能和作用的实现过程具体详见上述图1-图4对应实施例的描述,在此不再进行赘述。应理解,上述装置50可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的处理器(CPU)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了CPU以及存储器之外,上述装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部单元或模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的装置、单元、模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备、车载计算机或者这些设备中的任意几种设备的组合。
与上述方法实施例相对应,本说明书的实施例还提供了一种计算机设备。请参阅图6,图6是一示例性实施例提供的一种计算机设备的结构示意图。该计算机设备可以为图1所示系统架构中的计算机设备100,其中搭载有数据库300,针对该数据库300预先配置有至少一个限流规则,其中,每个限流规则包含预先配置的与预设的限流业务相关的查询语句模版,以及与该查询语句模版对应的限流值。如图6所示,该计算机设备包括处理器1001和存储器1002,进一步还可以包括输入设备1004(例如键盘等)和输出设备1005(例如显示器等)。处理器1001、存储器1002、输入设备1004和输出设备1005之间可以通过总线或其他方式连接。如图6所示,存储器1002包括计算机可读存储介质1003,该计算机可读存储介质1003存储有能够由处理器1001运行的计算机程序。处理器1001可以是CPU,微处理器,或用于控制以上方法实施例执行的集成电路。处理器1001在运行存储的计算机程序时,可以执行本说明书实施例中针对数据库的访问控制方法的各个步骤,包括:响应于针对所述数据库的目标访问请求,对所述目标访问请求中包含的与目标业务相关的目标查询语句进行模版化处理,得到与所述目标查询语句对应的目标查询语句模版;确定所述目标查询语句模版是否与所述至少一个限流规则中包含的查询语句模版匹配;若所述目标查询语句模版与所述至少一个限流规则中包含的任一查询语句模版匹配,则根据所述至少一个限流规则中包含的与该查询语句模版对应的限流值,对所述目标访问请求进行限流处理,等等。
对上述针对数据库的访问控制方法的各个步骤的详细描述请参见之前的内容,此处不再进行赘述。
与上述方法实施例相对应,本说明书的实施例还提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中针对数据库的访问控制方法的各个步骤。具体请参见上述图1-图4对应实施例的描述,此处不再进行赘述。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
在一个典型的配置中,终端设备包括一个或多个CPU、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书的实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书的实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (20)
1.一种针对数据库的访问控制方法,其特征在于,针对所述数据库预先配置有至少一个限流规则,其中,每个限流规则包含与预设的限流业务相关的查询语句模版,以及与该查询语句模版对应的限流值;所述方法包括:
响应于针对所述数据库的目标访问请求,对所述目标访问请求中包含的与目标业务相关的目标查询语句进行模版化处理,得到与所述目标查询语句对应的目标查询语句模版;
确定所述目标查询语句模版是否与所述至少一个限流规则中包含的查询语句模版匹配;
若所述目标查询语句模版与所述至少一个限流规则中包含的任一查询语句模版匹配,则根据所述至少一个限流规则中包含的与该查询语句模版对应的限流值,对所述目标访问请求进行限流处理。
2.根据权利要求1所述的方法,其特征在于,所述对所述目标访问请求中包含的与目标业务相关的目标查询语句进行模版化处理,包括:
解析所述目标访问请求中包含的与目标业务相关的目标查询语句;
确定所述目标查询语句中包含的查询条件,并将所述查询条件中包含的查询参数统一替换为模版中指定的预设值;以及,
将所述目标查询语句中包含的至少一个预设元素转换成模版中指定的预设格式。
3.根据权利要求2所述的方法,其特征在于,所述至少一个预设元素包括以下示出的至少一个:所述目标查询语句中包含的空格符、回车符、关键字的大小写格式;
所述将所述目标查询语句中包含的至少一个预设元素转换成模版中指定的预设格式,包括:
将所述目标查询语句中每处空白区域内包含的空格符的数量统一为预设数量;和/或,
删除所述目标查询语句中包含的回车符;和/或,
将所述目标查询语句中包含的小写格式的关键字转换成大写格式的关键字。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
为所述至少一个限流规则中包含的查询语句模版分配对应的模版标识;
根据所述模版标识查询与其对应的查询语句模版的限流规则。
5.根据权利要求1所述的方法,其特征在于,所述根据所述至少一个限流规则中包含的与该查询语句模版对应的限流值,对所述目标访问请求进行限流处理,包括:
确定所述数据库在预设的时间范围内接收到的与所述目标业务相关的访问请求的数量,是否大于所述至少一个限流规则中包含的与该查询语句模版对应的限流值;
若是,则通过预设的限流算法,确定不执行所述目标访问请求,或者,将所述目标访问请求添加至等待队列中,以待执行;
若否,则执行所述目标访问请求。
6.根据权利要求5所述的方法,其特征在于,所述预设的限流算法包括令牌桶算法。
7.根据权利要求5所述的方法,其特征在于,所述将所述目标访问请求添加至等待队列中,以待执行,包括:
将所述目标访问请求添加至等待队列中;其中,所述等待队列中包括多个待执行的访问请求;
响应于所述等待队列中位于所述目标访问请求之前的其他访问请求已执行完成,且所述数据库在预设的时间范围内接收到的与所述目标业务相关的访问请求的数量小于所述限流值,则执行所述目标访问请求。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述目标查询语句模版与所述至少一个限流规则中包含的任一查询语句模版均不匹配,则执行所述目标访问请求。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于用户对任一限流业务的业务需求的变更,更新所述至少一个限流规则中与该限流业务相关的限流规则中的限流值,或者,删除所述至少一个限流规则中与该限流业务相关的限流规则。
10.根据权利要求1所述的方法,其特征在于,所述数据库为关系型数据库,所述查询语句为基于结构化查询语言SQL的查询语句。
11.根据权利要求1所述的方法,其特征在于,所述数据库为图数据库,所述查询语句为基于图查询语言GQL的查询语句。
12.根据权利要求1-11任意一项所述的方法,其特征在于,所述限流规则为根据接收到的基于数据控制语言DCL的规则配置语句,所配置的限流规则。
13.一种分布式数据库,其特征在于,所述分布式数据库为基于多个服务端构建的数据库;所述多个服务端中的任一服务端中维护了与所述数据库对应的至少一个限流规则,其中,每个限流规则包含预先配置的与预设的限流业务相关的查询语句模版,以及与该查询语句模版对应的限流值;所述多个服务端中的任一服务端:
响应于针对所述数据库的目标访问请求,对所述目标访问请求中包含的与目标业务相关的目标查询语句进行模版化处理,得到与所述目标查询语句对应的目标查询语句模版;
确定所述目标查询语句模版是否与所述至少一个限流规则中包含的查询语句模版匹配;
若所述目标查询语句模版与所述至少一个限流规则中包含的任一查询语句模版匹配,则根据所述至少一个限流规则中包含的与该查询语句模版对应的限流值,对所述目标访问请求进行限流处理。
14.根据权利要求13所述的分布式数据库,其特征在于,所述分布式数据库包括用于管理所述多个服务端的管理端;所述管理端:
接收与预设的限流业务相关的规则配置语句;
解析所述规则配置语句,获得所述规则配置语句中包含的与该限流业务相关的查询语句模版和限流值;
基于所述查询语句模版和所述限流值配置相应的限流规则,并将所述限流规则发送至所述多个服务端中的任一服务端。
15.根据权利要求14所述的分布式数据库,其特征在于,所述规则配置语句为基于数据控制语言DCL的规则配置语句。
16.根据权利要求14所述的分布式数据库,其特征在于,所述管理端包括用于维护与所述分布式数据库对应的元数据的服务端。
17.根据权利要求13-16任意一项所述的分布式数据库,其特征在于,所述分布式数据库包括分布式图数据库。
18.一种针对数据库的访问控制装置,其特征在于,针对所述数据库预先配置有至少一个限流规则,其中,每个限流规则包含与预设的限流业务相关的查询语句模版,以及与该查询语句模版对应的限流值;所述装置包括:
模版化处理单元,用于响应于针对所述数据库的目标访问请求,对所述目标访问请求中包含的与目标业务相关的目标查询语句进行模版化处理,得到与所述目标查询语句对应的目标查询语句模版;
模版匹配单元,用于确定所述目标查询语句模版是否与所述至少一个限流规则中包含的查询语句模版匹配;
限流处理单元,用于若所述目标查询语句模版与所述至少一个限流规则中包含的任一查询语句模版匹配,则根据所述至少一个限流规则中包含的与该查询语句模版对应的限流值,对所述目标访问请求进行限流处理。
19.一种计算机设备,其特征在于,包括:存储器和处理器;所述存储器上存储有可由所述处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行如权利要求1至12任意一项所述的方法。
20.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至12任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410039720.2A CN117556452A (zh) | 2024-01-10 | 2024-01-10 | 一种针对数据库的访问控制方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410039720.2A CN117556452A (zh) | 2024-01-10 | 2024-01-10 | 一种针对数据库的访问控制方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117556452A true CN117556452A (zh) | 2024-02-13 |
Family
ID=89813237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410039720.2A Pending CN117556452A (zh) | 2024-01-10 | 2024-01-10 | 一种针对数据库的访问控制方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117556452A (zh) |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106156064A (zh) * | 2015-03-30 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 对数据库进行流量控制的方法及装置 |
CN109446252A (zh) * | 2018-09-05 | 2019-03-08 | 中国电力科学研究院有限公司 | 一种用于电网调控的统一访问方法及系统 |
CN111767572A (zh) * | 2020-06-28 | 2020-10-13 | 北京天融信网络安全技术有限公司 | 一种安全访问数据库的方法及装置 |
CN112052256A (zh) * | 2020-09-02 | 2020-12-08 | 平安资产管理有限责任公司 | 多版本请求返回方法、装置、计算机设备及可读存储介质 |
CN112600801A (zh) * | 2020-12-03 | 2021-04-02 | 深圳奥哲网络科技有限公司 | 一种流量访问控制方法、设备及存储介质 |
CN112613302A (zh) * | 2020-12-31 | 2021-04-06 | 天津南大通用数据技术股份有限公司 | 基于数据库执行select语句的子句的动态可信判定方法 |
CN113419856A (zh) * | 2021-06-23 | 2021-09-21 | 平安银行股份有限公司 | 智能限流方法、装置、电子设备及存储介质 |
CN114090610A (zh) * | 2021-11-11 | 2022-02-25 | 上海哔哩哔哩科技有限公司 | 数据库访问方法及装置 |
WO2022042288A1 (zh) * | 2020-08-31 | 2022-03-03 | 阿里巴巴集团控股有限公司 | 一种数据查询方法和装置 |
CN116226905A (zh) * | 2022-12-22 | 2023-06-06 | 度小满科技(北京)有限公司 | 分布式数据库限流方法、限流装置、系统及电子设备 |
CN116489103A (zh) * | 2023-04-25 | 2023-07-25 | 中国工商银行股份有限公司 | 业务限流方法、装置及业务处理系统 |
CN116886626A (zh) * | 2023-06-08 | 2023-10-13 | 中国平安财产保险股份有限公司 | 一种业务数据限流方法、装置、计算机设备及存储介质 |
CN116955399A (zh) * | 2023-07-26 | 2023-10-27 | 四川新网银行股份有限公司 | 基于Calcite的统一SQL查询方法、系统及介质 |
CN116991869A (zh) * | 2023-07-24 | 2023-11-03 | 北京泰策科技有限公司 | 一种基于nlp语言模型自动生成数据库查询语句的方法 |
CN117294652A (zh) * | 2022-06-16 | 2023-12-26 | 腾讯科技(深圳)有限公司 | 流量控制方法、服务器、电子设备及计算机可读存储介质 |
-
2024
- 2024-01-10 CN CN202410039720.2A patent/CN117556452A/zh active Pending
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106156064A (zh) * | 2015-03-30 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 对数据库进行流量控制的方法及装置 |
CN109446252A (zh) * | 2018-09-05 | 2019-03-08 | 中国电力科学研究院有限公司 | 一种用于电网调控的统一访问方法及系统 |
CN111767572A (zh) * | 2020-06-28 | 2020-10-13 | 北京天融信网络安全技术有限公司 | 一种安全访问数据库的方法及装置 |
WO2022042288A1 (zh) * | 2020-08-31 | 2022-03-03 | 阿里巴巴集团控股有限公司 | 一种数据查询方法和装置 |
CN112052256A (zh) * | 2020-09-02 | 2020-12-08 | 平安资产管理有限责任公司 | 多版本请求返回方法、装置、计算机设备及可读存储介质 |
CN112600801A (zh) * | 2020-12-03 | 2021-04-02 | 深圳奥哲网络科技有限公司 | 一种流量访问控制方法、设备及存储介质 |
CN112613302A (zh) * | 2020-12-31 | 2021-04-06 | 天津南大通用数据技术股份有限公司 | 基于数据库执行select语句的子句的动态可信判定方法 |
CN113419856A (zh) * | 2021-06-23 | 2021-09-21 | 平安银行股份有限公司 | 智能限流方法、装置、电子设备及存储介质 |
CN114090610A (zh) * | 2021-11-11 | 2022-02-25 | 上海哔哩哔哩科技有限公司 | 数据库访问方法及装置 |
CN117294652A (zh) * | 2022-06-16 | 2023-12-26 | 腾讯科技(深圳)有限公司 | 流量控制方法、服务器、电子设备及计算机可读存储介质 |
CN116226905A (zh) * | 2022-12-22 | 2023-06-06 | 度小满科技(北京)有限公司 | 分布式数据库限流方法、限流装置、系统及电子设备 |
CN116489103A (zh) * | 2023-04-25 | 2023-07-25 | 中国工商银行股份有限公司 | 业务限流方法、装置及业务处理系统 |
CN116886626A (zh) * | 2023-06-08 | 2023-10-13 | 中国平安财产保险股份有限公司 | 一种业务数据限流方法、装置、计算机设备及存储介质 |
CN116991869A (zh) * | 2023-07-24 | 2023-11-03 | 北京泰策科技有限公司 | 一种基于nlp语言模型自动生成数据库查询语句的方法 |
CN116955399A (zh) * | 2023-07-26 | 2023-10-27 | 四川新网银行股份有限公司 | 基于Calcite的统一SQL查询方法、系统及介质 |
Non-Patent Citations (3)
Title |
---|
DONGSHENG XU等: "A Flow Rationing Strategy over Multiple Flow Classes on Restricted Paths", 2009 INTERNATIONAL CONFERENCE ON MANAGEMENT AND SERVICE SCIENCE, 30 October 2009 (2009-10-30) * |
刘喜平等: "基于自然语言的数据库查询生成研究综述", 软件学报, vol. 33, no. 11, 6 November 2022 (2022-11-06) * |
戴声;王波;: "基于图数据库的大规模配置管理数据库关联查询", 计算机与现代化, vol. 2017, no. 01, 16 May 2017 (2017-05-16) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10216799B2 (en) | Federated database system | |
US7716193B2 (en) | Ensuring timely servicing of desired transactions in a database server | |
JPH0628293A (ja) | サービス・アクセス・ポイントに接続を分散する通信制御システム | |
CN107943854B (zh) | 征信业务查询方法、装置及计算机可读存储介质 | |
US11615212B2 (en) | Systems and methods for managing a data request interface | |
CN110020846B (zh) | 一种转账业务处理方法及系统 | |
CN112445857A (zh) | 一种基于数据库的资源配额管理方法和装置 | |
US11546307B2 (en) | Method to implement multi-tenant/shared Redis cluster using envoy | |
US20140095644A1 (en) | Processing of write requests in application server clusters | |
EP3401862A1 (en) | Data storage and service processing method and device | |
US11863675B2 (en) | Data flow control in distributed computing systems | |
CN114490826A (zh) | 请求响应方法、数据存储方法、装置、服务器及存储介质 | |
US20230342494A1 (en) | Data anonymization method and apparatus, and storage system | |
CN114253456A (zh) | 一种缓存负载均衡方法和装置 | |
CN112286930A (zh) | redis业务方资源共享的方法、装置、存储介质及电子设备 | |
CN117556452A (zh) | 一种针对数据库的访问控制方法及相关设备 | |
CN116489103A (zh) | 业务限流方法、装置及业务处理系统 | |
WO2023279801A9 (zh) | 时序数据库的分区调整方法、装置、设备及可读存储介质 | |
KR101810180B1 (ko) | 사용자 장치 기반의 빅데이터 분산 처리 방법 및 장치 | |
US20210382644A1 (en) | Method and device for dividing storage devices into device groups | |
CN108718285B (zh) | 云计算集群的流量控制方法、装置及服务器 | |
US20230195799A1 (en) | Systems and methods of programmatic control of scaling read requests to a database system | |
CN116991882B (zh) | 基于业务优先级的查询优化方法、装置和电子设备 | |
US11947822B2 (en) | Maintaining a record data structure using page metadata of a bookkeeping page | |
CN116540934A (zh) | 一种数据存储方法及装置 |
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 |