CN110109953B - 一种数据查询方法、装置及设备 - Google Patents

一种数据查询方法、装置及设备 Download PDF

Info

Publication number
CN110109953B
CN110109953B CN201810053977.8A CN201810053977A CN110109953B CN 110109953 B CN110109953 B CN 110109953B CN 201810053977 A CN201810053977 A CN 201810053977A CN 110109953 B CN110109953 B CN 110109953B
Authority
CN
China
Prior art keywords
data set
query request
resource
data
information
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
Application number
CN201810053977.8A
Other languages
English (en)
Other versions
CN110109953A (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 Group Holding 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 CN201810053977.8A priority Critical patent/CN110109953B/zh
Priority to PCT/CN2019/071357 priority patent/WO2019141134A1/zh
Priority to EP19741895.7A priority patent/EP3742306A4/en
Priority to JP2020539715A priority patent/JP2021511588A/ja
Publication of CN110109953A publication Critical patent/CN110109953A/zh
Priority to US16/932,596 priority patent/US11734271B2/en
Application granted granted Critical
Publication of CN110109953B publication Critical patent/CN110109953B/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/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • 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/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • 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/245Query processing
    • G06F16/2453Query optimisation
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/288Entity relationship models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Abstract

本申请提供一种数据查询方法、装置及设备,该方法包括:接收客户端发送的查询请求;确定与所述查询请求对应的数据集的资源占用信息;若根据所述资源占用信息确定对所述查询请求进行缓存,则获取与所述查询请求对应的数据集,并在外存储器中存储所述数据集;从所述外存储器中读取所述数据集,并将所述数据集发送给客户端。通过本申请的技术方案,可以避免短时间内向客户端返回多个数据集,从而减轻CPU资源、内存资源、网络带宽的占用,避免客户端查询超时或者失败,提高用户使用感受。

Description

一种数据查询方法、装置及设备
技术领域
本申请涉及互联网技术领域,尤其涉及一种数据查询方法、装置及设备。
背景技术
分析型数据库是一种实时计算引擎,能够对海量数据进行任意维度的分析和统计,支持高并发、低延时(毫秒级响应)、实时在线分析、海量数据查询等功能。其中,分析型数据库可以存储大量数据,在接收到客户端发送的查询请求后,可以查询与该查询请求对应的数据,并将查询到的数据返回给客户端。
但是,在某些场景下(如地图数据的查询场景、画像数据的查询场景等),可能在短时间接收到多个查询请求(即并发数很高),每个查询请求对应的数据量较大,这样,需要在短时间内处理多个查询请求,针对每个查询请求返回大量数据,从而导致CPU(CentralProcessing Unit,中央处理器)资源、内存资源、网络带宽等出现异常,导致客户端查询超时或者失败,影响用户使用感受。
发明内容
本申请提供一种数据查询方法,应用于前端服务器,所述方法包括:
接收客户端发送的查询请求;
确定与所述查询请求对应的数据集的资源占用信息;
若根据所述资源占用信息确定对所述查询请求进行缓存,则获取与所述查询请求对应的数据集,并在外存储器中存储所述数据集;
从所述外存储器中读取所述数据集,并将所述数据集发送给客户端。
本申请提供一种数据查询装置,应用于前端服务器,所述装置包括:
接收模块,用于接收客户端发送的查询请求;
确定模块,用于确定与所述查询请求对应的数据集的资源占用信息;
获取模块,用于在根据所述资源占用信息确定对所述查询请求进行缓存时,则获取与所述查询请求对应的数据集;
存储模块,用于在外存储器中存储所述数据集;
发送模块,用于从外存储器中读取数据集,并将所述数据集发送给客户端。
本申请提供一种前端服务器,所述前端服务器包括:
接收器,用于接收客户端发送的查询请求;
处理器,用于确定与所述查询请求对应的数据集的资源占用信息;若根据所述资源占用信息确定对所述查询请求进行缓存,则获取与所述查询请求对应的数据集,在外存储器中存储所述数据集;从外存储器中读取所述数据集;
发射器,用于将所述数据集发送给客户端。
基于上述技术方案,本申请实施例中,在接收到查询请求后,不是直接将数据集发送给客户端,而是先在外存储器中存储查询请求、数据集,这样,可以将查询请求对应的数据集缓存在本地,从而可以避免短时间内处理多个查询请求,即避免短时间内向客户端返回多个数据集,从而减轻CPU资源、内存资源、网络带宽的占用,避免客户端查询超时或者失败,提高用户使用感受。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其它的附图。
图1是本申请一种实施方式中的系统结构示意图;
图2A和图2B是本申请一种实施方式中的查询请求处理示意图;
图3是本申请一种实施方式中的数据查询方法的流程图;
图4A-4C是本申请另一种实施方式中的数据查询方法的流程图;
图5A-5E是本申请一种实施方式中的效果示意图;
图6是本申请一种实施方式中的数据查询装置的结构图。
具体实施方式
在本申请使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例提出一种数据查询方法,可以应用于包括客户端、前端服务器(也可以称为前端节点front node)、计算服务器(也可以称为计算节点computenode)、数据库的系统,如用于实现分析型数据库(如Analytic DB,简称为ADS)的系统。当然,还可以包括其它服务器,如资源调度服务器,对此不做限制。
参见图1所示,为本申请实施例的应用场景示意图,客户端、前端服务器、计算服务器、数据库的数量均可以为一个或者多个。在图1中,以3个客户端、1个前端服务器、3个计算服务器、3个数据库为例进行说明。当然,客户端、前端服务器、计算服务器、数据库的数量还可以为其它数值,对此不做限制。
其中,分析型数据库是一种实时计算引擎,能够对海量数据进行任意维度的分析和统计,支持高并发、低延时、实时在线分析、海量数据查询等功能。
其中,客户端用于从数据库中查询数据,如可以是终端设备(如PC(PersonalComputer,个人计算机)、笔记本电脑、移动终端等)上的APP(Application,应用),也可以是终端设备上的浏览器,对此客户端的类型不做具体限制。
其中,数据库用于存储各种类型的数据,且能够将数据库中存储的数据提供给客户端。对于数据库中存储的数据的类型,本申请实施例中不做限制,如可以是用户数据、商品数据、地图数据、视频数据、图像数据、音频数据等。
其中,前端服务器用于接收客户端发送的查询请求,并对该查询请求进行SQL(Structured Query Language,结构化查询语言)解析,利用SQL解析结果生成调度请求,并将该调度请求发送给计算服务器,该调度请求用于请求与该查询请求对应的数据。接收计算服务器返回的数据,并将该数据发送给客户端。
其中,计算服务器用于接收前端服务器发送的调度请求,并利用该调度请求从数据库中读取与该调度请求对应的数据,并将该数据发送给前端服务器。
参见图2A所示,前端服务器可以启动多个线程,每个线程用于处理一个查询请求。例如,前端服务器在接收到查询请求1后,为查询请求1启动线程1,由线程1处理查询请求1,即执行将调度请求发送给计算服务器、将计算服务器返回的数据发送给客户端等操作,在将数据发送给客户端后,则释放线程1。在线程1工作时,若前端服务器接收到查询请求2,则为查询请求2启动线程2,由线程2处理查询请求2。在线程1、线程2工作时,若前端服务器接收到查询请求3,则为查询请求3启动线程3,由线程3处理查询请求3,以此类推。
综上所述,若前端服务器在短时间内接收到多个查询请求(即并发数很高),则前端服务器可以启动多个线程,并由多个线程分别对多个查询请求进行处理。进一步的,当每个查询请求对应的数据量较大时,则需要针对每个查询请求返回大量数据,从而导致CPU资源、内存资源、网络带宽等出现异常,导致前端服务器的处理性能下降,并导致客户端查询超时或者失败,影响用户使用感受。例如,针对每个查询请求返回大量数据时,而这些数据会占用大量的内存资源,从而存在内存溢出或者内存频繁回收等问题,从而导致查询超时或者失败。
针对上述发现,本申请实施例中,参见图2B所示,前端服务器可以启动多个查询线程,每个查询线程用于处理一个查询请求。此外,前端服务器可以启动一个调度线程,该调度线程用于依次处理外存储器中的查询请求。例如,前端服务器在接收到查询请求1后,为查询请求1启动查询线程1,由查询线程1处理查询请求1。在查询线程1工作时,若前端服务器接收到查询请求2,则为查询请求2启动查询线程2,由查询线程2处理查询请求2。在查询线程1、查询线程2工作时,若前端服务器接收到查询请求3、查询请求4、查询请求5等,不再为这些查询请求启动查询线程,而是将这些查询请求存储到外存储器中。
前端服务器可以启动调度线程,调度线程先处理外存储器中的查询请求3,在查询请求3处理完成之后,调度线程才处理外存储器中的查询请求4,在查询请求4处理完成之后,调度线程才处理外存储器中的查询请求5,以此类推。
综上所述,若前端服务器在短时间内接收到多个查询请求(即并发数很高),则可以控制查询线程的启动数量,可以避免短时间内处理多个查询请求,即避免短时间内向客户端返回大量数据,从而减轻CPU资源、内存资源、网络带宽的占用,提高处理性能,避免客户端查询超时或者失败,提高用户使用感受。
在上述应用场景下,参见图3所示,为本申请实施例中提出的数据查询方法的流程图,该方法可以应用于前端服务器,该方法可以包括以下步骤:
步骤301,接收客户端发送的查询请求。
步骤302,确定与该查询请求对应的数据集的资源占用信息。
步骤303,若根据该资源占用信息确定对该查询请求进行缓存,则获取与该查询请求对应的数据集,并在外存储器中存储该数据集。
步骤304,从该外存储器中读取数据集,并将该数据集发送给客户端。
在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
针对步骤301,在一个例子中,当客户端请求数据时,可以发送查询请求,前端服务器接收客户端发送的查询请求,该查询请求用于请求数据库中的数据。
针对步骤302,在确定与该查询请求对应的数据集的资源占用信息之后,若根据该资源占用信息确定不对该查询请求进行缓存,则可以获取与该查询请求对应的数据集,并将该数据集发送给客户端,而不在缓存数据集。
针对步骤303,获取与该查询请求对应的数据集,并在外存储器中存储该数据集的过程,可以包括但不限于:在外存储器中存储该查询请求对应的上下文信息。然后,从该外存储器中读取上下文信息,并利用所述上下文信息获取与该查询请求对应的数据集,并在该外存储器中存储该数据集。
针对步骤303,在一个例子中,前端服务器在接收到查询请求之后,可以直接在外存储器中存储该查询请求对应的上下文信息;或者,在满足某些特定条件时,前端服务器才可以在外存储器中存储该查询请求对应的上下文信息。
其中,用于存储查询请求对应的上下文信息、数据集(为了方便描述,将最终返回给客户端的数据称为数据集,后续过程中会介绍数据集)的存储介质是外存储器,而不是内存储器(即内存),从而避免占用内存储器的资源。外存储器是指除内存及CPU缓存以外的存储器,可以包括但不限于硬盘、软盘、光盘、U盘等,对此外存储器的类型不做限制,只要与内存储器不同即可。
其中,查询请求对应的上下文信息可以包括但不限于以下之一或者任意组合:查询请求对应的查询标识、查询请求的接收时间、查询请求对应的用户信息(如客户端的IP地址等)、查询请求对应的预测数据量、所述查询请求。参见表1所示,为查询请求对应的上下文信息的一个示例,对此不做限制。
表1
查询标识 接收时间 用户信息 预测数据量 查询请求
101 2017.11.6.14.16.10 IP地址A 25.6M 查询请求1
...
查询请求可以对应一个查询标识,该查询标识可以具有唯一性,即不同的查询请求的查询标识不同。通过这个查询标识(如表1中的查询标识101),前端服务器可以获取到接收时间、用户信息、预测数据量、查询请求等内容。
接收时间是指前端服务器接收到该查询请求的时间,即前端服务器在接收到查询请求时,可以记录该查询请求的接收时间,如2017.11.6.14.16.10等。
用户信息可以包括但不限于客户端的IP地址(查询请求的源IP地址)、用户身份信息(如用户名、密码等,可以从查询请求中获知),对此不做限制。
预测数据量是指确定的与查询请求对应的数据集的数据量(即数据集的数据大小)。例如,前端服务器在接收到查询请求1后,由于当前还没有真正获取查询请求1对应的数据集,因此,可以先确定与该查询请求1对应的数据集的数据量,这个数据量就是预测数据量,对此确定过程,将在后续过程中说明。
查询请求是前端服务器接收到的查询请求,包括查询请求携带的所有内容。
在一个例子中,针对“满足某些特定条件时,前端服务器才可以在外存储器中存储该查询请求对应的上下文信息”的过程,可以包括但不限于如下情况:
情况一、参见图4A所示,为数据查询方法的另一个流程图,该方法包括:
步骤411,确定与查询请求对应的数据集的资源占用信息。
步骤412,根据该资源占用信息确定是否对该查询请求进行缓存。
如果是,则可以执行步骤413;如果否,则可以执行步骤414。
步骤413,在外存储器中存储该查询请求对应的上下文信息。
进一步的,执行从外存储器中读取上下文信息,并利用所述上下文信息获取与该查询请求对应的数据集,并在外存储器中存储所述数据集等步骤。
步骤414,获取该查询请求对应的数据集,并将该数据集发送给客户端。
针对步骤302或者步骤411,在一个例子中,针对“确定与查询请求对应的数据集的资源占用信息”的过程,可以包括但不限于:通过该查询请求携带的数据标识查询映射表,得到该数据标识对应的数据集的资源占用信息;其中,该映射表用于记录数据标识与资源占用信息的对应关系。进一步的,为了生成映射表,则前端服务器在获取到与查询请求对应的数据集后,可以在所述映射表中记录该查询请求携带的数据标识与该数据集的资源占用信息的对应关系。
例如,前端服务器第一次接收到用于请求数据集A的查询请求后,通过该查询请求携带的数据标识(如数据集A对应的数据标识1)查询映射表,由于映射表中不存在该数据标识1对应的资源占用信息,因此,前端服务器确定资源占用信息为默认的资源占用信息1(资源占用信息1是根据经验预先配置的,当映射表中不存在数据标识对应的资源占用信息时,就确定出资源占用信息1)。
进一步的,前端服务器在获取到与该查询请求对应的数据集(在后续过程中,会介绍如何获取到与该查询请求对应的数据集)后,可以统计出该数据集的资源占用信息,假设资源占用信息为资源占用信息A,则可以在映射表中记录数据标识1与资源占用信息A的对应关系,如表2所示,为映射表的示例。
表2
数据标识 资源占用信息
数据标识1 资源占用信息A
前端服务器再次(如第二次、第三次等)接收到用于请求数据集A的查询请求后,通过该查询请求携带的数据标识1查询映射表,可以得到与数据标识1对应的资源占用信息A,即确定结果为资源占用信息A。前端服务器在获取到与该查询请求对应的数据集后,可以统计出该数据集的资源占用信息;若当前的统计结果与资源占用信息A相同,则保持资源占用信息A不变;若当前的统计结果与资源占用信息A不同,则使用当前的统计结果替换资源占用信息A。
在一个例子中,上述的资源占用信息可以包括但不限于以下之一或者任意组合:内存占用率、CPU占用率、数据集的数据量(即数据集的大小)。
针对“统计数据集的资源占用信息”的过程,可以包括:在得到与查询请求对应的数据集后,可以统计该数据集对应的内存占用率,即这个数据集占用了多少内存,如5%等,表示这个数据集占用了总内存的5%。在得到与查询请求对应的数据集后,可以统计该数据集对应的CPU占用率,即这个数据集占用了多少CPU,如5%等,表示这个数据集占用了总CPU的5%。在得到与查询请求对应的数据集后,可以统计该数据集对应的数据量,即这个数据集的大小。
针对步骤412,在一个例子中,针对“根据该资源占用信息确定是否对该查询请求进行缓存”的过程,可以包括但不限于如下方式:若该资源占用信息与前端服务器的当前占用资源之和,大于等于资源阈值,则可以确定对该查询请求进行缓存;或者,若该资源占用信息与前端服务器的当前占用资源之和,小于所述资源阈值,则可以确定不对该查询请求进行缓存。
假设资源占用信息包括内存占用率、CPU占用率、数据集的数据量,则资源阈值可以包括内存阈值(如85%)、CPU阈值(如90%)、数据量阈值(如200M)。前端服务器可以统计当前内存使用情况(如60%,表示当前已经被使用了60%的内存),当前CPU使用情况(如60%,表示当前已经被使用了60%的CPU),当前带宽使用情况(如100M,表示当前被占用了100M的带宽)。
然后,若内存占用率与当前内存使用情况之和小于内存阈值,且CPU占用率与当前CPU使用情况之和小于CPU阈值,且数据集的数据量与当前带宽使用情况之和小于数据量阈值,则确定不对查询请求进行缓存。若下述三个条件满足一个或者多个,则确定对查询请求进行缓存:内存占用率与当前内存使用情况之和大于等于内存阈值,CPU占用率与当前CPU使用情况之和大于等于CPU阈值,数据集的数据量与当前带宽使用情况之和大于等于数据量阈值。
在一个例子中,资源阈值(如内存阈值、CPU阈值、数据量阈值等)可以是根据经验配置的固定值,即资源阈值不会发生变化。在另一个例子中,资源阈值还可以动态调整,即根据经验配置资源阈值的初始值后,还可以动态调整所述资源阈值,以下结合具体实施例,对资源阈值的动态调整过程进行说明。
其中,针对外存储器中的查询请求,在将查询请求的数据集发送给客户端后,可以动态调整资源阈值,即外存储器中的每个查询请求触发调整资源阈值。
例如,在接收到查询请求1后,利用资源阈值1确定是否对查询请求1进行缓存;若进行缓存,则在外存储器中存储查询请求1对应的上下文信息;在将查询请求1对应的数据集发送给客户端后,将资源阈值1调整为资源阈值2。在接收到查询请求2后,利用资源阈值2确定是否对查询请求2进行缓存;若不进行缓存,则不会在外存储器中存储查询请求2对应的上下文信息;在将查询请求2对应的数据集发送给客户端后,不用调整资源阈值2。
在一个例子中,针对动态调整资源阈值的过程,可以包括:获取查询请求对应的处理时间;其中,该处理时间具体为:从接收到该查询请求开始,一直到将数据集发送给客户端之间的时间。然后,可以根据该查询请求对应的处理时间,调整资源阈值。进一步的,针对“根据该查询请求对应的处理时间,调整资源阈值”的过程,可以包括但不限于:若该查询请求对应的处理时间大于预设第一时间阈值,则可以提高资源阈值的取值;其中,提高后的资源阈值不大于资源阈值上限;若该查询请求对应的处理时间小于预设第二时间阈值,则可以降低资源阈值的取值;其中,降低后的资源阈值不小于资源阈值下限。
其中,查询请求的接收时间可以从上下文信息中获知,而数据集发送给客户端的时间,也就是资源阈值调整时的当前时间,综上所述,前端服务器可以将该当前时间与该接收时间之间的差值,确定为该查询请求对应的处理时间。
其中,上述预设第一时间阈值、上述预设第二时间阈值均可以根据经验进行配置,对此不做限制,且预设第一时间阈值可以大于预设第二时间阈值。
其中,资源阈值上限可以根据经验进行配置,对此资源阈值上限不做限制;资源阈值下限可以根据经验进行配置,对此资源阈值下限不做限制;当然,在配置资源阈值上限和资源阈值下限时,资源阈值上限可以大于资源阈值下限。
其中,提高资源阈值的取值可以包括:计算当前的资源阈值与第一资源调整值的和,若二者的和不大于资源阈值上限,则提高后的资源阈值就是二者的和;若二者的和大于资源阈值上限,则提高后的资源阈值就是资源阈值上限。
其中,降低资源阈值的取值可以包括:计算当前的资源阈值与第二资源调整值的差,若二者的差不小于资源阈值下限,则降低后的资源阈值就是二者的差;若二者的差小于资源阈值下限,则降低后的资源阈值就是资源阈值下限。
其中,上述第一资源调整值和上述第二资源调整值均可以根据经验进行配置,而且,第一资源调整值和第二资源调整值可以相同,也可以不同。
在上述实施例中,若查询请求对应的处理时间大于预设第一时间阈值,则说明采用缓存的方式存储查询请求时,查询请求的处理时间较长,因此,可以尽量减少需要缓存的查询请求数量。基于此,可以提高资源阈值的取值,这样,使得资源占用信息与前端服务器的当前占用资源之和尽量小于资源阈值,从而不需要对查询请求进行缓存,避免查询请求的处理时间太长。
在上述实施例中,若查询请求对应的处理时间小于预设第二时间阈值,则说明采用缓存的方式存储查询请求时,查询请求的处理时间较短,因此,可以增加需要缓存的查询请求数量。基于此,可以降低资源阈值的取值,这样,使得资源占用信息与前端服务器的当前占用资源之和尽量大于等于资源阈值,从而可以对查询请求进行缓存,并可以节省前端服务器的处理资源。
情况二、参见图4B所示,为数据查询方法的另一个流程图,该方法包括:
步骤421,解析查询请求中携带的参数信息。
步骤422,判断参数表中是否存在该参数信息。其中,该参数表用于记录需要进行缓存的参数信息。如果是,执行步骤423;如果否,执行步骤424。
步骤423,在外存储器中存储该查询请求对应的上下文信息。
进一步的,执行从外存储器中读取上下文信息,并利用所述上下文信息获取与该查询请求对应的数据集,并在外存储器中存储所述数据集等步骤。
步骤424,获取该查询请求对应的数据集,并将该数据集发送给客户端。
在一个例子中,前端服务器可以获取需要进行缓存的参数信息,并将参数信息存储到参数表中。基于此,在接收到查询请求后,可以解析查询请求中携带的参数信息,并判断参数表中是否存在该参数信息。如果是,说明需要对查询请求进行缓存;如果否,说明不需要对查询请求进行缓存。
在一个例子中,针对“前端服务器获取需要进行缓存的参数信息,并将参数信息存储到参数表中”的过程,可以包括但不限于如下方式:
方式一、前端服务器接收数据库创建请求,该数据库创建请求携带需要进行缓存的参数信息,将该数据库创建请求中携带的参数信息记录到参数表。
其中,若需要对某些参数信息进行缓存,则可以在创建数据库时,指定需要进行缓存的参数信息。具体的,可以向前端服务器发送携带参数信息的数据库创建请求,从而将需要进行缓存的参数信息通知给前端服务器,由前端服务器将该数据库创建请求中携带的参数信息记录到参数表中。
例如,数据库创建请求可以为:create database test options(resource_type='ecu'ecu_type='c1'ecu_count=2with_result_cache='true'),create databasetest options表示当前的消息是数据库创建请求,resource_type=‘ecu’是目标数据库的资源模型类型、ecu_type='c1'是目标数据库的资源模型、ecu_count=2是目标数据库的资源模型的数量信息、with_result_cache='true'是需要进行缓存的参数信息。
此外,上述参数信息对当前数据库下的所有表都生效,也就是说,针对当前数据库下的所有表,若接收到针对这些表的查询请求,且查询请求中携带上述需要进行缓存的参数信息,就说明需要对该查询请求进行缓存。
方式二、前端服务器接收表组创建请求,该表组创建请求携带需要进行缓存的参数信息,并将该表组创建请求中携带的参数信息记录到参数表。
其中,若需要对某些参数信息进行缓存,则可以在创建数据库的表组时,指定需要进行缓存的参数信息。具体的,可以向前端服务器发送携带参数信息的表组创建请求,从而将需要进行缓存的参数信息通知给前端服务器,由前端服务器将该表组创建请求中携带的参数信息记录到参数表中。
例如,所述表组创建请求的一个示例可以包括:create tablegroup testoptions(with_result_cache='true'),create tablegroup test options表示当前的消息是表组创建请求,而with_result_cache='true'就是需要进行缓存的参数信息。
此外,上述参数信息对当前表组下所有的表都生效,也就是说,针对当前表组下所有的表,若接收到针对这些表的查询请求,且查询请求中携带上述需要进行缓存的参数信息,就说明需要对该查询请求进行缓存。
方式三、前端服务器接收表创建请求,且该表创建请求携带需要进行缓存的参数信息,然后,将该表创建请求中携带的参数信息记录到参数表。
其中,若需要对某些参数信息进行缓存,则可以在创建数据库的表时,指定需要进行缓存的参数信息。具体的,可以向前端服务器发送携带参数信息的表创建请求,从而可以将需要进行缓存的参数信息通知给前端服务器,由前端服务器将该表创建请求中携带的参数信息记录到参数表中。
例如,表创建请求的示例可以为:CREATE TABLE test(col1varchar,col2varchar,PRIMARY KEY(col1))PARTITION BY HASH KEY(col1)PARTITION NUM10SUBPARTITION BY LIST KEY(col2)TABLEGROUP test_group OPTIONS(UPDATETYPE='realtime’with_result_cache='true'),CREATE TABLE test表示当前的消息可以是表创建请求,(col1varchar,col2varchar,PRIMARY KEY(col1))PARTITION BY HASH KEY(col1)PARTITION NUM 10SUBPARTITION BY LIST KEY(col2)TABLEGROUP test_group OPTIONS与表有关,UPDATETYPE=‘realtime’是表的类型信息,with_result_cache=‘true'是需要进行缓存的参数信息。
上述参数信息只对当前表生效,也就是说,若接收到针对当前表的查询请求,且查询请求中携带上述参数信息,就说明需要对该查询请求进行缓存。
在上述实施例中,所述表均是指数据库中的数据表,对此不做限制。
当然,上述实施例只是给出了“是否对查询请求进行缓存”的几个示例,对此不做限制。例如,若需要对查询请求进行缓存,则可以在查询请求中携带hint参数,如查询请求为/*+withResultCache=true*/select id,name from test limit100;由于查询请求携带hint参数,因此前端服务器在接收到该查询请求后,确定对查询请求进行缓存。又例如,前端服务器还可以通过全局、数据库、表组、表的开关状态,强制使用缓存。具体的,若全局开关开启,则对所有查询请求进行缓存;若全局开关关闭,数据库开关开启,则对该数据库的所有查询请求进行缓存;若全局开关、数据库开关关闭,表组开关开启,则对该表组的所有查询请求进行缓存;若全局开关、数据库开关、表组开关均关闭,而表开关开启,则对该表的所有查询请求进行缓存。
情况三、参见图4C所示,为数据查询方法的另一个流程图,该方法包括:
步骤431,解析查询请求中携带的参数信息。
步骤432,判断参数表中是否存在该参数信息。
如果是,则可以执行步骤433;如果否,则可以执行步骤436。
步骤433,确定与该查询请求对应的数据集的资源占用信息。
步骤434,根据该资源占用信息确定是否对该查询请求进行缓存。
如果是,则可以执行步骤435;如果否,则可以执行步骤436。
步骤435,在外存储器中存储该查询请求对应的上下文信息。
步骤436,获取该查询请求对应的数据集,并将该数据集发送给客户端。
在上述情况一、情况二、情况三中,针对“获取该查询请求对应的数据集,并将该数据集发送给客户端”的过程,前端服务器可以对该查询请求进行SQL解析,利用SQL解析结果生成调度请求,并将该调度请求发送给计算服务器,该调度请求用于请求与该查询请求对应的数据;然后,前端服务器可以接收计算服务器返回的数据集,并将该数据集发送给客户端。
针对步骤303,在一个例子中,针对“从外存储器中读取上下文信息”的过程,可以包括但不限于:利用外存储器中的上下文信息,确定该上下文信息对应的优先级;然后,利用该上下文信息对应的优先级,对外存储器中的上下文信息进行排序,并根据排序结果,从外存储器中读取优先级最高的上下文信息。
其中,外存储器可能存储多个上下文信息,针对所有的上下文信息,前端服务器可以确定每个上下文信息对应的优先级,并按照优先级从高到低的顺序,对外存储器中的所有上下文信息进行排序,读取优先级最高的上下文信息,即第一个上下文信息;或者,按照优先级从低到高的顺序,对外存储器中的所有上下文信息进行排序,读取优先级最高的上下文信息,即最后一个上下文信息。
在一个例子中,上下文信息可以包括但不限于查询请求的接收时间、查询请求对应的预测数据量,参见表1所示。基于此,针对“利用外存储器中的上下文信息,确定该上下文信息对应的优先级”的过程,可以包括但不限于:前端服务器利用当前时间与该接收时间的差,确定该上下文信息对应的等待时间;然后,根据该等待时间和该预测数据量,确定该上下文信息对应的优先级。
进一步的,针对“根据该等待时间和该预测数据量,确定该上下文信息对应的优先级”的过程,可以包括但不限于:对该等待时间进行归一化处理,得到第一子权重;对该预测数据量进行归一化处理,得到第二子权重;然后,根据该第一子权重和该第二子权重获得第一权重值;然后,根据该第一权重值获得上下文信息对应的优先级;其中,当第一权重值越大时,则上下文信息对应的优先级越高,当第一权重值越小时,则上下文信息对应的优先级越低。
例如,假设外存储器中的上下文信息如表3所示,前端服务器可以确定查询标识101对应的优先级A、查询标识102对应的优先级B、查询标识103对应的优先级C。具体的,假设当前时间为2017.11.6.14.16.18(即2017年11月6日14时16分18秒),则查询标识101对应的等待时间可以为8秒,查询标识102对应的等待时间可以为3秒,查询标识103对应的等待时间为可以1秒。
表3
查询标识 接收时间 用户信息 预测数据量 查询请求
101 2017.11.6.14.16.10 IP地址A 25.6M 查询请求1
102 2017.11.6.14.16.15 IP地址B 10M 查询请求2
103 2017.11.6.14.16.17 IP地址C 2M 查询请求3
然后,对等待时间进行归一化处理,即可以将等待时间转换为0与1之间的数值,在转换的过程中,当等待时间越大时,则归一化后的第一子权重越大。例如,将查询标识对应的等待时间除以所有查询标识的等待时间之和。因此,查询标识101对应的第一子权重为8/12,即0.667,查询标识102对应的第一子权重为3/12,即0.25,查询标识103对应的第一子权重为1/12,即0.083。当然,上述方式只是对等待时间进行归一化处理的一个示例,对此处理方式不做限制。
对预测数据量进行归一化处理,即可以将预测数据量转换为0与1之间的数值,在转换的过程中,当预测数据量越大时,则归一化后的第二子权重越小。例如,先使用所有查询标识的预测数据量之和减去查询标识对应的预测数据量,然后用计算结果除以所有查询标识的预测数据量之和。因此,查询标识101对应的第二子权重为(37.6-25.6)/37.6,即0.319,查询标识102对应的第二子权重为(37.6-10)/37.6,即0.734,查询标识103对应的第二子权重为(37.6-2)/37.6,即0.947。当然,上述只是归一化处理的示例,对此处理方式不做限制。
将第一子权重和第二子权重的积作为第一权重值。例如,查询标识101对应的第一权重值为0.667*0.319,即0.213;查询标识102对应的第一权重值为0.25*0.734,即0.183;查询标识103对应的第一权重值为0.083*0.947,即0.079。
然后,根据各第一权重值获得查询标识对应的优先级,对此不做限制,只要当第一权重值越大时,则优先级越高,当第一权重值越小时,则优先级越低即可。例如,第一权重值0.213对应的优先级为213(或21),第一权重值0.183对应的优先级为183(或18),第一权重值0.079对应的优先级为79(或8)。
综上所述,查询标识101对应的优先级可以高于查询标识102对应的优先级,且查询标识102对应的优先级可以高于查询标识103对应的优先级。也就是说,外存储器中的所有上下文信息的排序结果依次为:查询标识101对应的上下文信息、查询标识102对应的上下文信息、查询标识103对应的上下文信息。因此,前端服务器可以从外存储器中读取查询标识101对应的上下文信息。
然后,前端服务器可以从查询标识101对应的上下文信息中解析出查询请求1,并获取与该查询请求1对应的数据集,假设获取的数据集为数据集A。然后,在外存储器中存储该数据集A,参见表4所示,为存储数据集A后的示例。
表4
查询标识 接收时间 用户信息 预测数据量 查询请求 数据集
101 2017.11.6.14.16.10 IP地址A 25.6M 查询请求1 数据集A
102 2017.11.6.14.16.15 IP地址B 10M 查询请求2
103 2017.11.6.14.16.17 IP地址C 2M 查询请求3
针对步骤303,在一个例子中,针对“利用上下文信息获取与查询请求对应的数据集”的过程,可以包括但不限于如下方式:前端服务器可以从该上下文信息中解析出查询请求,并生成与该查询请求对应的调度请求,并可以向计算服务器发送该调度请求。然后,前端服务器可以接收计算服务器返回的与该调度请求对应的数据集,而这个数据集也就是与上述查询请求对应的数据集。其中,为了方便描述,可以将计算服务器向前端服务器返回的数据称为数据集。
其中,上述查询请求可以为SQL查询请求,因此,前端服务器对该查询请求进行SQL解析,获知该查询请求用于请求的数据集,如请求数据集1和数据集2。然后,前端服务器分析出数据集1对应的计算服务器,向该计算服务器发送用于请求数据集1的调度请求;计算服务器接收到该调度请求后,将数据集1发送给前端服务器。此外,前端服务器分析出数据集2对应的计算服务器,向该计算服务器发送用于请求数据集2的调度请求;计算服务器接收到该调度请求后,将数据集2发送给前端服务器。前端服务器在接收到数据集1和数据集2后,可以将数据集1和数据集2组成一个数据集,即与查询请求对应的数据集。
在步骤303中,前端服务器从外存储器中读取上下文信息时,即使外存储器中存在多个上下文信息,前端服务器的一次读取过程,可以只读取一个上下文信息,在利用所述上下文信息获取到与查询请求对应的数据集,并在外存储器中存储该数据集后,才会从外存储器中读取另一个上下文信息(在读取过程中,重新执行确定优先级、排序等操作,在此不再重复赘述),以此类推。
参见图2所示,前端服务器可以启动一个调度线程,该调度线程先处理外存储器中的查询请求3,在获取到与查询请求3对应的数据集,并在外存储器中存储该数据集后,调度线程才处理外存储器中的查询请求4,以此类推。
针对步骤304,在一个例子中,针对“从该外存储器中读取数据集”的过程,可以包括但不限于如下方式:利用外存储器中的上下文信息,确定该上下文信息对应的数据集的优先级;然后,利用所述数据集的优先级,对该外存储器中的数据集进行排序,并根据数据集的排序结果,从该外存储器中读取数据集。
其中,外存储器中可能存储多个数据集,每个数据集有对应的上下文信息。针对所有数据集,前端服务器利用每个数据集对应的上下文信息,确定数据集的优先级;按照优先级从高到低的顺序,对外存储器中的所有数据集进行排序;或者,按照优先级从低到高的顺序,对外存储器中的所有数据集进行排序。
在一个例子中,前端服务器在获取到与查询请求对应的数据集后,还可以统计出该数据集的数据量(即真正的数据量,不再是预测的数据量),并将该数据集的数据量存储到上下文信息中。如表5所示,为上下文信息的一个示例。
表5
查询标识 接收时间 用户信息 预测数据量 查询请求 数据量 数据集
101 2017.11.6.14.16.10 IP地址A 25.6M 查询请求1 26M 数据集A
102 2017.11.6.14.16.15 IP地址B 10M 查询请求2 12M 数据集B
103 2017.11.6.14.16.17 IP地址C 2M 查询请求3 3M 数据集C
综上所述,上下文信息可以包括但不限于查询请求的接收时间、查询请求对应的数据集的数据量。基于此,针对“利用外存储器中的上下文信息,确定该上下文信息对应的数据集的优先级”的过程,可以包括但不限于:前端服务器利用当前时间与该接收时间的差,确定该上下文信息对应的等待时间;然后,根据该等待时间和数据集的数据量,确定该上下文信息对应的数据集的优先级。
进一步的,针对“根据该等待时间和数据集的数据量,确定该上下文信息对应的数据集的优先级”的过程,可以包括但不限于:对该等待时间进行归一化处理,得到第三子权重;对该数据量进行归一化处理,得到第四子权重;根据该第三子权重和该第四子权重获得第二权重值;根据该第二权重值获得数据集的优先级;其中,当第二权重值越大时,则上下文信息对应的数据集的优先级越高,当第二权重值越小时,则上下文信息对应的数据集的优先级越低。
其中,对等待时间进行归一化处理时,可以将等待时间转换为0与1之间的数值,在转换过程中,若等待时间越大,则归一化后的第三子权重越大。对数据量进行归一化处理时,可以将数据量转换为0与1之间的数值,在转换过程中,若数据量越大,则归一化后的第四子权重越小。根据第三子权重和第四子权重获得第二权重值时,将第三子权重和第四子权重的积作为第二权重值。
其中,根据“等待时间和数据集的数据量,确定数据集的优先级”的过程,与上述“根据等待时间和预测数据量,确定上下文信息对应的优先级”的过程类似,不同之处在于数据集的数据量与预测数据量不同,在此不再重复赘述。
综上所述,假设数据集A的优先级高于数据集B的优先级,且数据集B的优先级高于数据集C的优先级,则排序结果为:数据集A、数据集B、数据集C。
在一个例子中,针对“根据数据集的排序结果,从该外存储器中读取数据集”的过程,可以包括但不限于如下方式:若按照优先级从高到低的顺序进行排序,则前端服务器可以根据数据集的排序结果,从该外存储器中读取排序靠前的N个数据集;或者,若按照优先级从低到高的顺序进行排序,则前端服务器可以根据数据集的排序结果,从该外存储器中读取排序靠后的N个数据集。
其中,所述N为大于等于1的正整数;而且,所述N个数据集对应的资源占用信息与前端服务器的当前占用资源之和,可以小于当前的资源阈值。
假设资源占用信息可以包括内存占用率、CPU占用率、数据集的数据量,则资源阈值可以包括内存阈值、CPU阈值、数据量阈值。而且,前端服务器还可以统计当前内存使用情况,当前CPU使用情况,当前带宽使用情况。
在此基础上,前端服务器确定优先级最高的数据集对应的内存占用率(参见步骤411)、CPU占用率(参见步骤411)、数据集的数据量(从表5中获知)。
若内存占用率与当前内存使用情况之和小于内存阈值,且CPU占用率与当前CPU使用情况之和小于CPU阈值,且数据集的数据量与当前带宽使用情况之和小于数据量阈值,则从外存储器中读取优先级最高的数据集。若上述三个条件中,有任意一个或者多个条件不满足,则不从外存储器中读取数据集,在等待预设时间后,继续判断是否能够从外存储器中读取优先级最高的数据集。
在从外存储器中读取优先级最高的数据集后,前端服务器确定优先级第二高的数据集对应的内存占用率、CPU占用率、数据集的数据量。若优先级最高的数据集对应的内存占用率、优先级第二高的数据集对应的内存占用率、当前内存使用情况之和小于内存阈值,且优先级最高的数据集对应的CPU占用率、优先级第二高的数据集对应的CPU占用率、当前CPU使用情况之和小于CPU阈值,且优先级最高的数据集对应的数据量、优先级第二高的数据集对应的数据量、当前带宽使用情况之和小于数据量阈值,则继续从外存储器中读取优先级第二高的数据集,以此类推。若上述三个条件中,有任意一个或者多个条件不满足,则不从外存储器中读取优先级第二高的数据集,结束读取流程。
综上所述,前端服务器可以从外存储器中读取N个数据集,且这N个数据集对应的资源占用信息与前端服务器的当前占用资源之和,小于资源阈值。
在一个例子中,前端服务器从外存储器中读取N个数据集后,就可以将读取的N个数据集发送给客户端,如利用上下文信息中的用户信息,将数据集发送给对应的客户端,对此发送过程不再赘述。然后,前端服务器还可以从外存储器中删除该数据集对应的上下文信息,至此完成该数据集的发送过程。
在步骤304中,前端服务器从外存储器中读取数据集时,即使外存储器中存在多个数据集,前端服务器的一次读取过程,可以只读取N个数据集,在将N个数据集发送给客户端后,才会重新从外存储器中读取数据集,以此类推。
基于上述技术方案,本申请实施例中,在接收到查询请求后,不是直接将数据集发送给客户端,而是先在外存储器中存储查询请求、数据集,这样,可以将查询请求对应的数据集缓存在本地,从而可以避免短时间内处理多个查询请求,即避免短时间内向客户端返回多个数据集,从而减轻CPU资源、内存资源、网络带宽的占用,避免客户端查询超时或者失败,提高用户使用感受。而且,上述方式可以将大数据量的查询请求缓存在本地的存储器,而小数据量的查询请求不用缓存在本地的存储器,从而可以直接将小数据量的数据集发送给客户端,不影响小数据量的查询请求,最大可能性的降低了full gc的频率。
参见图5A所示,是测试结果的示意图,通过查询一个列数据量很大的表,使用/*+withResultCache=true*/select id,name,…,region from test where id=xxx limitxxx分别limit 10、limit 100、limit 500、limit 1000、limit 2000、limit 5000、limit8000、limit10000限制数据集的行数,当数据集的行数越多时,则数据集的数据量越大。图5A中,示出了数据集的数据量大小和平均查询耗时的关系。为了模拟内存使用率,在测试之前通过执行其它程序,使得内存使用率一直保持在75%左右,并异步执行上述查询操作。通过图5A可以看出,在使用本方案的方法后,当数据集很大时,可以明显降低查询耗时,并可以降低full gc的频率。
参见图5B所示,是内存使用率和查询耗时的关系示意图,通过运行其它程序控制内存使用率的方式,对某个SQL查询请求进行测试。通过测试可以发现,当内存使用率超过某个值后,若使用本方案的方法,则可以明显降低查询耗时。
参见图5C所示,是通过用户明细数据查询的示意图,如/*+withResultCache=true*/select id,name,…,region from test where id=xxx limit 5000,共查询100个列数据,其根据不同的并发数和查询超时率进行统计。从图5C中可以看出,查询的并发量越大,则超时率越高。而且,当超过一定的并发数后,查询超时率明显提高。显然,在使用本方案的方法后,可以减缓查询超时率的提高。
参见图5D所示,是单独查询数据集较小的并发测试的一个示意图,如/*+withResultCache=true*/select id,name from test where id=xxx limit 50。5D中展示查询并发数和查询超时率之间的关系,与图5C类似,当超过一定的并发数后,查询超时率开始不断增加。显然,在使用本方案的方法后,可以将查询超时率突然增加的并发数临界值向后推迟,在同样的环境下,可以增大用户并发数。
参见图5E所示,是针对混合场景(即存在数据集较大的查询操作、数据集较小的查询操作)的示意图,是数据集较大的查询操作对数据集较小的查询操作的查询超时率的影响。从图5E中可以看出,当数据集较大的查询操作的并发数超过一定的临界值后,数据集较小的查询操作的查询超时率开始不断增加。显然,在使用本方案的方法后,可以减缓数据集较小的查询操作的查询超时率。
基于与上述方法同样的申请构思,本申请实施例还提供一种数据查询装置,可以应用于前端服务器,如图6所示,为该装置的结构图,该装置包括:
接收模块601,用于接收客户端发送的查询请求;
确定模块602,用于确定与所述查询请求对应的数据集的资源占用信息;
获取模块603,用于在根据所述资源占用信息确定对所述查询请求进行缓存时,则获取与所述查询请求对应的数据集;
存储模块604,用于在外存储器中存储所述数据集;
发送模块605,用于从外存储器中读取数据集,将所述数据集发送给客户端。
所述获取模块603,具体用于在获取与所述查询请求对应的数据集的过程中,在外存储器中存储所述查询请求对应的上下文信息;从所述外存储器中读取所述上下文信息,利用所述上下文信息获取与所述查询请求对应的数据集。
所述获取模块603,具体用于在从所述外存储器中读取所述上下文信息的过程中,利用所述外存储器中的上下文信息,确定上下文信息对应的优先级;利用上下文信息对应的优先级,对所述外存储器中的上下文信息进行排序;根据排序结果,从所述外存储器中读取优先级最高的上下文信息;
在利用所述上下文信息获取与所述查询请求对应的数据集的过程中,生成与所述查询请求对应的调度请求,并向计算服务器发送所述调度请求;接收所述计算服务器返回的与所述调度请求对应的数据集。
所述发送模块605,具体用于在从外存储器中读取数据集的过程中,利用外存储器中的上下文信息,确定上下文信息对应的数据集的优先级;利用所述数据集的优先级,对所述外存储器中的数据集进行排序;根据所述数据集的排序结果,从所述外存储器中读取数据集。
基于与上述方法同样的申请构思,本申请实施例还提供了一种前端服务器,所述前端服务器可以包括:接收器、处理器和发射器;其中,接收器,用于接收客户端发送的查询请求;用于确定与所述查询请求对应的数据集的资源占用信息;若根据所述资源占用信息确定对所述查询请求进行缓存,则获取与所述查询请求对应的数据集,在外存储器中存储所述数据集;从外存储器中读取所述数据集;发射器,用于将所述数据集发送给客户端。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,可以应用于前端服务器,机器可读存储介质上存储有若干计算机指令,计算机指令被执行时进行如下处理:接收客户端发送的查询请求;确定与所述查询请求对应的数据集的资源占用信息;若根据所述资源占用信息确定对所述查询请求进行缓存,则获取与所述查询请求对应的数据集,在外存储器中存储所述数据集;从外存储器中读取所述数据集;将所述数据集发送给客户端。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (21)

1.一种数据查询方法,其特征在于,应用于前端服务器,所述方法包括:
接收客户端发送的查询请求;
确定与所述查询请求对应的数据集的资源占用信息;
若根据所述资源占用信息确定对所述查询请求进行缓存,则获取与所述查询请求对应的数据集,并在外存储器中存储所述数据集;其中,若所述资源占用信息与所述前端服务器的当前占用资源之和大于等于资源阈值,则确定对所述查询请求进行缓存;若所述资源占用信息与所述前端服务器的当前占用资源之和小于所述资源阈值,则确定不对所述查询请求进行缓存;其中,所述资源占用信息包括所述数据集的内存占用率、所述数据集的CPU占用率、所述数据集的数据量;若所述内存占用率与所述前端服务器的当前内存使用情况之和小于内存阈值,且所述CPU占用率与所述前端服务器的当前CPU使用情况之和小于CPU阈值,且所述数据集的数据量与所述前端服务器的当前带宽使用情况之和小于数据量阈值,则所述资源占用信息与所述前端服务器的当前占用资源之和小于所述资源阈值;否则,所述资源占用信息与所述前端服务器的当前占用资源之和大于等于资源阈值;
从所述外存储器中读取所述数据集,并将所述数据集发送给客户端。
2.根据权利要求1所述的方法,其特征在于,
所述确定与所述查询请求对应的数据集的资源占用信息之后,还包括:
若根据所述资源占用信息确定不对所述查询请求进行缓存,则获取与所述查询请求对应的数据集,并将所述数据集发送给客户端。
3.根据权利要求1所述的方法,其特征在于,
所述确定与所述查询请求对应的数据集的资源占用信息的过程,具体包括:
通过所述查询请求携带的数据标识查询映射表,得到所述数据标识对应的数据集的资源占用信息;映射表用于记录数据标识与资源占用信息的对应关系;
其中,所述前端服务器获取到与查询请求对应的数据集后,在所述映射表中记录该查询请求携带的数据标识与该数据集的资源占用信息的对应关系。
4.根据权利要求1所述的方法,其特征在于,
所述将所述数据集发送给客户端之后,所述方法还包括:
获取所述查询请求对应的处理时间;其中,所述处理时间具体为:从接收到所述查询请求开始,一直到将所述数据集发送给客户端之间的时间;
根据所述查询请求对应的处理时间,调整所述资源阈值。
5.根据权利要求4所述的方法,其特征在于,所述根据所述查询请求对应的处理时间,调整所述资源阈值的过程,具体包括:
若所述查询请求对应的处理时间大于预设第一时间阈值,则提高所述资源阈值的取值;其中,提高后的资源阈值不大于资源阈值上限;
若所述查询请求对应的处理时间小于预设第二时间阈值,则降低所述资源阈值的取值;其中,降低后的资源阈值不小于资源阈值下限。
6.根据权利要求1所述的方法,其特征在于,所述获取与所述查询请求对应的数据集,并在外存储器中存储所述数据集的过程,包括:
在外存储器中存储所述查询请求对应的上下文信息;
从所述外存储器中读取所述上下文信息,利用所述上下文信息获取与所述查询请求对应的数据集,并在所述外存储器中存储所述数据集。
7.根据权利要求6所述的方法,其特征在于,
所述在外存储器中存储所述查询请求对应的上下文信息,包括:
解析所述查询请求中携带的参数信息,并判断参数表中是否存在所述参数信息;其中,所述参数表用于记录需要进行缓存的参数信息;
若是,在外存储器中存储所述查询请求对应的上下文信息。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
接收数据库创建请求,所述数据库创建请求携带需要进行缓存的参数信息,并将所述数据库创建请求中携带的参数信息记录到所述参数表;和/或,
接收表组创建请求,所述表组创建请求携带需要进行缓存的参数信息,并将所述表组创建请求中携带的参数信息记录到所述参数表;和/或,
接收表创建请求,所述表创建请求携带需要进行缓存的参数信息,并将所述表创建请求中携带的参数信息记录到所述参数表。
9.根据权利要求6所述的方法,其特征在于,
所述从所述外存储器中读取所述上下文信息的过程,具体包括:
利用所述外存储器中的上下文信息,确定上下文信息对应的优先级;
利用上下文信息对应的优先级,对所述外存储器中的上下文信息进行排序;
根据排序结果,从所述外存储器中读取优先级最高的上下文信息。
10.根据权利要求9所述的方法,其特征在于,所述上下文信息包括查询请求的接收时间、所述查询请求对应的预测数据量;所述利用所述外存储器中的上下文信息,确定上下文信息对应的优先级的过程,具体包括:
利用当前时间与所述接收时间的差,确定所述上下文信息对应的等待时间;
根据所述等待时间和所述预测数据量,确定上下文信息对应的优先级。
11.根据权利要求10所述的方法,其特征在于,所述根据所述等待时间和所述预测数据量,确定上下文信息对应的优先级的过程,具体包括:
对所述等待时间进行归一化处理,得到第一子权重;
对所述预测数据量进行归一化处理,得到第二子权重;
根据所述第一子权重和所述第二子权重获得第一权重值;
根据所述第一权重值获得上下文信息对应的优先级;其中,当第一权重值越大时,则所述优先级越高,当第一权重值越小时,则所述优先级越低。
12.根据权利要求6所述的方法,其特征在于,所述上下文信息包括所述查询请求,所述利用所述上下文信息获取与所述查询请求对应的数据集,包括:
生成与所述查询请求对应的调度请求,并向计算服务器发送所述调度请求;
接收所述计算服务器返回的与所述调度请求对应的数据集。
13.根据权利要求1所述的方法,其特征在于,
从所述外存储器中读取所述数据集的过程,具体包括:
利用外存储器中的上下文信息,确定上下文信息对应的数据集的优先级;
利用数据集的优先级,对所述外存储器中的数据集进行排序;
根据数据集的排序结果,从所述外存储器中读取数据集。
14.根据权利要求13所述的方法,其特征在于,所述上下文信息包括查询请求的接收时间、所述查询请求对应的数据集的数据量;所述利用外存储器中的上下文信息,确定上下文信息对应的数据集的优先级的过程,具体包括:
利用当前时间与所述接收时间的差,确定上下文信息对应的等待时间;
根据所述等待时间和所述数据量,确定上下文信息对应的数据集的优先级。
15.根据权利要求14所述的方法,其特征在于,所述根据所述等待时间和所述数据量,确定上下文信息对应的数据集的优先级的过程,具体包括:
对所述等待时间进行归一化处理,得到第三子权重;
对所述数据量进行归一化处理,得到第四子权重;
根据所述第三子权重和所述第四子权重获得第二权重值;
根据所述第二权重值获得数据集的优先级;其中,当所述第二权重值越大时,则所述优先级越高,当所述第二权重值越小时,则所述优先级越低。
16.根据权利要求14所述的方法,其特征在于,所述根据数据集的排序结果,从所述外存储器中读取数据集的过程,具体包括:
若按照优先级从高到低的顺序进行排序,则根据数据集的排序结果,从所述外存储器中读取排序靠前的N个数据集;或者,若按照优先级从低到高的顺序进行排序,则根据数据集的排序结果,从所述外存储器中读取排序靠后的N个数据集;其中,所述N为大于等于1的正整数;所述N个数据集对应的资源占用信息与所述前端服务器的当前占用资源之和,小于资源阈值。
17.一种数据查询装置,其特征在于,应用于前端服务器,所述装置包括:
接收模块,用于接收客户端发送的查询请求;
确定模块,用于确定与所述查询请求对应的数据集的资源占用信息;
获取模块,用于在根据所述资源占用信息确定对所述查询请求进行缓存时,则获取与所述查询请求对应的数据集;其中,若所述资源占用信息与所述前端服务器的当前占用资源之和大于等于资源阈值,则确定对所述查询请求进行缓存;若所述资源占用信息与所述前端服务器的当前占用资源之和小于所述资源阈值,则确定不对所述查询请求进行缓存;其中,所述资源占用信息包括所述数据集的内存占用率、所述数据集的CPU占用率、所述数据集的数据量;若所述内存占用率与所述前端服务器的当前内存使用情况之和小于内存阈值,且所述CPU占用率与所述前端服务器的当前CPU使用情况之和小于CPU阈值,且所述数据集的数据量与所述前端服务器的当前带宽使用情况之和小于数据量阈值,则所述资源占用信息与所述前端服务器的当前占用资源之和小于所述资源阈值;否则,所述资源占用信息与所述前端服务器的当前占用资源之和大于等于资源阈值;
存储模块,用于在外存储器中存储所述数据集;
发送模块,用于从外存储器中读取数据集,并将所述数据集发送给客户端。
18.根据权利要求17所述的装置,其特征在于,
所述获取模块,具体用于在获取与所述查询请求对应的数据集的过程中,在外存储器中存储所述查询请求对应的上下文信息;从所述外存储器中读取所述上下文信息,利用所述上下文信息获取与所述查询请求对应的数据集。
19.根据权利要求18所述的装置,其特征在于,
所述获取模块,具体用于在从所述外存储器中读取所述上下文信息的过程中,利用所述外存储器中的上下文信息,确定上下文信息对应的优先级;利用上下文信息对应的优先级,对所述外存储器中的上下文信息进行排序;根据排序结果,从所述外存储器中读取优先级最高的上下文信息;
在利用所述上下文信息获取与所述查询请求对应的数据集的过程中,生成与所述查询请求对应的调度请求,并向计算服务器发送所述调度请求;接收所述计算服务器返回的与所述调度请求对应的数据集。
20.根据权利要求17所述的装置,其特征在于,
所述发送模块,具体用于在从所述外存储器中读取数据集的过程中,利用外存储器中的上下文信息,确定上下文信息对应的数据集的优先级;利用所述数据集的优先级,对所述外存储器中的数据集进行排序;根据所述数据集的排序结果,从所述外存储器中读取数据集。
21.一种前端服务器,其特征在于,所述前端服务器包括:
接收器,用于接收客户端发送的查询请求;
处理器,用于确定与所述查询请求对应的数据集的资源占用信息;若根据所述资源占用信息确定对所述查询请求进行缓存,则获取与所述查询请求对应的数据集,在外存储器中存储所述数据集;从外存储器中读取所述数据集;
发射器,用于将所述数据集发送给客户端;
其中,若所述资源占用信息与所述前端服务器的当前占用资源之和大于等于资源阈值,则确定对所述查询请求进行缓存;若所述资源占用信息与所述前端服务器的当前占用资源之和小于所述资源阈值,则确定不对所述查询请求进行缓存;其中,所述资源占用信息包括所述数据集的内存占用率、所述数据集的CPU占用率、所述数据集的数据量;若所述内存占用率与所述前端服务器的当前内存使用情况之和小于内存阈值,且所述CPU占用率与所述前端服务器的当前CPU使用情况之和小于CPU阈值,且所述数据集的数据量与所述前端服务器的当前带宽使用情况之和小于数据量阈值,则所述资源占用信息与所述前端服务器的当前占用资源之和小于所述资源阈值;否则,所述资源占用信息与所述前端服务器的当前占用资源之和大于等于资源阈值。
CN201810053977.8A 2018-01-19 2018-01-19 一种数据查询方法、装置及设备 Active CN110109953B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201810053977.8A CN110109953B (zh) 2018-01-19 2018-01-19 一种数据查询方法、装置及设备
PCT/CN2019/071357 WO2019141134A1 (zh) 2018-01-19 2019-01-11 一种数据查询方法、装置及设备
EP19741895.7A EP3742306A4 (en) 2018-01-19 2019-01-11 DATA INTERROGATION PROCESS, APPARATUS AND DEVICE
JP2020539715A JP2021511588A (ja) 2018-01-19 2019-01-11 データクエリ方法、装置およびデバイス
US16/932,596 US11734271B2 (en) 2018-01-19 2020-07-17 Data query method, apparatus and device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810053977.8A CN110109953B (zh) 2018-01-19 2018-01-19 一种数据查询方法、装置及设备

Publications (2)

Publication Number Publication Date
CN110109953A CN110109953A (zh) 2019-08-09
CN110109953B true CN110109953B (zh) 2023-12-19

Family

ID=67301611

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810053977.8A Active CN110109953B (zh) 2018-01-19 2018-01-19 一种数据查询方法、装置及设备

Country Status (5)

Country Link
US (1) US11734271B2 (zh)
EP (1) EP3742306A4 (zh)
JP (1) JP2021511588A (zh)
CN (1) CN110109953B (zh)
WO (1) WO2019141134A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110765157B (zh) * 2019-09-06 2024-02-02 中国平安财产保险股份有限公司 数据查询方法、装置、计算机设备及存储介质
CN111078735B (zh) * 2019-11-04 2023-06-30 苏宁云计算有限公司 一种查询请求处理方法及装置
CN111107017A (zh) * 2019-12-06 2020-05-05 苏州浪潮智能科技有限公司 一种交换机报文拥塞的处理方法、设备以及存储介质
CN111260311A (zh) * 2020-01-09 2020-06-09 广东卓维网络有限公司 一种电量数据平台系统及分析方法
CN111581234B (zh) * 2020-05-09 2023-04-28 中国银行股份有限公司 Rac多节点数据库查询方法、装置及系统
CN112817769A (zh) * 2021-03-05 2021-05-18 网易(杭州)网络有限公司 游戏资源动态缓存方法、装置、存储介质与电子设备
CN115150030B (zh) * 2021-03-31 2024-02-06 北京金山云网络技术有限公司 一种数据处理方法、装置、电子设备、存储介质及系统
CN112947942A (zh) * 2021-04-01 2021-06-11 厦门亿联网络技术股份有限公司 一种数据的解析获取方法、装置、电子设备及存储介质
CN113568570B (zh) * 2021-06-22 2024-04-12 阿里巴巴创新公司 数据处理方法及装置
CN113742383A (zh) * 2021-09-03 2021-12-03 网银在线(北京)科技有限公司 数据存储方法、装置、设备及介质
CN113901008B (zh) * 2021-11-10 2022-09-27 上海意略明数字科技股份有限公司 数据处理方法及装置、存储介质、计算设备
CN114124968B (zh) * 2022-01-27 2022-05-20 深圳华锐金融技术股份有限公司 基于行情数据的负载均衡方法、装置、设备及介质
CN117880075A (zh) * 2022-10-11 2024-04-12 华为技术有限公司 数据管理方法、服务器端、客户端及系统
CN115344620B (zh) * 2022-10-19 2023-01-06 成都中科合迅科技有限公司 自定义数据池实现前后端分离后数据按需同步方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101207570A (zh) * 2007-11-26 2008-06-25 上海华为技术有限公司 数据传输方法、数据发送速率控制方法及基站
US20100125590A1 (en) * 2008-11-18 2010-05-20 Rajiv Puranik Efficient caching for dynamic webservice queries using cachable fragments
CN101873475A (zh) * 2010-01-07 2010-10-27 杭州海康威视数字技术股份有限公司 控制命令发送方法、数据传输方法、监控系统及设备
CN103853727A (zh) * 2012-11-29 2014-06-11 深圳中兴力维技术有限公司 提高大数据量查询性能的方法及系统

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571259B1 (en) 2000-09-26 2003-05-27 Emc Corporation Preallocation of file system cache blocks in a data storage system
JP4306152B2 (ja) 2001-06-26 2009-07-29 株式会社日立製作所 クラスタ化したアプリケーションサーバおよびデータベース構造を持つWebシステム
US6931408B2 (en) 2001-08-17 2005-08-16 E.C. Outlook, Inc. Method of storing, maintaining and distributing computer intelligible electronic data
US6823374B2 (en) * 2001-11-16 2004-11-23 Fineground Networks Adjusting the cacheability of web documents according to the responsiveness of its content server
US7290015B1 (en) 2003-10-02 2007-10-30 Progress Software Corporation High availability via data services
US7421562B2 (en) 2004-03-01 2008-09-02 Sybase, Inc. Database system providing methodology for extended memory support
JP4615344B2 (ja) 2005-03-24 2011-01-19 株式会社日立製作所 データ処理システム及びデータベースの管理方法
DE602007013008D1 (de) 2007-05-07 2011-04-21 Software Ag Verfahren und Server zur Synchronisierung einer Vielzahl von auf eine Datenbank zugreifenden Clients
US8185546B2 (en) 2007-08-13 2012-05-22 Oracle International Corporation Enhanced control to users to populate a cache in a database system
US8266125B2 (en) 2009-10-01 2012-09-11 Starcounter Ab Systems and methods for managing databases
CN101964816A (zh) * 2010-09-26 2011-02-02 用友软件股份有限公司 在b/s架构软件系统中浏览数据的方法和系统
US9092482B2 (en) * 2013-03-14 2015-07-28 Palantir Technologies, Inc. Fair scheduling for mixed-query loads
CN102609488B (zh) * 2012-01-20 2014-11-26 北京星网锐捷网络技术有限公司 客户端及其数据查询方法、服务端和数据查询系统
US9251210B2 (en) * 2013-04-19 2016-02-02 Oracle International Corporation Caching external data sources for SQL processing
US10114874B2 (en) * 2014-02-24 2018-10-30 Red Hat, Inc. Source query caching as fault prevention for federated queries
CN105354193A (zh) * 2014-08-19 2016-02-24 阿里巴巴集团控股有限公司 数据库数据缓存方法、查询方法及缓存装置、查询装置
CN104462194A (zh) * 2014-10-28 2015-03-25 北京国双科技有限公司 一种业务数据的处理方法、装置及服务器
CN106372156A (zh) * 2016-08-30 2017-02-01 福建天晴数码有限公司 数据缓存方法及系统
US11803547B2 (en) * 2017-05-19 2023-10-31 Oracle International Corporation System and method for query resource caching
US10691694B2 (en) * 2017-06-13 2020-06-23 Oracle International Corporation Method and system for defining an object-agnostic offlinable synchronization model
US11113413B2 (en) * 2017-08-25 2021-09-07 Immuta, Inc. Calculating differentially private queries using local sensitivity on time variant databases

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101207570A (zh) * 2007-11-26 2008-06-25 上海华为技术有限公司 数据传输方法、数据发送速率控制方法及基站
US20100125590A1 (en) * 2008-11-18 2010-05-20 Rajiv Puranik Efficient caching for dynamic webservice queries using cachable fragments
CN101873475A (zh) * 2010-01-07 2010-10-27 杭州海康威视数字技术股份有限公司 控制命令发送方法、数据传输方法、监控系统及设备
CN103853727A (zh) * 2012-11-29 2014-06-11 深圳中兴力维技术有限公司 提高大数据量查询性能的方法及系统

Also Published As

Publication number Publication date
WO2019141134A1 (zh) 2019-07-25
EP3742306A1 (en) 2020-11-25
US11734271B2 (en) 2023-08-22
EP3742306A4 (en) 2021-08-18
JP2021511588A (ja) 2021-05-06
US20200349160A1 (en) 2020-11-05
CN110109953A (zh) 2019-08-09

Similar Documents

Publication Publication Date Title
CN110109953B (zh) 一种数据查询方法、装置及设备
US20060294049A1 (en) Back-off mechanism for search
CN111464615A (zh) 请求处理方法、装置、服务器及存储介质
US9807008B2 (en) Tournament scheduling
CN108228322B (zh) 一种分布式链路跟踪、分析方法及服务器、全局调度器
CN113630329A (zh) 基于用户访问量的负载均衡方法、系统及可读存储介质
CN110765138A (zh) 数据查询方法、装置、服务器及存储介质
WO2020236250A1 (en) Efficient freshness crawl scheduling
CN114553762A (zh) 一种对流表中的流表项处理的方法及装置
CN111949681A (zh) 数据的聚合处理装置、方法和存储介质
JP7048729B2 (ja) ネットワーク利用の最適化
CN110750498B (zh) 对象访问方法、装置及存储介质
CN113157609A (zh) 存储系统、数据处理方法、装置、电子设备及存储介质
CN110222046B (zh) 列表数据的处理方法、装置、服务器和存储介质
CN113157777B (zh) 一种分布式实时查询数据的方法、集群、系统及存储介质
CN116028696A (zh) 资源信息获取方法、装置、电子设备及存储介质
US11593014B2 (en) System and method for approximating replication completion time
CN112416626B (zh) 一种数据处理方法和装置
CN111104528B (zh) 图片获取方法、装置及客户端
CN113849125A (zh) 一种cdn服务器磁盘读取的方法、装置及系统
CN108846141B (zh) 一种离线缓存加载方法及装置
CN116541416B (zh) 一种请求数据的优化处理方法及装置
CN111221858B (zh) 一种数据处理方法、装置及设备
CN117708461A (zh) 用户发布内容处理方法、装置、计算设备及存储介质
CN117331686A (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
GR01 Patent grant
GR01 Patent grant