数据处理方法、装置、存储介质和电子设备与流程

文档序号:17989842发布日期:2019-06-22 00:42阅读:173来源:国知局
数据处理方法、装置、存储介质和电子设备与流程

本发明公开涉及数据处理领域,具体涉及一种数据处理方法、装置、存储介质和电子设备。



背景技术:

在mysql数据复制中,由于mysql服务器上的binlog(日志)文件保存时间较短,磁盘空间不足时,binlog文件会被清除掉。

目前,存储日志文件主要依赖诸如redis集群的缓存系统,redis是开源软件,可以支持很大的数据容量,而且redis本身也支持数据持久化功能。

然后,redis存在如下缺陷:1)在mysql数据复制的replicator(复制器,负责抽取和缓存mysqlbinlog日志记录)组件中,当存在超大缓存需求场景时,需要依据某条数据id(identity,身份标识号码)来查询下一条数据,redis不支持这样的操作;2)replicator需要设置固定的缓存大小,如果缓存空间满了,最新被写入的数据会挤掉最老的数据;而redis依据key(键)的ttl(timetolive,剩余生存时间)机制来删除过期的数据,两者之间有较大的区别,对业务的使用场景有较大的影响。



技术实现要素:

有鉴于此,本发明实施例提供一种数据处理方法、装置、存储介质和电子设备,以解决现有技术中由于依赖redis集群缓存系统来存储数据而导致的无法较好地满足replicator进程需求的问题。

根据本发明实施例的第一方面,提供一种数据处理方法,该方法包括:接收数据读取指令,其中,数据基于内存映射技术存储在由多个存储单元构成的缓存区内;根据数据读取指令确定数据对应的索引数据,索引数据包括一级索引数据和二级索引数据;根据一级索引数据确定数据所属存储单元的序号信息;根据所属存储单元的序号信息和二级索引数据确定数据的位置信息,以读取数据。

根据本发明实施例的第二方面,提供一种数据处理装置,该装置包括:指令接收单元,用于接收数据读取指令,其中,数据基于内存映射技术存储在由多个存储单元构成的缓存区内;索引数据确定单元,用于根据数据读取指令确定数据对应的索引数据,索引数据包括一级索引数据和二级索引数据;序号确定单元,用于根据一级索引数据确定数据所属存储单元的序号信息;数据读取单元,用于根据所属存储单元的序号信息和二级索引数据确定数据的位置信息,以读取数据。

根据本发明实施例的第三方面,提供一种计算机可读存储介质,其上存储计算机程序指令,其中,所述计算机程序指令在被处理器执行时实现如第一方面所述的方法。

根据本发明实施例的第四方面,提供一种电子设备,包括存储器和处理器,其中,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如第一方面所述的方法。

本发明实施例通过将数据基于mmap技术存储在由多个存储单元构成的缓存区内,在接收到数据读取指令时,首先确定该数据的索引数据,之后根据索引数据确定数据的具体存储位置并读取数据,以便对数据进行后续处理,相比于现有技术中的依赖redis集群缓存系统来存储数据,本发明实施例由于基于mmap技术,可以满足replicator进程所需的高效率读写,并且通过设置存储单元的数量和每个存储单元的容量,可以满足replicator进程所需的超大缓存机制。

附图说明

通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:

图1是根据本发明实施例的数据处理方法的流程图;

图2是根据本发明实施例的数据和索引数据的存储结构示意图;

图3是根据本发明实施例的数据处理装置的结构框图;

图4是根据本发明实施例的数据处理装置的详细结构框图;

图5是根据本发明实施例的存储管理单元309的结构框图;

图6是根据本发明实施例的数据读取单元304的结构框图;

图7是根据本发明实施例的数据处理装置的应用场景图;

图8是根据本发明实施例的电子设备的示意图。

具体实施方式

以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。

此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。

除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。

在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。

由于现有技术中依赖redis集群缓存系统来存储数据导致了无法较好地满足replicator进程的需求,因此,repliactor需要设计一套基于java进程内的超大缓存机制,且缓存数据要支持持久化存储,在replicator进程因故障重启后能恢复缓存数据。

基于此,本发明实施例提供了一种数据处理方法,图1是该数据处理方法的流程图,如图1所示,该方法包括:

步骤101,接收数据读取指令,其中,数据基于内存映射(mmap)技术存储在由多个存储单元构成的缓存区内;

步骤102,根据数据读取指令确定数据对应的索引数据,索引数据包括一级索引数据和二级索引数据;

步骤103,根据一级索引数据确定数据所属存储单元的序号信息;

步骤104,根据所属存储单元的序号信息和二级索引数据确定数据的位置信息,以读取该数据。

通过将数据基于mmap技术存储在由多个存储单元构成的缓存区内,在接收到数据读取指令时,首先确定该数据的索引数据,之后根据索引数据确定数据的具体存储位置并读取数据,以便对数据进行后续处理,相比于现有技术中的依赖redis集群缓存系统来存储数据,本发明实施例由于基于mmap技术,可以满足replicator进程所需的高效率读写,并且通过设置存储单元的数量和每个存储单元的容量,可以满足replicator进程所需的超大缓存机制。

在本发明实施例中,在建构缓存区时,可以为多个存储单元依次设置序号;在写入数据时,可以根据存储单元序号将数据依次写入存储单元中;并为写入每个存储单元的数据依次设置数据编号。当所有存储单元被写满,将当前写入数据覆盖序号为1的存储单元中的数据。

上述一级索引数据可以包括:数据在所属存储单元的序号信息、在所属存储单元的位置偏移信息以及在二级索引数据中的位置信息。

上述二级索引数据包括:数据在所属存储单元的数据编号信息。

在实际操作中,一级索引数据可以以跳表形式存储在堆内存(heap)中;二级索引数据可以以数组形式存储在堆外内存中。这样存储索引数据,可以节省较多的内存空间。

在步骤104中,可以先根据所属存储单元的序号信息和二级索引数据通过数组二分查找算法在所属存储单元的位置范围内确定数据的位置;之后在确定的位置上读取数据。这里的数组二分查找算法是计算机领域的普通查找算法,可以根据实际情况选择具体的二分查找算法。

优选地,本发明实施例中的数据和索引数据都可以基于mmap技术来管理。采用mmap技术来管理数据和索引数据,可以不占用heap,也可以直接映射磁盘文件,不受物理内存容量限制,因此,可以消耗较少的物理内存。另外,mmap采用的是堆外内存,与heap无关,不要求设置很大的heap空间,并且,堆外内存不归jvagc(javavirtualmachinegarbagecollection,java虚拟机垃圾回收)回收,因此即使堆外内存很大,也不会额外导致gc负担。

由于数据读写实际发生在内存中,内存中的数据是由内核来负责异步同步到文件中,因此整个缓存的数据读写性能还是基于内存级别的。mmap技术建立内存映射不产生实际的数据拷贝,因此在大多数场景下,只有一个存储单元在被写入或读取数据,其他存储单元是非活跃状态,非活跃状态的存储单元文件映射,理论上消耗的是进程的虚拟内存,不是真正的物理内存,占用资源很小。

在具体实施过程中,以java为例,可以采用mmap文件映射技术构建环形缓存数据(ringbufferdata)结构,在该缓存区(buffer)中,可以映射1024个文件,每个文件大小是1gb,得到1024*1gb=1tb的合计容量,这里的每个映射文件即为一个存储单元,这里的存储单元可以称为槽(slot),也就是说,1024个slot构建成一个环形缓存区,并为这1024个slot依次设置序号。

当将数据写入buffer时,根据槽序号将数据依次写入槽中;当所有槽都被写满数据时,将新数据覆盖槽序号为1中的数据,以便写入新数据。具体地,在写入数据时,首先在当前slot(初始写操作从序号为1的slot开始)的尾部写入数据,当一个slot被写满之后,接着在下一个slot上写入数据,当最后一个slot写满之后,又重新从第1个slot开始写入数据,新写入的数据会覆盖之前的数据。

上述mmap文件映射技术构建的环形缓存结构,拥有超大缓存机制,缓存数据可以支持持久化存储,在replicator进程因故障重启后能恢复缓存数据。也就是说,通过该环形缓存结构,可以从很久时间之前开始复制数据,长时间的复制中断后,还可以从断点处继续复制;replicator只需要从mysql上抽取一次日志,就可以供很多applier(负责从replicator组件中获取数据,然后将数据写入到复制的目标数据库中)使用,实现了一次抽取多次使用;另外,基于内存缓存的数据读写,具备很高的读写性能。

在本发明实施例中,每条数据由key-value(关键字-值)对组成,每条数据的key值以写入顺序单调递增,当需要从buffer中读取数据时,先依据第一索引数据判断数据的key在哪个slot、在slot中的大概位置范围以及在二级索引数据中的位置信息,之后根据二级索引数据确定数据的具体位置并读取数据。

具体而言,一级索引数据可以以如下结构形式表示:

|slotidx(2byte)|slotposition(4byte)|indexrecordidx(4byte)|…|

其中,slotidx表示:数据所属(所在)slot的序号,例如:idx为100,表示序号为100的slot;

slotposition表示:数据在slot中的位置偏移(offset),例如:position为200,表示序号100的slot的距离头部200字节处开始的位置;

indexrecordidx表示:在二级索引数据(即,单slot全局索引)中的序号。

二级索引数据可以以如下结构形式表示:

|indexrecordcount(4byte)|[indexrecord]|[indexrecord]|…|

其中,indexrecordcount表示:索引数据条数;

indexrecord表示:索引数据,该索引数据标识了数据的具体位置信息。

在本发明实施例中,slot与slot之间的索引数据相互隔离,每个slot对应一个独自的索引空间。

图2是根据本发明实施例的数据和索引数据的存储结构示意图,如图2所示,数据存储在环形缓存区的各个槽(slot)中,在该缓存区中,slot序号由1向上递增,每个slot的容量为1gb,当slot容量可用空间不足以存放一条数据(或者称为记录)时,判定当前slot已写满,之后写入数据操作会自动切换到下一个序号(递增1)slot中,每个slot中的数据通过mmap映射磁盘文件到内存。

具体地,slot中的每条数据由key-value(关键字-值)对组成,slot结构可以通过如下方式表示:

|lastposition(4byte)|keylength(1byte)+key+datalength(4byte)+data+checksum|…|

其中,lastposition表示:当前slot的写偏移量(writeoffset);该lastposition位于每个slot内容的首4字节中;

keylength和key表示:每条数据的key,key采用长度和缓存(length+buffer)结构来存储;

datalength和data表示:每条数据的value(即,具体内容),value采用length+buffer结构来存储;

checksum表示:数据的校验和值,用于在读取数据时进行验证。

在实际操作中,索引数据也会消耗较大的内存空间,因此,索引数据不能全部存放在heap中,考虑到堆外内存实现自定义数据结构和算法的复杂性,本发明实施例采用heap跳表与堆外数组结合的方式来实现整个buffer的索引。

在图2所示的示意图中,分段索引即为上述的第一索引数据,以跳表形式存储在堆内存(heap)中;slot-n全量索引即为上述的第二索引数据,以数组(array)形式存储在堆外内存(如directbuffer)中。

heap中通过跳表结构存储1024个slot序号信息、单个slot中每间隔1000条数据的位置信息以及在堆外数组中的位置信息。这样,当查找数据时,通过跳表可以快速判断目标数据的目标key属于哪个slot、在slot的大概位置范围以及在堆外数组中的位置信息,之后根据在堆外数组中的位置信息通过二分查找算法在buffer中快速确定数据位置并读取数据。

例如,接收到数据a的读取指令,该数据a的key值为100,首先在heap跳表中查询该目标key及其对应的slot序号信息以及在堆外数组中的位置信息,如查找到该目标key的位置信息是slot=12、slot中的位置偏移信息是2000、在堆外数据中的位置信息为1501,那么,就可以定位在序号12的slot中去,锁定slot12中位置偏移为1000~2000这一段数据,通过二分查找算法查找目标key属于数据编号1501的数据,之后就可以定位到具体数据a并读取数据a。

本发明实施例还提供一种数据处理装置,图3是该装置的结构框图,如图3所示,该装置包括:指令接收单元301、索引数据确定单元302、序号确定单元303和数据读取单元304,其中:

指令接收单元301,用于接收数据读取指令,其中,数据基于内存映射技术存储在由多个存储单元构成的缓存区内;

索引数据确定单元302,用于根据数据读取指令确定数据对应的索引数据,索引数据包括一级索引数据和二级索引数据;

序号确定单元303,用于根据一级索引数据确定数据所属存储单元的序号信息;

数据读取单元304,用于根据所属存储单元的序号信息和二级索引数据确定数据的位置信息,以读取数据。

通过将数据基于mmap技术存储在由多个存储单元构成的缓存区内,在指令接收单元301接收到数据读取指令时,索引数据确定单元302确定该数据的索引数据,之后序号确定单元303根据索引数据确定数据的存储位置并通过数据读取单元304读取数据,读取数据之后就可以对数据进行后续处理,相比于现有技术中的依赖redis集群缓存系统来存储数据,本发明实施例由于基于mmap技术,可以满足replicator进程所需的高效率读写,并且通过设置存储单元的数量和每个存储单元的容量,可以满足replicator进程所需的超大缓存机制。

如图4所示,该装置还可以包括:序号设置单元305、写入单元306和编号设置单元307,其中:

序号设置单元305,用于为多个存储单元依次设置序号;

写入单元306,用于根据存储单元序号将数据依次写入存储单元中;

编号设置单元307,用于为写入每个存储单元的数据依次设置数据编号。

具体地,在建构缓存区时,序号设置单元305为多个存储单元依次设置序号;在写入数据时,写入单元306可以根据存储单元序号将数据依次写入存储单元中;编号设置单元307为写入每个存储单元的数据依次设置数据编号。当所有存储单元被写满,写入单元306可以将当前写入数据覆盖序号为1的存储单元中的数据。

在本发明实施例中,一级索引数据可以包括:数据在所属存储单元的序号信息、在所属存储单元的位置偏移信息以及在二级索引数据中的位置信息。二级索引数据可以包括:数据在所属存储单元的数据编号信息。

具体的一级索引数据和二级索引数据的结构可以参见上述实施例中的描述,此处不再赘述。

优选地,上述装置还包括:数据管理单元308,用于基于mmap技术来管理数据和索引数据。通过数据管理单元308采用mmap技术来管理数据和索引数据,可以不占用heap,也可以直接映射磁盘文件,不受物理内存容量限制,因此,可以消耗较少的物理内存。另外,mmap采用的是堆外内存,不会额外导致gc负担。

并且,mmap技术建立内存映射不产生实际的数据拷贝,因此在大多数场景下,只有一个存储单元在被写入或读取数据,其他存储单元是非活跃状态,非活跃状态的存储单元文件映射,理论上消耗的是进程的虚拟内存,不是真正的物理内存,占用资源很小。

优选地,上述装置还包括:存储管理单元309,用于以预定方式存储索引数据。具体地,如图5所示,存储管理单元309具体包括:第一存储管理模块3091和第二存储管理模块3092,其中:

第一存储管理模块3091,用于将一级索引数据以跳表形式存储在堆内存中;

第二存储管理模块3092,用于将二级索引数据以数组形式存储在堆外内存中。

通过第一存储管理模块3091和第二存储管理模块3092以不同方式存储第一索引数据和第二索引数据,可以节省较多的内存空间。

如图6所示,数据读取单元304包括:数据位置确定模块3041和数据读取模块3042,其中:

数据位置确定模块3041,用于根据所属存储单元的序号信息和二级索引数据通过二分查找算法确定数据的位置信息;

数据读取模块3042,用于在确定的位置上读取数据。

这里的数组二分查找算法是计算机领域的普通查找算法,可以根据实际情况选择具体的二分查找算法。

图7是根据本发明实施例的数据处理装置的应用场景图,如图7所示,指令接收单元301接收到数据读取指令a,用于读取数据a,索引数据确定单元302确定该数据的索引数据,之后序号确定单元303根据索引数据确定数据的存储位置并通过数据读取单元304读取数据a,读取数据之后就可以对数据进行后续处理。

图8是本发明实施例的电子设备的示意图。图8所示的电子设备为通用数据处理装置,其包括通用的计算机硬件结构,其至少包括处理器801和存储器802。处理器801和存储器802通过总线803连接。存储器802适于存储处理器801可执行的一条或多条指令或程序。该一条或多条指令或程序被处理器801执行以实现如下步骤:

接收数据读取指令,其中,数据基于内存映射技术存储在由多个存储单元构成的缓存区内;

根据所述数据读取指令确定所述数据对应的索引数据,所述索引数据包括一级索引数据和二级索引数据;

根据所述一级索引数据确定所述数据所属存储单元的序号信息;

根据所述所属存储单元的序号信息和所述二级索引数据确定所述数据的位置信息,以读取所述数据。

上述步骤还包括:为所述多个存储单元依次设置序号;根据存储单元序号将数据依次写入存储单元中;为写入每个存储单元的数据依次设置数据编号。

上述步骤还包括:响应于所有存储单元被写满,将当前写入数据覆盖序号为1的存储单元中的数据。

根据所述所属存储单元的序号信息和所述二级索引数据确定所述数据的位置信息,以读取所述数据包括:根据所述所属存储单元的序号信息和所述二级索引数据通过二分查找算法确定所述数据的位置信息;在确定的位置读取所述数据。

通过如下方式存储所述索引数据:将所述一级索引数据以跳表形式存储在堆内存中;将所述二级索引数据以数组形式存储在堆外内存中。

所述一级索引数据包括:所述数据在所述所属存储单元的序号信息、在所述所属存储单元的位置偏移信息以及在所述二级索引数据中的位置信息。

所述二级索引数据包括:所述数据在所述所属存储单元的数据编号信息。

上述步骤还包括:基于所述内存映射技术管理所述数据和所述索引数据。

所述缓存区为环形缓存区。

上述处理器801可以是独立的微处理器,也可以是一个或者多个微处理器集合。由此,处理器801通过执行存储器802所存储的命令,从而执行如上所述的本发明实施例的方法流程实现对于数据的处理和对于其他装置的控制。总线803将上述多个组件连接在一起,同时将上述组件连接到显示控制器804和显示装置以及输入/输出(i/o)装置805。输入/输出(i/o)装置805可以是鼠标、键盘、调制解调器、网络接口、触控输入装置、体感输入装置、打印机以及本领域公知的其他装置。典型地,输入/输出(i/o)装置805通过输入/输出(i/o)控制器806与系统相连。

其中,存储器802可以存储软件组件,例如操作系统、通信模块、交互模块以及应用程序。以上所述的每个模块和应用程序都对应于完成一个或多个功能和在发明实施例中描述的方法的一组可执行程序指令。

综上所述,本发明实施例基于mmap技术构建了大容量缓存结构,通过将数据存储在由多个存储单元构成的大容量缓存区内,在接收到数据读取指令时,通过确定该数据的索引数据来查找数据的具体存储位置并读取数据,以便对数据进行后续处理,本发明实施例由于基于mmap技术,可以满足replicator进程所需的高效率读写,并且通过设置存储单元的数量和每个存储单元的容量,可以满足replicator进程所需的超大缓存机制。

上述根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应理解,流程图和/或框图的每个块以及流程图图例和/或框图中的块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供至通用计算机、专用计算机或其它可编程数据处理设备的处理器,以产生机器,使得(经由计算机或其它可编程数据处理设备的处理器执行的)指令创建用于实现流程图和/或框图块或块中指定的功能/动作的装置。

同时,如本领域技术人员将意识到的,本发明实施例的各个方面可以被实现为系统、方法或计算机程序产品。因此,本发明实施例的各个方面可以采取如下形式:完全硬件实现方式、完全软件实现方式(包括固件、常驻软件、微代码等)或者在本文中通常可以都称为“电路”、“模块”或“系统”的将软件方面与硬件方面相结合的实现方式。此外,本发明的方面可以采取如下形式:在一个或多个计算机可读介质中实现的计算机程序产品,计算机可读介质具有在其上实现的计算机可读程序代码。

可以利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是如(但不限于)电子的、磁的、光学的、电磁的、红外的或半导体系统、设备或装置,或者前述的任意适当的组合。计算机可读存储介质的更具体的示例(非穷尽列举)将包括以下各项:具有一根或多根电线的电气连接、便携式计算机软盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪速存储器)、光纤、便携式光盘只读存储器(cd-rom)、光存储装置、磁存储装置或前述的任意适当的组合。在本发明实施例的上下文中,计算机可读存储介质可以为能够包含或存储由指令执行系统、设备或装置使用的程序或结合指令执行系统、设备或装置使用的程序的任意有形介质。

计算机可读信号介质可以包括传播的数据信号,所述传播的数据信号具有在其中如在基带中或作为载波的一部分实现的计算机可读程序代码。这样的传播的信号可以采用多种形式中的任何形式,包括但不限于:电磁的、光学的或其任何适当的组合。计算机可读信号介质可以是以下任意计算机可读介质:不是计算机可读存储介质,并且可以对由指令执行系统、设备或装置使用的或结合指令执行系统、设备或装置使用的程序进行通信、传播或传输。

用于执行针对本发明各方面的操作的计算机程序代码可以以一种或多种编程语言的任意组合来编写,所述编程语言包括:面向对象的编程语言如java、smalltalk、c++、php、python等;以及常规过程编程语言如“c”编程语言或类似的编程语言。程序代码可以作为独立软件包完全地在用户计算机上、部分地在用户计算机上执行;部分地在用户计算机上且部分地在远程计算机上执行;或者完全地在远程计算机或服务器上执行。在后一种情况下,可以将远程计算机通过包括局域网(lan)或广域网(wan)的任意类型的网络连接至用户计算机,或者可以与外部计算机进行连接(例如通过使用因特网服务供应商的因特网)。

以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

本发明实施例公开了a1、一种数据处理方法,其中,所述方法包括:

接收数据读取指令,其中,数据基于内存映射技术存储在由多个存储单元构成的缓存区内;

根据所述数据读取指令确定所述数据对应的索引数据,所述索引数据包括一级索引数据和二级索引数据;

根据所述一级索引数据确定所述数据所属存储单元的序号信息;

根据所述所属存储单元的序号信息和所述二级索引数据确定所述数据的位置信息,以读取所述数据。

a2、根据权利要求a1所述的数据处理方法,其中,所述方法还包括:

为所述多个存储单元依次设置序号;

根据存储单元序号将数据依次写入存储单元中;

为写入每个存储单元的数据依次设置数据编号。

a3、根据权利要求a2所述的数据处理方法,其中,所述方法还包括:

响应于所有存储单元被写满,将当前写入数据覆盖序号为1的存储单元中的数据。

a4、根据权利要求a1所述的数据处理方法,其中,根据所述所属存储单元的序号信息和所述二级索引数据确定所述数据的位置信息,以读取所述数据包括:

根据所述所属存储单元的序号信息和所述二级索引数据通过二分查找算法确定所述数据的位置信息;

在确定的位置读取所述数据。

a5、根据权利要求a1所述的数据处理方法,其中,通过如下方式存储所述索引数据:

将所述一级索引数据以跳表形式存储在堆内存中;

将所述二级索引数据以数组形式存储在堆外内存中。

a6、根据权利要求a1所述的数据处理方法,其中,所述一级索引数据包括:

所述数据在所述所属存储单元的序号信息、在所述所属存储单元的位置偏移信息以及在所述二级索引数据中的位置信息。

a7、根据权利要求a1所述的数据处理方法,其中,所述二级索引数据包括:

所述数据在所述所属存储单元的数据编号信息。

a8、根据权利要求a1所述的数据处理方法,其中,所述方法还包括:

基于所述内存映射技术管理所述数据和所述索引数据。

a9、根据权利要求a1所述的数据处理方法,其中,所述缓存区为环形缓存区。

本发明实施例公开了b1、一种数据处理装置,其中,所述装置包括:

指令接收单元,用于接收数据读取指令,其中,数据基于内存映射技术存储在由多个存储单元构成的缓存区内;

索引数据确定单元,用于根据所述数据读取指令确定所述数据对应的索引数据,所述索引数据包括一级索引数据和二级索引数据;

序号确定单元,用于根据所述一级索引数据确定所述数据所属存储单元的序号信息;

数据读取单元,用于根据所述所属存储单元的序号信息和所述二级索引数据确定所述数据的位置信息,以读取所述数据。

b2、根据权利要求b1所述的数据处理装置,其中,所述装置还包括:

序号设置单元,用于为所述多个存储单元依次设置序号;

写入单元,用于根据存储单元序号将数据依次写入存储单元中;

编号设置单元,用于为写入每个存储单元的数据依次设置数据编号。

b3、根据权利要求b2所述的数据处理装置,其中,所述写入数据还用于:

响应于所有存储单元被写满,将当前写入数据覆盖序号为1的存储单元中的数据。

b4、根据权利要求b1所述的数据处理装置,其中,所述数据读取单元包括:

数据位置确定模块,用于根据所述所属存储单元的序号信息和所述二级索引数据通过二分查找算法确定所述数据的位置信息;

数据读取模块,用于在确定的位置读取所述数据。

b5、根据权利要求b1所述的数据处理装置,其中,所述装置还包括:存储管理单元,用于以预定方式存储所述索引数据;

所述存储管理单元具体包括:

第一存储管理模块,用于将所述一级索引数据以跳表形式存储在堆内存中;

第二存储管理模块,用于将所述二级索引数据以数组形式存储在堆外内存中。

b6、根据权利要求b1所述的数据处理装置,其中,所述索引数据确定单元确定的一级索引数据包括:

所述数据在所述所属存储单元的序号信息、在所述所属存储单元的位置偏移信息以及在所述二级索引数据中的位置信息。

b7、根据权利要求b1所述的数据处理装置,其中,所述索引数据确定单元确定的二级索引数据包括:

所述数据在所述所属存储单元的数据编号信息。

b8、根据权利要求b1所述的数据处理装置,其中,所述装置还包括:

数据管理单元,用于基于所述内存映射技术管理所述数据和所述索引数据。

b9、根据权利要求b1所述的数据处理装置,其中,所述缓存区为环形缓存区。

本发明实施例公开了c1、一种计算机可读存储介质,其上存储计算机程序指令,其中,所述计算机程序指令在被处理器执行时实现如上述a1-a9中任一项所述的方法。

本发明实施例公开了d1、一种电子设备,包括存储器和处理器,其中,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如上述a1-a9中任一项所述的方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1