数据处理方法、装置、终端及存储介质与流程

文档序号:17926168发布日期:2019-06-15 00:25阅读:166来源:国知局
数据处理方法、装置、终端及存储介质与流程

本申请实施例涉及计算机技术,尤其涉及一种数据处理方法、装置、终端及存储介质。



背景技术:

随着互联网和计算机技术的发展,对大量数据的存储和读写需求日益扩大。数据可以存储在计算机内部的存储介质中,如存储在内存或磁盘上。其中,内存存储的优点在于数据读写效率高,磁盘存储的优点在于存储容量大、数据传输率高、存储数据可长期保存等。

相关技术中,基于某些特定数据存储引擎(如key-value数据存储引擎)的数据库(如leveldb数据库或rocksdb数据库),其在数据的磁盘存储过程中,仅支持简单数据类型的存储,如字符串数据类型的数据存储,针对复杂数据结构类型的数据无法实现磁盘级别的数据存储。



技术实现要素:

本申请实施例提供了一种数据处理方法、装置、终端及存储介质,可以解决相关技术中,特定数据存储引擎存储数据的灵活性差、数据处理效率低的问题。所述技术方案如下:

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

获取数据写操作信息,对所述数据写操作信息进行解析得到数据操作类型和写操作数据;

调用和所述数据操作类型对应的处理函数对所述写操作数据进行处理,生成预设格式的待存盘数据;

将所述待存盘数据写入磁盘存储空间。

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

获取模块,用于获取数据写操作信息;

解析模块,用于对所述数据写操作信息进行解析得到数据操作类型和写操作数据;

处理模块,用于调用和所述数据操作类型对应的处理函数对所述写操作数据进行处理,生成预设格式的待存盘数据;

读写模块,用于将所述待存盘数据写入磁盘存储空间。

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

第四方面,本申请实施例还提供了一种包含终端可执行指令的存储介质,所述终端可执行指令在由终端处理器执行时用于执行本申请实施例所述的数据处理方法。

本申请实施例提供的方案中,通过获取数据写操作信息,对所述数据写操作信息进行解析得到数据操作类型和写操作数据,调用和所述数据操作类型对应的处理函数对所述写操作数据进行处理,生成预设格式的待存盘数据,将所述待存盘数据写入磁盘存储空间,提高了数据存储引擎存储数据的灵活性,提高了数据处理效率。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是本申请一个示例性实施例提供的数据处理方法的流程图;

图2是本申请另一个示例性实施例提供的数据处理方法的流程图;

图3是本申请一个示例性实施例提供的不同数据类型对应的预设元数据编码格式的示意图;

图4是本申请一个示例性实施例提供的不同数据类型对应的预设元素数据编码格式的示意图;

图5是本申请另一个示例性实施例提供的数据处理方法的流程图;

图6是本申请另一个示例性实施例提供的数据处理方法的流程图;

图7是本申请一个示例性实施例提供的数据处理装置的结构框图;

图8是本申请一个示例性实施例提供的终端的结构框图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。

示例性的,本申请实施例所示的据处理方法可以应用在终端中,该终端具备处理器、存储器,配置有数据存储引擎以及对应的数据库,具备数据存储读写功能。该终端可以包括服务器、电视、机顶盒、智能眼镜、智能手表、数码相机、mp4播放终端、mp5播放终端、学习机、点读机、电子词典、车载终端、虚拟现实(virtualreality,vr)播放终端、增强现实(augmentedreality,ar)播放终端、手机、平板电脑、膝上型电脑、台式电脑或电脑一体机等。

请参考图1,图1示出了本申请一个示例性实施例提供的数据处理方法的流程图,该方法包括:

步骤s101、获取数据写操作信息,对所述数据写操作信息进行解析得到数据操作类型和写操作数据。

在本申请实施例中,终端可以接收其他客户端发送的数据写操作信息,如终端和一客户端建立数据通信网络连接,客户端发送该数据写操作信息至终端,终端将该数据写操作信息对应的要写入的内容写入磁盘存储空间进行数据保存。其中,该终端配置有数据存储引擎,数据存储引擎为数据库的底层软件组织,不同的数据存储引擎提供不同的存储机制、索引方式、数据锁定方式等,基于其提供的不同机制以实现不同的特定功能。

本申请实施例中,终端配置有key-value数据存储引擎以实现如基于该存储引擎的rocksdb数据库的数据存储,即将客户端发送/上传的信息写入leveldb或rocksdb数据库中。其中,key-value数据存储为一种分布式存储系统,其查询速度快、存放数据量大、支持高并发,适合通过主键进行查询,该存储机制满足了当前互联网技术中数据量大、数据读取频繁的需求。leveldb为google开源的一种嵌入型数据库,rocksdb为facebook开源的在leveldb上做了深度定制的一种数据库,目前的相关技术中,该种数据库仅支持简单数据类型的磁盘数据存储,如字符串类型的数据存储,针对复杂数据类型如链表、集合等数据类型,当前的技术并不能支持其实现磁盘级别的数据存储。

本申请实施例中,获取数据写操作信息,对数据写操作信息进行解析得到数据操作类型和写操作数据。其中,数据写操作信息根据不同的协议设计具备不同的数据格式,其包含有具体的数据操作类型以及需要操作的写操作数据,具体的,操作类型可以是复杂的数据结构类型,如链表、集合、有序集合或哈希数据类型等,写操作数据包括具体需要写入的数据内容,如集合中的各个元素数据,链表中的元素数据等。示例性的,以哈希数据类型为例,获取到的数据写操作信息为二进制字符串,其中包含有hash键(key)、hash键下的域名(field)以及存储值(value),通过对该二进制字符串进行解析以得出该数据写操作信息对应的数据操作类型(哈希数据类型)以及写操作数据(hash键、hash键下的域名以及存储值)。

步骤s102、调用和所述数据操作类型对应的处理函数对所述写操作数据进行处理,生成预设格式的待存盘数据。

本申请实施例中,不同的数据操作类型对应有不同的处理函数,通过该处理函数以对对应数据操作类型的写操作数据进行处理生成预设格式的待存盘数据,其中,待存盘数据为符合当前数据存储引擎存储机制的可存储在磁盘存储空间数据。示例性的,以key-value类型的数据库为例,通过处理函数的处理,将写操作数据编辑为key-value形式(即键-值对)的数据以落地存储在rocksdb数据库中,而非存储在缓存中,以前述哈希数据类型的写操作数据为例,通过hash处理函数,将hash键(key)、hash键下的域名(field)组合成新的key,将存储值(value)设置为新的key对应的value值。由该处理方式得到的新的key和对应的value值作为待存盘数据以等待写入操作处理。

步骤s103、将所述待存盘数据写入磁盘存储空间。

本申请实施例中,该磁盘可以是终端设备中集成的硬盘,为非缓存或内存的存储空间,其中该磁盘存储空间的数据在终端设备断电后会持续保存,在终端设备再次上电后,该磁盘存储空间存储的数据可被相应读取。

由上述可知,在获取到数据写操作信息后,对该写操作信息进行解析以得出需要写入的数据以及该写入的数据的数据操作类型,通过调用和该数据操作类型对应的处理函数对写操作数据进行处理以生成预设格式的待存盘数据进行数据保存,在数据存储引擎不支持复杂数据类型的磁盘存储的情况下,实现了数据信息的磁盘存储,提高了数据存储灵活性,同时,由于实现了磁盘存储,在保留了原有数据存储引擎的存取机制的优点下,使得磁盘存储的数据能够高效的进行数据迁移,由于本方案并不对数据存储引擎进行修改,使得不支持磁盘存储的数据存储引擎可以将数据存储在磁盘存储空间,适用于需要数据持久化存储的场景。

本申请实施例中,对数据写操作信息进行解析得到数据操作类型包括:依据预设协议对数据写操作信息进行解析得到命令字符串;根据命令字符串的字符内容确定数据操作类型。其中,该预设协议为预先设定的用于对数据写操作信息进行解析的协议,该预设协议分别作用于数据传输的各个终端,如本终端设备以及和其进行数据传输通信的其他客户端设备。

以字符数据类型为例,获取到的数据写操作信息为二进制字符串格式,该格式的数据写操作信息保证了数据的便于传输以及安全性,如:

“*3\r\n$3\r\nset\r\n$5\r\nmykey\r\n$7\r\nmyvalue\r\n”

预设协议的一般形式如下:

*<参数数量>crlf

$<参数1的字节数量>crlf

<参数1的数据>crlf

...

$<参数n的字节数量>crlf

<参数n的数据>crlf

通过对上述字符串进行解析得到的打印内容如下:

*3

$3

set

$5

mykey

$7

myvalue

即该数据写操作信息需要写入的key值为5,对应该key的value值为7。

以复杂数据类型(如hash数据类型为例),通过对数据写操作信息进行解析得到的命令字符串为“hsetmyhashfieldvalue”,根据该命令字符串的内容如出现了“hset”“myhash”等指令可确定出对应的数据操作类型为hash数据类型。

请参考图2,图2是本申请另一个示例性实施例提供的数据处理方法的流程图,其中,对原步骤s102进一步进行了限定,具体如下:

步骤s201、获取数据写操作信息,对所述数据写操作信息进行解析得到数据操作类型和写操作数据。

步骤s202、确定和所述数据操作类型对应的处理函数。

本申请实施例中,可以处理的复杂的数据操作类型包括但不限于一下数据类型:集合、有序集合、链表和哈希数据类型,其中,不同的数据操作类型由于自身数据表征形式的差异对应不同的处理函数以对数据写操作信息进行处理,示例性的,分别对应的处理函数可记为set函数、zset函数、list函数和hash函数。

步骤s203、通过所述处理函数生成和所述写操作数据对应的预设元数据格式的待存盘数据。

本申请实施例中,可分别针对数据类型为集合、有序集合、链表和哈希数据类型的数据进行数据重组生成预设元素数据格式的待存盘数据。其中,元数据格式的待存盘数据为描述需要写入的数据的数据,不同的数据类型对应的预设元数据格式示例性的如下:

请参考图3,图3是本申请一个示例性实施例提供的不同数据类型对应的预设元数据编码格式的示意图,其中,元数据至描述元素数据的数据,元素数据即为具体需要写入/读取的数据,而元数据作为描述该元素数据的信息被相应存储。

其中哈希数据结构中,元数据用于表示哈希表的域的数量、版本号、超时时间等,具体的,元数据key字段记录hash表的key,元数据value字段由4字节的hashsize(哈希表大小)、4字节的version(版本标识)以及4字节的timestamp(时间戳)组成,其中,hashsize用于存储当前hash表的大小值,verison可用于对是否进行删除操作进行标记,如接收到数据删除操作信息,可相应的修改该元数据中的version值(如默认值为1,若需要删除则标记为0),当需要删除hash表中的数据时,可统一进行数据删除操作,如一次性verison值为0的hash表中的元素数据,在删除过程中也无需获取对应的元素数据,而直接通过元数据以删除对应的hash表,其中,timestamp字段可用于在需要读取数据时,判断是否进行数据读取,示例性的,如果时间戳字段的数据值小于超时数据值,则相应的读取和该元数据关联的元素数据,该timestamp字段默认值可以是0,即不进行超时判断,在需要进行超时判断的情况下,该数值可相应被设定。

其中链表数据结构中,元数据用于表示链表信息,如当前链表的节点数量、版本号、超时时间等,具体的,元数据key字段记录list链表的key,元数据value字段由4字节的listsize(用于存储当前链表中的节点的数量)、4字节的version(版本标识)、4字节的timestamp(时间戳)、4字节的leftindex(数组左边界)以及4字节的rightindex(数组的右边界)组成。

其中集合数据结构中,元数据用于表示集合的相关信息,如当前集合的成员(member)数量、版本号、超时时间等,具体的,元数据key字段记录集合的key,元数据value字段由4字节的setsize(用于存储当前set集合的大小)、4字节的version(版本标识)和4字节的timestamp(时间戳)组成。

其中有序集合数据结构中,元数据用于表示有序集合的相关信息,如当前有序集合的成员(member)数量、版本号、超时时间等,具体的,元数据key字段记录有序集合的key,元数据value字段由4字节的zsetsize(用于存储当前zset集合的大小)、4字节的version(版本标识)和4字节的timestamp(时间戳)组成。

步骤s204、通过所述处理函数对所述写操作数据进行字段划分,并将字段划分后的数据按照预设格式进行数据重组,生成预设元素数据格式的待存盘数据。

本申请实施例中,可分别针对数据类型为集合、有序集合、链表和哈希数据类型的数据进行数据重组生成预设元素数据格式的待存盘数据。其中,元素数据格式的待存盘数据为数据写操作信息中记载的需要写入磁盘的数据,不同的数据类型对应的预设元素数据格式示例性的如下:

请参考图4,图4是本申请一个示例性实施例提供的不同数据类型对应的预设元素数据编码格式的示意图,其中哈希数据结构中,元素数据key字段由4字节的keysize、key内容、4字节的version和field内容组成,其中,keysize记录的数据用于表示后续key内容的长度,以便于后续key内容的解析,元素数据value字段记录hashvalue值,该hashvalue值即为关联的哈希表的具体域(field)对应的数据值。

其中链表数据结构中,元素数据key字段由4字节的keysize、key内容、4字节的version和8字节的index(索引,用于记录当前节点在链表中的索引)组成,元素数据value字段记录listvalue值,该listvalu值即为list链表在该节点存储的值。

其中集合数据结构中,元素数据key字段由4字节的keysize、key内容、4字节的version和member内容组成,元素数据value字段为空串(因为set集合仅需要存储member数据)。

其中有序集合数据结构中,元素数据key字段由4字节的keysize、key内容、4字节的version和member内容组成,元素数据value字段记录8字节的score值,其中,score为member所对应的值,在另一个实施例中,该score还可被划分存储在元素数据key字段的member内容之后,相应的,元素数据value字段即为空串。

需要说明的是,上述示例性的预设元素数据格式以及字节大小仅为示例性说明作用,可根据不同的数据存储引擎以及特定场景进行自定义编码以及字段大小的修改。

步骤s205、将所述预设元数据格式和所述预设元素数据格式的待存盘数据写入磁盘存储空间。

由上述内容可知,通过处理函数将数据写操作信息处理为预设格式的元数据和元素数据,其中,元数据字段中包含版本标识用于实现快速删除功能,时间戳字段用于确定是否超时,同时记录对应数据结构类型的数据信息,元素数据字段记录对应的数据元素的值,最终将预设格式的元数据和预设格式的元素数据存储在磁盘存储空间中,实现了数据的落地存储,同时便于数据的查询、删除,提高了数据处理效率。

请参考图5,图5是本申请另一个示例性实施例提供的数据处理方法的流程图,其中,给出了数据写入磁盘存储空间后,相应的读取过程,具体如下:

步骤s301、获取数据写操作信息,对所述数据写操作信息进行解析得到数据操作类型和写操作数据。

步骤s302、确定和所述数据操作类型对应的处理函数。

步骤s303、通过所述处理函数生成和所述写操作数据对应的预设元数据格式的待存盘数据。

步骤s304、通过所述处理函数对所述写操作数据进行字段划分,并将字段划分后的数据按照预设格式进行数据重组,生成预设元素数据格式的待存盘数据。

步骤s305、将所述预设元数据格式和所述预设元素数据格式的待存盘数据写入磁盘存储空间。

步骤s306、获取数据读操作信息,依据所述数据读操作信息读取在所述磁盘存储空间中存储的预设元数据格式的存盘数据。

步骤s307、依据所述预设元数据格式的存盘数据获取关联的预设元素数据格式的存盘数据。

本申请实施例中,终端和其他客户端通过网络进行连接以进行数据通信,客户端可以发送数据读操作信息以读取终端中存储的数据,如在磁盘存储的复杂数据结构的具体数据值。

以哈希数据结构为例,其中数据读操作信息的指令可以是“hgetmyhashfield:xxx”即获取指定的hash表中field(域)为xxx的数据值。本申请实施例中,根据该指令中的hash表的标识确定对应存储的元数据,在判断时间戳字段的数据值小于超时数据值后,确定和该元数据关联的元素数据,并根据元素数据key字段中数据(key、version和field)查找确定元素数据value字段中的数值(hashvalue)。

步骤s308、依据预设协议对所述预设元素数据格式的存盘数据进行解析,反馈对应的解析结果。

本申请实施例中,在得到数据读操作信息对应的元素数据值后,相应的将该元素数据值转换为客户端可识别的数据内容(如预设格式的二进制字符串内容)反馈至客户端。

请参考图6,图6是本申请另一个示例性实施例提供的数据处理方法的流程图,其中,在进行磁盘存储的过程中进一步结合进了缓存存储的方案,具体如下:

步骤s401、获取数据写操作信息,对所述数据写操作信息进行解析得到数据操作类型和写操作数据。

步骤s402、将所述写操作数据保存在内存中。

本申请实施例中,在确定出写操作数据后,相应的将该写操作数据写入保存在内存(缓存)中,在后续数据读取过程中,可以选择从内存中读取数据,而在进行数据迁移和数据同步过程中,可以对磁盘存储的数据进行处理。

步骤s403、确定和所述数据操作类型对应的处理函数。

步骤s404、通过所述处理函数生成和所述写操作数据对应的预设元数据格式的待存盘数据。

步骤s405、通过所述处理函数对所述写操作数据进行字段划分,并将字段划分后的数据按照预设格式进行数据重组,生成预设元素数据格式的待存盘数据。

步骤s406、将所述预设元数据格式和所述预设元素数据格式的待存盘数据写入磁盘存储空间。

步骤s407、获取数据读操作信息,依据所述数据读操作信息读取在所述磁盘存储空间中存储的预设元数据格式的存盘数据。

步骤s408、依据所述预设元数据格式的存盘数据获取关联的预设元素数据格式的存盘数据。

步骤s409、依据预设协议对所述预设元素数据格式的存盘数据进行解析,反馈对应的解析结果。

由上述可知,本申请实施例的方案,满足了一定的数据读取效率的同时,实现了数据的落地(磁盘)存储,适用于大规模数据迁移和数据同步,使得不支持数据持久化存储的数据处理方式能够支持复杂数据的磁盘存储,兼具内存存储和磁盘存储的优点,同时对原声数据存储引擎和数据库不进行改动,针对客户端而言也无需进行相应协议、数据的部署,方案整体实现上灵活性较高,适应了互联网时代大数据存储、数据迁移且需要高效进行数据读取的特点。

下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

图7是本申请一个示例性实施例提供的数据处理装置的结构框图。该数据处理装置可以通过软件、硬件或者两者的结合实现成为终端的全部或一部分。该装置包括:

获取模块101,用于获取数据写操作信息。

解析模块102,用于对所述数据写操作信息进行解析得到数据操作类型和写操作数据。

处理模块103,用于调用和所述数据操作类型对应的处理函数对所述写操作数据进行处理,生成预设格式的待存盘数据。

读写模块104,用于将所述待存盘数据写入磁盘存储空间。

在一个可能的实施例中,所述解析模块102具体用于:

依据预设协议对所述数据写操作信息进行解析得到命令字符串;

根据所述命令字符串的字符内容确定数据操作类型。

在一个可能的实施例中,所述处理模块103具体用于:

确定和所述数据操作类型对应的处理函数;

通过所述处理函数对所述写操作数据进行字段划分,并将字段划分后的数据按照预设格式进行数据重组,生成预设元素数据格式的待存盘数据。

在一个可能的实施例中,所述处理模块103具体用于:

通过所述处理函数生成和所述写操作数据对应的预设元数据格式的待存盘数据,所述预设元数据格式的待存盘数据和所述预设元素数据格式的待存盘数据相关联。

在一个可能的实施例中,所述读写模块104还用于:

在所述将所述待存盘数据写入磁盘存储空间之后,获取数据读操作信息,依据所述数据读操作信息读取在所述磁盘存储空间中存储的预设元数据格式的存盘数据;

依据所述预设元数据格式的存盘数据获取关联的预设元素数据格式的存盘数据;

依据预设协议对所述预设元素数据格式的存盘数据进行解析,反馈对应的解析结果。

在一个可能的实施例中,所述预设元数据格式包括时间戳字段,所述依据所述预设元数据格式的存盘数据获取关联的预设元素数据格式的存盘数据包括:

如果所述时间戳字段的数据值小于超时数据值,则依据所述预设元数据格式的存盘数据获取关联的预设元素数据格式的存盘数据。

在一个可能的实施例中,所述读写模块104还用于:

在对所述数据写操作信息进行解析得到数据操作类型和写操作数据之后,将所述写操作数据保存在内存中。

由上述可知,通过获取数据写操作信息,对所述数据写操作信息进行解析得到数据操作类型和写操作数据,调用和所述数据操作类型对应的处理函数对所述写操作数据进行处理,生成预设格式的待存盘数据,将所述待存盘数据写入磁盘存储空间,提高了数据存储引擎存储数据的灵活性,提高了数据处理效率。

请参考图8,图8是本申请一个示例性实施例提供的终端的结构框图。该终端包括处理器201和存储器202。

处理器201可以是中央处理器(英文:centralprocessingunit,cpu),网络处理器(英文:networkprocessor,np)或者cpu和np的组合。处理器201还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specificintegratedcircuit,asic),可编程逻辑器件(英文:programmablelogicdevice,pld)或其组合。上述pld可以是复杂可编程逻辑器件(英文:complexprogrammablelogicdevice,cpld),现场可编程逻辑门阵列(英文:field-programmablegatearray,fpga),通用阵列逻辑(英文:genericarraylogic,gal)或其任意组合。

存储器202通过总线或其它方式与处理器201相连,存储器202中存储有至少一条指令、至少一段程序、代码集或指令集,上述至少一条指令、至少一段程序、代码集或指令集由处理器201加载并执行以实现如上各个实施例所述的数据处理方法。存储器202包括易失性存储器(英文:volatilememory)和非易失性存储器(英文:non-volatilememory)。易失性存储器可以为随机存取存储器(英文:random-accessmemory,ram),例如静态随机存取存储器(英文:staticrandomaccessmemory,sram),动态随机存取存储器(英文:dynamicrandomaccessmemory,dram)。非易失性存储器可以为只读存储器(英文:readonlymemoryimage,rom),例如可编程只读存储器(英文:programmablereadonlymemory,prom),可擦除可编程只读存储器(英文:erasableprogrammablereadonlymemory,eprom),电可擦除可编程只读存储器(英文:electricallyerasableprogrammableread-onlymemory,eeprom)。非易失性存储器也可以为快闪存储器(英文:flashmemory),磁存储器,例如磁带(英文:magnetictape),软盘(英文:floppydisk),硬盘。非易失性存储器也可以为光盘。

本申请实施例还提供了一种包含终端可执行指令的存储介质,该存储介质存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的数据处理方法。

本申请实施例还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的数据处理方法。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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