掌桥专利:专业的专利平台
掌桥专利
首页

一种数据存储方法、装置、设备及存储介质

文献发布时间:2024-04-18 19:52:40



技术领域

本申请实施例涉及计算机技术领域,尤其涉及一种数据存储方法、装置、设备及存储介质。

背景技术

随着企业数字化转型的需要,海量数据的实时处理技术受到关注,基于Flink的流批一体技术逐渐成为主流,其中,实时计算和高效存储是两个重要的技术模块,现有技术在不断完善Flink自身的实时计算框架以外,也在大力拓展流批一体的数据存储技术用于实现与实时计算模块的高效交互。高效存储需要至少满足以下两个特性:第一个特性是省内存且可高效维护,第二个特性是能支撑混合场景,既能满足高效扫描能力用来做OLAP场景,也能满足高效检索能力用来做随机查询场景。

为了满足OLAP场景下的顺序扫描和随机查询需求,相关技术下在内存中存放两份数据,第一份是存放原始数据用来做顺序扫描,第二份是存储有序数组用来满足随机查询需求。

然而,上述技术方案使得内存中保存的数据膨胀2倍,从而导致数据冗余以及存储资源浪费。

发明内容

本申请实施例提供了一种数据存储方法、装置、设备及存储介质,用于解决数据冗余以及存储资源浪费的问题。

第一方面,本申请实施例提供了一种数据存储方法,包括:

针对原始数据中的每个数据单元,将所述数据单元中的多个数据元素插入第一数组中;

将所述第一数组中的多个数据元素,按照升序或降序插入虚拟存储空间;

基于所述虚拟存储空间中的多个数据元素各自在所述第一数组中的位置,构建所述多个数据元素对应的间接索引数据。

本申请实施例中,通过将原始数据中的多个数据元素插入第一数组,再将第一数组中的多个数据元素按照升序或降序插入虚拟存储空间,再基于虚拟存储空间中的多个数据元素各自在第一数组中的位置构建间接索引数据,即本申请实际存储的数据为原始数据以及相应的间接索引数据,而不是存储原始数据以及将原始数据排序后的排序数据,从而减少了数据冗余,有效节省了存储空间,大大减少了存储资源浪费。

一种可选实施方式中,所述将所述数据单元中的多个数据元素插入第一数组中之前,还包括:对所述数据单元中的数据元素去重。

本申请实施例对数据单元中的数据元素去重后插入到第一数组中,第一数组不需要重复记录相同的数据元素,从而减少了第一数组的空间占用,进而节省了存储空间。

一种可选实施方式中,所述基于所述虚拟存储空间中的多个数据元素各自在所述数据单元中的位置,构建所述多个数据元素对应的间接索引数据,包括:将所述多个数据元素各自在所述第一数组中对应的数组下标,插入第二数组,获得所述多个数据元素对应的间接索引数据。

一种可选实施方式中,所述第二数组对应一个数据位图,所述数据位图用于标识所述第二数组中各个数组下标对应的数据元素是否被删除。

本申请实施例通过构建数据位图来标识第一数组中各个数据元素是否被删除,故在数据库数据更新后,不需要对数据索引进行重建,提高了数据查询效率。

一种可选实施方式中,接收针对目标数据元素的删除指令;基于所述删除指令,将所述目标数据元素在所述数据位图中对应的标识值设置为1。

一种可选实施方式中,接收针对目标数据元素的查询指令;基于所述查询指令,通过所述间接索引数据从所述第一数组中确定所述目标数据元素;若所述目标数据元素在所述数据位图中对应的标识值为0,则返回所述目标数据元素;若所述目标数据元素在所述数据位图中对应的标识值为1,则返回查询失败消息。

一种可选实施方式中,所述查询指令的类型包括:等值查询和范围查询。

一种可选实施方式中,所述基于所述查询指令,通过所述间接索引数据从所述第一数组中确定所述目标数据元素,包括:基于所述查询指令,对所述第二数组进行二分查找操作,并基于从所述第二数组查找获得的数组下标,对所述第一数组进行间接寻址,以从所述第一数组中确定所述目标数据元素。

本申请实施例中,相较于传统的二分算法来说,本申请不是对第二数组直接作二分操作,而是通过第二数组中的数组下标对第一数组中的原始数据做二分操作,每一次取值多了一次间接寻址,仅仅多了一个常数级别开销,时间复杂度为O(logN),大大提高了数据查询效率。

一种可选实施方式中,所述基于所述虚拟存储空间中的多个数据元素各自在所述第一数组中的位置,构建所述多个数据元素对应的间接索引数据之后,还包括,通过顺序扫描算子顺序扫描所述第一数组,以加载所述第一数组中的各个数据元素。

第二方面,本申请实施例提供了一种数据存储装置,包括:

数据插入模块,用于针对原始数据中的每个数据单元,将所述数据单元中的多个数据元素插入第一数组中;将所述第一数组中的多个数据元素,按照升序或降序插入虚拟存储空间;

索引构建模块,用于基于所述虚拟存储空间中的多个数据元素各自在所述数据单元中的位置,构建相应的间接索引数据。

一种可选实施方式中,所述数据插入模块还用于:

将所述数据单元中的多个数据元素插入第一数组中之前,对所述数据单元中的数据元素去重。

一种可选实施方式中,所述数据插入模块还用于:

将所述多个数据元素各自在所述第一数组中对应的数组下标,插入第二数组,获得所述多个数据元素对应的间接索引数据。

一种可选实施方式中,所述第二数组对应一个数据位图,所述数据位图用于标识所述第二数组中各个数组下标对应的数据元素是否被删除。

一种可选实施方式中,还包括更新模块;

所述更新模块具体用于:

接收针对目标数据元素的删除指令;

基于所述删除指令,将所述目标数据元素在所述数据位图中对应的标识值设置为1。

一种可选实施方式中,还包括查询模块;

所述查询模块具体用于:

接收针对目标数据元素的查询指令;

基于所述查询指令,通过所述间接索引数据从所述第一数组中确定所述目标数据元素;

若所述目标数据元素在所述数据位图中对应的标识值为0,则返回所述目标数据元素;

若所述目标数据元素在所述数据位图中对应的标识值为1,则返回查询失败消息。

一种可选实施方式中,所述查询模块具体用于:

基于所述查询指令,对所述第二数组进行二分查找操作,并基于从所述第二数组查找获得的数组下标,对所述第一数组进行间接寻址,以从所述第一数组中确定所述目标数据元素。

一种可选实施方式中,所述查询指令的类型包括:等值查询和范围查询。

一种可选实施方式中,所述索引构建模块还用于:

所述基于所述虚拟存储空间中的多个数据元素各自在所述第一数组中的位置,构建所述多个数据元素对应的间接索引数据之后,通过顺序扫描算子顺序扫描所述第一数组,以加载所述第一数组中的各个数据元素。

第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数据存储方法的步骤。

第四方面,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行上述数据存储方法的步骤。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种系统架构的结构示意图;

图2为本申请实施例提供的一种数据存储方法的结构示意图;

图3为本申请实施例提供的一种数据插入的结构示意图;

图4为本申请实施例提供的一种数据插入的结构示意图;

图5为本申请实施例提供的一种数据位图的结构示意图;

图6为本申请实施例提供的一种数据位图的结构示意图;

图7为本申请实施例提供的一种数据存储装置的结构示意图;

图8为本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

为了方便理解,下面对本发明实施例中涉及的名词进行解释。

Clickhouse:ClickHouse是一个用于联机分析处理(OLAP)的开源列式数据库。

StarRocks:StarRocks是开源的新一代极速全场景MPP数据库。它采用新一代的弹性MPP架构,可以高效支持大数据量级的多维分析、实时分析、高并发分析等多种数据分析场景。StarRocks性能出色,它采用了全面向量化技术,比同类产品平均快3-5倍。

SelectDB:SelectDB是北京飞轮科技有限公司基于Apache Doris项目开发的新一代实时数据仓库,具备实时性、云原生、开源等特点,主要产品包括SelectDB Cloud和SelectDB Enterprise,能够差异化地满足来自云上和私有化部署用户的不同需求。

数据即索引:在数据插入的时候对该列进行排序,在有序数组上用二分查找算法应对查询需求。

参见图1,其为本申请实施例适用的一种系统架构图,该系统架构至少包括终端设备101、存储系统102和服务器103,终端设备101的数量可以是一个或多个,存储系统102的数量也可以是一个或多个,本申请对终端设备101和存储系统102的数量不做具体限定。

终端设备101中预先安装应用,其中,应用是客户端应用、网页版应用、小程序应用等。终端设备101可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能家电、智能语音交互设备、智能车载设备等,但并不局限于此。

服务器103是应用的后台服务器,服务器103可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,简称CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备101与服务器103可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。

存储系统102可以是Clickhouse、基于开源Doris的StarRocks、SelectDb等列存数据库。服务器103与存储系统102可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。

服务器103中的业务数据和日志数据保存在存储系统102中。当然,终端设备101产生的业务数据和日志数据也可以保存在存储系统102中,对此,本申请不做具体限定。

基于图1所示的系统架构图,本申请实施例提供了一种数据存储方法的流程示意图,如图2所示,该方法的流程由计算机设备执行,该计算机设备可以是图1所示的存储系统102,包括以下步骤:

步骤201,针对原始数据中的每个数据单元,将数据单元中的多个数据元素插入第一数组中。

具体地,原始数据可以是业务数据、日志数据等。一个数据单元指的是原始数据中的一个数据块。一个数据单元可以是原始数据中的一列或多列数据,也可以是一个原始数据中的一行或多行数据,还可以是其他预设长度和预设宽度的数据块,对此,本申请不做具体限定。

在一些实施例中,将数据单元中所有数据元素插入第一数组中。

在一些实施例中,对数据单元中的数据元素去重,将数据单元中去重后的多个数据元素插入第一数组中。

本申请实施例中,对数据单元中的数据元素去重后插入到第一数组中,即针对重复的数据元素维护一个数据字典,故第一数组不需要重复记录相同的数据元素,从而减少了第一数组的空间占用,进而节省了存储空间。

步骤202,将第一数组中的多个数据元素,按照升序或降序插入虚拟存储空间。

具体地,本申请中虚拟存储空间指数据即索引结构,第一数组中的多个数据元素插入虚拟存储空间的过程中按照升序或者降序排序,其中,虚拟存储空间不占用存储空间。

步骤203,基于虚拟存储空间中的多个数据元素各自在第一数组中的位置,构建多个数据元素对应的间接索引数据。

具体地,存储系统最终保存的是第一数组中的数据元素以及相应的间接索引数据,其中,第一数组中的数据元素可用于顺序扫描,间接索引数据可满足随机查询需求。

一种可选实施方式中,将虚拟存储空间中的多个数据元素各自在第一数组中对应的数组下标,插入第二数组,获得多个数据元素对应的间接索引数据。

具体地,虚拟存储空间中的多个数据元素按照升序或降序进行排列;按照升序或降序,依次确定虚拟存储空间中的多个数据元素各自在第一数组中对应的数组下标,并依次将获得的数组下标插入第二数据中。

举例来说,参见图3,设定表C={C

将第一数组中的多个数据元素按照升序或者降序插入虚拟存储空间,即虚拟存储空间中多个数据元素的排列顺序为:[a,b,c,d,e]。数据元素a在第一数组中对应的数组下标为“3”,则将数组下标“3”插入第二数组index[];数据元素b在第一数组中对应的数组下标为“1”,则将数组下标“1”插入第二数组index[],依次类推,直到将数据元素a、数据元素b、数据元素c、数据元素d、数据元素e各自在第一数据中对应的数组下标均插入第二数组index[],此时,第二数组index[]包括:[3,1,2,4,5]。

为了进一步说明本申请实施例,举例来说,参见图4,设定表C={C

将第一数组中的多个数据元素按照升序或者降序插入虚拟存储空间,即虚拟存储空间中多个数据元素的排列顺序为:[a,b,c,d]。数据元素a在第一数据中对应的数组下标为“3”,则将数组下标“3”插入第二数组index[];数据元素b在第一数据中对应的数组下标为“1”,则将数组下标“1”插入第二数组index[],依次类推,直到将数据元素a、数据元素b、数据元素c、数据元素d各自在第一数据中对应的数组下标均插入第二数组index[],此时,第二数组index[]包括:[3,1,2,4]。其他列的arr[]和index[]构建同理。

本申请实施例通过将原始数据中的多个数据元素插入第一数组,再将第一数组中的多个数据元素按照升序或降序插入虚拟存储空间,再基于虚拟存储空间中的多个数据元素各自在第一数组中的位置构建间接索引数据,即本申请实际存储的数据为原始数据以及相应的间接索引数据,而不是存储原始数据以及将原始数据排序后的排序数据,从而减少了数据冗余,有效节省了存储空间,大大减少了存储资源浪费。

在实际应用中,数据更新操作包括更新(update)和删除(delete)。数据更新后,第二数组index[]的数据排序关系发生了变化。现阶段有很多数据库数据更新后,直接对数据索引进行重建。然而数据索引重建需要时间,导致在重建过程中查询效率降低。鉴于此,在本申请实施例中,第二数组对应一个数据位图,数据位图用于标识第二数组中各个数组下标对应的数据元素是否被删除。

具体地,数据位图通过标识值表示第二数组中各个数组下标对应的数据元素是否被删除。数据位图中的标识值包括0和1,其中,标识值1表示相应的数据元素被删除,标识值0表示相应的数据元素没有被删除。当然,也可以采用标识值0表示相应的数据元素被删除,标识值1表示相应的数据元素没有被删除,对此,本申请不做具体限定。

需要说明的是,数据位图也可以与第一数组对应,即数据位图通过标识值表示第一数组中各个数据元素是否被删除,对此,本申请不做具体限定。

一种可选实施方式中,接收针对目标数据元素的删除指令;基于删除指令,将目标数据元素在数据位图中对应的标识值设置为1。

具体地,删除指令可以是终端设备发送的,也可以是服务器发送的。

当数据位图也可以与第二数组对应时,在接收到目标数据元素的删除指令后,确定目标数据元素在第一数组中对应的数组下标,然后确定该数组下标在第二数组中的位置,再基于第二数组与数据位图之间的对应关系,将数据位图中相应的标识值设置为1。

当数据位图与第一数组对应时,在接收到目标数据元素的删除指令后,确定目标数据元素在第一数组中的位置,然后基于第一数组与数据位图之间的对应关系,将数据位图中相应的标识值设置为1。

举例来说,参见图5,设定第一数组arr[]包括:[b,c,a,d,e],第二数组index[]包括:[3,1,2,4,5]。数据位图与第二数组index[]对应,数据位图中各个标识值默认为0。

接收针对数据元素c的删除指令;确定数据元素c在第一数组中对应的数组下标为“2”,然后确定该数组下标“2”在第二数组中的位置为第3行,则将第二数组的第3行,在数据位图中对应的标识值设置为1。

举例来说,参见图6,设定第一数组arr[]包括:[b,c,a,d,e],第二数组index[]包括:[3,1,2,4,5]。数据位图与第一数组arr[]对应,数据位图中各个标识值默认为0。

接收针对数据元素a的删除指令,确定数据元素a在第一数组中对应的数组下标为“3”,则将第一数组的数组下标“3”,在数据位图中对应的标识值设置为1。

本申请实施中,通过构建数据位图来标识第一数组中各个数据元素是否被删除,故在数据库数据更新后,不需要对数据索引进行重建,间接索引数据index[]的引入没有给数据更新操作带来额外的时间复杂度,从而提高查询效率。

一种可选实施方式中,接收针对目标数据元素的查询指令;基于查询指令,通过间接索引数据从第一数组中确定目标数据元素;若目标数据元素在数据位图中对应的标识值为0,则返回目标数据元素;若目标数据元素在数据位图中对应的标识值为1,则返回查询失败消息。

具体地,在查询过程中,若目标数据元素在数据位图中对应的标识值为0,则表明该数据没有被删除,那么返回目标数据元素至客户端;若目标数据元素在数据位图中对应的标识值为1,则表明目标数据元素已经被删除,返回给客户端查询失败消息。

一种可选实施方式中,基于查询指令,对第二数组进行二分查找操作,并基于从第二数组查找获得的数组下标,对第一数组进行间接寻址,以从第一数组中确定目标数据元素。查询指令的类型包括:等值查询和范围查询。

具体地,随机查询(get)流程,包含等值查询(C2=targetValue)和范围查询([min,max],C2>=min&&C2<=max),两种查询都可以用二分查找来处理,其中,等值查询等价于范围查询的[targatValue,targatValue]。

等值查询针对targetValue调用一次查询操作。范围查询针对minValue和maxValue调用两次查询操作。数据包含重复值的情况对本申请实施例的执行效率没有影响。

举例来说,参见图5,设定第一数组arr[]包括:[b,c,a,d,e],第二数组index[]包括:[3,1,2,4,5],在构建间接索引数据时,第一数组中的各个数据元素按照升序插入虚拟存储空间。数据位图与第二数组index[]对应,数据位图中各个标识值分别为:[0,0,1,0,0]。

存储系统接收终端设备针对数据元素a的查询指令,先对第二数组进行二分查找操作,即查找第二数组的第3行,获得数据下标“2”。基于数据下标“2”,对第一数组进行间接寻址,获得数据元素c。

由于数据元素c大于数据元素a,则进一步查找第二数组的第1行,获得数据下标“3”。基于数据下标“3”,对第一数组进行间接寻址,获得数据元素a。由于第二数组的第1行,在数据位图中对应的标识值为0,则将数据元素a以及其他关联信息返回给终端设备。

本申请实施例中,相较于传统的二分算法来说,本申请不是对第二数组index[]直接作二分操作,而是通过第二数组index[]中的数组下标对第一数组中的原始数据做二分操作,每一次取值多了一次间接寻址,仅仅多了一个常数级别开销,时间复杂度为O(logN),大大提高了数据查询效率。

一种可选实施方式中,基于虚拟存储空间中的多个数据元素各自在第一数组中的位置,构建多个数据元素对应的间接索引数据之后,通过顺序扫描算子顺序扫描第一数组,以加载第一数组中的各个数据元素。

具体地,顺序扫描流程通过顺序扫描算子即scan算子实现,scan算子直接读取第一数组arr[],第一数组arr[]在内存中是连续存储,利用现代CPU SIMD(CentralProcessing Unit Single Instruction Multiple Data,中央处理器单指令多数据)向量化和CPU Cache(Central Processing Unit Cache,中央处理器高速缓冲存储器)等技术批量加载第一数组arr[]中的各个数据元素。通过顺序扫描算子实现常数级次操作批量加载数据元素,使得数据保留了原始数据布局,且在内存中连续。

为了验证本申请实施例在降低存储空间占用上的性能,下面对本申请实施例与现有技术中进行分析比对,具体如下:

设定列式存储按照N个数据为最小处理单元(Processing Unit)。为了保证一次批处理扫描吞吐率,N一般按照磁盘预取长度为4KB的配置,将N设定为万行以提高批处理能力。

假设原始数据为定长数据,采用本申请实施例中的数据存储方法存储N个数据时,每个数据占用M个Byte,间接索引数据index占用4个Byte,数据位图中对应的标识值占用1个Bit,则N个数据最终空间占用为:M*N+4N+1/8N。

采用现有技术中的数据存储方法存储N个数据时,N个数据最终空间占用为:M*N+N*(M+4)。

通过比较可知,本申请实施例减少了数据冗余,降低了存储空间占用;并且,在数据越多,查询谓词列数越多时,本申请在节省内存占用空间的优势越明显。

基于相同的技术构思,本申请实施例提供了一种数据存储装置,参见图7,包括:

数据插入模块701,用于针对原始数据中的每个数据单元,将数据单元中的多个数据元素插入第一数组中;将第一数组中的多个数据元素,按照升序或降序插入虚拟存储空间;

索引构建模块702,用于基于虚拟存储空间中的多个数据元素各自在数据单元中的位置,构建相应的间接索引数据。

一种可选实施方式中,所述数据插入模块701还用于:

将所述数据单元中的多个数据元素插入第一数组中之前,对所述数据单元中的数据元素去重。

一种可选实施方式中,所述数据插入模块701还用于:

将所述多个数据元素各自在所述第一数组中对应的数组下标,插入第二数组,获得所述多个数据元素对应的间接索引数据。

一种可选实施方式中,所述第二数组对应一个数据位图,所述数据位图用于标识所述第二数组中各个数组下标对应的数据元素是否被删除。

一种可选实施方式中,还包括更新模块703;

所述更新模块703具体用于:

接收针对目标数据元素的删除指令;

基于所述删除指令,将所述目标数据元素在所述数据位图中对应的标识值设置为1。

一种可选实施方式中,还包括查询模块704;

所述查询模块704具体用于:

接收针对目标数据元素的查询指令;

基于所述查询指令,通过所述间接索引数据从所述第一数组中确定所述目标数据元素;

若所述目标数据元素在所述数据位图中对应的标识值为0,则返回所述目标数据元素;

若所述目标数据元素在所述数据位图中对应的标识值为1,则返回查询失败消息。

一种可选实施方式中,所述查询模块704还用于:

基于所述查询指令,对所述第二数组进行二分查找操作,并基于从所述第二数组查找获得的数组下标,对所述第一数组进行间接寻址,以从所述第一数组中确定所述目标数据元素。

一种可选实施方式中,所述查询指令的类型包括:等值查询和范围查询。

一种可选实施方式中,所述索引构建模块702还用于:

所述基于所述虚拟存储空间中的多个数据元素各自在所述第一数组中的位置,构建所述多个数据元素对应的间接索引数据之后,通过顺序扫描算子顺序扫描所述第一数组,以加载所述第一数组中的各个数据元素。

本申请实施例中,通过将原始数据中的多个数据元素插入第一数组,再将第一数组中的多个数据元素按照升序或降序插入虚拟存储空间,再基于虚拟存储空间中的多个数据元素各自在第一数组中的位置构建间接索引数据,即本申请实际存储的数据为原始数据以及相应的间接索引数据,而不是存储原始数据以及将原始数据排序后的排序数据,从而减少了数据冗余,有效节省了存储空间,大大减少了存储资源浪费。

基于相同的技术构思,本申请实施例提供了一种计算机设备,该计算机设备可以是图1所示的终端设备和/或服务器,如图8所示,包括至少一个处理器801,以及与至少一个处理器连接的存储器802,本申请实施例中不限定处理器801与存储器802之间的具体连接介质,图8中处理器801和存储器802之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。

在本申请实施例中,存储器802存储有可被至少一个处理器801执行的指令,至少一个处理器801通过执行存储器802存储的指令,可以执行上述数据存储方法的步骤。

其中,处理器801是计算机设备的控制中心,可以利用各种接口和线路连接计算机设备的各个部分,通过运行或执行存储在存储器802内的指令以及调用存储在存储器802内的数据,从而实现数据存储。可选的,处理器801可包括一个或多个处理单元,处理器801可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器801中。在一些实施例中,处理器801和存储器802可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。

处理器801可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器802作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器802可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器802是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机设备存取的任何其他介质,但不限于此。本申请实施例中的存储器802还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。

基于同一发明构思,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当程序在计算机设备上运行时,使得计算机设备执行上述数据存储方法的步骤。

本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机设备或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机设备或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机设备或其他可编程数据处理设备上,使得在计算机设备或其他可编程设备上执行一系列操作步骤以产生计算机设备实现的处理,从而在计算机设备或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

技术分类

06120116334191