CN106156064A - 对数据库进行流量控制的方法及装置 - Google Patents

对数据库进行流量控制的方法及装置 Download PDF

Info

Publication number
CN106156064A
CN106156064A CN201510144505.XA CN201510144505A CN106156064A CN 106156064 A CN106156064 A CN 106156064A CN 201510144505 A CN201510144505 A CN 201510144505A CN 106156064 A CN106156064 A CN 106156064A
Authority
CN
China
Prior art keywords
access request
data access
regularization term
user
regular collection
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.)
Granted
Application number
CN201510144505.XA
Other languages
English (en)
Other versions
CN106156064B (zh
Inventor
黄欢欢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201510144505.XA priority Critical patent/CN106156064B/zh
Publication of CN106156064A publication Critical patent/CN106156064A/zh
Application granted granted Critical
Publication of CN106156064B publication Critical patent/CN106156064B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提出一种对数据库进行流量控制的方法及装置。其中,该方法包括:接收来自客户端的数据访问请求,为数据访问请求加载对应的规则集合,其中,规则集合中包括至少一个规则项;以及根据规则集合判断是否执行对应的数据访问请求,若是,则执行对应的数据访问请求,并向客户端返回执行结果,若否,则向客户端返回拒绝响应。本申请实施例的对数据库进行流量控制的方法及装置,在数据库内部实现了对数据库的流量控制,缓解了数据库的访问压力,避免了数据库崩溃情况的发生。

Description

对数据库进行流量控制的方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种对数据库进行流量控制的方法及装置。
背景技术
随着计算机网络的发展,使用网络的用户越来越多,由于数据库(Database,DB)中存储了很多用户所需的信息,因此,数据库需要处理的用户访问越来越多,数据库的访问压力越来越大。
当存在高并发的访问请求时,大量的SQL(结构化查询语言,Structured Query Language)语句频繁地访问数据库,针对每条SQL,数据库需要处理的数据较多,由于数据库本身的处理能力有限,数据库响应用户访问请求地速度变慢,甚至数据库容易出现崩溃的现象。
目前,当存在高并发的访问请求时,为了保证数据库可以正常工作,现有的通常做法是杀掉(kill)一些访问数据库的访问请求。然而,由于此时用户的访问请求过多,杀掉一些访问请求,又有新的访问请求访问数据库,上述反复kill用户的访问请求的方式是一种基于上层应用程序的限流方式,该方式所需的处理时间长,且反复杀掉(kill)访问请求不能缓解数据库的访问压力,数据库仍然容易出现崩溃的现象。
发明内容
本申请旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本申请的第一个目的在于提出一种对数据库进行流量控制的方法,该方法从数据库内部实现了对数据库的流量控制,缓解了数据库的访问压力,避免了数据库崩溃情况的发生。
本申请的第二个目的在于提出一种对数据库进行流量控制的装置。
为达上述目的,本申请第一方面实施例提出了一种对数据库进行流量控制的方法,包括:接收来自客户端的数据访问请求,为所述数据访问请求加载对应的规则集合,其中,所述规则集合中包括至少一个规则项;以及根据规则集合判断是否执行对应的数据访问请求,若是,则执行对应的数据访问请求,并向客户端返回执行结果,若否,则向所述客户端返回拒绝响应。
本申请实施例的对数据库进行流量控制的方法,接收来自客户端的数据访问请求后,首先为数据访问请求加载对应的规则集合,然后根据规则集合判断是否执行对应的数据访问请求,若是,则执行对应的数据访问请求,并向客户端返回执行结果,若否,则向客户端返回拒绝响应。由此可见,相对于基于上层应用程序的限流方式,该实施例在数据库内部设置可以控制数据访问请求的规则项,对应的规则项可对用户的数据访问请求进行精细地控制,并根据数据访问请求是否符合对应规则项的执行条件来执行或者拒绝对应的数据访问请求,从而实现了对数据库的流量控制,缓解了数据库的访问压力,避免了数据库崩溃情况的发生。
为达上述目的,本申请第二方面实施例提出了一种对数据库进行流量控制的装置,包括:加载模块,用于接收来自客户端的数据访问请求,为所述数据访问请求加载对应的规则集合,其中,所述规则集合中包括至少一个规则项;以及处理模块,用于根据规则集合判断是否执行对应的数据访问请求,若是,则执行对应的数据访问请求,并向客户端返回执行结果,若否,则向所述客户端返回拒绝响应。
本申请实施例的对数据库进行流量控制的装置,通过加载模块接收来自客户端的数据访问请求,并为数据访问请求加载对应的规则集合,以及处理模块根据规则集合判断是否执行对应的数据访问请求,若是,则执行对应的数据访问请求,并向客户端返回执行结果,若否,则向客户端返回拒绝响应。由此可见,相对于基于上层应用程序的限流方式,该实施例在数据库内部设置可以控制数据访问请求的规则项,对应的规则项可对用户的数据访问请求进行精细地控制,并根据数据访问请求是否符合对应规则项的执行条件来执行或者拒绝对应的数据访问请求,从而实现了对数据库的流量控制,缓解了数据库的访问压力,避免了数据库崩溃情况的发生。
附图说明
图1是本申请一个实施例的对数据库进行流量控制的方法的流程图。
图2是本申请另一个实施例的对数据库进行流量控制的方法的流程图。
图3是本申请一个实施例为数据访问请求加载对应的规则集合的流程图。
图4是本申请一个实施例的对数据库进行流量控制的装置的结构示意图。
图5是本申请另一个实施例的对数据库进行流量控制的装置的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
目前,在用户通过客户端访问服务器的过程中,多数涉及到数据库的访问。在一些特殊时期,例如,双十一,或者春运期间,通常存在高并发的访问请求,此时,将有大量的SQL语句频繁地访问数据库,每条SQL语句需要处理的数据非常多,由于数据库本身的处理能力有限,容易出现访问请求响应缓慢,甚至崩溃的现象,为此,该实施例提出了一种可以对数据库进行流量控制的方法及装置。下面参考附图描述本申请实施例的对数据库进行流量控制的方法及装置。
图1是本申请一个实施例的对数据库进行流量控制的方法的流程图,如图1所示,该对数据库进行流量控制的方法包括:
S101,接收来自客户端的数据访问请求,为数据访问请求加载对应的规则集合,其中,规则集合中包括至少一个规则项。
在本申请实施例中,如图2所示,在执行步骤S101之前,还可以包括步骤S100。
S100,接收并保存用户初始设置的规则项,其中,上述规则项中包含定义的关键字和允许同一数据访问请求被同时执行的最大次数。
具体地,用户可根据需求设置数据库的不同类型的规则项,数据库引擎将接收并保存用户设置的不同类型的规则项。
具体而言,用户可根据需求设置查询(SELECT)、更新(UPDATE)或者删除(DELETE)类型的规则项,数据库引擎将根据用户的设置保存SELECT、UPDATE或者DELETE类型的规则项。用户设置三种类型的规则项的具体过程类似,下面以用户设置SELECT类型的规则项为例进行说明。
假定在SQL语言中,设置SELECT类型的规则项的代码的形式如下:
SET GLOBAL sql_select_filter=‘+,{CONC},KEY1,KEY2,KEY3...';
其中,“+”表示增加一个规则项,KEY1,KEY2,KEY3...表示关键字,CONC表示允许同一数据访问请求被同时执行的最大次数,也就是说,最多允许CONC个线程同时执行,如果当前执行的线程数已达到CONC个,新来的线程直接将被中断(interrupted),对应的数据访问请求将被拒绝。假定此时用户输入的代码为:set global sql_select_filter=‘+,5,a=1,t1';数据库引擎接收用户输入的代码,并根据用户输入的代码设置一个SELECT类型的规则项,对应规则项的具体含义为:匹配关键字为“a=1”和“t1”的SELECT类型的数据访问请求,且最多允许5个该类型的数据访问请求同时被执行。
在本申请实施例中,在用户设置对应的规则项后,数据库引擎还可以接收用户的查询命令或规则表查询请求,并对应根据查询命令或规则表查询请求显示已设置的规则项。
例如,用户可通过查询(show)命令:SHOW SQL_FILTERS;或者通过规则表查询请求:INFORMATION_SCHEMA.SQL_FILTER_INFO输出并显示用户已经设置的规则项,假定数据库引擎接收到用户输入的规则表查询请求INFORMATION_SCHEMA.SQL_FILTER_INFO,并可根据规则表查询请求获得用户已设置的规则项,以及为用户显示如表1所示的结果。
表1 用户设置的规则项
表1表示用户已设置了两个SELECT类型的规则项,第一行的SELECT类型的规则项表示匹配关键字为“a=1”和“t1”的数据访问请求,且不允许该类型的数据访问请求运行,即数据库引擎拒绝关键字为“a=1”和“t1”的数据访问请求。第二行的SELECT类型的规则项表示匹配关键字为“b=b+1”和“t1”的数据访问请求,并且最多只允许5个该类型的数据访问请求同时运行。
在本申请的实施例中,接收并保存用户设置的规则项后,还可以接收并保存用户更新设置的规则项。其中,用户更新设置的规则项可以包括用户增加的、删除的和/或修改的规则项。
具体地,在用户设置并保存对应的规则项后,用户还可以根据数据库当前的访问情况更新设置的规则项,数据库引擎接收并保存更新设置的规则项。
例如,用户向数据库引擎输入的代码为:set global sql_select_filter=‘+,5,a=1,t1',即用户需要设置一个SELECT类型的规则项,数据库引擎根据用户输入的代码设置一个SELECT类型的规则项,并为该SELECT类型的规则项设置一个唯一的身份标识码ID(IDentity),假定对应的ID为11,若用户需要删除ID为11的规则项,用户可向数据库引擎中输入代码SET GLOBAL sql_select_filter=‘-,11',数据库引擎接收用户输入的代码,并将ID为11的规则项删除。若用户设置ID为11的规则项后,若根据数据库的当前访问情况,用户需要增加关键字“t2”,则用户可将已经设置的代码修改为:set global sql_select_filter=‘+,5,a=1,t1,t2',对应的数据库引擎将根据用户的设置保存对应的规则项。
另外,在本申请实施例中,上述规则集合中除了可以包括规则项外,还可以包括配置项,其中,配置项用于指示是否按照定义的关键字的顺序来匹配对应的规则项。
例如,用户可根据需求设置配置项,在编程中可用不同的参数表示配置项,假定当前用参数filter_key_cmp_in_order表示配置项,参数filter_key_cmp_in_order的取值可以为0或者1,若设置参数filter_key_cmp_in_order=0,则表示默认关闭配置项,此时将不按照定义的关键字的顺序来匹配对应的规则项;若设置参数filter_key_cmp_in_order=1,则表示开启配置项,此时将按照定义的关键字的顺序来匹配对应的规则项。
由此可见,该实施例通过在数据库内部中设置可以控制数据访问请求的规则项,并且在设置规则项的同时设置了允许数据访问请求被同时执行的最大次数,以及在数据库的访问情况发生变化时,还可以动态地更新用户设置的规则项,从而实现了对数据库的流量进行了精确、有效地控制,避免了数据库因存在高并行的数据访问请求而造成数据库运行缓慢,甚至出现崩溃现象的发生。
在本申请实施例中,为数据访问请求加载对应的规则集合的具体过程如图3所示,包括:
S1011,对数据访问请求进行解析,以获得数据访问请求的类型。
S1012,根据数据访问请求的类型匹配对应的规则集合,并判断是否匹配到对应的规则集合。
S1013,若匹配到对应的规则集合,则为数据访问请求加载对应的规则集合。
S1014,若未匹配到对应的规则集合,则执行对应的数据访问请求,并向客户端返回执行结果。
例如,在接收来自客户端的数据访问请求后,可对数据访问请求进行解析,即将数据访问请求转换为数据库可以执行的SQL语句,在获得数据访问请求对应的SQL语句后,可以根据SQL语句的类型(查询(SELECT)、更新(UPDATE)和删除(DELETE))确定出当前数据访问请求的类型,假定当前数据访问请求的类型为SELECT类型,即当前数据访问请求的类型为SELECT类型,由此可以确定出当前数据访问请求的类型为SELECT类型,然后可根据数据访问请求的类型匹配对应的select类型的规则项集合。
另外,若根据数据访问请求的类型找到多个规则项,则为数据访问请求匹配当前时间最新的规则项。
例如,假定根据数据访问请求的类型获得两个规则项,两个SELECT类型的规则项,假定用规则项1和规则项2表示,设置规则项1的代码为:set global sql_select_filter=‘+,5,a=1,t1',设置规则项2的代码为:set global sql_select_filter=‘+,5,a=1,t1,t2',且在这里,假定规则项1先于规则项2设置,即规则项2为后加的规则项,在根据数据访问请求的类型匹配时,可基于优先匹配后加的规则项的原则,为数据访问请求匹配当前时间最新的规则项,即与数据访问请求匹配的规则项为规则项2。
在本申请实施例中,在用户设置了对应的规则项后,还可以提供预设选项,然后接收用户对预设选项的设置,并根据设置删除所有已设置的规则项。
例如,用参数reset_all_filter表示预设选项,参数reset_all_filter有两种取值,即0或者1,其中,参数reset_all_filter的取值为1表示删除所有已设置的规则项;假定在用户向数据库引擎中输入的代码为SET GLOBAL reset_all_filter=1后,数据库引擎接收用户输入的代码,并获得用户已设置的所有的规则项,以及删除已设置的所有的规则项。
S102,根据规则集合判断是否执行对应的数据访问请求,若是,则执行对应的数据访问请求,并向客户端返回执行结果,若否,则向客户端返回拒绝响应。
具体地,可判断解析后的数据访问请求中包含的关键字是否与对应的规则集合中包含的关键字相匹配,若相匹配,则进一步判断对应数据访问请求是否达到允许被同时执行的最大次数,若是,则向客户端返回拒绝响应;若否,则执行对应的数据访问请求,并向客户端返回执行结果。
例如,假定用户设置SELECT类型的规则项的代码为:
set globalsql_select_filter=‘+,5,a=1,t1';
上述代码表示用户设置一个SELECT类型的规则项,该规则项的具体含义为:匹配关键字为“a=1”和“t1”的SELECTT类型的数据访问请求,且最多允许5个该类型的数据访问请求被同时执行。若用户设置了配置项,用户设置配置项的代码如下:SET GLOBALfilter_key_cmp_in_order=1;其中,filter_key_cmp_in_order=1表示配置项按照定义的关键字的顺序来匹配。
若解析出当前数据访问请求对应的SQL语句为:select*from t1where a=1;虽然关键字“a=1”与用户设置的SELECT类型的规则项相匹配,但是由于当前SQL语句在关键字“a=1”的后面并没有字符串“t1”,可以确定对应的规则集合中未匹配该数据访问请求的规则集合,即数据库中未对当前SQL语句设置规则项,则数据库引擎执行对应的数据访问请求,并向客户端返回对应的执行结果。
若解析出当前数据访问请求对应的SQL语句为:select*from t1where a=1,t1;通过匹配可以确定当前数据访问请求与数据库引擎保存的SELECT类型的规则项相匹配,在确定匹配后,可判断是否达到允许同一数据访问请求被同时执行的最大次数,若没有达到最大次数,则可以确定当前数据访问请求符合执行条件,数据库引擎执行当前数据访问请求,并向客户端返回对应的执行结果。若达到最大次数,则可以确定当前数据访问请求不符合执行条件,数据库引擎向客户端返回拒绝响应。
本申请实施例的对数据库进行流量控制的方法,接收来自客户端的数据访问请求后,首先为数据访问请求加载对应的规则集合,然后根据规则集合判断是否执行对应的数据访问请求,若是,则执行对应的数据访问请求,并向客户端返回执行结果,若否,则向客户端返回拒绝响应。由此可见,相对于基于上层应用程序的限流方式,该实施例在数据库内部设置可以控制数据访问请求的规则项,对应的规则项可对用户的数据访问请求进行精细地控制,并根据数据访问请求是否符合对应规则项的执行条件来执行或者拒绝对应的数据访问请求,从而实现了对数据库的流量控制,缓解了数据库的访问压力,避免了数据库崩溃情况的发生。
为了实现上述实施例,本申请还提出一种对数据库进行流量控制的装置。
图4是本申请一个实施例的对数据库进行流量控制的装置的结构示意图,如图4所示,该对数据库进行流量控制的装置包括加载模块11和处理模块12,其中:
加载模块11用于接收来自客户端的数据访问请求,为数据访问请求加载对应的规则集合,其中,规则集合中包括至少一个规则项;以及处理模块12用于根据规则集合判断对应的数据访问请求是否符合执行条件,若符合,则执行对应的数据访问请求,并向客户端返回执行结果,若不符合,则向客户端返回拒绝响应。
另外,如图5所示,上述装置还可以包括保存模块10,该保存模块10用于在加载模块11为数据访问请求加载对应的规则集合之前,接收并保存用户设置的规则项,其中,规则项中包含定义的关键字和允许同一数据访问请求被同时执行的最大次数。
在本申请实施例中,上述处理模块12可判断解析后的数据访问请求中包含的关键字是否与对应的规则集合中包含的关键字相匹配,若相匹配,则进一步判断对应数据访问请求是否达到允许被同时执行的最大次数,若是,则向所述客户端返回拒绝响应;若否,则执行对应的数据访问请求,并向所述客户端返回执行结果。
具体地,保存模块10中可以保存用户初始设置的规则项和用户更新设置的规则项,其中,用户更新设置的规则项可以包括用户增加的、删除的和/或修改的规则项。
具体而言,用户可根据需求设置数据库的不同类型的规则项,保存模块10将接收并保存用户设置的不同类型的规则项,并且用户可根据数据库的当前访问情况更新设置不同类型的规则项,保存模块10可接收并保存用户更新设置的不同类型的规则项。
需要说明的是,规则项的类型与数据访问请求的类型相对应,例如,保存模块10中保存了三种类型的规则项,分别为查询(SELECT)、更新(UPDATE)或者删除(DELETE)类型的规则项,则对应地存在查询(SELECT)、更新(UPDATE)或者删除(DELETE)类型的数据访问请求。
例如,在SQL语言中,设置SELECT类型的规则项的代码的形式如下:
SET GLOBAL sql_select_filter=‘+,{CONC},KEY1,KEY2,KEY3...';
其中,“+”表示增加一个规则项,KEY1,KEY2,KEY3...表示关键字,CONC表示允许同一数据访问请求被同时执行的最大次数,也就是说,最多允许CONC个线程同时执行,如果当前执行的线程数已达到CONC个,新来的线程直接将被中断(interrupted),即对应的数据访问请求将被拒绝。假定此时用户输入的代码为:set global sql_select_filter=‘+,5,a=1,t1';保存模块10将接收用户输入的代码,并根据用户输入的代码设置一个SELECT类型的规则项,该规则项的具体含义为:匹配关键字为“a=1”和“t1”的SELECT类型的数据访问请求,且最多允许5个该类型的数据访问请求同时被执行。为了方便区分规则项,可为每个规则项设置一个唯一的身份识别码ID(IDentity),保存模块10在保存对应的规则项时,可保存规则项的同时保存对应的ID。假定当前设置的规则项的ID为11,在用户设置上述规则项后,若根据数据库的当前访问情况需要删除ID为11的规则项,用户可向输入代码SETGLOBAL sql_select_filter=‘-,11',保存模块10中的ID为11的规则项将被删除。若用户设置ID为11的规则项后,若根据数据库的当前访问情况,用户需要增加关键字“t2”,则用户可将已经设置的代码修改为:set global sql_select_filter=‘+,5,a=1,t1,t2',保存模块10将根据用户的设置保存修改后的规则项。
另外,上述规则集合中除了可以包括规则项外,还可以包括配置项,其中,配置项用于指示是否按照定义的关键字的顺序来匹配对应的规则项。
例如,用户可根据需求设置配置项,在编程中可用不同的参数表示配置项,假定当前用参数filter_key_cmp_in_order表示配置项,参数filter_key_cmp_in_order的取值可以为0或者1,若设置参数filter_key_cmp_in_order=0,则表示默认关闭配置项,此时将不按照定义的关键字的顺序来匹配对应的规则项;若设置参数filter_key_cmp_in_order=1,则表示开启配置项,此时将按照定义的关键字的顺序来匹配对应的规则项,保存模块10将根据用户的设置对配置项进行保存。
在该实施例中,上述加载模块11具体用于:对数据访问请求进行解析,以获得数据访问请求的类型;以及根据数据访问请求的类型匹配对应的规则集合,若匹配到对应的规则集合,则为数据访问请求加载对应的规则集合。
另外,在加载模块11根据数据访问请求的类型匹配对应的规则集合之后,若未匹配到对应的规则集合,上述处理模块12可执行对应的数据访问请求,并向客户端返回执行结果。
此外,若根据数据访问请求的类型找到多个规则项,则加载模块11可为数据访问请求匹配当前时间最新的规则项。
例如,假定根据数据访问请求的类型获得两个规则项,两个SELECT类型的规则项,假定用规则项1和规则项2表示,设置规则项1的代码为:set global sql_select_filter=‘+,5,a=1,t1',设置规则项2的代码为:set global sql_select_filter=‘+,5,a=1,t1,t2',且在这里,假定规则项1先于规则项2设置,即规则项2为后加的规则项,加载模块11在根据数据访问请求的类型匹配时,可基于优先匹配后加的规则项的原则,为数据访问请求匹配当前时间最新的规则项,即与数据访问请求匹配的规则项为规则项2
为了方便用户可以查看已经设置的规则项,上述装置还可以包括显示模块13,该显示模块13用于在保存模块10接收并保存用户更新设置的规则项之前,接收用户的查询命令或规则表查询请求,并对应根据查询命令或规则表查询请求显示已设置的规则项。
为了方便用户删除所有设置的规则项,上述装置还可以包括删除模块14,该删除模块14用于在保存模块10接收并保存用户设置的规则项之后,提供预设选项,接收用户对预设选项的设置,并根据设置删除所有已设置的规则项。
例如,用参数reset_all_filter表示预设选项,参数reset_all_filter有两种取值,即0或者1,其中,参数reset_all_filter的取值为1表示删除所有已设置的规则项;假定在用户向输入的代码为SET GLOBAL reset_all_filter=1后,删除模块14接收用户输入的代码,并删除保存模块10中已经保存的所有的规则项。
包含加保存模块10、载模块11、处理模块12、显示模块13和删除模块14的对数据库进行流量控制的装置进行数据库流量控制的过程可参见图1,此处不赘述。
本申请实施例的对数据库进行流量控制的装置,通过加载模块接收来自客户端的数据访问请求,并为数据访问请求加载对应的规则集合,以及处理模块根据规则集合判断是否执行对应的数据访问请求,若是,则执行对应的数据访问请求,并向客户端返回执行结果,若否,则向客户端返回拒绝响应。由此可见,相对于基于上层应用程序的限流方式,该实施例在数据库内部设置可以控制数据访问请求的规则项,对应的规则项可对用户的数据访问请求进行精细地控制,并根据数据访问请求是否符合对应规则项的执行条件来执行或者拒绝对应的数据访问请求,从而实现了对数据库的流量控制,缓解了数据库的访问压力,避免了数据库崩溃情况的发生。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (18)

1.一种对数据库进行流量控制的方法,其特征在于,包括:
接收来自客户端的数据访问请求,为所述数据访问请求加载对应的规则集合,其中,所述规则集合中包括至少一个规则项;以及
根据所述规则集合判断是否执行对应的数据访问请求若是,则执行对应的数据访问请求,并向所述客户端返回执行结果,若否,则向所述客户端返回拒绝响应。
2.根据权利要求1所述的方法,其特征在于,在所述为所述数据访问请求加载对应的规则集合之前,还包括:
接收并保存用户设置的规则项,所述规则项中包含定义的关键字和允许同一数据访问请求被同时执行的最大次数。
3.根据权利要求2所述的方法,其特征在于,所述为所述数据访问请求加载对应的规则集合,包括:
对所述数据访问请求进行解析,以获得所述数据访问请求的类型;以及
根据所述数据访问请求的类型匹配对应的规则集合,若匹配到对应的规则集合,则为所述数据访问请求加载对应的规则集合。
4.根据权利要求3所述的方法,其特征在于,所述根据所述规则集合判断是否执行对应的数据访问请求,包括:
判断解析后的数据访问请求中包含的关键字是否与对应的规则集合中包含的关键字相匹配,若相匹配,则进一步判断对应数据访问请求是否达到允许被同时执行的最大次数。
5.根据权利要求3所述的方法,其特征在于,在所述根据所述数据访问请求的类型匹配对应的规则集合之后,还包括:
若未匹配到对应的规则集合,则执行对应的数据访问请求,并向所述客户端返回执行结果。
6.根据权利要求3所述的方法,其特征在于,所述规则集合中还包括配置项,所述配置项用于指示是否按照定义的关键字的顺序来匹配对应的规则项。
7.根据权利要求3所述的方法,其特征在于,所述根据所述数据访问请求的类型匹配对应的规则集合,包括:
若根据所述数据访问请求的类型找到多个规则项,则为所述数据访问请求匹配当前时间最新的规则项。
8.根据权利要求2所述的方法,其特征在于,所述用户设置的规则项包括用户初始设置的规则项和用户更新设置的规则项,所述用户更新设置的规则项包括用户增加的、删除的和/或修改的规则项,在所述接收并保存用户更新设置的规则项之前,还包括:
接收用户的查询命令或规则表查询请求,并对应根据所述查询命令或规则表查询请求显示已设置的规则项。
9.根据权利要求8所述的方法,其特征在于,在所述接收并保存用户设置的规则项之后,还包括:
提供预设选项,接收用户对所述预设选项的设置,并根据所述设置删除所有已设置的规则项。
10.一种对数据库进行流量控制的装置,其特征在于,包括:
加载模块,用于接收来自客户端的数据访问请求,为所述数据访问请求加载对应的规则集合,其中,所述规则集合中包括至少一个规则项;以及
处理模块,用于根据所述规则集合判断是否执行对应的数据访问请求,若是,则执行对应的数据访问请求,并向所述客户端返回执行结果,若否,则向所述客户端返回拒绝响应。
11.根据权利要求10所述的装置,其特征在于,还包括:
保存模块,用于在所述加载模块为所述数据访问请求加载对应的规则集合之前,接收并保存用户设置的规则项,所述规则项中包含定义的关键字和允许同一数据访问请求被同时执行的最大次数。
12.根据权利要求11所述的装置,其特征在于,所述加载模块,具体用于:
对所述数据访问请求进行解析,以获得所述数据访问请求的类型;以及
根据所述数据访问请求的类型匹配对应的规则集合,若匹配到对应的规则集合,则为所述数据访问请求加载对应的规则集合。
13.根据权利要求12所述的装置,其特征在于,所述处理模块,具体用于:
判断解析后的数据访问请求中包含的关键字是否与对应的规则集合中包含的关键字相匹配,若相匹配,则进一步判断对应数据访问请求是否达到允许被同时执行的最大次数。
14.根据权利要求12所述的装置,其特征在于,所述处理模块,还用于:
在所述加载模块根据所述数据访问请求的类型匹配对应的规则集合之后,若未匹配到对应的规则集合,则执行对应的数据访问请求,并向所述客户端返回执行结果。
15.根据权利要求12所述的装置,其特征在于,所述规则集合中还包括配置项,所述配置项用于指示是否按照定义的关键字的顺序来匹配对应的规则项。
16.根据权利要求12所述的装置,其特征在于,所述加载模块,具体用于:
若根据所述数据访问请求的类型找到多个规则项,则为所述数据访问请求匹配当前时间最新的规则项。
17.根据权利要求11所述的装置,其特征在于,所述用户设置的规则项包括用户初始设置的规则项和用户更新设置的规则项,所述用户更新设置的规则项包括用户增加的、删除的和/或修改的规则项,所述装置还包括:
显示模块,在所述保存模块接收并保存用户更新设置的规则项之前,接收用户的查询命令或规则表查询请求,并对应根据所述查询命令或规则表查询请求显示已设置的规则项。
18.根据权利要求17所述的装置,其特征在于,还包括:
删除模块,用于在所述保存模块接收并保存用户设置的规则项之后,提供预设选项,接收用户对所述预设选项的设置,并根据所述设置删除所有已设置的规则项。
CN201510144505.XA 2015-03-30 2015-03-30 对数据库进行流量控制的方法及装置 Active CN106156064B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510144505.XA CN106156064B (zh) 2015-03-30 2015-03-30 对数据库进行流量控制的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510144505.XA CN106156064B (zh) 2015-03-30 2015-03-30 对数据库进行流量控制的方法及装置

Publications (2)

Publication Number Publication Date
CN106156064A true CN106156064A (zh) 2016-11-23
CN106156064B CN106156064B (zh) 2020-01-17

Family

ID=57340622

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510144505.XA Active CN106156064B (zh) 2015-03-30 2015-03-30 对数据库进行流量控制的方法及装置

Country Status (1)

Country Link
CN (1) CN106156064B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109145015A (zh) * 2018-08-02 2019-01-04 北京百度网讯科技有限公司 基于结构化查询语言的数据查询方法、装置和系统
CN110445632A (zh) * 2018-05-04 2019-11-12 北京京东尚科信息技术有限公司 一种预防客户端崩溃的方法和装置
CN112769735A (zh) * 2019-11-05 2021-05-07 阿里巴巴集团控股有限公司 资源访问方法、装置与系统
CN117556452A (zh) * 2024-01-10 2024-02-13 支付宝(杭州)信息技术有限公司 一种针对数据库的访问控制方法及相关设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110270807A1 (en) * 2008-12-30 2011-11-03 Susana Gomez Maturana Method In A Database Server
CN102693310A (zh) * 2012-05-28 2012-09-26 无锡成电科大科技发展有限公司 一种基于关系数据库的资源描述框架查询方法和系统
CN103117998A (zh) * 2012-11-28 2013-05-22 北京用友政务软件有限公司 一种基于JavaEE应用系统的安全加固方法
CN104008349A (zh) * 2014-04-28 2014-08-27 国家电网公司 数据库安全访问控制方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110270807A1 (en) * 2008-12-30 2011-11-03 Susana Gomez Maturana Method In A Database Server
CN102693310A (zh) * 2012-05-28 2012-09-26 无锡成电科大科技发展有限公司 一种基于关系数据库的资源描述框架查询方法和系统
CN103117998A (zh) * 2012-11-28 2013-05-22 北京用友政务软件有限公司 一种基于JavaEE应用系统的安全加固方法
CN104008349A (zh) * 2014-04-28 2014-08-27 国家电网公司 数据库安全访问控制方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
百恼Z: "项目分享-限流框架的实现", 《HTTPS://BLOG.CSDN.NET/LUOHUACANYUE/ARTICLE/DETAILS/14055715》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110445632A (zh) * 2018-05-04 2019-11-12 北京京东尚科信息技术有限公司 一种预防客户端崩溃的方法和装置
CN110445632B (zh) * 2018-05-04 2023-09-01 北京京东尚科信息技术有限公司 一种预防客户端崩溃的方法和装置
CN109145015A (zh) * 2018-08-02 2019-01-04 北京百度网讯科技有限公司 基于结构化查询语言的数据查询方法、装置和系统
CN109145015B (zh) * 2018-08-02 2022-12-23 北京百度网讯科技有限公司 基于结构化查询语言的数据查询方法、装置和系统
CN112769735A (zh) * 2019-11-05 2021-05-07 阿里巴巴集团控股有限公司 资源访问方法、装置与系统
CN112769735B (zh) * 2019-11-05 2023-03-24 阿里巴巴集团控股有限公司 资源访问方法、装置与系统
CN117556452A (zh) * 2024-01-10 2024-02-13 支付宝(杭州)信息技术有限公司 一种针对数据库的访问控制方法及相关设备

Also Published As

Publication number Publication date
CN106156064B (zh) 2020-01-17

Similar Documents

Publication Publication Date Title
US9037610B2 (en) Fine-grained relational database access-control policy enforcement using reverse queries
US8572108B2 (en) Method and system for specifying, preparing and using parameterized database queries
US10122726B2 (en) Methods and apparatus for controlling permissions to be granted to applications on user equipment responsive to user privacy profiles
US20180046675A1 (en) Automatic adjustment of an execution plan for a query
US20160063063A1 (en) Database query system
CN104471585A (zh) 用于数据访问控制实施的基于sql转换的优化技术
US11036699B2 (en) Method for computing distinct values in analytical databases
CN106156064A (zh) 对数据库进行流量控制的方法及装置
US20090049013A1 (en) Enhanced control to users to populate a cache in a database system
CN104021176A (zh) 具有高度可扩展性的广告匹配方法和系统
CN110502532A (zh) 远程数据库对象的优化方法、装置、设备和存储介质
CN114424191A (zh) 基于被访问资源的对数据库的过程语言的细粒度访问控制
US9747328B2 (en) Method and apparatus for modifying a row in a database table to include meta-data
US20170213176A1 (en) Workflow customization
US11636124B1 (en) Integrating query optimization with machine learning model prediction
KR101588375B1 (ko) 데이터베이스 관리 방법 및 데이터베이스 관리 시스템
CN108197323A (zh) 应用于分布式系统地图数据处理方法
KR20130126012A (ko) 비즈니스 인텔리전스의리포트 제공 방법 및 장치
WO2023030461A1 (zh) 一种分布式数据库检测方法及装置
CN116341007A (zh) 一种数据查询方法、系统、设备及存储介质
US11157506B2 (en) Multiform persistence abstraction
CN108319701A (zh) 地图数据综合处理方法
US10198493B2 (en) Routing replicated data based on the content of the data
CN106484378A (zh) 一种无落地的数据处理方法及装置
US20190163810A1 (en) Search User Interface

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230703

Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province

Patentee after: Aliyun Computing Co.,Ltd.

Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK

Patentee before: ALIBABA GROUP HOLDING Ltd.