CN114816586A - 可见数据加载方法、装置、计算机设备和存储介质 - Google Patents
可见数据加载方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN114816586A CN114816586A CN202210742137.9A CN202210742137A CN114816586A CN 114816586 A CN114816586 A CN 114816586A CN 202210742137 A CN202210742137 A CN 202210742137A CN 114816586 A CN114816586 A CN 114816586A
- Authority
- CN
- China
- Prior art keywords
- data
- page
- state
- computing
- visible
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Abstract
本申请涉及一种可见数据加载方法、装置、计算机设备和存储介质。该方法包括:响应于分页数据加载请求,确定待加载的分页;从会话管理器中查询待加载的分页的计算状态;若计算状态为已完成状态,则从会话管理器中获取待加载的分页对应的可见数据并输出加载,异步触发执行用于计算后续至少一个分页的可见数据的计算任务;待加载的分页对应的可见数据,是预先通过异步执行针对待加载的分页的计算任务所计算得到并缓存的可见数据;若计算状态为未完成状态,则在通过通知队列检测到计算状态变更为已完成状态后,获取计算得到的待加载的分页的可见数据并输出加载,异步触发执行用于计算后续至少一个分页的可见数据的计算任务。采用本方法能够提高效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种可见数据加载方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,各种系统层出不穷,因为系统中的数据量一般很大,为了保证数据的安全性,往往需要对系统中的各种数据分别设置相应的可见权限,对某条数据拥有相应可见权限的用户才能对该条数据进行查看或使用。例如:对于企业的电子报销系统,管理员可以针对各条数据设置具有相应的可见权限的人员,比如:针对某条供应商数据设置仅“公司中高层”分组下的人员具有可见权限。因此,前端在进行数据展示时,需要从后台服务器拉取对当前用户可见的数据进行展示,那么如何加载可见数据成为了一个重要的问题。
传统方法中,一般是后台服务器拉取各页的所有数据进行计算,过滤掉对当前用户不可见的数据,将可见数据发送至前端。然而,这种方式计算量非常大,导致拉取第一页数据时的时延很大,降低了可见数据的加载效率,容易造成用户访问超时等问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高效率的可见数据加载方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种可见数据加载方法。所述方法包括:
一种可见数据加载方法,所述方法包括:
响应于分页数据加载请求,确定当前的待加载的分页;
从会话管理器中查询所述待加载的分页对应的计算状态;所述计算状态,用于表征计算所述待加载的分页的可见数据的计算任务的完成情况;
若所述计算状态为已完成状态,则从所述会话管理器中获取所述待加载的分页对应的可见数据并输出加载,异步触发执行用于计算后续至少一个分页的可见数据的计算任务;所述待加载的分页对应的可见数据,是预先通过异步执行针对所述待加载的分页的计算任务所计算得到并缓存的可见数据;
若所述计算状态为未完成状态,则在通过通知队列检测到所述计算状态变更为已完成状态后,获取计算得到的所述待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
第二方面,本申请还提供了一种可见数据加载装置。所述装置包括:
请求响应模块,用于响应于分页数据加载请求,确定当前的待加载的分页;
会话查询模块,用于从会话管理器中查询所述待加载的分页对应的计算状态;所述计算状态,用于表征计算所述待加载的分页的可见数据的计算任务的完成情况;
输出加载模块,用于若所述计算状态为已完成状态,则从所述会话管理器中获取所述待加载的分页对应的可见数据并输出加载,异步触发执行用于计算后续至少一个分页的可见数据的计算任务;所述待加载的分页对应的可见数据,是预先通过异步执行针对所述待加载的分页的计算任务所计算得到并缓存的可见数据;
所述输出加载模块,还用于若所述计算状态为未完成状态,则在通过通知队列检测到所述计算状态变更为已完成状态后,获取计算得到的所述待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
在其中一个实施例中,所述输出加载模块还用于若所述计算状态为未完成状态,则阻塞到通知队列,在从所述通知队列中获取到计算完成通知后,确定所述计算状态为已完成状态,以执行所述从所述会话管理器中获取所述待加载的分页对应的可见数据并输出加载,异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
在其中一个实施例中,异步执行计算任务计算得到的可见数据被缓存至所述会话管理器和所述通知队列中;所述已完成状态是指所述待加载的分页对应的可见数据满足预设页面数据条数;所述输出加载模块还用于若所述计算状态为未完成状态,则在确定所述通知队列中的可见数据的条数满足所述预设页面数据条数的情况下,判定所述计算状态变更为已完成状态;从所述通知队列中获取所述待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
在其中一个实施例中,可见数据加载装置还包括:
计算模块,用于针对每个待计算的分页,将所述会话管理器中所述待计算的分页的计算状态设置为未完成状态;所述待计算的分页,是待异步执行计算任务所针对的分页;从数据表中筛选所述待计算的分页的可见数据;将所述可见数据缓存至所述会话管理器中;将所述会话管理器中所述待计算的分页的计算状态设置为已完成状态,并将计算完成通知推送至所述通知队列中。
在其中一个实施例中,所述计算模块还用于确定当前查询位置和所述待计算的分页的预设页面数据条数;从数据表中的所述当前查询位置处起,向后查询数据;根据用户信息和查询到的每条数据的预设可见权限信息,确定查询到的数据中的可见数据;将符合所述预设页面数据条数的可见数据,确定为所述待计算的分页的可见数据。
在其中一个实施例中,所述计算模块还用于从数据表中的所述当前查询位置处起,向后查询符合所述页面数据条数的数据;若查询到的数据中的可见数据未达到所述预设页面数据条数,则更新所述当前查询位置;返回执行所述从数据表中的所述当前查询位置处起,向后查询数据及后续步骤,直至累计查询到的数据中的可见数据达到所述预设页面数据条数。
在其中一个实施例中,所述会话查询模块还用于若当前的待加载的分页为首页,则通过会话管理器生成会话标识;将所述会话标识写入延时队列;在从写入起经过预设时间间隔后,从所述延时队列获取所述会话标识,以删除所述会话管理器中所述会话标识对应的会话信息;所述会话信息包括已缓存的可见数据;推送会话过期消息至所述通知队列;若从所述通知队列中获取到所述会话过期消息,则结束阻塞。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行本申请各实施例所述的可见数据加载方法中的步骤。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行本申请各实施例所述的可见数据加载方法中的步骤。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,使得所述处理器执行本申请各实施例所述的可见数据加载方法中的步骤。
上述可见数据加载方法、装置、计算机设备、存储介质和计算机程序产品, 响应于分页数据加载请求,确定当前的待加载的分页,从会话管理器中查询待加载的分页对应的计算状态,若计算状态为已完成状态,则从会话管理器中获取预先缓存的待加载的分页对应的可见数据并输出加载,异步触发执行用于计算后续至少一个分页的可见数据的计算任务,若计算状态为未完成状态,则在通过通知队列检测到计算状态变更为已完成状态后,获取计算得到的待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。通过预先异步计算后续至少一个分页的可见数据并进行缓存,针对当前待加载的分页可以直接获取预先缓存好的可见数据并输出加载,避免了后台服务器拉取各页的所有数据进行计算导致时延很大的问题,从而提高了可见数据加载效率。
附图说明
图1为一个实施例中可见数据加载方法的应用环境图;
图2为另一个实施例中可见数据加载方法的应用环境图;
图3为一个实施例中可见数据加载方法的流程示意图;
图4为一个实施例中新建报销单的界面示意图;
图5为一个实施例中可见数据加载方法的整体流程示意图;
图6为一个实施例中设置预设可见权限信息的界面示意图;
图7为一个实施例中加载首页的可见数据的流程示意图;
图8为一个实施例中异步执行计算任务的流程示意图;
图9为一个实施例中加载除首页之外的分页的可见数据的流程示意图;
图10为一个实施例中通过延时队列进行会话过期处理的流程示意图;
图11为一个实施例中可见数据加载装置的结构框图;
图12为另一个实施例中可见数据加载装置的结构框图;
图13为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,本申请实施例提供的可见数据加载方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。用户可以通过终端102查看各个分页的可见数据,终端102可以根据用户的操作,生成分页数据加载请求并发送至服务器104。服务器104可以响应于分页数据加载请求,执行本申请各实施例中的可见数据加载方法,以获取当前的待加载的分页对应的可见数据并输出至终端102进行展示。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。会话管理器可以搭载于服务器104之上。
在另一个实施例中,本申请实施例提供的可见数据加载方法,可以应用于如图2所示的应用环境中。其中,终端202通过网络与计算控制器204进行通信,计算控制器204通过网络与会话管理器206进行通信,计算控制器204通过网络与计算引擎208进行通信。数据存储系统可以存储计算控制器204、会话管理器206和计算引擎208需要处理的数据。数据存储系统可以集成在计算控制器204、会话管理器206和计算引擎208上,也可以放在云上或其他网络服务器上。用户可以通过终端202查看各个分页的可见数据,终端202可以根据用户的操作,生成分页数据加载请求并发送至计算控制器204。计算控制器204可以响应于分页数据加载请求,确定当前的待加载的分页,从会话管理器206中查询待加载的分页对应的计算状态。若计算状态为已完成状态,则计算控制器204可以从会话管理器206中获取待加载的分页对应的可见数据并输出至终端202进行展示,计算控制器204可以异步触发执行用于计算后续至少一个分页的可见数据的计算任务。若计算状态为未完成状态,则计算控制器204可以在通过通知队列检测到计算状态变更为已完成状态后,获取计算得到的待加载的分页对应的可见数据并输出至终端202进行展示,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。计算引擎208可以根据用户信息和查询到的每条数据的预设可见权限信息,确定查询到的数据中的可见数据。其中,终端202可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。计算控制器204、会话管理器206和计算引擎208可以分别用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图3所示,提供了一种可见数据加载方法,以该方法应用于图2中的计算控制器为例进行说明,包括以下步骤:
步骤302,响应于分页数据加载请求,确定当前的待加载的分页。
其中,分页数据加载请求,用于请求加载分页对应的可见数据。待加载的分页,是待加载可见数据的分页。
具体地,用户可以通过终端浏览各个分页的可见数据,终端可以根据用户当前待查看的分页(即,待加载的分页),生成分页数据加载请求并发送至计算控制器,计算控制器可以响应于分页数据加载请求,确定当前的待加载的分页。
在一个实施例中,分页可以是某一项业务数据对应的各个分页。例如:用户针对“客户”这一业务数据进行查看,终端可以在每个分页中展示一部分客户的名称。
在一个实施例中,分页数据加载请求中可以包含当前的待加载的分页的分页标识。计算控制器可以根据分页数据加载请求中的分页标识,确定当前的待加载的分页。其中,分页标识,用于唯一标识相应的分页。在一个实施例中,分页标识可以是分页的页码(即,页序号)。
本申请各实施例中的可见数据加载方法可以应用于多种系统中。比如:电子报销系统或客户关系管理系统(CRM系统)等。如图4所示,是电子报销系统中“新建报销单”的操作界面,用户可以通过该操作界面对各项信息项进行选择,然后生成报销单。图中的“业务线”、“客户”和“项目名称”这些信息项中的信息均可以设置可见权限,每个信息项中针对当前的用户而言是可见数据的信息才能进行展示以供用户进行选择,不可见数据则不展示。例如:假设“客户”这一信息项中的信息包括“威廉”、“杰克”、“露丝”和“汤姆”,其中,“威廉”和“汤姆”对当前的用户而言是可见数据,“杰克”和“露丝”对当前的用户而言是不可见数据,则“客户”这一信息项中仅可以展示“威廉”和“汤姆”。可以理解,每一信息项中包含很多信息,可以分页进行展示,这里仅仅是列举4条信息进行举例说明。
步骤304,从会话管理器中查询待加载的分页对应的计算状态;计算状态,用于表征计算待加载的分页的可见数据的计算任务的完成情况。
其中,会话管理器,用于对分页查询的会话进行管理。可以理解,可以将查询全部页数的处理在一个会话中进行。即,各个分页的查询处理在一个会话中完成。会话管理器中可以存储记录会话信息。会话信息,包括执行计算任务所需的数据、执行计算任务生成的可见数据、以及各分页的计算状态。可见数据,是指当前的用户具有权限进行查看和使用的数据。
在一个实施例中,计算引擎可以针对每个待计算的分页执行用于计算可见数据的计算任务。
在一个实施例中,在计算任务开始前,会话管理器可以将计算任务所针对的分页的计算状态设置为未完成状态,在计算任务完成后,会话管理器可以将计算任务所针对的分页对应的计算状态更新为已完成状态。
在一个实施例中,会话管理器中的会话信息可以存储于数据库中,也可以存储于分布式缓存(cache)中,如采用redis(远程字典服务)的HSET(一种远程字典服务中的结构)、ZSET(一种远程字典服务中的结构)等结构来实现,视对性能的要求而定。
步骤306,若计算状态为已完成状态,则从会话管理器中获取待加载的分页对应的可见数据并输出加载,异步触发执行用于计算后续至少一个分页的可见数据的计算任务;待加载的分页对应的可见数据,是预先通过异步执行针对待加载的分页的计算任务所计算得到并缓存的可见数据。
在一个实施例中,待加载的分页对应的可见数据满足预设页面数据条数或从数据表中查询到的数据条数小于预设页面数据条数,则表示该待加载的分页的计算状态为已完成状态。其中,预设页面数据条数,是指各个分页应该展示的数据的条数。比如:每页展示10条数据,则预设页面数据条数为10。
可以理解,从数据表中查询到的数据条数小于预设页面数据条数,表明待加载的分页为最后一页,数据条数已不能满足完整的预设页面数据条数,该情况也为已完成状态。
在一个实施例中,计算控制器可以将异步执行计算任务计算得到的可见数据缓存至会话管理器中。若计算状态为已完成状态,则计算控制器可以从会话管理器中获取待加载的分页对应的可见数据并输出至终端进行展示,并异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
步骤308,若计算状态为未完成状态,则在通过通知队列检测到计算状态变更为已完成状态后,获取计算得到的待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
其中,通知队列,是用于存储通知的消息队列。需要说明的是,通知队列中并不限定于仅存储通知。
在一个实施例中,待加载的分页对应的可见数据不满足预设页面数据条数,或者,从数据表中查询到的数据条数大于或等于预设页面数据条数,则可以表示该待加载的分页的计算状态为未完成状态。
可以理解,若计算状态为未完成状态,则可以不向终端返回待加载的分页对应的可见数据。这种情况下,待加载的分页的计算任务还是继续地异步执行,逐步计算出的可见数据仍然会继续存储。在待加载的分页的计算状态变更为已完成状态的情况下,计算控制器可以通过通知队列获知待加载的分页的计算状态变更为已完成状态。可以理解,待加载的分页的计算状态变更为已完成状态,说明生成的待加载的分页对应的可见数据已经可以向终端返回。计算控制器进而可以获取计算得到的待加载的分页对应的可见数据并输出至终端进行加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
在一个实施例中,计算控制器可以在从通知队列中获取计算完成通知后,确定计算状态为已完成状态。
在另一个实施例中,计算控制器可以将异步执行计算任务计算得到的可见数据缓存至会话管理器和通知队列中。计算控制器可以在确定通知队列中的可见数据的条数满足预设页面数据条数的情况下,判定计算状态变更为已完成状态。
在一个实施例中,在执行针对首页的计算任务前,计算控制器可以创建通知队列。在一个实施例中,在每次执行后续分页的计算任务前,计算控制器可以清除通知队列中的数据,以减少系统资源的占用。
上述可见数据加载方法中,响应于分页数据加载请求,确定当前的待加载的分页,从会话管理器中查询待加载的分页对应的计算状态,若计算状态为已完成状态,则从会话管理器中获取预先缓存的待加载的分页对应的可见数据并输出加载,异步触发执行用于计算后续至少一个分页的可见数据的计算任务,若计算状态为未完成状态,则在通过通知队列检测到计算状态变更为已完成状态后,获取计算得到的待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。通过预先异步计算后续至少一个分页的可见数据并进行缓存,针对当前待加载的分页可以直接获取预先缓存好的可见数据并输出加载,避免了后台服务器拉取各页的所有数据进行计算导致时延很大的问题,从而提高了可见数据加载效率。此外,预先计算后续至少一个分页的可见数据并缓存,相较于在每次前端需要加载一个分页的可见数据时才通过后台进行可见数据的计算的方法而言,避免了前端每次获取到的可见数据的条数不一样,需要多次调用后台接口才能得到相同条数的可见数据的问题,进一步提高了可见数据加载的效率。另外,相较于通过前端进行可见数据的计算的方法而言,无需通过前端拉取后台的数据并进行计算,避免了敏感数据的泄露,以及前端所需的存储空间和计算量过大的问题,提高了数据的安全性,降低了前端的系统资源占用,提高了可见数据加载效率。而且,通过会话管理器记录计算状态,可以快速地获知待加载的分页的可见数据的完成情况,通过提出会话管理器和通知队列,将二者相结合,能够准确且及时地进行可见数据的加载。
在一个实施例中,若当前的待加载的分页为首页,则通过会话管理器生成会话标识,并将会话标识返回至终端。在一个实施例中,会话管理器可以将会话标识与会话信息进行关联存储。
在一个实施例中,会话信息可以包括各个分页的计算状态和异步执行计算任务所计算得到的可见数据。在一个实施例中,会话信息还可以包括当前查询位置。
在一个实施例中,终端针对除首页之外的后续分页生成的分页数据加载请求中携带有会话标识。计算控制器可以根据分页数据加载请求中携带的会话标识,从会话管理器中查询会话标识对应的会话信息。
在一个实施例中,计算控制器可以从会话信息中获取待加载的分页对应的计算状态。在一个实施例中,计算控制器可以从会话信息中获取预先缓存的可见数据并输出加载。在一个实施例中,计算控制器可以从会话信息中获取当前查询位置,然后从数据表中的当前查询位置处起,向后查询数据,以进行可见数据的计算。
上述实施例中,通过会话标识和会话信息的关联存储,能够对分页的可见数据进行预先缓存,提高了可见数据加载的效率。
在一个实施例中,若计算状态为未完成状态,则在通过通知队列检测到计算状态变更为已完成状态后,获取计算得到的待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务包括:若计算状态为未完成状态,则阻塞到通知队列,在从通知队列中获取到计算完成通知后,确定计算状态为已完成状态,以执行从会话管理器中获取待加载的分页对应的可见数据并输出加载,异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
其中,阻塞,是指同步阻塞I/O(输入/输出),当线程调用某些涉及I/O操作的系统调用或库函数时,暂停下来,等待I/O操作完成再继续运行。
具体地,计算控制器在异步执行计算任务执行完成时,可以将计算完成通知推送至通知队列中。若待加载的分页对应的计算状态为未完成状态,则计算控制器可以阻塞到通知队列。这种情况下,待加载的分页的计算任务还是异步执行,逐步计算出的可见数据仍然会存储到会话管理器中。会话管理器会在待加载的分页的计算任务完毕后,比如,待加载的分页的可见数据的数量达到预设页面数据条数后,发送计算完成通知给通知队列。计算控制器则可以从通知队列中获取到该计算完成通知,从而判定该待加载的分页的计算状态为已完成状态。进一步地,计算控制器可以从会话管理器中获取待加载的分页对应的可见数据并输出至终端进行展示,并异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
上述实施例中,计算控制器可以在从通知队列获取计算完成通知后,再从会话管理器中获取可见数据,避免了反复调用会话管理器的接口以查询计算状态,从而避免了系统运行空间的损耗,而且,也能够通过通知队列在计算任务完成后及时地获知,提高了效率。
如图5所示,是上述实施例中的可见数据加载方法的整体流程示意图。首先,计算控制器可以接收分页数据加载请求,然后根据分页数据加载请求中的会话标识,从会话管理器中查询会话信息,并从会话信息中获取待加载的分页的计算状态。若计算状态为已完成状态,则计算控制器可以从会话信息中获取可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。若计算状态为未完成状态,则计算控制器可以在从通知队列获取到计算完成通知后,确定计算状态为已完成状态。
在一个实施例中,异步执行计算任务计算得到的可见数据被缓存至会话管理器和通知队列中;已完成状态是指待加载的分页对应的可见数据满足预设页面数据条数;若计算状态为未完成状态,则在通过通知队列检测到计算状态变更为已完成状态后,获取计算得到的待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务包括:若计算状态为未完成状态,则在确定通知队列中的可见数据的条数满足预设页面数据条数的情况下,判定计算状态变更为已完成状态;从通知队列中获取待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
具体地,计算控制器可以将异步执行计算任务计算得到的可见数据分别缓存至会话管理器和通知队列中。若计算状态为未完成状态,则计算控制器可以从通知队列中依次获取各条可见数据,在获取到的可见数据的条数满足预设页面数据条数的情况下,判定计算状态变更为已完成状态。进而,计算控制器可以从通知队列获取到的满足预设页面数据条数的可见数据,并将其输出至终端进行展示,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
上述实施例中,将异步执行计算任务计算得到的可见数据分别缓存至会话管理器和通知队列中,若计算状态为未完成状态,则可以根据通知队列中的可见数据的条数来判定计算状态,避免了反复调用会话管理器的接口以查询计算状态,从而避免了系统运行空间的损耗,提高了效率。此外,将会话管理器和通知队列相结合,能够更为及时地知晓计算状态的变更。而且,在知晓计算状态变更后,能够及时从通知队列中直接获取相应的可见数据,而不需要再与会话管理器进行交互获取,进一步提高了效率,保证了及时性。
在一个实施例中,异步执行每个分页的计算任务的步骤包括:针对每个待计算的分页,将会话管理器中待计算的分页的计算状态设置为未完成状态;待计算的分页,是待异步执行计算任务所针对的分页;从数据表中筛选待计算的分页的可见数据;将可见数据缓存至会话管理器中;将会话管理器中待计算的分页的计算状态设置为已完成状态,并将计算完成通知推送至通知队列中。
可以理解,每个分页的可见数据的加载和该分页的计算任务是异步进行的,针对每个分页都会异步执行该分页的计算任务。因此,在异步执行每个分页的计算任务时,计算控制器可以将会话管理器中待计算的分页的计算状态设置为未完成状态,然后从数据表中筛选待计算的分页的可见数据,将筛选到的可见数据缓存至会话管理器中,然后将会话管理器中待计算的分页的计算状态设置为已完成状态,并将计算完成通知推送至通知队列中。在加载可见数据时,若计算控制器从会话管理器中查询到的待加载的分页对应的计算状态为未完成状态,则计算控制器可以阻塞到通知队列,直至从通知队列获取到推送至的计算完成通知后,确定待加载的分页对应的计算状态为已完成状态,从会话管理器中获取预先缓存的可见数据。若计算控制器从会话管理器中查询到的待加载的分页对应的计算状态为已完成状态,则从会话管理器中获取预先缓存的可见数据。
上述实施例中,针对每个待计算的分页,计算控制器可以从数据表中筛选待计算的分页的可见数据,将可见数据缓存至会话管理器中,然后将会话管理器中待计算的分页的计算状态设置为已完成状态,并将计算完成通知推送至通知队列中,使得计算控制器可以在从通知队列获取计算完成通知后,再从会话管理器中获取可见数据,避免了反复调用会话管理器的接口以查询计算状态,从而避免了系统运行空间的损耗,提高了效率。
在一个实施例中,从数据表中筛选待计算的分页的可见数据包括:确定当前查询位置和待计算的分页的预设页面数据条数;从数据表中的当前查询位置处起,向后查询数据;根据用户信息和查询到的每条数据的预设可见权限信息,确定查询到的数据中的可见数据;将符合预设页面数据条数的可见数据,确定为待计算的分页的可见数据。
其中,当前查询位置,是指在计算上一个分页的可见数据时从数据表中查询到的位置、且在计算当前的待计算的分页的可见数据时所要从数据表中开始查询的位置。用户信息,是指与当前登录系统的用户相关的信息。预设可见权限信息,是指预先针对每条数据设置的可见权限信息。
在一个实施例中,计算引擎可以根据用户信息和查询到的每条数据的预设可见权限信息,确定查询到的数据中的可见数据。
在一个实施例中,预设可见权限信息中可以包括针对相应数据设置的可见用户和不可见用户中的至少一种。计算引擎可以根据用户信息,确定当前的用户是否属于预设可见权限信息中的可见用户或不可见用户之中,若当前的用户属于预设可见权限信息中的可见用户之中,则判定相应数据为可见数据。若当前的用户属于预设可见权限信息中的不可见用户之中,则判定相应数据为不可见数据。
其中,可见用户,是指对相应数据具有查看和使用权限的用户。不可见用户,是指对相应数据不具有查看和使用权限的用户。
在一个实施例中,可见用户可以包括可见用户个人和可见用户组中的至少一种。在一个实施例中,不可见用户可以包括不可见用户个人和不可见用户组中的至少一种。其中,可见用户个人,是指对相应数据具有查看和使用权限的用户个体。可见用户组,是指对相应数据具有查看和使用权限的用户组。不可见用户个人,是指对相应数据不具有查看和使用权限的用户个体。不可见用户组,是指对相应数据不具有查看和使用权限的用户组。
在一个实施例中,用户组可以是根据部门、公司、地区和职务等中的任意一种属性对用户进行划分得到的。
如图6所示,是针对“客户”这一信息项中的数据进行预设可见权限信息的设置的界面图。很显然,图中是在针对“C公司”这条数据进行预设可见权限信息的设置,设置了针对“C公司”这条数据的可见人员(即,可见用户)。图中的“杰克”、“露丝”和“苏菲”即为可见用户个人,“M公司”、“交通产品部”、“行政采购部”、“总监”和“组长”即为可见用户组。
在一个实施例中,计算引擎可以根据用户信息和查询到的每条数据的预设可见权限信息,确定查询到的每条数据对当前的用户的可见性,并根据可见性为查询到的每条数据标记可见性标签。计算控制器可以根据可见性标签,从查询到的数据中选取可见数据。其中,可见性,是指数据对当前的用户是否可见。可见性标签,用于表征相应数据对当前的用户是否可见。
在一个实施例中,计算控制器可以从数据表中的当前查询位置处起,挨个向后查询数据,并确定查询到的数据是否为可见数据,直至查询到的可见数据符合预设页面数据条数,将查询到的符合预设页面数据条数的可见数据确定为待计算的分页的可见数据。
在另一个实施例中,计算控制器可以从数据表中的当前查询位置处起,向后查询符合页面数据条数的数据,并确定查询到的数据是否为可见数据,若查询到的数据中的可见数据未达到预设页面数据条数,则继续向后查询,若查询到的数据中的可见数据达到预设页面数据条数,则将查询到的符合预设页面数据条数的可见数据确定为待计算的分页的可见数据。
上述实施例中,从数据表中的当前查询位置处起,向后查询数据,根据用户信息和查询到的每条数据的预设可见权限信息,确定查询到的数据中的可见数据,然后将符合预设页面数据条数的可见数据,确定为待计算的分页的可见数据,能够根据用户信息和预设可见权限信息准确地筛选出可见数据,避免了敏感数据的泄露,提高了数据的安全性。此外,能够预先计算出符合预设页面数据条数的可见数据,避免了每次加载的分页中的可见数据的条数不同需要反复调用接口的问题,避免了运行内存的占用,提高了效率。
在一个实施例中,从数据表中的当前查询位置处起,向后查询数据包括:从数据表中的当前查询位置处起,向后查询符合页面数据条数的数据;在将符合预设页面数据条数的可见数据,确定为待计算的分页的可见数据之前,方法还包括:若查询到的数据中的可见数据未达到预设页面数据条数,则更新当前查询位置;返回执行从数据表中的当前查询位置处起,向后查询数据及后续步骤,直至累计查询到的数据中的可见数据达到预设页面数据条数。
具体地,计算控制器可以从数据表中的当前查询位置处起,向后查询符合页面数据条数的数据,然后根据用户信息和查询到的每条数据的预设可见权限信息,确定查询到的数据中的可见数据,若查询到的数据中的可见数据未达到预设页面数据条数,则更新当前查询位置,然后从数据表中的当前查询位置处起,向后查询数据,直至累计查询到的数据中的可见数据达到预设页面数据条数。
在一个实施例中,若查询到的数据中的可见数据未达到预设页面数据条数,则计算控制器可以更新当前查询位置,然后从数据表中的当前查询位置处起,再次向后查询符合预设页面数据条数的数据,根据用户信息和查询到的每条数据的预设可见权限信息,确定本次查询到的数据中的可见数据,若累计查询到的数据中的可见数据仍未达到预设页面数据条数,则返回执行更新当前查询位置,然后从数据表中的当前查询位置处起,再次向后查询符合预设页面数据条数的数据及后续步骤,直至累计查询到的数据中的可见数据达到预设页面数据条数。
在另一个实施例中,若查询到的数据中的可见数据未达到预设页面数据条数,则计算控制器可以更新当前查询位置,然后从数据表中的当前查询位置处起,向后挨个查询数据,并根据用户信息和查询到的每条数据的预设可见权限信息,确定查询到的数据是否为可见数据,直至累计查询到的数据中的可见数据达到预设页面数据条数。
在一个实施例中,计算控制器可以根据原先的当前查询位置,增加预设页面数据条数,得到更新后的当前查询位置。
上述实施例中,先查询符合预设页面数据条数的数据,若计算出的可见数据未达到预设页面数据条数,则继续向后查询,从而提高了可见数据的计算效率。
在一个实施例中,若当前的待加载的分页为首页(即,第一页),则计算控制器可以直接从数据表中筛选待计算的分页的可见数据,然后将可见数据输出加载,并异步触发执行用于计算后续至少一个分页的可见数据的计算任务。无需查询首页对应的计算状态,也无需将首页的计算完成通知推送至通知队列中。
如图7所示,是当前的待加载的分页为首页时进行可见数据加载的整体流程示意图。计算控制器可以接收终端发送的针对首页的分页数据加载请求,分页数据加载请求中可以包含分页标识(即,首页的分页标识)和预设页面数据条数。会话管理器可以生成全局唯一的会话标识,并将首页的分页标识对应的计算状态设置为未完成状态,并将会话标识写入至延时队列中。计算控制器可以将当前查询位置设置为数据表中的起始位置(即,offset=0),然后从数据表中当前查询位置起向后查询符合预设页面数据条数(count)的数据,计算引擎可以根据用户信息和预设可见权限信息,为查询到的数据标记可见性标签。计算控制器可以根据可见性标签,过滤掉不可见数据,保留可见数据,若可见数据条数等于预设页面数据条数或查询到的数据不满足预设页面数据条数(即,最后一页),则会话管理器可以更新会话信息(即,将首页的分页标识对应的计算状态设置为已完成状态,将可见数据进行缓存,并根据查询到的位置更新当前查询位置),计算控制器可以输出可见数据和会话标识至终端,并异步触发执行后续至少一个分页的计算任务。计算任务中包含会话标识、分页标识和当前查询位置等信息。若可见数据条数不满足预设页面数据条数,则更新当前查询位置,即,将原当前查询位置offset增加预设页面数据条数count得到新的当前查询位置,从数据表中当前查询位置处起继续查询数据,直至可见数据满足预设页面数据条数。
如图8所示,是异步执行针对待计算的分页的计算任务的整体流程示意图。计算控制器可以从会话管理器中获取待计算的分页的计算状态,若计算状态为已完成状态,则不需要进行计算。若计算状态为未完成状态,则计算控制器可以根据计算任务,确定会话标识、分页标识、预设页面数据条数和当前查询位置,会话管理器可以将该分页的计算状态设置为未完成状态。计算控制器计算该分页的可见数据的步骤与图7中的步骤类似,此处不再赘述,计算得到的可见数据满足预设页面数据条数,或查询到的数据不满足预设页面数据条数时,会话管理器可以更新会话信息,(即,将该分页的分页标识对应的计算状态设置为已完成状态,将可见数据进行缓存,并根据查询到的位置更新当前查询位置),然后将计算完成通知推送到通知队列。
如图9所示,是获取除首页之外的分页的可见数据的整体流程示意图。计算控制器可以接收针对第n页(即当前的待加载的分页)的分页数据加载请求,从会话管理器中查询第n页的计算状态以及会话是否过期。若会话已过期,则结束流程。若会话未过期且计算状态为未完成状态,则计算控制器可以阻塞到通知队列,若从通知队列获取到会话过期消息,则结束流程,若从通知队列获取到第n页的计算完成通知,则计算控制器可以获取第n页的会话信息。若会话未过期且计算状态为已完成状态,则计算控制器可以直接获取第n页的会话信息。若第n页的可见数据的条数不符合预设页面数据条数(表明第n页是最后一页),则计算控制器可以输出第n页的可见数据和会话标识。若第n页的可见数据的条数符合预设页面数据条数,则计算控制器可以输出第n页的可见数据和会话标识,并从会话管理器中查询第n+1页(即,下一页)的计算状态,若第n+1页(即,下一页)的计算状态为未完成状态,则异步触发执行下一页的计算任务。
在一个实施例中,若当前的待加载的分页为首页,则通过会话管理器生成会话标识;将会话标识写入延时队列;在从写入起经过预设时间间隔后,从延时队列获取会话标识,以删除会话管理器中会话标识对应的会话信息;会话信息包括已缓存的可见数据;推送会话过期消息至通知队列;在若计算状态为未完成状态,则阻塞到通知队列之后,方法还包括:若从通知队列中获取到会话过期消息,则结束阻塞。
其中,会话标识,用于唯一标识会话信息。会话信息,包括执行计算任务所需的数据和执行计算任务生成的数据。延时队列,是一种用于执行定时任务的队列,生产者将消息写入队列,消费者不能立刻消费到消息,而是要经过预设时间间隔后才能消费到消息。
具体地,若分页数据加载请求所针对的待加载的分页为首页,则会话管理器可以生成会话标识,并将生成的会话标识写入延时队列。在从写入起经过预设时间间隔后,计算控制器可以从延时队列获取会话标识,然后根据会话标识,删除会话管理器中该会话标识对应的会话信息,并推送会话过期消息至通知队列。在若计算状态为未完成状态,则阻塞到通知队列之后,若计算控制器从通知队列中获取到会话过期消息,则结束阻塞,释放线程相关的资源。
在一个实施例中,在从写入起经过预设时间间隔后,计算控制器可以消费延时队列中的信息,得到延时队列中的会话标识。
在一个实施例中,延时队列可以用rabbitMQ(一种基于高级消息队列协议的队列)等队列实现。在一个实施例中,延时队列可以用rabbitMQ的死信队列(DLX,dead-letter-exchange)实现。
在一个实施例中,预设时间间隔可以根据实际需求进行任意设置。比如:预设时间间隔可以为1小时。
在一个实施例中,在推送会话过期消息至通知队列之后,计算控制器可以在经过预设等待时长后,删除通知队列。在一个实施例中,预设等待时长可以根据实际需求进行任意设置。比如:预设等待时长可以为3秒。
可以理解,如果在推送会话过期消息至通知队列之后,有线程正在阻塞到通知队列获取消息,则可以获取到会话过期消息,及时结束阻塞,经过预设等待时长后,再删除通知队列,以避免获取不到会话过期消息。
如图10所示,是上述实施例中通过延时队列进行会话过期处理的整体流程示意图。计算控制器可以在经过预设时间间隔后消费延时队列中的消息,获取会话标识,会话管理器可以删除会话标识对应的会话信息,并向通知队列中推送会话过期消息。在经过预设等待时长后,计算控制器可以删除通知队列。
上述实施例中,将会话标识写入延时队列,在从写入起经过预设时间间隔后,从延时队列获取会话标识,删除相应的会话信息,并推送会话过期消息至通知队列,定期清理过期的会话信息,以及时释放系统资源,避免了会话信息对系统资源的长时间占用。
在其他实施例中,还可以采用定时扫描会话表或加载首页数据时清理过期会话等方式,进行会话过期处理。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的可见数据加载方法的可见数据加载装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个可见数据加载装置实施例中的具体限定可以参见上文中对于可见数据加载方法的限定,在此不再赘述。
在一个实施例中,如图11所示,提供了一种可见数据加载装置1100,包括:请求响应模块1102、会话查询模块1104和输出加载模块1106,其中:
请求响应模块1102,用于响应于分页数据加载请求,确定当前的待加载的分页。
会话查询模块1104,用于从会话管理器中查询待加载的分页对应的计算状态;计算状态,用于表征计算待加载的分页的可见数据的计算任务的完成情况。
输出加载模块1106,用于若计算状态为已完成状态,则从会话管理器中获取待加载的分页对应的可见数据并输出加载,异步触发执行用于计算后续至少一个分页的可见数据的计算任务;待加载的分页对应的可见数据,是预先通过异步执行针对待加载的分页的计算任务所计算得到并缓存的可见数据。输出加载模块1106,还用于若计算状态为未完成状态,则在通过通知队列检测到计算状态变更为已完成状态后,获取计算得到的待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
在一个实施例中,输出加载模块1106还用于若计算状态为未完成状态,则阻塞到通知队列,在从通知队列中获取到计算完成通知后,确定计算状态为已完成状态,以执行从会话管理器中获取待加载的分页对应的可见数据并输出加载,异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
在一个实施例中,异步执行计算任务计算得到的可见数据被缓存至会话管理器和通知队列中;已完成状态是指待加载的分页对应的可见数据满足预设页面数据条数;输出加载模块1106还用于若计算状态为未完成状态,则在确定通知队列中的可见数据的条数满足预设页面数据条数的情况下,判定计算状态变更为已完成状态;从通知队列中获取待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
在一个实施例中,如图12所示,可见数据加载装置还包括:
计算模块1108,用于针对每个待计算的分页,将会话管理器中待计算的分页的计算状态设置为未完成状态;待计算的分页,是待异步执行计算任务所针对的分页;从数据表中筛选待计算的分页的可见数据;将可见数据缓存至会话管理器中;将会话管理器中待计算的分页的计算状态设置为已完成状态,并将计算完成通知推送至通知队列中。
在一个实施例中,计算模块1108还用于确定当前查询位置和待计算的分页的预设页面数据条数;从数据表中的当前查询位置处起,向后查询数据;根据用户信息和查询到的每条数据的预设可见权限信息,确定查询到的数据中的可见数据;将符合预设页面数据条数的可见数据,确定为待计算的分页的可见数据。
在一个实施例中,计算模块1108还用于从数据表中的当前查询位置处起,向后查询符合页面数据条数的数据;若查询到的数据中的可见数据未达到预设页面数据条数,则更新当前查询位置;返回执行从数据表中的当前查询位置处起,向后查询数据及后续步骤,直至累计查询到的数据中的可见数据达到预设页面数据条数。
在一个实施例中,会话查询模块1104还用于若当前的待加载的分页为首页,则通过会话管理器生成会话标识;将会话标识写入延时队列;在从写入起经过预设时间间隔后,从延时队列获取会话标识,以删除会话管理器中会话标识对应的会话信息;会话信息包括已缓存的可见数据;推送会话过期消息至通知队列;若从通知队列中获取到会话过期消息,则结束阻塞。
上述可见数据加载装置,响应于分页数据加载请求,确定当前的待加载的分页,从会话管理器中查询待加载的分页对应的计算状态,若计算状态为已完成状态,则从会话管理器中获取预先缓存的待加载的分页对应的可见数据并输出加载,异步触发执行用于计算后续至少一个分页的可见数据的计算任务,若计算状态为未完成状态,则在通过通知队列检测到计算状态变更为已完成状态后,获取计算得到的待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。通过预先异步计算后续至少一个分页的可见数据并进行缓存,针对当前待加载的分页可以直接获取预先缓存好的可见数据并输出加载,避免了后台服务器拉取各页的所有数据进行计算导致时延很大的问题,从而提高了可见数据加载效率。此外,预先计算后续至少一个分页的可见数据并缓存,相较于在每次前端需要加载一个分页的可见数据时才通过后台进行可见数据的计算的方法而言,避免了前端每次获取到的可见数据的条数不一样,需要多次调用后台接口才能得到相同条数的可见数据的问题,进一步提高了可见数据加载的效率。另外,相较于通过前端进行可见数据的计算的方法而言,无需通过前端拉取后台的数据并进行计算,避免了敏感数据的泄露,以及前端所需的存储空间和计算量过大的问题,提高了数据的安全性,降低了前端的系统资源占用,提高了可见数据加载效率。
上述可见数据加载装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种可见数据加载方法。
本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时可包括如上述各方法的实施例的流程。本案所提供各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric RandomAccess Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random AccessMemory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。本申请所提供实施例所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等不限于此。
以上实施例各技术特征可以进行任意组合,为使描述简洁,未对上述实施例中技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说在不脱离本申请构思的前提下还可做出变形和改进,都属于本申请的保护范围。本申请的保护范围应以权利要求为准。
Claims (10)
1.一种可见数据加载方法,其特征在于,所述方法包括:
响应于分页数据加载请求,确定当前的待加载的分页;
从会话管理器中查询所述待加载的分页对应的计算状态;所述计算状态,用于表征计算所述待加载的分页的可见数据的计算任务的完成情况;
若所述计算状态为已完成状态,则从所述会话管理器中获取所述待加载的分页对应的可见数据并输出加载,异步触发执行用于计算后续至少一个分页的可见数据的计算任务;所述待加载的分页对应的可见数据,是预先通过异步执行针对所述待加载的分页的计算任务所计算得到并缓存的可见数据;
若所述计算状态为未完成状态,则在通过通知队列检测到所述计算状态变更为已完成状态后,获取计算得到的所述待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
2.根据权利要求1所述的方法,其特征在于,所述若所述计算状态为未完成状态,则在通过通知队列检测到所述计算状态变更为已完成状态后,获取计算得到的所述待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务包括:
若所述计算状态为未完成状态,则阻塞到通知队列,在从所述通知队列中获取到计算完成通知后,确定所述计算状态为已完成状态,以执行所述从所述会话管理器中获取所述待加载的分页对应的可见数据并输出加载,异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
3.根据权利要求1所述的方法,其特征在于,异步执行计算任务计算得到的可见数据被缓存至所述会话管理器和所述通知队列中;所述已完成状态是指所述待加载的分页对应的可见数据满足预设页面数据条数;
所述若所述计算状态为未完成状态,则在通过通知队列检测到所述计算状态变更为已完成状态后,获取计算得到的所述待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务包括:
若所述计算状态为未完成状态,则在确定所述通知队列中的可见数据的条数满足所述预设页面数据条数的情况下,判定所述计算状态变更为已完成状态;
从所述通知队列中获取所述待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
4.根据权利要求1所述的方法,其特征在于,异步执行每个分页的计算任务的步骤包括:
针对每个待计算的分页,将所述会话管理器中所述待计算的分页的计算状态设置为未完成状态;所述待计算的分页,是待异步执行计算任务所针对的分页;
从数据表中筛选所述待计算的分页的可见数据;
将所述可见数据缓存至所述会话管理器中;
将所述会话管理器中所述待计算的分页的计算状态设置为已完成状态,并将计算完成通知推送至所述通知队列中。
5.根据权利要求4所述的方法,其特征在于,所述从数据表中筛选所述待计算的分页的可见数据包括:
确定当前查询位置和所述待计算的分页的预设页面数据条数;
从数据表中的所述当前查询位置处起,向后查询数据;
根据用户信息和查询到的每条数据的预设可见权限信息,确定查询到的数据中的可见数据;
将符合所述预设页面数据条数的可见数据,确定为所述待计算的分页的可见数据。
6.根据权利要求5所述的方法,其特征在于,所述从数据表中的所述当前查询位置处起,向后查询数据包括:
从数据表中的所述当前查询位置处起,向后查询符合所述页面数据条数的数据;
在所述将符合所述预设页面数据条数的可见数据,确定为所述待计算的分页的可见数据之前,所述方法还包括:
若查询到的数据中的可见数据未达到所述预设页面数据条数,则更新所述当前查询位置;
返回执行所述从数据表中的所述当前查询位置处起,向后查询数据及后续步骤,直至累计查询到的数据中的可见数据达到所述预设页面数据条数。
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若当前的待加载的分页为首页,则通过会话管理器生成会话标识;
将所述会话标识写入延时队列;
在从写入起经过预设时间间隔后,从所述延时队列获取所述会话标识,以删除所述会话管理器中所述会话标识对应的会话信息;所述会话信息包括已缓存的可见数据;
推送会话过期消息至所述通知队列;
在所述若所述计算状态为未完成状态,则阻塞到通知队列之后,所述方法还包括:
若从所述通知队列中获取到所述会话过期消息,则结束阻塞。
8.一种可见数据加载装置,其特征在于,所述装置包括:
请求响应模块,用于响应于分页数据加载请求,确定当前的待加载的分页;
会话查询模块,用于从会话管理器中查询所述待加载的分页对应的计算状态;所述计算状态,用于表征计算所述待加载的分页的可见数据的计算任务的完成情况;
输出加载模块,用于若所述计算状态为已完成状态,则从所述会话管理器中获取所述待加载的分页对应的可见数据并输出加载,异步触发执行用于计算后续至少一个分页的可见数据的计算任务;所述待加载的分页对应的可见数据,是预先通过异步执行针对所述待加载的分页的计算任务所计算得到并缓存的可见数据;
所述输出加载模块,还用于若所述计算状态为未完成状态,则在通过通知队列检测到所述计算状态变更为已完成状态后,获取计算得到的所述待加载的分页对应的可见数据并输出加载,以及异步触发执行用于计算后续至少一个分页的可见数据的计算任务。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210742137.9A CN114816586B (zh) | 2022-06-28 | 2022-06-28 | 可见数据加载方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210742137.9A CN114816586B (zh) | 2022-06-28 | 2022-06-28 | 可见数据加载方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114816586A true CN114816586A (zh) | 2022-07-29 |
CN114816586B CN114816586B (zh) | 2022-09-27 |
Family
ID=82522750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210742137.9A Active CN114816586B (zh) | 2022-06-28 | 2022-06-28 | 可见数据加载方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114816586B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425708A (zh) * | 2012-05-25 | 2013-12-04 | 金蝶软件(中国)有限公司 | 一种优化的web分页查询方法及装置 |
CN104615726A (zh) * | 2015-02-06 | 2015-05-13 | 北京神舟航天软件技术有限公司 | 一种基于缓加载技术展示大量业务对象的方法 |
CN106339508A (zh) * | 2016-10-25 | 2017-01-18 | 电子科技大学 | 一种基于分页的web缓存方法 |
CN106649435A (zh) * | 2016-09-07 | 2017-05-10 | 努比亚技术有限公司 | 数据查询装置及方法 |
US9940069B1 (en) * | 2013-02-27 | 2018-04-10 | EMC IP Holding Company LLC | Paging cache for storage system |
CN108632388A (zh) * | 2018-05-15 | 2018-10-09 | 聚好看科技股份有限公司 | 一种分页内容的加载方法及装置 |
CN109582899A (zh) * | 2018-10-26 | 2019-04-05 | 平安科技(深圳)有限公司 | 页面加载方法、装置、计算机设备及存储介质 |
US10353818B1 (en) * | 2013-02-27 | 2019-07-16 | EMC IP Holding Company LLC | Dataset paging cache for storage system |
CN112069207A (zh) * | 2020-08-27 | 2020-12-11 | 重庆攸亮科技股份有限公司 | 一种多表联合查询效率提升方法 |
CN113065084A (zh) * | 2021-03-08 | 2021-07-02 | 南京苏宁软件技术有限公司 | 数据加载方法、装置、计算机设备和存储介质 |
CN113835790A (zh) * | 2020-06-23 | 2021-12-24 | 北京字节跳动网络技术有限公司 | 基于Android的分页页面显示方法和装置 |
CN114168634A (zh) * | 2021-12-09 | 2022-03-11 | 中国建设银行股份有限公司 | 一种异构平台下分页并行查询方法及系统 |
-
2022
- 2022-06-28 CN CN202210742137.9A patent/CN114816586B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425708A (zh) * | 2012-05-25 | 2013-12-04 | 金蝶软件(中国)有限公司 | 一种优化的web分页查询方法及装置 |
US9940069B1 (en) * | 2013-02-27 | 2018-04-10 | EMC IP Holding Company LLC | Paging cache for storage system |
US10353818B1 (en) * | 2013-02-27 | 2019-07-16 | EMC IP Holding Company LLC | Dataset paging cache for storage system |
CN104615726A (zh) * | 2015-02-06 | 2015-05-13 | 北京神舟航天软件技术有限公司 | 一种基于缓加载技术展示大量业务对象的方法 |
CN106649435A (zh) * | 2016-09-07 | 2017-05-10 | 努比亚技术有限公司 | 数据查询装置及方法 |
CN106339508A (zh) * | 2016-10-25 | 2017-01-18 | 电子科技大学 | 一种基于分页的web缓存方法 |
CN108632388A (zh) * | 2018-05-15 | 2018-10-09 | 聚好看科技股份有限公司 | 一种分页内容的加载方法及装置 |
CN109582899A (zh) * | 2018-10-26 | 2019-04-05 | 平安科技(深圳)有限公司 | 页面加载方法、装置、计算机设备及存储介质 |
CN113835790A (zh) * | 2020-06-23 | 2021-12-24 | 北京字节跳动网络技术有限公司 | 基于Android的分页页面显示方法和装置 |
CN112069207A (zh) * | 2020-08-27 | 2020-12-11 | 重庆攸亮科技股份有限公司 | 一种多表联合查询效率提升方法 |
CN113065084A (zh) * | 2021-03-08 | 2021-07-02 | 南京苏宁软件技术有限公司 | 数据加载方法、装置、计算机设备和存储介质 |
CN114168634A (zh) * | 2021-12-09 | 2022-03-11 | 中国建设银行股份有限公司 | 一种异构平台下分页并行查询方法及系统 |
Non-Patent Citations (4)
Title |
---|
ZHIGANG ZHOU 等: ""Paged Cache Based Massive Terrain Dataset Real-Time Rendering Algorithm"", 《 2009 INTERNATIONAL CONFERENCE ON INFORMATION ENGINEERING AND COMPUTER SCIENCE》 * |
殷智慧: ""三维空间数据存储技术与动态调度机制研究"", 《中国优秀硕士学位论文全文数据库 (基础科学辑)》 * |
王小芦: ""时空数据的离线缓存管理技术研究"", 《中国优秀硕士学位论文全文数据库 (基础科学辑)》 * |
王德俊 等: ""基于Ogre与MFC架构的地形分页动态加载技术研究与实现"", 《应用科技》 * |
Also Published As
Publication number | Publication date |
---|---|
CN114816586B (zh) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11036713B2 (en) | Sending notifications in a multi-client database environment | |
US8635250B2 (en) | Methods and systems for deleting large amounts of data from a multitenant database | |
US8762420B2 (en) | Aggregation of data stored in multiple data stores | |
US20120101866A1 (en) | Service level agreement design and enforcement for outsourced call center | |
US8788370B2 (en) | Web service architecture for product version retrieval | |
US20150095403A1 (en) | Business object attachments and expiring urls | |
US20060271384A1 (en) | Reference data aggregate service population | |
US20120143894A1 (en) | Acquisition of Item Counts from Hosted Web Services | |
US20080244399A1 (en) | Contextual support center | |
US10691653B1 (en) | Intelligent data backfill and migration operations utilizing event processing architecture | |
CN114816586B (zh) | 可见数据加载方法、装置、计算机设备和存储介质 | |
US11108784B2 (en) | Permission aggregator | |
CN114791915B (zh) | 数据归集方法、装置、计算机设备和存储介质 | |
CN115829579A (zh) | 资源数据处理方法、装置、服务器及存储介质 | |
CN111753141A (zh) | 一种数据管理方法及相关设备 | |
US11461313B2 (en) | Systems and methods for automatically creating and/or managing electronic data tables | |
US9053151B2 (en) | Dynamically joined fast search views for business objects | |
CN115168462A (zh) | 确定目标对象的方法、数据存储方法及对应装置 | |
CN114238823A (zh) | 访问网站的方法、装置、计算机设备和存储介质 | |
CN114841791B (zh) | 预算管控方法、系统、装置、计算机设备和存储介质 | |
CN115408396B (zh) | 业务数据的存储方法、装置、计算机设备和存储介质 | |
CN112783925B (zh) | 分页检索方法和装置 | |
US11734087B2 (en) | Event-driven service for configurable metrics | |
US20230177423A1 (en) | Electronic catalog publishing | |
CN115357831A (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 |