CN105843951B - 数据查询方法和装置 - Google Patents
数据查询方法和装置 Download PDFInfo
- Publication number
- CN105843951B CN105843951B CN201610224750.6A CN201610224750A CN105843951B CN 105843951 B CN105843951 B CN 105843951B CN 201610224750 A CN201610224750 A CN 201610224750A CN 105843951 B CN105843951 B CN 105843951B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- database
- cache space
- identifier
- 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.)
- Active
Links
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/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/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
Abstract
本公开揭示了一种数据查询方法和装置,属于数据处理及通信技术领域。所述数据查询方法包括:接收查询请求,所述查询请求携带待查找的第一数据标识;根据所述第一数据标识查询第一缓存空间,所述第一缓存空间包括数据库中各数据的数据标识;在所述第一缓存空间中查询到所述第一数据标识时,根据所述第一数据标识查询第二缓存空间;在所述第二缓存空间中没有查询到所述第一数据标识对应的数据时,则根据所述第一数据标识查询所述数据库。解决了恶意分子通过故意大量查询数据库中没有存储的数据,而增加数据库的访问量,增大数据库压力,进而导致系统崩溃,正常服务不能继续的问题;达到了减小数据库压力,提高数据库安全性的效果。
Description
技术领域
本公开涉及数据处理及通信技术领域,特别涉及一种数据查询方法和装置。
背景技术
信息时代数据大量涌现,将数据分类存储在不同的数据库中,以方便人们在使用时查询数据。比如,从学校的教学信息管理系统中查询某个学生的成绩;从公司员工信息管理系统中查询某个员工的信息等。
目前,有如下查询数据的方法,包括:将距当前最近预设时间内查询的数据缓存在内存中,在接收到查询请求时,首先查询内存,如果从内存中查询到所要查询的数据时,则返回查询到的数据;如果从内存中没有查询到所要查询的数据时,则查询数据库,如果在数据库内查询到所要查询的数据,则返回查询到的数据,如果在数据库内没有查询到所要查询的数据,则返回查询失败。
由于所要查询的数据没有存储在数据库中就会查询数据库,这样恶意分子就会利用该缺陷发送大量查询请求,且每个查询请求都是用于查询数据库中不存在的数据,增加数据库的访问量,导致系统崩溃,正常的服务不能继续。
发明内容
为了解决相关技术中存在的问题,本公开提供一种数据查询方法和装置。所述技术方案如下:
根据本公开实施例的第一方面,提供一种数据查询方法,该方法包括:
接收查询请求,所述查询请求携带待查找的第一数据标识;
根据所述第一数据标识查询第一缓存空间,所述第一缓存空间包括数据库中存储的各数据的数据标识;
在所述第一缓存空间中查询到所述第一数据标识时,根据所述第一数据标识查询第二缓存空间,所述第二缓存空间包括所述数据库中存储的部分或全部数据及与所述部分或全部数据对应的数据标识;
在所述第二缓存空间中没有查询到所述第一数据标识对应的数据时,则根据所述第一数据标识查询所述数据库。
可选的,在所述根据所述第一数据标识查询第一缓存空间之前,所述方法还包括:
将所述数据库中存储的每个数据的数据标识缓存在所述第一缓存空间中。
可选的,在所述根据所述第一数据标识查询第一缓存空间之前,所述方法还包括:
在所述数据库中的数据发生变化时,根据所述发生变化的数据,更新所述第一缓存空间。
可选的,所述在所述数据库中的数据发生变化时,根据所述发生变化的数据,更新所述第一缓存空间,包括:
在向所述数据库中存储数据时,将所述存储的数据的数据标识缓存到所述第一缓存空间中;
在从所述数据库中删除数据时,将所述删除的数据的数据标识从所述第一缓存空间中删除。
可选的,所述第一缓存空间包括多个缓存节点,所述多个缓存节点中的每个缓存节点用于缓存不同的数据标识;
可选的,所述根据所述第一数据标识查询第一缓存空间,包括:
根据所述第一数据标识,确定待查询的缓存节点;
根据所述第一数据标识,查询所述待查询的缓存节点。
根据本公开实施例的第二方面,提供一种数据查询的装置,该装置包括:
接收模块,被配置为接收查询请求,所述查询请求携带待查找的第一数据标识;
第一查询模块,被配置为根据所述接收模块接收到的所述第一数据标识查询第一缓存空间,所述第一缓存空间包括数据库中存储的各数据的数据标识;
第二查询模块,被配置为所述第一查询模块在所述第一缓存空间中查询到所述第一数据标识时,根据所述第一数据标识查询第二缓存空间,所述第二缓存空间包括所述数据库中存储的部分或全部数据及与所述部分或全部数据对应的数据标识;
第三查询模块,被配置为所述第二查询模块在所述第二缓存空间中没有查询到所述第一数据标识对应的数据时,则根据所述第一数据标识查询所述数据库。
可选的,所述装置还包括:
缓存模块,被配置为将所述数据库中存储的每个数据的数据标识缓存在所述第一缓存空间中。
可选的,所述装置还包括:
更新模块,被配置为在所述数据库中的数据发生变化时,根据所述发生变化的数据,更新所述第一缓存空间。
可选的,所述更新模块,包括:
缓存子模块,用于在向所述数据库中存储数据时,将所述存储的数据的数据标识缓存到所述第一缓存空间中;
删除子模块,用于在从所述数据库中删除数据时,将所述删除的数据的数据标识从所述第一缓存空间中删除。
可选的,所述第一缓存空间包括多个缓存节点,所述多个缓存节点中的每个缓存节点用于缓存不同的数据标识;
可选的,所述第一查询模块,包括:
确定子模块,用于根据所述接收模块接收的所述第一数据标识,确定待查询的缓存节点;
查询子模块,用于根据所述接收模块接收的所述第一数据标识,查询所述待查询的缓存节点。
根据本公开实施例的第三方面,提供一种数据查询的装置,该装置包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为:
接收查询请求,所述查询请求携带待查找的第一数据标识;
根据所述第一数据标识查询第一缓存空间,所述第一缓存空间包括数据库中存储的各数据的数据标识;
在所述第一缓存空间中查询到所述第一数据标识时,根据所述第一数据标识查询第二缓存空间,所述第二缓存空间包括所述数据库中存储的部分或全部数据及与所述部分或全部数据对应的数据标识;
在所述第二缓存空间中没有查询到所述第一数据标识对应的数据时,则根据所述第一数据标识查询所述数据库。
本公开的实施例提供的技术方案可以包括以下有益效果:
通过设置第一缓存空间,并在该第一缓存空间中缓存数据库中所有数据的数据标识,使得当接收到数据查询请求时,可以首先查询该第一缓存空间中是否存储有该数据标识,如果有,则说明该数据标识对应的数据一定在数据库中,那么继续查询与该数据标识对应的数据,然后返回查询到的数据标识;如果该数据标识不在该第一缓存空间中,则拒绝该查询请求;因此,在查询数据时,只能查询数据库中已存储的数据,对于数据库中没有存储的数据直接拒绝查询请求,所以解决了恶意分子通过故意大量查询没有存储在数据库中的数据,从而增加数据库的访问量,增大数据库的压力,进而导致系统崩溃,正常的服务不能继续的问题;达到了减小数据库压力,提高数据库的安全性的效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并于说明书一起用于解释本公开的原理。
图1是根据部分示例性实施例示出的一种数据查询方法架构图;
图2是根据一示例性实施例示出的一种数据查询方法的流程图;
图3是根据另一示例性实施例示出的数据标识缓存方法的流程图;
图4是根据另一示例性实施例示出的一种数据查询方法的流程图;
图5A是根据一示例性实施例示出的一种数据查询装置的框图;
图5B是根据再一示例性实施例示出的一种数据查询装置的框图;
图5C根据另一示例性实施例示出的一种根据第一数据标识查询第一缓存空间装置的框图;
图5D是根据再一示例性实施例示出的一种更新第一缓存空间装置的框图;
图6是根据一示例性实施例示出的一种数据查询装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据部分示例性实施例示出的一种数据查询方法架构图,如图1所示,该架构可以包括:第一缓存空间110、第二缓存空间120、数据库130和日志140。
第一缓存空间110,用于存储数据库130内所有数据的数据标识。并且当该数据库130内的数据标识发生变化时,对应更新第一缓存空间110内的数据标识:当数据库130内的数据标识被删除时,同时对应删除第一缓存空间110内的数据标识;当数据库130内的增加数据标识时,同时对应从第一缓存空间110内的增加数据标识。
如图1所示,该第一缓存空间110可包括多个缓存节点,图1中以3个缓存节点为例,该多个缓存节点中的每个缓存节点用于缓存不同的数据标识。
第二缓存空间120,该第二缓存空间120包括该数据库130中存储的部分或全部数据,以及与该部分或全部数据对应的第二数据标识。该部分或全部数据以及该第二数据标识可以通过如下方法得到:将距当前最近预设时间内查询的第二数据以及与该第二数据对应的第二数据标识缓存在该第二缓存空间120中,或者是将查询频率满足预设值的第二数据以及与该第二数据对应的第二数据标识缓存在该第二缓存空间120中。
数据库130,用于存储数据,并在数据存入该数据库130时,为该数据设置数据标识,并建立数据与数据标识的对应关系,将数据与数据标识一并存储在数据库130内。可选的,数据库130中增加一个数据,则为该增加的数据设置对应数据标识;数据库130中删除一个数据,则删除该数据对应的数据标识。
日志140,用于监控数据库130中的数据及数据标识的变化,当监控到数据库130中增加一个数据及数据标识时,则通知第一缓存空间110增加该新增加的数据标识,当监控到数据库130中删除一个数据及数据标识时,则通知第一缓存空间110删除该删除的数据标识。以使得第一缓存空间110中的数据标识与数据库130中的数据标识相同。
当然日志140还用于监控第一缓存空间110和第二缓存空间120内的数据变化情况,以方便数据库系统维修。
图2是根据一示例性实施例示出的一种数据查询方法的流程图,如图2所示,该方法包括以下步骤:
在步骤201中,接收查询请求,该查询请求携带待查找的第一数据标识。
在步骤202中,根据该第一数据标识查询第一缓存空间,该第一缓存空间包括数据库中存储的各数据的数据标识。
在步骤203中,在该第一缓存空间中查询到该第一数据标识时,根据该第一数据标识查询第二缓存空间,该第二缓存空间包括该数据库中存储的部分或全部数据及与该部分或全部数据对应的数据标识。
在步骤204中,在该第二缓存空间中没有查询到该第一数据标识对应的数据时,则根据该第一数据标识查询该数据库。
综上所述,本公开实施例中提供的数据查询方法,通过设置第一缓存空间,并在该第一缓存空间中缓存数据库中所有数据的数据标识,使得当接收到数据查询请求时,可以首先查询该第一缓存空间中是否存储有该数据标识,如果有,则说明该数据标识对应的数据一定在数据库中,那么继续查询与该数据标识对应的数据,然后返回查询到的数据标识;如果该数据标识不在该第一缓存空间中,则拒绝该查询请求;因此,在查询数据时,只能查询数据库中已存储的数据,对于数据库中没有存储的数据直接拒绝查询请求,所以解决了恶意分子通过故意大量查询没有存储在数据库中的数据,从而增加数据库的访问量,增大数据库的压力,进而导致系统崩溃,正常的服务不能继续的问题;达到了减小数据库压力,提高数据库的安全性的效果。
图3是根据另一示例性实施例示出的数据标识缓存方法的流程图。该方法包括:在将每一个数据存入数据库时,为该数据设置数据标识;将数据库中所有的数据标识缓存到第一缓存空间。如图3所示,该方法包括以下步骤:
在步骤301中,在将每一个数据存入数据库时,为该数据设置数据标识。
一般情况下,数据库中会包括较多数据,而且每个数据会包括多个数据内容,为了使用方便可以为该每个数据设置一个数据标识,用该数据标识代表该数据。比如,一个数据库是某个学校的学生教学信息管理系统,该系统中的每个数据包括了一个学生几乎所有的信息,示例性的,该系统中一个数据为以下所有信息:姓名、性别、年龄、身高、年级、院系、专业、编号、课程、成绩等。为了管理方便可以为该每个数据设置一个数据标识,比如可以用学生的学号代表与该学生对应的数据以及数据中的所有数据内容。
在将数据存入数据库时,可以通过如下三种方法为数据设置数据标识:
第一种,可以根据数据内容的特点为数据设置数据标识。
比如,一个数据内容包括多个信息,可以从该多个信息中选取一个或是几个信息,并将该一个或是几个信息使用字符表示,进而得到与该数据对应的数据标识。示例性的,仍以上述学生教学信息管理系统为例,则可选取每个数据中的年级、院系、专业和编号这四个信息作为每个数据的数据标识。
可选的,可以根据选取的信息的数量,将数据标识设置为由多个字符段组成的字符串,每个信息用一个字符段表示,每个字符段又由多个字符组成。仍以上述学生教学信息管理系统为例,选取每个数据中的年级、院系、专业和编号这四个信息作为每个数据的数据标识,则该数据标识由四个字符段组成。第一个信息,也即年级,用第一字符段表示,由四个字符组成;第二个信息,也即院系,用第二字符段表示,由两个字符组成;第三个信息,也即专业,用第三字符段表示,由两个字符组成;第四个信息,也即编号,用第四字符段表示,由四个字符组成。
例如:该学生教学信息管理系统中的一个数据为:李明、男、19、180、2012级、08、24、0725、01、90,则可以设置该数据的数据标识为201208240725。
第二种,可以根据该数据存入该数据库的先后顺序为数据设置数据标识。比如,将第一个存入数据库中的数据的数据标识设置为1,将第二个存入数据库中的数据的数据标识设置为2,将第三个存入数据库中的数据的数据标识设置为3,以此类推,为存入数据库中的每个数据设置数据标识。
当然也可以根据要存储的数据的复杂度或是其它因素,为数据库的数据设置数据标识,在这里不做限制。
可选的,当该数据库中的数据发生变化时,数据发生变化指数据库中的数据删除或增加,对应修改该发生变化的数据的数据标识。可选的,数据库中增加一个数据,则为该增加的数据设置对应数据标识;数据库中删除一个数据,则删除该数据对应的数据标识。例如,在上述教学信息管理系统中增加了一个学生的数据,则对应增加与该学生的数据对应的数据标识,示例性的,如果在该学校2012年级,计算机院系,计算机科学与技术专业增加了一名学生的数据,则增加该学生的数据对应的数据标识:201208240726;如果在该学校2012年级,计算机院系,计算机科学与技术专业删除了一名学生的数据(与该数据对应的数据标识是201208240725),则删除该学生的数据对应的数据标识:201208240725。
可选的,在某个数据不发生变化时,也可以修改该数据的数据标识。比如,在另外一个数据库中,一个数据为A,与A对应的数据标识是1,另一个数据是B,与B对应的数据标识是2。可以将A和B的数据标识交换,使数据A与数据标识2对应,而数据B与数据标识1对应。
本公开中的数据库为广义数据库,该数据库可以为任意类型的数据库,比如,可以为关系型数据库,分布式数据库,层次型数据库;还可以是一些后端系统,比如向用户提供数据的服务器。
在步骤302中,将数据库中存储的每个数据的数据标识缓存在第一缓存空间中。
该第一缓存空间可包括多个缓存节点,该多个缓存节点中的每个缓存节点用于缓存不同的数据标识。该多个缓存节点可以根据数据标识的特点将该第一缓存空间划分得到。下面例举了几种将第一缓存空间划分为多个缓存节点的方法:
第一种,可以根据数据标识自身的特点将第一缓存空间划分为多个缓存节点。
比如,第一缓存空间中缓存了某个学校的硕士研究生教学信息管理系统中的每个数据的数据标识,那么这些数据标识一般会体现学生的年级、院系、专业等。所以该第一缓存空间包括的缓存节点可以根据年级进行划分,也可以根据院系进行划分,还可以根据专业进行划分。假如该第一缓存空间包括的缓存节点根据年级进行划分,那么可以把第一缓存空间划分为三个节点,第一个节点用来存储硕士研究生一年级学生的每个数据的数据标识;第二个节点用来存储硕士研究生二年级学生的每个数据的数据标识;第三个节点用来存储硕士研究生三年级学生的每个数据的数据标识。
第二种,如果该数据标识是简单的顺序编号,比如数据标识使用大于等于1的整数连续编号,则可以根据数据标识的数量和编号顺序将第一缓存空间划分为多个缓存节点。
例如,假设第一缓存空间中共有1000个数据标识,则可以将第一缓存空间划分为4个缓存节点,每个缓存节点里存储250个数据标识。可选的,第一缓存节点存储1-250这250个数据标识,第二个缓存节点存储251-500这250个数据标识,第三个缓存节点存储501-750这250个数据标识,第四个缓存节点存储751-1000这250个数据标识。
第三种,对数据标识的末尾位进行取模运算,根据运算结果的可能划分第一缓存空间。
比如,对数据标识的末尾位进行取模3运算,那么运算结果只有0、1和2三种可能,则将第一缓存空间划分为三个缓存节点,第一个缓存节点用于存储数据标识末尾位取模3运算后结果为0的数据标识,第二个缓存节点用于存储数据标识末尾位取模3运算后结果为1的数据标识,第三个缓存节点用于存储数据标识末尾位取模3运算后结果为2的数据标识。
上述划分第一缓存空间的方法要求数据库中数据标识的末尾位为数字,但如果有数据标识的末尾位并非为数字,则可以建立该非数字字符与数字的对应的关系,将该非数字字符转换为数字后,再进行取模运算。
当然还可以根据第一缓存空间中缓存的数据标识的其它特点,将第一缓存空间划分为多个缓存节点,在这里有做一一介绍。
将该第一缓存空间划分为多个缓存节点后,每个节点中存储具有相同特性的数据标识,而两个不同的缓存节点内存储的数据标识具有不同的特点。比如,将上述学生教学信息管理系统中的数据标识按照年级存储在三个缓存节点中,则在每一个缓存节点中都存储了同一个年级学生的数据的数据标识,以使得在查询某个数据标识时,可以首先确定与该数据标识对应的缓存节点,然后从该确定的缓存节点中查询该数据标识,以提高查询速度。
可选的,还可以为每个缓存节点设置缓存节点标识,该缓存节点标识与该缓存节点内缓存的数据标识存在对应关系。比如,上述第一缓存空间的第一个缓存节点存储了硕士研究生一年级学生的每个数据的数据标识,则可以为该第一个缓存节点设置“一年级”标识,并存储一年级与2012(假设2012级是一年级)的对应关系,那么如果数据标识是以2012开头,则说明该数据标识存储在缓存节点标识为一年级的缓存节点内;第二个节点存储了硕士研究生二年级学生的每个数据的数据标识,可以为该第二个缓存节点设置“二年级”标识,并存储二年级与2011(假设2011级是二年级)的对应关系,那么如果数据标识是以2011开头,则说明该数据标识存储在缓存节点标识为二年级的缓存节点内;第三个节点存储了硕士研究生三年级学生的每个数据的数据标识,可以为该第三个缓存节点设置“三年级”标识,并存储三年级与2010(假设2010级是三年级)的对应关系,那么如果数据标识是以2010开头,则说明该数据标识存储在缓存节点标识为三年级的缓存节点内。当然这三个缓存节点标识:“一年级”、“二年级”和“三年级”还可以分别依次对应设置为“2012”、“2011”和“2010”。
为每个缓存节点设置缓存节点标识后,可以加快数据标识的查找速度。具体如何加快查找速度,将在下述步骤中介绍。
可选的,当该数据库中的数据标识发生变化时,根据该发生变化的数据标识,更新该第一缓存空间。比如,在向该数据库中存储数据时,将该存储的数据的数据标识缓存到该第一缓存空间中;在从该数据库中删除数据时,将该删除的数据的数据标识从该第一缓存空间中删除。
例如:在上述教学信息管理系统中增加了一个学生的数据,则在第一缓存空间中对应增加与该学生的数据对应的数据标识,假如该数据标识为201208240726,则在第一缓存空间中增加201208240726;如果在上述教学信息管理系统中删除了一个学生的数据,则在第一缓存空间中对应删除与该学生的数据对应的数据标识,假如该数据标识为201208240726,则在第一缓存空间中删除201208240726。
当该第一缓存空间只有一个缓存节点时,本步骤可以为:获取数据库中第一个数据的数据标识,并将该第一个数据的数据标识存储在第一缓存空间,再获取数据库中第二个数据的数据标识,并将该第二个数据的数据标识存储在第一缓存空间,再获取数据库中第三个数据的数据标识,并将该第三个数据的数据标识存储在第一缓存空间,依此类推,直到数据库中所有数据的数据标识都存储在第一缓存空间为止。
当该第一缓存空间包括多个缓存节点时,本步骤可以为:获取数据库中第一个数据的数据标识,根据该第一个数据的数据标识从所有缓存节点内获取与该第一个数据的数据标识对应的缓存节点,并将该第一个数据的数据标识存储在与该第一个数据的数据标识对应的缓存节点内,再获取数据库中第二个数据的数据标识,根据该第二个数据的数据标识从所有缓存节点内获取与该第二个数据的数据标识对应的缓存节点,并将该第二个数据的数据标识存储在与该第二个数据的数据标识对应的缓存节点内,再获取数据库中第三个数据的数据标识,根据该第三个数据的数据标识从所有缓存节点内获取与该第三个数据的数据标识对应的缓存节点,并将该第三个数据的数据标识存储在与该第三个数据的数据标识对应的缓存节点内,依此类推,直到数据库中所有数据的数据标识都存储在与该数据标识对应的缓存节点内为止。
综上所述,本公开实施例中提供的数据标识缓存方法,通过将数据库中所有数据标识缓存在第一缓存空间,使得在接收到数据查询请求后,仅通过查询第一缓存空间就可以判断该要查询的数据是否存储在数据库中,如果存储在数据库中则响应该查询请求,如果不在数据库中则拒绝该查询请求,由于拒绝查询数据库中并没有的数据;从而解决了恶意分子通过故意大量查询没有存储在数据库中的数据,从而增加数据库的访问量,增大数据库的压力,进而导致系统崩溃,正常的服务不能继续的问题;达到了减小数据库压力,提高数据库的安全性的效果。
图4是根据另一示例性实施例示出的一种数据查询方法的流程图。该方法包括:在接收到要查询的数据对应的数据标识后,首先查询第一缓存空间,如果该数据标识在第一缓存空间中,则接着查询第二缓存空间,如果该数据标识在该第二缓存空间,则返回该数据标识对应的数据;如果该数据标识不在该第二缓存空间中,则查询数据库,返回该数据标识对应的数据。如图4所示,该方法包括以下步骤:
在步骤401中,接收查询请求,该查询请求携带待查找的第一数据标识。
用户可以通过数据库系统提供的用户界面输入查询请求,该查询请求至少携带有待查找的第一数据的第一数据标识,当然还可以携带有缓存节点标识等其它信息。比如,该查询请求是:201208240725,或者是:一年级、1208240725。
在步骤402中,根据该第一数据标识,确定待查询的缓存节点。
可选的,可以根据第一缓存空间的划分方法来确定待查询的缓存节点。本实施例给出三种确定待查询的缓存节点的方法,这三种方法分别与前述步骤302中划分第一缓存空间的方法对应。
第一种,可以根据每个缓存节点中存储的数据标识的自身特点来确定待查询的缓存节点。
仍以前述某个学校的硕士研究生教学信息管理系统为例,由于将该系统的第一缓存空间划分为三个缓存节点,每个缓存节点存储一个年级学生的数据标识,所以在从接收到的查询请求中获取到该第一数据标识时,首先判断该第一数据标识对应的年级(如在步骤301中的方法,在设置数据标识时,将数据标识与年级对应),再根据年级与缓存节点的对应关系确定待查询的缓存节点。
比如,接收到的查询请求携带的数据标识是201208240725时,则判断出该数据标识对应的一年级,然后再判断该一年级对应的缓存节点是第一缓存节点,所以该确定待查询的缓存节点是第一缓存节点。
当然,如果接收到的查询请求是一年级、1208240725时,则直接确定待查询的缓存节点是缓存节点标识为一年级的缓存节点,也即第一缓存节点。
第二种,如果每个缓存节点中存储的数据标识是简单的顺序编号,则根据该顺序编号确定待查询的缓存节点。
仍以前述步骤302中第二种划分第一缓存空间的例子为例,在从接收到的查询请求中获取到该第一数据标识时,首先判断该第一数据标识在哪个数据段内,然后判断该数据段对应的缓存节点,将该缓存节点确定为待查询的缓存节点。
比如,接收到的查询请求携带的第一数据标识是50,则判断该数据标识是处于1-250这个数据段,然后判断出该数据段与第一个缓存节点对应。则确定出该待查询的缓存节点为该第一缓存节点。
第三种,如果每个缓存节点中存储的数据标识的末尾位进行取模运算后可得到不同运算结果,则可根据该数据标识末尾位进行取模运算后得到的结果确定待查询的缓存节点。
仍以前述步骤302中第三种划分第一缓存空间的例子为例,在从接收到的查询请求中获取到该第一数据标识时,首先对该第一数据标识进行取模运算,然后判断该运算结果对应的缓存节点,将该缓存节点确定为待查询的缓存节点。
比如,对数据标识的末尾位进行取模3运算以例,如果接收到的查询请求携带的第一数据标识是50,则对50进行取模3运算,运算的结果是2,然后判断出2与第三个缓存节点对应。则确定出该待查询的缓存节点为该第三缓存节点。
可选的,当该第一缓存空间只有一个缓存节点时,该确定待查询的缓存节点即为该第一缓存空间。
在步骤403中,根据该第一数据标识,查询该待查询的缓存节点。
因为,第一缓存空间中存储了数据库中所有的数据的数据标识,且由步骤302可知,第一缓存空间包括的同一个缓存节点内存储了具有相同特点的数据标识,不同的缓存节点内存储了不同特点的数据标识。所以当该待查询的缓存节点中包括该第一数据标识时,则说明该第一数据标识对应的数据一定在数据库中;如果该待查询的缓存节点中不包括该第一数据标识时,该第一数据标识对应的数据一定不在第二缓存空间和数据库中。
本步骤可以为:将该第一数据标识与确定的待查询的缓存节点中的每个数据标识进行比对,如果在该待查询的缓存节点中查找到与该第一数据标识相同的数据标识时,则执行步骤404;如果该待查询的缓存节点中没查找到与该第一数据标识相同的数据标识时,则拒绝该查询请求,结束操作。
可选的,当该第一缓存空间只有一个缓存节点时,本步骤可以为:将该第一数据标识与第一缓存空间中的每个数据标识进行比对,如果在该第一缓存空间中查找到与该第一数据标识相同的数据标识时,则执行步骤404;如果在该第一缓存空间中没查找到与该第一数据标识相同的数据标识时,则拒绝该查询请求,结束操作。
在该待查询的缓存节点中没查找到与该第一数据标识相同的数据标识时,拒绝该查询请求,以防止恶意分子故意大量查询没有存储在数据库中的数据,从而增加数据库的访问量,导致系统崩溃,正常的服务不能继续的问题。
在步骤404中,在该第一缓存空间中查询到该第一数据标识时,根据该第一数据标识查询第二缓存空间。
该第二缓存空间包括该数据库中存储的部分或全部数据,以及与该部分或全部数据对应的第二数据标识。该部分或全部数据以及该第二数据标识可以通过如下方法得到:将距当前最近预设时间内查询的第二数据以及与该第二数据对应的第二数据标识缓存在该第二缓存空间中,或者是将查询频率满足预设值的的第二数据以及与该第二数据对应的第二数据标识缓存在该第二缓存空间中。当然该第二缓存空间中存储的第二数据及第二数据标识还可以通过其它方法得到,在这里不做限制。
本步骤可以为:将该第一数据标识与该第二缓存空间中的每个数据标识进行比对,查找到与该第一数据标识相同的数据标识时,返回与该第一数据标识对应的数据,操作结束;如果该第二缓存空间中没有查找到与该第一数据标识相同的数据标识时,则执行步骤405。
在步骤405中,在该第二缓存空间中没有查询到该第一数据标识对应的数据时,则根据该第一数据标识查询该数据库。
由于第一缓存空间中存储了该数据库中存储的每个数据的数据标识,所以当该第一数据标识不在第二缓存空间时,该数据标识一定在该数据库中。所以在该第二缓存空间中没有查询到该第一数据标识对应的数据时,则该第一数据标识对应的数据一定在数据库中,所以根据该第一数据标识查询该数据库,返回与该第一数据标识对应的数据。
本步骤可以为:将该第一数据标识与该数据库中的每个数据标识进行比对,查找到与该第一数据标识相同的数据标识时,返回与该第一数据标识对应的数据,操作结束。
综上所述,本公开实施例中提供的数据查询方法,通过设置第一缓存空间,并在该第一缓存空间中缓存数据库中所有数据的数据标识,使得当接收到数据查询请求时,可以首先查询该第一缓存空间中是否存储有该数据标识,如果有,则说明该数据标识对应的数据一定在数据库中,那么继续查询与该数据标识对应的数据,然后返回查询到的数据标识;如果该数据标识不在该第一缓存空间中,则拒绝该查询请求;因此,在查询数据时,只能查询数据库中已存储的数据,对于数据库中没有存储的数据直接拒绝查询请求,所以解决了恶意分子通过故意大量查询没有存储在数据库中的数据,从而增加数据库的访问量,增大数据库的压力,进而导致系统崩溃,正常的服务不能继续的问题;达到了减小数据库压力,提高数据库的安全性的效果。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
图5A是根据一示例性实施例示出的一种数据查询装置的框图,如图5A所示,该数据查询装置包括但不限于:接收模块501、第一查询模块502、第二查询模块503、第三查询模块504。
接收模块501,被配置为接收查询请求,该查询请求携带待查找的第一数据标识。
第一查询模块502,被配置为根据该接收模块501接收到的该第一数据标识查询第一缓存空间,该第一缓存空间包括数据库中存储的各数据的数据标识。
第二查询模块503,被配置为该第一查询模块502在该第一缓存空间中查询到该第一数据标识时,根据该第一数据标识查询第二缓存空间,该第二缓存空间包括该数据库中存储的部分或全部数据及与该部分或全部数据对应的数据标识。
第三查询模块504,被配置为该第二查询模块503在该第二缓存空间中没有查询到该第一数据标识对应的数据时,则根据该第一数据标识查询该数据库。
可选的,该第一缓存空间包括多个缓存节点,该多个缓存节点中的每个缓存节点用于缓存不同的数据标识。
一般情况下,数据库中会包括较多数据,而且每个数据会包括多个数据内容,为了使用方便可以为该每个数据设置一个数据标识,用该数据标识代表该数据。比如,一个数据库是某个学校的学生教学信息管理系统,该系统中的每个数据包括了一个学生几乎所有的信息,示例性的,该系统中一个数据为以下所有信息:姓名、性别、年龄、身高、年级、院系、专业、编号、课程、成绩等。为了管理方便可以为该每个数据设置一个数据标识,比如可以用学生的学号代表与该学生对应的数据以及数据中的所有数据内容。
在将数据存入数据库时,可以通过如下三种方法为数据设置数据标识:
第一种,可以根据数据内容的特点为数据设置数据标识。
比如,一个数据内容包括多个信息,可以从该多个信息中选取一个或是几个信息,并将该一个或是几个信息使用字符表示,进而得到与该数据对应的数据标识。示例性的,仍以上述学生教学信息管理系统为例,则可选取每个数据中的年级、院系、专业和编号这四个信息作为每个数据的数据标识。
可选的,可以根据选取的信息的数量,将数据标识设置为由多个字符段组成的字符串,每个信息用一个字符段表示,每个字符段又由多个字符组成。仍以上述学生教学信息管理系统为例,选取每个数据中的年级、院系、专业和编号这四个信息作为每个数据的数据标识,则该数据标识由四个字符段组成。第一个信息,也即年级,用第一字符段表示,由四个字符组成;第二个信息,也即院系,用第二字符段表示,由两个字符组成;第三个信息,也即专业,用第三字符段表示,由两个字符组成;第四个信息,也即编号,用第四字符段表示,由四个字符组成。
第二种,可以根据该数据存入该数据库的先后顺序为数据设置数据标识。比如,将第一个存入数据库中的数据的数据标识设置为1,将第二个存入数据库中的数据的数据标识设置为2,将第三个存入数据库中的数据的数据标识设置为3,以此类推,为存入数据库中的每个数据设置数据标识。
当然也可以根据要存储的数据的复杂度或是其它因素,为数据库的数据设置数据标识,在这里不做限制。
可选的,当该数据库中的数据发生变化时,对应修改该发生变化的数据的数据标识。可选的,数据库中增加一个数据,则为该增加的数据设置对应数据标识;数据库中删除一个数据,则删除该数据对应的数据标识。例如,在上述教学信息管理系统中增加了一个学生的数据,则对应增加与该学生的数据对应的数据标识,示例性的,如果在该学校2012年级,计算机院系,计算机科学与技术专业增加了一名学生的数据,则增加该学生的数据对应的数据标识:201208240726;如果在该学校2012年级,计算机院系,计算机科学与技术专业删除了一名学生的数据(与该数据对应的数据标识是201208240725),则删除该学生的数据对应的数据标识:201208240725。
可选的,在某个数据不发生变化时,也可以修改该数据的数据标识。比如,在另外一个数据库中,一个数据为A,与A对应的数据标识是1,另一个数据是B,与B对应的数据标识是2。可以将A和B的数据标识交换,使数据A与数据标识2对应,而数据B与数据标识1对应。
本公开中的数据库为广义数据库,该数据库可以为任意类型的数据库,比如,可以为关系型数据库,分布式数据库,层次型数据库;还可以是一些后端系统,比如向用户提供数据的服务器。
用户可以通过数据库系统提供的用户界面输入查询请求,该查询请求至少携带有待查找的第一数据的第一数据标识,当然还可以携带有缓存节点标识等其它信息。比如,该查询请求是:201208240725,或者是:一年级、1208240725。
可选的,参见图5B,该装置还包括但不限于:
缓存模块505,被配置为将该数据库中存储的每个数据的数据标识缓存在该第一缓存空间中。
该第一缓存空间可包括多个缓存节点,该多个缓存节点中的每个缓存节点用于缓存不同的数据标识。该多个缓存节点可以根据数据标识的特点将该第一缓存空间划分得到。下面例举了几种将第一缓存空间划分为多个缓存节点的方法:
第一种,可以根据数据标识自身的特点将第一缓存空间划分为多个缓存节点。
比如,第一缓存空间中缓存了某个学校的硕士研究生教学信息管理系统中的每个数据的数据标识,那么这些数据标识一般会体现学生的年级、院系、专业等。所以该第一缓存空间包括的缓存节点可以根据年级进行划分,也可以根据院系进行划分,还可以根据专业进行划分。假如该第一缓存空间包括的缓存节点根据年级进行划分,那么可以把第一缓存空间划分为三个节点,第一个节点用来存储硕士研究生一年级学生的每个数据的数据标识;第二个节点用来存储硕士研究生二年级学生的每个数据的数据标识;第三个节点用来存储硕士研究生三年级学生的每个数据的数据标识。
第二种,如果该数据标识是简单的顺序编号,比如数据标识使用大于等于1的整数连续编号,则可以根据数据标识的数量和编号顺序将第一缓存空间划分为多个缓存节点。
第三种,对数据标识的末尾位进行取模运算,根据运算结果的可能划分第一缓存空间。
比如,对数据标识的末尾位进行取模3运算,那么运算结果只有0、1和2三种可能,则将第一缓存空间划分为三个缓存节点,第一个缓存节点用于存储数据标识末尾位取模3运算后结果为0的数据标识,第二个缓存节点用于存储数据标识末尾位取模3运算后结果为1的数据标识,第三个缓存节点用于存储数据标识末尾位取模3运算后结果为2的数据标识。
上述划分第一缓存空间的方法要求数据库中数据标识的末尾位为数字,但如果有数据标识的末尾位并非为数字,则可以建立该非数字字符与数字的对应的关系,将该非数字字符转换为数字后,再进行取模运算。
当然还可以根据第一缓存空间中缓存的数据标识的其它特点,将第一缓存空间划分为多个缓存节点,在这里有做一一介绍。
将该第一缓存空间划分为多个缓存节点后,每个节点中存储具有相同特性的数据标识,而两个不同的缓存节点内存储的数据标识具有不同的特点。比如,将上述学生教学信息管理系统中的数据标识按照年级存储在三个缓存节点中,则在每一个缓存节点中都存储了同一个年级学生的数据的数据标识,以使得在查询某个数据标识时,可以首先确定与该数据标识对应的缓存节点,然后从该确定的缓存节点中查询该数据标识,以提高查询速度。
可选的,参见图5C,该第一查询模块502,包括但不限于:确定子模块5021、查询子模块5022。
确定子模块5021,用于根据该接收模块501接收的该第一数据标识,确定待查询的缓存节点。
查询子模块5022,用于根据该接收模块501接收的该第一数据标识,查询该待查询的缓存节点。
可选的,可以根据第一缓存空间的划分方法来确定待查询的缓存节点。本实施例给出三种确定待查询的缓存节点的方法,这三种方法分别与前述缓存模块505中划分第一缓存空间的方法对应。
第一种,可以根据每个缓存节点中存储的数据标识的自身特点来确定待查询的缓存节点。
仍以前述某个学校的硕士研究生教学信息管理系统为例,由于将该系统的第一缓存空间划分为三个缓存节点,每个缓存节点存储一个年级学生的数据标识,所以在从接收到的查询请求中获取到该第一数据标识时,首先判断该第一数据标识对应的年级,再根据年级与缓存节点的对应关系确定待查询的缓存节点。
第二种,如果每个缓存节点中存储的数据标识是简单的顺序编号,则根据该顺序编号确定待查询的缓存节点。
仍以前述缓存模块505中第二种划分第一缓存空间的例子为例,在从接收到的查询请求中获取到该第一数据标识时,首先判断该第一数据标识在哪个数据段内,然后判断该数据段对应的缓存节点,将该缓存节点确定为待查询的缓存节点。
第三种,如果每个缓存节点中存储的数据标识的末尾位进行取模运算后可得到不同运算结果,则可根据该数据标识末尾位进行取模运算后得到的结果确定待查询的缓存节点。
仍以前述缓存模块505中第三种划分第一缓存空间的例子为例,在从接收到的查询请求中获取到该第一数据标识时,首先对该第一数据标识进行取模运算,然后判断该运算结果对应的缓存节点,将该缓存节点确定为待查询的缓存节点。
可选的,当该第一缓存空间只有一个缓存节点时,该确定待查询的缓存节点即为该第一缓存空间。
该第二缓存空间包括该数据库中存储的部分或全部数据,以及与该部分或全部数据对应的第二数据标识。该部分或全部数据以及该第二数据标识可以通过如下方法得到:将距当前最近预设时间内查询的第二数据以及与该第二数据对应的第二数据标识缓存在该第二缓存空间中,或者是将查询频率满足预设值的的第二数据以及与该第二数据对应的第二数据标识缓存在该第二缓存空间中。当然该第二缓存空间中存储的第二数据及第二数据标识还可以通过其它方法得到,在这里不做限制。
可选的,仍旧参见图5B,该装置还包括但不限于:
更新模块506,被配置为在该数据库中的数据发生变化时,根据该发生变化的数据,更新该第一缓存空间。
可选的,参见图5D,该更新模块506,包括但不限于:缓存子模块5061、删除子模块5062。
缓存子模块5061,用于在向该数据库中存储数据时,将该存储的数据的数据标识缓存到该第一缓存空间中。
删除子模块5062,用于在从该数据库中删除数据时,将该删除的数据的数据标识从该第一缓存空间中删除。
可选的,当该数据库中的数据标识发生变化时,根据该发生变化的数据标识,更新该第一缓存空间。比如,在向该数据库中存储数据时,将该存储的数据的数据标识缓存到该第一缓存空间中;在从该数据库中删除数据时,将该删除的数据的数据标识从该第一缓存空间中删除。
综上所述,本公开实施例中提供的数据查询装置,通过设置第一缓存空间,并在该第一缓存空间中缓存数据库中所有数据的数据标识,使得当接收到数据查询请求时,可以首先查询该第一缓存空间中是否存储有该数据标识,如果有,则说明该数据标识对应的数据一定在数据库中,那么继续查询与该数据标识对应的数据,然后返回查询到的数据标识;如果该数据标识不在该第一缓存空间中,则拒绝该查询请求;因此,在查询数据时,只能查询数据库中已存储的数据,对于数据库中没有存储的数据直接拒绝查询请求,所以解决了恶意分子通过故意大量查询没有存储在数据库中的数据,从而增加数据库的访问量,增大数据库的压力,进而导致系统崩溃,正常的服务不能继续的问题;达到了减小数据库压力,提高数据库的安全性的效果。
综上所述,本公开实施例中提供的数据标识缓存装置,还通过将数据库中所有数据标识缓存在第一缓存空间,使得在接收到数据查询请求后,仅通过查询第一缓存空间就可以判断该要查询的数据是否存储在数据库中,如果存储在数据库中则响应该查询请求,如果不在数据库中则拒绝该查询请求,由于拒绝查询数据库中并没有的数据;从而解决了恶意分子通过故意大量查询没有存储在数据库中的数据,从而增加数据库的访问量,增大数据库的压力,进而导致系统崩溃,正常的服务不能继续的问题;达到了减小数据库压力,提高数据库的安全性的效果。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开一示例性实施例提供了一种数据查询装置,能够实现本公开提供的数据查询方法,该数据查询装置包括:处理器、用于存储处理器可执行指令的存储器;
其中,处理器被配置为:
接收查询请求,所述查询请求携带待查找的第一数据标识;
根据所述第一数据标识查询第一缓存空间,所述第一缓存空间包括数据库中存储的各数据的数据标识;
在所述第一缓存空间中查询到所述第一数据标识时,根据所述第一数据标识查询第二缓存空间,所述第二缓存空间包括所述数据库中存储的部分或全部数据及与所述部分或全部数据对应的数据标识;
在所述第二缓存空间中没有查询到所述第一数据标识对应的数据时,则根据所述第一数据标识查询所述数据库。
综上所述,本公开实施例中提供的数据查询装置,通过设置第一缓存空间,并在该第一缓存空间中缓存数据库中所有数据的数据标识,使得当接收到数据查询请求时,可以首先查询该第一缓存空间中是否存储有该数据标识,如果有,则说明该数据标识对应的数据一定在数据库中,那么继续查询与该数据标识对应的数据,然后返回查询到的数据标识;如果该数据标识不在该第一缓存空间中,则拒绝该查询请求;因此,在查询数据时,只能查询数据库中已存储的数据,对于数据库中没有存储的数据直接拒绝查询请求,所以解决了恶意分子通过故意大量查询没有存储在数据库中的数据,从而增加数据库的访问量,增大数据库的压力,进而导致系统崩溃,正常的服务不能继续的问题;达到了减小数据库压力,提高数据库的安全性的效果。
图6是根据一示例性实施例示出的一种数据查询的框图。例如,装置600可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图6,装置600可以包括以下一个或多个组件:处理组件602,存储器604,电源组件606,多媒体组件608,音频组件610,输入/输出(I/O)接口612,传感器组件614,以及通信组件616。
处理组件602通常控制装置600的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件602可以包括一个或多个处理器618来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件602可以包括一个或多个模块,便于处理组件602和其他组件之间的交互。例如,处理组件602可以包括多媒体模块,以方便多媒体组件608和处理组件602之间的交互。
存储器604被配置为存储各种类型的数据以支持在装置600的操作。这些数据的示例包括用于在装置600上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器604可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件606为装置600的各种组件提供电力。电源组件606可以包括电源管理系统,一个或多个电源,及其他与为装置600生成、管理和分配电力相关联的组件。
多媒体组件608包括在装置600和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件608包括一个前置摄像头和/或后置摄像头。当装置600处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件610被配置为输出和/或输入音频信号。例如,音频组件610包括一个麦克风(MIC),当装置600处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器604或经由通信组件616发送。在一些实施例中,音频组件610还包括一个扬声器,用于输出音频信号。
I/O接口612为处理组件602和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件614包括一个或多个传感器,用于为装置600提供各个方面的状态评估。例如,传感器组件614可以检测到装置600的打开/关闭状态,组件的相对定位,例如组件为装置600的显示器和小键盘,传感器组件614还可以检测装置600或装置600一个组件的位置改变,用户与装置600接触的存在或不存在,装置600方位或加速/减速和装置600的温度变化。传感器组件614可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件614还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件614还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件616被配置为便于装置600和其他设备之间有线或无线方式的通信。装置600可以接入基于通信标准的无线网络,如Wi-Fi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件616经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件616还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置600可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述数据查询方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器604,上述指令可由装置600的处理器618执行以完成上述数据查询方法。例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置600的处理器执行时,使得装置600能够执行一种数据查询方法,所述方法包括:
接收查询请求,所述查询请求携带待查找的第一数据标识;
根据所述第一数据标识查询第一缓存空间,所述第一缓存空间包括数据库中存储的各数据的数据标识;
在所述第一缓存空间中查询到所述第一数据标识时,根据所述第一数据标识查询第二缓存空间,所述第二缓存空间包括所述数据库中存储的部分或全部数据及与所述部分或全部数据对应的数据标识;
在所述第二缓存空间中没有查询到所述第一数据标识对应的数据时,则根据所述第一数据标识查询所述数据库。
可选的,在所述根据所述第一数据标识查询第一缓存空间之前,所述方法还包括:
将所述数据库中存储的每个数据的数据标识缓存在所述第一缓存空间中。
可选的,在所述根据所述第一数据标识查询第一缓存空间之前,所述方法还包括:
在所述数据库中的数据发生变化时,根据所述发生变化的数据,更新所述第一缓存空间。
可选的,所述在所述数据库中的数据发生变化时,根据所述发生变化的数据,更新所述第一缓存空间,包括:
在向所述数据库中存储数据时,将所述存储的数据的数据标识缓存到所述第一缓存空间中;
在从所述数据库中删除数据时,将所述删除的数据的数据标识从所述第一缓存空间中删除。
可选的,所述第一缓存空间包括多个缓存节点,所述多个缓存节点中的每个缓存节点用于缓存不同的数据标识;
可选的,所述根据所述第一数据标识查询第一缓存空间,包括:
根据所述第一数据标识,确定待查询的缓存节点;
根据所述第一数据标识,查询所述待查询的缓存节点。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (9)
1.一种数据查询方法,其特征在于,所述方法包括:
将所述数据库中存储的每个数据的数据标识缓存在第一缓存空间中;
接收查询请求,所述查询请求携带待查找的第一数据标识;
根据所述第一数据标识查询第一缓存空间,所述第一缓存空间包括数据库中存储的各数据的数据标识;
在所述第一缓存空间中查询到所述第一数据标识时,根据所述第一数据标识查询第二缓存空间,所述第二缓存空间包括所述数据库中存储的部分或全部数据及与所述部分或全部数据对应的数据标识;
在所述第二缓存空间中没有查询到所述第一数据标识对应的数据时,则根据所述第一数据标识查询所述数据库;
所述将所述数据库中存储的每个数据的数据标识缓存在所述第一缓存空间中,包括:
根据所述数据标识的数量和编号顺序将所述第一缓存空间划分为多个缓存节点;或,
对所述数据标识的末尾进行取模运算,根据运算结果划分所述第一缓存空间。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述数据库中的数据发生变化时,根据所述发生变化的数据,更新所述第一缓存空间。
3.根据权利要求2所述的方法,其特征在于,所述在所述数据库中的数据发生变化时,根据所述发生变化的数据,更新所述第一缓存空间,包括:
在向所述数据库中存储数据时,将所述存储的数据的数据标识缓存到所述第一缓存空间中;
在从所述数据库中删除数据时,将所述删除的数据的数据标识从所述第一缓存空间中删除。
4.根据权利要求1所述的方法,其特征在于,所述第一缓存空间包括多个缓存节点,所述多个缓存节点中的每个缓存节点用于缓存不同的数据标识;
所述根据所述第一数据标识查询第一缓存空间,包括:
根据所述第一数据标识,确定待查询的缓存节点;
根据所述第一数据标识,查询所述待查询的缓存节点。
5.一种数据查询装置,其特征在于,所述装置包括:
缓存模块,被配置为将所述数据库中存储的每个数据的数据标识缓存在第一缓存空间中;
接收模块,被配置为接收查询请求,所述查询请求携带待查找的第一数据标识;
第一查询模块,被配置为根据所述接收模块接收到的所述第一数据标识查询第一缓存空间,所述第一缓存空间包括数据库中存储的各数据的数据标识;
第二查询模块,被配置为所述第一查询模块在所述第一缓存空间中查询到所述第一数据标识时,根据所述第一数据标识查询第二缓存空间,所述第二缓存空间包括所述数据库中存储的部分或全部数据及与所述部分或全部数据对应的数据标识;
第三查询模块,被配置为所述第二查询模块在所述第二缓存空间中没有查询到所述第一数据标识对应的数据时,则根据所述第一数据标识查询所述数据库;
所述缓存模块,被配置为根据所述数据标识的数量和编号顺序将所述第一缓存空间划分为多个缓存节点;或,
对所述数据标识的末尾进行取模运算,根据运算结果划分所述第一缓存空间。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
更新模块,被配置为在所述数据库中的数据发生变化时,根据所述发生变化的数据,更新所述第一缓存空间。
7.根据权利要求6所述的装置,其特征在于,所述更新模块,包括:
缓存子模块,用于在向所述数据库中存储数据时,将所述存储的数据的数据标识缓存到所述第一缓存空间中;
删除子模块,用于在从所述数据库中删除数据时,将所述删除的数据的数据标识从所述第一缓存空间中删除。
8.根据权利要求5所述的装置,其特征在于,所述第一缓存空间包括多个缓存节点,所述多个缓存节点中的每个缓存节点用于缓存不同的数据标识;
所述第一查询模块,包括:
确定子模块,用于根据所述接收模块接收的所述第一数据标识,确定待查询的缓存节点;
查询子模块,用于根据所述接收模块接收的所述第一数据标识,查询所述待查询的缓存节点。
9.一种数据查询装置,其特征在于,所述装置包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为:
将所述数据库中存储的每个数据的数据标识缓存在第一缓存空间中;
接收查询请求,所述查询请求携带待查找的第一数据标识;
根据所述第一数据标识查询第一缓存空间,所述第一缓存空间包括数据库中存储的各数据的数据标识;
在所述第一缓存空间中查询到所述第一数据标识时,根据所述第一数据标识查询第二缓存空间,所述第二缓存空间包括所述数据库中存储的部分或全部数据及与所述部分或全部数据对应的数据标识;
在所述第二缓存空间中没有查询到所述第一数据标识对应的数据时,则根据所述第一数据标识查询所述数据库;
所述将所述数据库中存储的每个数据的数据标识缓存在所述第一缓存空间中,包括:
根据所述数据标识的数量和编号顺序将所述第一缓存空间划分为多个缓存节点;或,
对所述数据标识的末尾进行取模运算,根据运算结果划分所述第一缓存空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610224750.6A CN105843951B (zh) | 2016-04-12 | 2016-04-12 | 数据查询方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610224750.6A CN105843951B (zh) | 2016-04-12 | 2016-04-12 | 数据查询方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105843951A CN105843951A (zh) | 2016-08-10 |
CN105843951B true CN105843951B (zh) | 2019-12-13 |
Family
ID=56597467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610224750.6A Active CN105843951B (zh) | 2016-04-12 | 2016-04-12 | 数据查询方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105843951B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106815334A (zh) * | 2016-12-30 | 2017-06-09 | 晶赞广告(上海)有限公司 | 一种用于终端的数据查询方法及装置 |
CN108874806A (zh) * | 2017-05-09 | 2018-11-23 | 广东神马搜索科技有限公司 | 数据查询方法、装置及数据存储系统 |
CN108170783A (zh) * | 2017-12-26 | 2018-06-15 | 北京比特大陆科技有限公司 | 数据获取方法、装置及电子设备 |
CN108874873B (zh) * | 2018-04-26 | 2022-04-12 | 北京空间科技信息研究所 | 数据查询方法、装置、存储介质及处理器 |
CN108874894A (zh) * | 2018-05-21 | 2018-11-23 | 平安科技(深圳)有限公司 | 交叉表导出方法、装置、计算机设备和存储介质 |
CN110209874B (zh) * | 2019-04-24 | 2021-08-20 | 北京奇艺世纪科技有限公司 | 信息处理方法、装置、电子设备及存储介质 |
CN111949857A (zh) * | 2020-08-13 | 2020-11-17 | 中国民航信息网络股份有限公司 | 一种航班查询请求的处理方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101330431A (zh) * | 2007-06-19 | 2008-12-24 | 阿里巴巴集团控股有限公司 | 一种即时信息存储方法和系统 |
CN101765096A (zh) * | 2008-12-26 | 2010-06-30 | 中兴通讯股份有限公司 | 定购关系查询方法、装置和系统 |
CN102331986A (zh) * | 2010-07-12 | 2012-01-25 | 阿里巴巴集团控股有限公司 | 一种数据库缓存管理方法及一种数据库服务器 |
CN103853727A (zh) * | 2012-11-29 | 2014-06-11 | 深圳中兴力维技术有限公司 | 提高大数据量查询性能的方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7529759B2 (en) * | 2004-05-21 | 2009-05-05 | Bea Systems, Inc. | System and method for batch operation of CMP beans |
-
2016
- 2016-04-12 CN CN201610224750.6A patent/CN105843951B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101330431A (zh) * | 2007-06-19 | 2008-12-24 | 阿里巴巴集团控股有限公司 | 一种即时信息存储方法和系统 |
CN101765096A (zh) * | 2008-12-26 | 2010-06-30 | 中兴通讯股份有限公司 | 定购关系查询方法、装置和系统 |
CN102331986A (zh) * | 2010-07-12 | 2012-01-25 | 阿里巴巴集团控股有限公司 | 一种数据库缓存管理方法及一种数据库服务器 |
CN103853727A (zh) * | 2012-11-29 | 2014-06-11 | 深圳中兴力维技术有限公司 | 提高大数据量查询性能的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105843951A (zh) | 2016-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105843951B (zh) | 数据查询方法和装置 | |
CN106354840B (zh) | 文件处理方法、装置及分布式文件系统 | |
CN108304475B (zh) | 数据查询方法、装置及电子设备 | |
CN105489220B (zh) | 语音识别方法及装置 | |
EP2975821A1 (en) | Network connection method and apparatus | |
CN109388625B (zh) | 多分布式文件系统中处理配置文件的方法及装置 | |
CN107315487B (zh) | 一种输入处理方法、装置及电子设备 | |
CN106896991B (zh) | 一种更新信息的方法及装置 | |
US20160314164A1 (en) | Methods and devices for sharing cloud-based business card | |
CN114090575A (zh) | 基于键值数据库的数据存储方法、检索方法及相应的装置 | |
US20150350120A1 (en) | Method and device for managing instant message | |
US20160006787A1 (en) | Methods and devices for visiting a webpage | |
CN104951522B (zh) | 一种进行搜索的方法和装置 | |
CN110928425A (zh) | 信息监控方法及装置 | |
CN106960026B (zh) | 搜索方法、搜索引擎和电子设备 | |
CN106506808B (zh) | 对通讯消息提示的方法及装置 | |
CN110795314B (zh) | 一种检测慢节点的方法、装置及计算机可读存储介质 | |
CN105872230B (zh) | 电话号码翻译方法及装置 | |
US9854559B2 (en) | Method and device for pushing user information | |
CN109842688B (zh) | 一种内容推荐方法、装置、电子设备及存储介质 | |
CN109522286B (zh) | 文件系统的处理方法和装置 | |
CN111382161A (zh) | 状态数据处理方法、装置、电子设备及存储介质 | |
CN106155696B (zh) | 删除信息的方法及装置 | |
CN106959970B (zh) | 词库、词库的处理方法、装置和用于处理词库的装置 | |
CN110941670B (zh) | 标记状态检测方法、装置、设备及存储介质 |
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 |