一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据获取方法、装置、存储介质以及计算机设备与流程

2022-09-01 02:00:13 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,具体而言,涉及一种数据获取方法、装置、存储介质和计算机设备。


背景技术:

2.随着计算机技术的飞速发展,应用程序的数量和规模也有了质的提升,且应用程序还产生了大量需要存储的应用数据,通过将该应用数据存储在通用缓存系统中,以在后续的应用过程中,能够基于该通用缓存系统进行数据获取,然后获取到的应用数据执行该应用程序的相应功能。


技术实现要素:

3.本技术提供一种数据获取方法、装置、存储介质以及计算机设备,可以解决如何提高数据的获取效率的技术问题。
4.第一方面,本技术实施例提供一种数据获取方法,该方法包括:
5.响应于数据获取请求,获取所述数据获取请求中的目标版本号和目标键值;
6.在定长数据库的版本映射表中,确定所述目标版本号对应的目标键值映射表,所述版本映射表包括至少一个版本号以及所述至少一个版本号中各版本号对应的键值映射表;
7.在所述目标键值映射表中,确定所述目标键值对应的目标首地址,所述目标键值映射表包括至少一个键值以及所述至少一个键值中各键值对应的首地址;
8.基于所述目标首地址以及所述目标版本号对应的数据长度,在所述定长数据库中获取所述数据获取请求对应的目标数据。
9.第二方面,本技术实施例提供一种数据获取装置,包括:
10.请求响应模块,用于响应于数据获取请求,获取所述数据获取请求中的目标版本号和目标键值;
11.映射表确定模块,用于在定长数据库的版本映射表中,确定所述目标版本号对应的目标键值映射表,所述版本映射表包括至少一个版本号以及所述至少一个版本号中各版本号对应的键值映射表;
12.首地址获取模块,用于在所述目标键值映射表中,确定所述目标键值对应的目标首地址,所述目标键值映射表包括至少一个键值以及所述至少一个键值中各键值对应的首地址;
13.数据获取模块,用于基于所述目标首地址以及所述目标版本号对应的数据长度,在所述定长数据库中获取所述数据获取请求对应的目标数据。
14.第三方面,本技术实施例提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序适于由处理器加载并执行上述方法的步骤。
15.第四方面,本技术实施例提供一种计算机设备,包括存储器、处理器及存储在存储
器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的方法的步骤。
16.在本技术实施例中,通过构建针对定长数据的定长数据库,并按照定长数据的版本和键值,再构建用于定位定长数据的版本映射表和键值映射表,设计了一种针对定长数据的获取方式,即通过版本映射表和键值映射表共同定位数据获取请求对应的目标数据,不再基于繁杂的不定长数据的获取方式进行数据获取,提高了定长数据的获取速度,进而提高了数据获取效率。
附图说明
17.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1为本技术实施例提供的一种数据获取装置的装置架构图;
19.图2为本技术实施例提供的一种数据获取系统的系统架构图;
20.图3为本技术实施例提供的一种数据获取方法的流程示意图;
21.图4为本技术实施例提供的一种数据获取方法的流程示意图;
22.图5为本技术实施例提供的一种数据获取方法的流程示意图;
23.图6为本技术实施例提供的一种数据获取装置的结构示意图;
24.图7为本技术实施例提供的一种数据获取装置的结构示意图;
25.图8是本技术实施例提供的一种计算机设备的结构示意图。
具体实施方式
26.为使得本技术的特征和优点能够更加的明显和易懂,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而非全部实施例。基于本技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
27.现有的通用缓存系统为了保证其通用性,均由不定长的数据库组成。则可以理解的是,基于该通用缓存系统所存储的数据既可以为定长数据,也可以为不定长数据,但基于该通用缓存系统所设置的数据获取方式,均为针对于不定长数据设计的数据获取方式,具体来说,是通过繁杂的数据定位方式,计算所请求数据的详细地址,然后基于该地址在通用缓存系统中进行数据获取。
28.在实际应用过程中,不同的场景和系统有着不同的数据缓存需求。示例性的,不同于通用字符串、文件和图片的缓存需求,在机器学习特征向量的缓存场景中,所需要缓存的数据是定长的数字键和特征向量数据,而如果仍旧通过针对于不定长数据的获取方式进行数据获取,会限制定长数据的访问性能,即定长数据获取速度较慢,导致数据的获取效率较低。
29.为了更好的提高数据的获取效率,请参见图1,图1为本技术实施例提供的一种数据获取装置的装置架构图。
30.如图1所示,数据获取装置10的装置架构包括:处理器11和内存12,其中。
31.数据获取装置10可以是各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携式计算机和台式计算机等,在此不作具体限定。处理器11为数据获取装置10的执行单元,用于对接收到的数据进行数据处理。内存12为数据获取装置10中用于存储数据的存储介质,可以理解的是,内存12中存储有定长数据库。
32.数据获取装置10接收到数据获取请求时,处理器11响应于数据获取请求,解析该数据获取请求,以得到数据获取请求中的目标版本号和目标键值,处理器11获取存储在内存12中的定长数据库的版本映射表,然后基于目标版本号,在定长数据库的版本映射表中,确定目标版本号对应的目标键值映射表,在定长数据库的多个键值映射表中,获取目标键值映射表,再基于目标键值,在目标键值映射表中,确定目标键值对应的目标首地址,同时还获取目标版本号对应的数据长度,最后基于目标首地址和目标版本号对应的数据长度,在定长数据库中,获取目标键值对应的目标数据。
33.基于图1所示的装置框架,通过构建针对定长数据的定长数据库,并按照定长数据的版本和键值,再构建用于定位定长数据的版本映射表和键值映射表,设计了一种针对定长数据的获取方式,即通过版本映射表和键值映射表共同定位数据获取请求对应的目标数据,不再基于繁杂的不定长数据的获取方式进行数据获取,提高了定长数据的获取速度,进而提高了数据获取效率。
34.可以理解的是,数据获取装置10所接收到的数据获取请求可以是数据获取装置10内部应用程序产生的,也可以是用户基于数据获取装置10的输入装置输入的。数据获取装置10还可以作为服务器,接收与数据获取装置10通信连接的客户端发送的数据获取请求。
35.在数据获取装置10作为服务器时,现有的数据获取装置10会通过网卡驱动接收客户端发送的数据获取请求,由网卡驱动进行请求解析后,将解析得到的请求数据发送至内核态协议栈中,再经由内核态协议栈对应的线程将请求数据发送至用户态协议栈中,以通过用户态协议栈对应的线程获取该数据获取请求对应的数据,受限于内核调度要求,该数据获取请求的响应过程较为繁琐,且处理器资源并不稳定,导致数据获取的速度较慢、效率较低。
36.为了更好的提高数据的获取效率,请参见图2,图2为本技术实施例提供的一种数据获取系统1的系统架构图。
37.如图2所示,数据获取系统1的系统架构包括:数据获取装置10和客户端20,其中,数据获取装置10包括处理器11、内存12和网卡驱动13,且处理器11包括用户态主线程111、主线程协议栈112、工作线程113、缓冲队列114、
38.数据获取装置10和客户端20均可以是各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携式计算机和台式计算机等,在此不作具体限定。用户态主线程111为数据获取装置10中,调用权限为用户态的主线程;主线程协议栈112为针对用户态主线程111的协议栈,归属于数据获取装置10中的用户空间;缓冲队列114为针对工作线程113的缓冲工具。内存12为数据获取装置10中用于存储数据的存储介质,可以理解的是,内存12中存储有定长数据库。网卡驱动13用于接收客户端20发送的数据获取请求,并向客户端20返回数据获取请求。
39.网卡驱动13接收客户端20发送的通信连接请求后,将通信连接请求发送至主线程
协议栈112,用户态主线程111通过轮询的方式收取主线程协议栈112中的通信连接请求,然后再基于通信连接请求,建立数据获取装置10与客户端20之间的通信连接,然后为客户端20分配工作线程113,具体来说,是在数据获取装置10的多个工作线程113中,选择一个工作线程113与客户端20绑定,则可以理解的是,数据获取装置10在接收到客户端发送的数据获取请求时,可以通过客户端20对应的工作线程113进行处理。
40.网卡驱动13接收客户端20发送的数据获取请求后,将数据获取请求发送至客户端20对应的工作线程113的缓冲队列114中,工作线程113通过轮询的方式收取缓冲队列114中的数据获取请求,然后响应于数据获取请求,解析该数据获取请求,以得到数据获取请求中的目标版本号和目标键值,工作线程113获取存储在内存12中的定长数据库的版本映射表,然后基于目标版本号,在定长数据库的版本映射表中,确定目标版本号对应的目标键值映射表,在定长数据库的多个键值映射表中,获取目标键值映射表,再基于目标键值,在目标键值映射表中,确定目标键值对应的目标首地址,同时还获取目标版本号对应的数据长度,基于目标首地址和目标版本号对应的数据长度,在定长数据库中,获取目标键值对应的目标数据,最后将获取到的目标数据发送至网卡驱动13中,再通过网口驱动13将获取到的目标数据返回至客户端20中。
41.基于图2所示的系统框架,通过控制网卡驱动将接收到的请求直接发送至对应的线程,以通过该线程直接响应接收到的请求,无需内核态线程进行二次转发,通过提高请求的响应速度来提高数据获取速度;还通过为客户端分配工作线程,绑定处理器资源,提高数据获取的速度和效率。
42.下面将结合图3-图5,对本技术实施例提供的数据获取方法进行详细介绍。
43.请参见图3,为本技术实施例提供的一种数据获取方法的流程示意图。如图3所示,所述方法可以包括以下步骤s101-步骤s104。
44.s101,响应于数据获取请求,获取所述数据获取请求中的目标版本号和目标键值。
45.在一种实现方式中,数据获取请求包括目标版本号和目标键值,目标版本号为数据获取请求所请求的目标数据所属的版本信息,目标键值为数据获取请求所请求的目标数据的唯一标识。可以理解的是,同一应用程序有着至少一个程序版本,不同程序版本的应用程序所产生的定长数据的数据长度可能不同,版本信息用于指示目标数据是由哪个程序版本的应用程序产生的。
46.数据获取装置接收数据获取请求,然后响应于数据获取请求,对数据获取请求进行请求解析,得到数据获取请求中的目标版本号和目标键值。
47.s102,在定长数据库的版本映射表中,确定所述目标版本号对应的目标键值映射表,所述版本映射表包括至少一个版本号以及所述至少一个版本号中各版本号对应的键值映射表。
48.在一种实现方式中,定长数据库用于存储定长数据,包括存储在定长数据库中的定长数据、基于定长数据的存储位置设置的版本映射表和键值映射表。其中,定长数据库包括版本映射表,该版本映射表包括至少一个版本号以及至少一个版本号中各版本号对应的键值映射表,用于指示版本号与键值映射表之间的关系。
49.示例性的,版本映射表可以如表1所示:
50.版本号键值映射表
v0键值映射表1v1键值映射表2v2键值映射表3
…………
vn键值映射表n
51.表1
52.例如,版本号为v0的版本所对应的键值映射表为键值映射表1。
53.定长数据库包括至少一个键值映射表,该键值映射表包括至少一个键值以及至少一个键值中各键值对应的首地址,可以理解的是,键值对应的首地址为该键值对应的数据的存储地址,该存储地址指示该键值对应的数据中首比特数据所在的具体地址,则可以理解的是,键值映射表用于指示键值与键值对应的数据的存储地址之间的关系。需要说明的是,该定长数据库存储在数据获取装置的内存空间中。
54.示例性的,键值映射表1可以如表2所示:
55.键值首地址key1a l
v0
key2a 2l
v0
key3a 3l
v0
…………
keyna nl
v0
56.表2
57.需要说明的是,表2中的a为该键值映射表1对应的内存块的内存块首地址,l
v0
为v0版本对应的数据长度,v0为键值映射表1对应的版本号。例如,键值为key1的键值所对应的首地址为a l
v0

58.数据获取装置获取定长数据库的版本映射表,然后基于目标版本号,判断版本映射表中是否存在与目标版本号一致的预存版本号,若存在与目标版本号一致的预存版本号,则将与目标版本号一致的预存版本号对应的键值映射表,作为目标版本号对应的目标键值映射表。若不存在与目标版本号一致的预存版本号,则生成不存在数据获取请求对应的数据的错误提示,并将该错误提示输出。
59.s103,在所述目标键值映射表中,确定所述目标键值对应的目标首地址,所述目标键值映射表包括至少一个键值以及所述至少一个键值中各键值对应的首地址。
60.在一种实现方式中,数据获取装置在定长数据库的多个键值映射表中,获取目标版本号对应的目标键值映射表,然后基于目标键值,判断目标键值映射表中是否存在与目标键值一致的预存键值,若存在与目标键值一致的预存键值,则将与目标键值一致的预存键值对应的首地址,作为目标键值对应的目标首地址。若不存在与目标键值一致的预存键值,则生成不存在数据获取请求对应的数据的错误提示,并将该错误提示输出。
61.s104,基于所述目标首地址以及所述目标版本号对应的数据长度,在所述定长数据库中获取所述数据获取请求对应的目标数据。
62.在一种实现方式中,数据获取装置在获取到数据获取请求中的目标版本号之后,便获取目标版本号对应的数据长度。可选择的是,目标版本号对应的数据长度存储在数据
获取装置中,即数据获取装置中存储有数据长度与版本号的映射关系,目标版本号对应的数据长度还可以直接随着数据获取请求发送至数据获取装置中,即数据获取请求中包括目标版本号、目标版本号对应的数据长度和目标键值,则数据获取装置在响应于数据获取请求,对数据获取请求进行请求解析时,会同时得到数据获取请求中的目标版本号、目标版本号对应的数据长度和目标键值。
63.数据获取装置基于目标首地址,确定目标数据中首比特数据在定长数据库中的具体位置,并将该具体位置作为起始位置,再基于目标版本号对应的数据长度,在定长数据库中获取对应数据长度的数据,将获取到的数据作为目标键值对应的目标数据,即数据获取请求对应的目标数据。
64.在本技术实施例中,通过构建针对定长数据的定长数据库,并按照定长数据的版本和键值,再构建用于定位定长数据的版本映射表和键值映射表,设计了一种针对定长数据的获取方式,即通过版本映射表和键值映射表共同定位数据获取请求对应的目标数据,不再基于繁杂的不定长数据的获取方式进行数据获取,提高了定长数据的获取速度,进而提高了数据获取效率。
65.请参见图4,为本技术实施例提供的一种数据获取方法的流程示意图。如图4所示,所述方法可以包括以下步骤s201-步骤s211。
66.s201,采用网卡驱动,接收客户端发送的通信连接请求,将所述通信连接请求发送至主线程协议栈。
67.在一种实现方式中,通信连接请求包括客户端地址和客户端接口,该客户端为生成该通信连接请求的终端设备,通信连接请求用于向数据获取装置请求通信连接。
68.数据获取装置的网卡驱动接收到数据包时,对数据包进行初步解析,以确定数据包的具体类型,在该数据包中携带的是通信连接请求时,将通信连接请求发送至数据获取装置的主线程协议栈中。
69.s202,采用用户态主线程,对所述主线程协议栈中的通信连接请求进行解析,得到所述通信连接请求中的客户端地址和客户端端口。
70.在一种实现方式中,数据获取装置的用户态主线程会轮询主线程协议栈中的缓存数据,然后基于该缓存数据进行数据处理。
71.数据获取装置的用户态主线程对轮询到的通信连接请求进行请求解析,得到通信连接请求中携带的客户端地址和客户端端口。
72.s203,基于所述客户端地址和所述客户端端口,建立与所述客户端之间的通信连接,并向所述客户端分配工作线程。
73.在一种实现方式中,数据获取装置的用户态主线程基于客户端地址和客户端端口,建立与客户端之间的通信连接。示例性的,数据获取装置的用户态主线程基于客户端地址和客户端端口,与客户端进行三次握手(three-way handshake),在三次握手结束时,数据获取装置与客户端之间可以进行数据传输,从而建立了数据获取装置与客户端之间的通信连接。
74.数据获取装置的用户态主线程在数据获取装置与客户端之间的通信连接建立结束后,按照设定的负载均衡规则,在数据获取装置的多个工作线程中,选择一个工作线程,作为该客户端对应的工作线程,并基于通信连接,将客户端与该工作线程绑定。
75.通过建立数据获取装置与客户端之间的通信连接,然后基于该通信连接为客户端分配一个绑定的工作线程,使得数据获取装置在每次接收到通信连接的客户端所发送的数据包时,直接通过与之绑定的工作线程进行数据响应,使得处理器无需频繁调度工作线程,避免了工作线程调度所造成的资源不稳定。
76.s204,采用网卡驱动,接收客户端发送的数据获取请求。
77.在一种实现方式中,数据获取请求包括目标版本号和目标键值,目标版本号为数据获取请求所请求的目标数据所属的版本信息,目标键值为数据获取请求所请求的目标数据的唯一标识。可以理解的是,同一应用程序有着至少一个程序版本,不同程序版本的应用程序所产生的定长数据的数据长度可能不同,版本信息用于指示目标数据是由哪个程序版本的应用程序产生的。
78.数据获取装置的网卡驱动,接收客户端发送的数据获取请求,该数据获取请求可以作为数据获取装置与客户端之间通信数据包进行传输。
79.s205,响应于所述数据获取请求,确定所述客户端对应的目标工作线程。
80.在一种实现方式中,数据获取装置的网卡驱动接收包含数据获取请求的通信数据包之后,响应于数据获取请求,对该通信数据包进行初步数据解析,以确定发送该通信数据包的客户端,然后确定该客户端对应的目标工作线程。
81.s206,采用所述网卡驱动,将所述数据获取请求发送至所述目标工作线程对应的缓冲队列。
82.在一种实现方式中,数据获取请求的网卡驱动在数据获取装置的多个缓冲队列中,确定目标工作线程对应的缓冲队列,然后将数据获取请求发送至目标工作线程对应的缓冲队列中。
83.s207,采用所述目标工作线程,对所述缓冲队列中的数据获取请求进行解析,得到所述数据获取请求中的目标版本号和目标键值。
84.在一种实现方式中,数据获取装置的目标工作线程通过轮询的方式,收取目标工作线程对应的缓冲队列中缓存的数据获取请求,需要说明的是,缓冲队列用于存储对应工作线程的待处理数据,目标工作线程对数据获取请求进行请求解析,以获取数据获取请求中携带的目标版本号和目标键值。
85.通过将数据获取请求发送至客户端对应的目标工作线程的缓冲队列中,使得目标工作线程直接对客户端发送的数据获取请求进行请求处理,使得处理器无需为客户端发送的请求频繁调度工作线程,避免了工作线程调度所造成的资源不稳定。
86.在一种实现方式中,所述采用所述目标工作线程,对所述缓冲队列中的数据获取请求进行解析,得到所述数据获取请求中的目标版本号和目标键值包括以下步骤:
87.确定所述客户端对应的设定协议;
88.采用所述目标工作线程,基于所述设定协议,对所述缓冲队列中的数据获取请求进行解析,得到所述数据获取请求中的目标版本号和目标键值。
89.设定协议为客户端与数据获取装置在建立通信连接时,所约定的数据解析协议,设定协议中包括至少一种解析规则。可以理解的是,客户端和数据获取装置之间传输的通信数据包按照设定协议进行数据封装和/或数据加密。
90.数据获取装置的目标工作线程基于轮询收取到的数据获取请求,确定发送该数据
获取请求的客户端所对应的设定协议,然后获取设定协议中的解析规则,再基于设定协议中的解析规则,对该数据获取请求进行数据解析,以解析出数据获取请求中的目标版本号和目标键值。
91.通过客户端与数据获取请求之间的设定协议,解析出数据获取请求中的目标版本号和目标键值,避免了透明传输数据获取请求所造成的数据泄露等问题。
92.s208,在定长数据库的版本映射表中,确定所述目标版本号对应的目标键值映射表,所述版本映射表包括至少一个版本号以及所述至少一个版本号中各版本号对应的键值映射表。
93.在一种实现方式中,定长数据库用于存储定长数据,包括存储在定长数据库中的定长数据、基于定长数据的存储位置设置的版本映射表和键值映射表。。其中,定长数据库包括版本映射表,该版本映射表包括至少一个版本号以及至少一个版本号中各版本号对应的键值映射表,用于指示版本号与键值映射表之间的关系。定长数据库包括至少一个键值映射表,该键值映射表包括至少一个键值以及至少一个键值中各键值对应的首地址,可以理解的是,键值对应的首地址为该键值对应的数据的存储地址,该存储地址指示该键值对应的数据中首比特数据所在的具体地址,则可以理解的是,键值映射表用于指示键值与键值对应的数据的存储地址之间的关系。需要说明的是,该定长数据库存储在数据获取装置的内存空间中。
94.数据获取装置的目标工作线程获取定长数据库的版本映射表,然后基于目标版本号,判断版本映射表中是否存在与目标版本号一致的预存版本号,若存在与目标版本号一致的预存版本号,则将与目标版本号一致的预存版本号对应的键值映射表,作为目标版本号对应的目标键值映射表。若不存在与目标版本号一致的预存版本号,则生成不存在数据获取请求对应的数据的错误提示,并将该错误提示输出。
95.s209,在所述目标键值映射表中,确定所述目标键值对应的目标首地址,所述目标键值映射表包括至少一个键值以及所述至少一个键值中各键值对应的首地址。
96.在一种实现方式中,数据获取装置的目标工作线程在定长数据库的多个键值映射表中,获取目标版本号对应的目标键值映射表,然后基于目标键值,判断目标键值映射表中是否存在与目标键值一致的预存键值,若存在与目标键值一致的预存键值,则将与目标键值一致的预存键值对应的首地址,作为目标键值对应的目标首地址。若不存在与目标键值一致的预存键值,则生成不存在数据获取请求对应的数据的错误提示,并将该错误提示输出。
97.s210,基于所述目标首地址以及所述目标版本号对应的数据长度,在所述定长数据库中获取所述数据获取请求对应的目标数据。
98.在一种实现方式中,数据获取装置的目标工作线程在获取到数据获取请求中的目标版本号之后,便获取目标版本号对应的数据长度。可选择的是,目标版本号对应的数据长度存储在数据获取装置中,即数据获取装置中存储有数据长度与版本号的映射关系,目标版本号对应的数据长度还可以直接随着数据获取请求发送至数据获取装置中,即数据获取请求中包括目标版本号、目标版本号对应的数据长度和目标键值,则数据获取装置在响应于数据获取请求,对数据获取请求进行请求解析时,会同时得到数据获取请求中的目标版本号、目标版本号对应的数据长度和目标键值。
99.数据获取装置的目标工作线程基于目标首地址,确定目标数据中首比特数据在定长数据库中的具体位置,并将该具体位置作为起始位置,再基于目标版本号对应的数据长度,在定长数据库中获取对应数据长度的数据,将获取到的数据作为目标键值对应的目标数据,即数据获取请求对应的目标数据。
100.s211,将所述目标数据写入所述网卡驱动,以通过所述网卡驱动将所述目标数据返回至所述客户端中。
101.在一种实现方式中,数据获取装置的目标工作线程将获取到的目标数据,写入网卡驱动中。数据获取装置的网卡驱动在检测到目标数据时,将目标数据返回至目标工作线程对应的客户端中。
102.通过将目标数据返回至客户端中,实现了客户端的数据获取目的。
103.在本技术实施例中,通过建立数据获取装置与客户端之间的通信连接,然后基于该通信连接为客户端分配一个绑定的工作线程,使得数据获取装置在每次接收到通信连接的客户端所发送的数据包时,直接通过与之绑定的工作线程进行数据响应,使得处理器无需频繁调度工作线程,避免了工作线程调度所造成的资源不稳定;通过将数据获取请求发送至客户端对应的目标工作线程的缓冲队列中,使得目标工作线程直接对客户端发送的数据获取请求进行请求处理,使得处理器无需为客户端发送的请求频繁调度工作线程,避免了工作线程调度所造成的资源不稳定;通过客户端与数据获取请求之间的设定协议,解析出数据获取请求中的目标版本号和目标键值,避免了透明传输数据获取请求所造成的数据泄露等问题;通过将目标数据返回至客户端中,实现了客户端的数据获取目的。
104.请参见图5,为本技术实施例提供的一种数据获取方法的流程示意图。如图5所示,所述方法可以包括以下步骤s301-步骤s311。
105.s301,获取目标键值对,所述目标键值对包括目标键值和目标数据。
106.在一种实现方式中,目标键值对包括目标键值和目标数据,目标键值和目标数据以目标键值对的方式,关联存储在存储介质中。目标键值对为需要存储至定长数据库中的键值对,定长数据库存储在数据获取装置的内存中。需要说明的是,定义数据获取装置获取存储在存储介质中的数据的时长为第一获取时长,数据获取装置获取存储在内存中的数据的时长为第二获取时长,数据获取装置获取存储在缓冲区中的数据的时长为第三获取时长。数据获取装置在不同的存储位置中,获取同一需要被用户选中的目标键值对时,第一获取时长大于第二获取时长,第二获取时长大于第三获取时长,其中,该用户可以为应用程序等。
107.数据获取装置响应于数据缓存指令,在存储介质中获取数据缓存指令对应的目标键值对。可选择的是,数据缓存指令携带数据读取规则,如获取满足目标类型的目标键值对,获取设定数量的目标键值对,获取设定存储位置的目标键值对,获取目标应用程序产生的目标键值对,获取设定时间范围产生的目标键值对等等,在此均不作限定。
108.s302,将所述目标键值对存入定长数据库中。
109.在一种实现方式中,数据获取装置先确定定长数据库中处于空闲状态的目标存储空间,再将目标键值对存入目标存储空间中。
110.s303,确定所述目标键值对对应的目标版本号,并基于所述目标版本号,确定所述目标版本号对应的键值映射表。
111.在一种实现方式中,数据获取装置在存储介质中获取目标键值对时,还会基于目标键值对的相关信息(如存储信息、版本信息、应用程序信息等),确定目标键值对对应的目标版本号,基于定长数据库的版本映射表,在定长数据库的多个键值映射表中,确定目标版本号对应的键值映射表。在定长数据库的版本映射表中不存在目标版本号对应的键值映射表,即定长数据库的多个键值映射表中不存在目标版本号对应的键值映射表时,获取一个空白键值映射表,即未记录任何数据的键值映射表,然后将当前获取到的空白键值映射表,作为目标版本号对应的键值映射表,然后建立目标版本号与空白键值映射表之间的映射关系,并将当前建立的目标版本号与空白键值映射表之间的映射关系写入定长数据库的版本映射表中。
112.s304,基于所述目标键值和所述目标键值对存储在所述定长数据库中的目标首地址,更新所述目标版本号对应的键值映射表。
113.在一种实现方式中,数据获取装置基于目标键值对在定长数据库中的存储位置,获取目标键值对的目标数据中首比特数据所存储的地址,并将该地址作为目标键值对在定长数据库中的目标首地址,再建立目标键值对中的目标键值和目标键值对对应的目标首地址之间的映射关系,并在定长数据库的多个键值映射表中,获取目标版本号对应的键值映射表,然后将当前建立的目标键值与目标首地址之间的映射关系写入目标版本号对应的键值映射表中。
114.在一种实现方式中,数据获取装置响应于数据库构建指令,获取设定大小的内存空间作为存储区,所述设定大小为数据库构建指令中携带的空间大小,示例性的,可以为m字节。数据获取装置将获取到的存储区划分为多个内存块,示例性的,数据库构建指令中还携带设定内存块大小,可以为b字节,则数据获取装置基于设定内存块大小,将大小为m字节的数据区,划分为m/b个大小为b字节的内存块。数据库获取装置构建一个大小为m/b的整型数组isfree[m/b],即空闲标记数组,该整型数组用于标记m/b个内存块中各内存块是否存在空闲的存储空间,需要说明的是整型数组isfree[m/b]中存储有内存块总数对应个数的数组元素,按照内存块的存储顺序,该数组中的数组元素依次标记对应的内存块是否存在空闲存储空间。进一步的,该数组元素包括第一标记值和第二标记值,第一标记值用于指示对应的内存块中不存在空间存储空间,第二标记值用于指示对应的内存块中存在空间存储空间。示例性的,若数据获取装置中包括三个内存块:内存块a、内存块b和内存块c,且整型数组isfree[m/b]={1,0,0},数值“1”指示对应的内存块中不存在空间存储空间,数值“0”指示对应的内存块中存在空间存储空间,此时意味着内存块a无空闲存储空间,内存块b和内存块c存在空间存储空间。
[0115]
同时,数据库获取装置还构建一个大小为m/b的指针型数组address[m/b],即寻址数组,该指针型数组用于指示m/b个内存块中各内存块的内存块首地址,该内存块首地址为该内存块的首比特存储位置对应的地址信息,需要说明的是指针型数组address[m/b]中存储有内存块总数对应个数的数组元素,按照内存块的存储顺序,该数组中的数组元素依次指示对应的内存块的内存块首地址,可选择的是,指针型数组address[m/b]中的数组元素为数据指针,该数据指针指向对应的内存块的首比特。示例性的,若数据获取装置中包括三个内存块:内存块a、内存块b和内存块c,且整型数组address[m/b]={ptr_1,ptr_2,ptr_3},此时意味着内存块a的首地址为ptr_1,内存块b的首地址为ptr_2、内存块c的首地址为
ptr_3。
[0116]
进一步的,数据获取装置还构建一个版本映射表和多个键值映射表。
[0117]
数据获取装置响应于数据缓存指令,在存储介质中获取数据缓存指令对应的目标键值对,基于整型数组isfree[m/b],确定具有空闲存储空间的空闲内存块,然后基于指针型数组address[m/b],确定该空闲内存块对应的内存块首地址,然后基于该内存块首地址,从该内存块首地址开始,对空闲内存块进行查找,确定空闲内存块中第一个空闲的空闲存储空间的存储位置,然后将数据缓存指令对应的目标键值对逐一写入空闲内存块的空闲存储空间中。在数据写入过程中,若当前的空闲存储空间(第一空闲存储空间)已存满,则直接存入下一空闲存储空间(第二空闲存储空间)中,并更新第一空闲存储空间在整型数组isfree[m/b]中对应的标记值。
[0118]
最后,数据获取装置再基于目标键值对在定长数据库中的存储位置,获取目标键值对的目标数据中首比特数据所存储的地址,并将该地址作为目标键值对在定长数据库中的目标首地址,再建立目标键值对中的目标键值和目标键值对对应的目标首地址之间的映射关系,并在定长数据库的多个键值映射表中,获取目标版本号对应的键值映射表,然后将当前建立的目标键值与目标首地址之间的映射关系写入目标版本号对应的键值映射表中。
[0119]
通过构建定长数据库,再将存储在存储介质中的键值对存入定长数据库中,以使数据获取装置在获取数据时,无需再在存储介质中进行数据获取,通过在获取时长更短的内存中进行数据获取,提高数据获取速度。
[0120]
s305,响应于数据获取请求,获取所述数据获取请求中的目标版本号和目标键值。
[0121]
具体可参见步骤s101,在此不再赘述。
[0122]
s306,基于所述目标版本号和所述目标键值,在所述定长数据库的数据缓冲区中获取所述数据获取请求对应的目标数据。
[0123]
在一种实现方式中,数据缓冲区可以为数据获取装置中的缓冲区,该缓冲区中存储了一定量的访问数据。数据缓冲区中存储的访问数据包括:目标版本号、目标键值、目标数据、目标版本号和目标键值和目标数据这三者之间的映射关系。
[0124]
数据获取装置确定定长数据库对应的数据缓冲区,然后在数据缓冲区中存储的多组缓冲数据中,获取目标版本号和目标键值对应的目标数据,将获取到的目标数据作为数据获取请求对应的目标数据。
[0125]
s307,若未获取到所述数据获取请求对应的目标数据,则在定长数据库的版本映射表中,确定所述目标版本号对应的目标键值映射表,所述版本映射表包括至少一个版本号以及所述至少一个版本号中各版本号对应的键值映射表。
[0126]
在一种实现方式中,若数据获取装置在数据缓冲区中存储的多组缓冲数据中,未获取目标版本号和目标键值对应的目标数据,即数据缓冲区中为存储有目标版本号和目标键值对应的目标数据,数据获取装置获取定长数据库的版本映射表,然后基于目标版本号,判断版本映射表中是否存在与目标版本号一致的预存版本号,若存在与目标版本号一致的预存版本号,则将与目标版本号一致的预存版本号对应的键值映射表,作为目标版本号对应的目标键值映射表。若不存在与目标版本号一致的预存版本号,则生成不存在数据获取请求对应的数据的错误提示,并将该错误提示输出。
[0127]
通过将数据缓存在缓冲区中,以使数据获取装置在获取数据时,进一步缩短数据
获取的获取时长,提高数据获取速度。
[0128]
s308,在所述目标键值映射表中,确定所述目标键值对应的目标首地址,所述目标键值映射表包括至少一个键值以及所述至少一个键值中各键值对应的首地址。
[0129]
具体可参见步骤s103,在此不再赘述。
[0130]
s309,基于所述目标首地址以及所述目标版本号对应的数据长度,在所述定长数据库中获取所述数据获取请求对应的目标数据。
[0131]
具体可参见步骤s104,在此不再赘述。
[0132]
s310,将所述目标版本号、所述目标键值和所述目标数据关联存储在所述定长数据库的数据缓冲区中。
[0133]
在一种实现方式中,数据获取装置构建目标版本号、目标键值和目标数据这三者之间的映射关系,并基于该映射关系,将目标版本号、目标键值和目标数据关联存储至定长数据库的数据缓冲区中。
[0134]
通过将数据缓存在缓冲区中,以使数据获取装置在获取数据时,进一步缩短数据获取的获取时长,提高数据获取速度。
[0135]
在本技术实施例中,通过构建定长数据库,再将存储在存储介质中的键值对存入定长数据库中,以使数据获取装置在获取数据时,无需再在存储介质中进行数据获取,通过在获取时长更短的内存中进行数据获取,提高数据获取速度。通过将数据缓存在缓冲区中,以使数据获取装置在获取数据时,进一步缩短数据获取的获取时长,提高数据获取速度。
[0136]
下面将结合附图6-附图7本技术实施例提供的数据获取装置进行详细介绍。需要说明的是,附图6-附图7数据获取装置,用于执行本技术图3-图5所示实施例的方法,为了便于说明,仅示出了与本技术实施例相关的部分,具体技术细节未揭示的,请参照本技术图3-图5所示的实施例。
[0137]
请参见图6,为本技术实施例提供了一种数据获取装置的结构示意图。如图6所示,本技术实施例的所述数据获取装置2可以包括:请求响应模块21、映射表确定模块22、首地址获取模块23和数据获取模块24。
[0138]
请求响应模块21,用于响应于数据获取请求,获取所述数据获取请求中的目标版本号和目标键值;
[0139]
映射表确定模块22,用于在定长数据库的版本映射表中,确定所述目标版本号对应的目标键值映射表,所述版本映射表包括至少一个版本号以及所述至少一个版本号中各版本号对应的键值映射表;
[0140]
首地址获取模块23,用于在所述目标键值映射表中,确定所述目标键值对应的目标首地址,所述目标键值映射表包括至少一个键值以及所述至少一个键值中各键值对应的首地址;
[0141]
数据获取模块24,用于基于所述目标首地址以及所述目标版本号对应的数据长度,在所述定长数据库中获取所述数据获取请求对应的目标数据。
[0142]
在本技术实施例中,通过构建针对定长数据的定长数据库,并按照定长数据的版本和键值,再构建用于定位定长数据的版本映射表和键值映射表,设计了一种针对定长数据的获取方式,即通过版本映射表和键值映射表共同定位数据获取请求对应的目标数据,不再基于繁杂的不定长数据的获取方式进行数据获取,提高了定长数据的获取速度,进而
提高了数据获取效率。
[0143]
在一种实现方式中,所述请求响应模块21,具体用于:
[0144]
采用网卡驱动,接收客户端发送的数据获取请求;
[0145]
响应于所述数据获取请求,确定所述客户端对应的目标工作线程;
[0146]
采用所述网卡驱动,将所述数据获取请求发送至所述目标工作线程对应的缓冲队列;
[0147]
采用所述目标工作线程,对所述缓冲队列中的数据获取请求进行解析,得到所述数据获取请求中的目标版本号和目标键值。
[0148]
在一种实现方式中,所述请求响应模块21,具体用于:
[0149]
确定所述客户端对应的设定协议;
[0150]
采用所述目标工作线程,基于所述设定协议,对所述缓冲队列中的数据获取请求进行解析,得到所述数据获取请求中的目标版本号和目标键值。
[0151]
在一种实现方式中,请参见图7,为本技术实施例提供了一种数据获取装置的结构示意图。如图7所示,本技术实施例的所述数据获取装置2可以还包括:线程分配模块25。
[0152]
所述线程分配模块25,具体用于:
[0153]
采用网卡驱动,接收客户端发送的通信连接请求,将所述通信连接请求发送至主线程协议栈;
[0154]
采用用户态主线程,对所述主线程协议栈中的通信连接请求进行解析,得到所述通信连接请求中的客户端地址和客户端端口;
[0155]
基于所述客户端地址和所述客户端端口,建立与所述客户端之间的通信连接,并向所述客户端分配工作线程。
[0156]
在一种实现方式中,请参见图7,为本技术实施例提供了一种数据获取装置的结构示意图。如图7所示,本技术实施例的所述数据获取装置2可以还包括:数据返回模块26。
[0157]
所述数据返回模块26,具体用于:
[0158]
将所述目标数据写入所述网卡驱动,以通过所述网卡驱动将所述目标数据返回至所述客户端中。
[0159]
在一种实现方式中,请参见图7,为本技术实施例提供了一种数据获取装置的结构示意图。如图7所示,本技术实施例的所述数据获取装置2可以还包括:数据存储模块27。
[0160]
所述数据存储模块27,具体用于:
[0161]
获取目标键值对,所述目标键值对包括目标键值和目标数据;
[0162]
将所述目标键值对存入定长数据库中;
[0163]
确定所述目标键值对对应的目标版本号,并基于所述目标版本号,确定所述目标版本号对应的键值映射表;
[0164]
基于所述目标键值和所述目标键值对存储在所述定长数据库中的目标首地址,更新所述目标版本号对应的键值映射表。
[0165]
在一种实现方式中,所述数据获取模块24,具体用于:
[0166]
基于所述目标版本号和所述目标键值,在所述定长数据库的数据缓冲区中获取所述数据获取请求对应的目标数据;
[0167]
若未获取到所述数据获取请求对应的目标数据,则调用所述映射确定模块22,执
行所述在定长数据库的版本映射表中,确定所述目标版本号对应的目标键值映射表。
[0168]
在一种实现方式中,请参见图7,为本技术实施例提供了一种数据获取装置的结构示意图。如图7所示,本技术实施例的所述数据获取装置2可以还包括:数据缓存模块28。
[0169]
所述数据缓存模块28,具体用于:
[0170]
将所述目标版本号、所述目标键值和所述目标数据关联存储在所述定长数据库的数据缓冲区中。
[0171]
本技术实施例还提供了一种存储介质,所述存储介质可以存储有多条程序指令,所述程序指令适于由处理器加载并执行如上述图3-图5所示实施例的方法步骤,具体执行过程可以参见图3-图5所示实施例的具体说明,在此不进行赘述。
[0172]
请参见图8,为本技术实施例提供了一种计算机设备的结构示意图。如图8所示,所述计算机设备1000可以包括:至少一个处理器1001,至少一个通信总线1002,至少一个输入输出接口1003,至少一个网络接口1004和至少一个存储器1005。其中,处理器1001可以包括一个或者多个处理核心。处理器1001利用各种接口和线路连接整个计算机设备1000内的各个部分,通过运行或执行存储在存储器1005内的指令、程序、代码集或指令集,以及调用存储在存储器1005内的数据,执行终端1000的各种功能和处理数据。存储器1005可以是高速ram存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。其中,网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。通信总线1002用于实现这些组件之间的连接通信。如图8所示,作为一种终端设备存储介质的存储器1005中可以包括操作系统、网络通信模块、输入输出接口模块以及数据获取程序。
[0173]
在图8所示的计算机设备1000中,输入输出接口1003主要用于为用户以及接入设备提供输入的接口,获取用户以及接入设备输入的数据。
[0174]
在一个实施例中。
[0175]
处理器1001可以用于调用存储器1005中存储的数据获取程序,并具体执行以下操作:
[0176]
响应于数据获取请求,获取所述数据获取请求中的目标版本号和目标键值;
[0177]
在定长数据库的版本映射表中,确定所述目标版本号对应的目标键值映射表,所述版本映射表包括至少一个版本号以及所述至少一个版本号中各版本号对应的键值映射表;
[0178]
在所述目标键值映射表中,确定所述目标键值对应的目标首地址,所述目标键值映射表包括至少一个键值以及所述至少一个键值中各键值对应的首地址;
[0179]
基于所述目标首地址以及所述目标版本号对应的数据长度,在所述定长数据库中获取所述数据获取请求对应的目标数据。
[0180]
可选的,所述处理器1001在执行所述响应于数据获取请求,获取所述数据获取请求中的目标版本号和目标键值时,具体执行以下操作:
[0181]
采用网卡驱动,接收客户端发送的数据获取请求;
[0182]
响应于所述数据获取请求,确定所述客户端对应的目标工作线程;
[0183]
采用所述网卡驱动,将所述数据获取请求发送至所述目标工作线程对应的缓冲队列;
[0184]
采用所述目标工作线程,对所述缓冲队列中的数据获取请求进行解析,得到所述数据获取请求中的目标版本号和目标键值。
[0185]
可选的,所述处理器1001在执行所述采用所述目标工作线程,对所述缓冲队列中的数据获取请求进行解析,得到所述数据获取请求中的目标版本号和目标键值时,具体执行以下操作:
[0186]
确定所述客户端对应的设定协议;
[0187]
采用所述目标工作线程,基于所述设定协议,对所述缓冲队列中的数据获取请求进行解析,得到所述数据获取请求中的目标版本号和目标键值。
[0188]
可选的,所述处理器1001在执行所述采用网卡驱动,接收客户端发送的数据获取请求之前,还执行以下操作:
[0189]
采用网卡驱动,接收客户端发送的通信连接请求,将所述通信连接请求发送至主线程协议栈;
[0190]
采用用户态主线程,对所述主线程协议栈中的通信连接请求进行解析,得到所述通信连接请求中的客户端地址和客户端端口;
[0191]
基于所述客户端地址和所述客户端端口,建立与所述客户端之间的通信连接,并向所述客户端分配工作线程。
[0192]
可选的,所述处理器1001在执行所述基于所述目标版本号对应的数据长度以及所述目标首地址,在所述定长数据库中获取所述数据获取请求对应的目标数据之后,还执行以下操作:
[0193]
将所述目标数据写入所述网卡驱动,以通过所述网卡驱动将所述目标数据返回至所述客户端中。
[0194]
可选的,所述处理器1001在执行所述响应于数据获取请求,获取所述数据获取请求中的目标版本号和目标键值之前,还执行以下操作:
[0195]
获取目标键值对,所述目标键值对包括目标键值和目标数据;
[0196]
将所述目标键值对存入定长数据库中;
[0197]
确定所述目标键值对对应的目标版本号,并基于所述目标版本号,确定所述目标版本号对应的键值映射表;
[0198]
基于所述目标键值和所述目标键值对存储在所述定长数据库中的目标首地址,更新所述目标版本号对应的键值映射表。
[0199]
可选的,所述处理器1001在执行所述响应于数据获取请求,获取所述数据获取请求中的目标版本号和目标键值之后,还执行以下操作:
[0200]
基于所述目标版本号和所述目标键值,在所述定长数据库的数据缓冲区中获取所述数据获取请求对应的目标数据;
[0201]
若未获取到所述数据获取请求对应的目标数据,则执行所述在定长数据库的版本映射表中,确定所述目标版本号对应的目标键值映射表。
[0202]
可选的,所述处理器1001在执行所述基于所述目标版本号对应的数据长度以及所述目标首地址,在所述定长数据库中获取所述数据获取请求对应的目标数据之后,还执行以下操作:
[0203]
将所述目标版本号、所述目标键值和所述目标数据关联存储在所述定长数据库的
数据缓冲区中。
[0204]
在本技术实施例中,通过构建针对定长数据的定长数据库,并按照定长数据的版本和键值,再构建用于定位定长数据的版本映射表和键值映射表,设计了一种针对定长数据的获取方式,即通过版本映射表和键值映射表共同定位数据获取请求对应的目标数据,不再基于繁杂的不定长数据的获取方式进行数据获取,提高了定长数据的获取速度,进而提高了数据获取效率。
[0205]
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本技术所必须的。
[0206]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
[0207]
以上为对本技术所提供的一种数据获取方法、装置、存储介质及设备的描述,对于本领域的技术人员,依据本技术实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本技术的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献