数据的存储方法、读取方法以及电子设备技术

技术编号:27975754 阅读:45 留言:0更新日期:2021-04-06 14:10
本申请提供一种数据的存储方法、读取方法以及电子设备,将待存储的第一字符串,按照第一索引信息进行存储,第一索引信息用于表征第一字符串对应的第一节点在第一数据结构中的链接关系,并将待存储的第二字符串和第一节点的标识,按照第二索引信息进行存储,第二索引信息用于表征第二字符串对应的第二节点在第二数据结构中的链接关系,其中,第一数据结构和第二数据结构中至少存在一个压缩路径的数据结构,压缩路径的数据结构所包含的多个节点中,至少存在一个节点对应的存储空间中存储有至少两个字符,实现了对待存储数据的压缩存储,节省了内存空间,且不需要对待存储数据进行压缩,提高了数据存储的效率。

【技术实现步骤摘要】
数据的存储方法、读取方法以及电子设备
本申请涉及数据处理
,尤其涉及一种数据的存储方法、读取方法以及电子设备。
技术介绍
目前,对于键值对数据的存储,常采用的方式包括树图(TreeMap)或哈希表(Hashtable)等。其中,TreeMap是通过二叉树数据结构进行存储,存储的元素为键值对数据,通过对关健字Key进行排序,实现每个键值对数据在树结构上的存储;哈希表是通过哈希函数将键值对数据的关键字Key散列到内存空间中,并通过链表法解决哈希位置冲突的问题,链表节点中存放每个键值对数据。然而,现有技术中的存储方式均将原始的键值对数据无压缩的存入内存中,导致内存消耗过大。
技术实现思路
本申请提供一种数据的存储方法、读取方法以及电子设备,能够实现数据的实时存储和读取,且节省了存储资源。第一方面,本申请实施例提供一种数据的存储方法,包括:将待存储的第一字符串,按照第一索引信息进行存储;第一索引信息用于表征第一节点在第一数据结构中的链接关系,第一节点为第一字符串在第一数据结构中对应的节点;将待存储的第二字符串和第一节点的标识,按照第二索引信息进行存储,第二字符串为第一字符串的关键字,第二索引信息用于表征第二节点在第二数据结构中的链接关系,第二节点为第二字符串在第二数据结构中对应的节点。其中,第一数据结构和第二数据结构中至少存在一个压缩路径的数据结构,压缩路径的数据结构所包含的多个节点中,至少存在一个节点对应的存储空间中存储有至少两个字符。第二方面,本申请实施例提供一种数据的读取方法,包括:基于第二字符串对应的第二索引信息,读取第一节点的标识,第二字符串为待读取的第一字符串的关键字,第二索引信息用于表征第二节点在第二数据结构中的链接关系,第二节点为第二字符串在第二数据结构中对应的节点,第一节点为第一字符串在第一数据结构中对应的节点;基于第一节点对应的第一索引信息,读取第一字符串,第一索引信息用于表征第一节点在第一数据结构中的链接关系;其中,第一数据结构和第二数据结构中至少存在一个压缩路径的数据结构,压缩路径的数据结构所包含的多个节点中,至少存在一个节点对应的存储数据包含至少两个字符。第三方面,本申请实施例提供一种电子设备,包括:存储单元,用于将待存储的第一字符串,按照第一索引信息进行存储;第一索引信息用于表征第一节点在第一数据结构中的链接关系,第一节点为第一字符串在第一数据结构中对应的节点;存储单元还用于将待存储的第二字符串和第一节点的标识,按照第二索引信息进行存储,第二字符串为第一字符串的关键字,第二索引信息用于表征第二节点在第二数据结构中的链接关系,第二节点为第二字符串在第二数据结构中对应的节点。其中,第一数据结构和第二数据结构中至少存在一个压缩路径的数据结构,压缩路径的数据结构所包含的多个节点中,至少存在一个节点对应的存储空间中存储有至少两个字符。第四方面,本申请实施例提供一种电子设备,包括:读取单元,用于基于第二字符串对应的第二索引信息,读取第一节点的标识,第二字符串为待读取的第一字符串的关键字,第二索引信息用于表征第二节点在第二数据结构中的链接关系,第二节点为第二字符串在第二数据结构中对应的节点,第一节点为第一字符串在第一数据结构中对应的节点;读取单元还用于基于第一节点对应的第一索引信息,读取第一字符串,第一索引信息用于表征第一节点在第一数据结构中的链接关系;其中,第一数据结构和第二数据结构中至少存在一个压缩路径的数据结构,压缩路径的数据结构所包含的多个节点中,至少存在一个节点对应的存储数据包含至少两个字符。第五方面,本申请实施例提供一种电子设备,包括:存储器和处理器;存储器存储计算机执行指令;处理器执行存储器存储的计算机执行指令,使得处理器执行第一方面或其各实施方式中的方法。第六方面,本申请实施例提供一种电子设备,包括:存储器和处理器;存储器存储计算机执行指令;处理器执行存储器存储的计算机执行指令,使得处理器执行第二方面或其各实施方式中的方法。第七方面,本申请实施例提供一种存储介质,包括:可读存储介质和计算机程序,计算机程序用于实现第一方面、第二方面或其各实现方式中的方法。本申请实施例,基于第一数据结构将第一字符串按照第一索引信息进行存储,并基于第二数据结构将第二字符串按照第二索引信息进行存储,第一数据结构和第二数据结构中至少有一个数据结构为压缩路径的数据结构,实现了对待存储数据的压缩存储,节省了内存空间,且不需要对待存储数据进行压缩,提高了数据存储的效率。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例提供的一种树图的存储结构;图2为本申请实施例提供的一种哈希表的存储结构;图3a为本申请实施例提供的一种数据结构的逻辑示意图;图3b为本申请实施例提供的一种哈希表的示意图;图3c为本申请实施例提供的一种存储位置映射的示意图;图4为本申请实施例提供的一种数据结构的逻辑示意图;图5为本申请实施例提供的一种数据的存储方法的流程示意图;图6为本申请实施例提供的一种数据的读取方法的流程示意图;图7为本申请实施例提供的一种数据导出的流程示意图;图8为本申请实施例提供的一种数据结构的映射归约流程示意图;图9为本申请实施例提供的一种电子设备900的结构示意图;图10为本申请实施例提供的一种电子设备1000的结构示意图;图11为本申请一实施例提供的电子设备1100的硬件结构示意图。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。图1为本申请实施例提供的一种树图的存储结构。如图1所示,在树图(TreeMap)中每个节点对应存储一个键值对(Key-Value)数据。应理解,当每个键值对数据无压缩的按照TreeMap结构存储后,由于TreeMap结构本身占用较多的内存空间,则键值对数据存储后总共占用的内存大小预计是键值对数据本身的2至4倍;并且,每次插入的键值对数据无法去重,也将占用更多的内存。图2为本申请实施例提供的一种哈希表的存储结构。如图2所示,通过哈希函数将Key散列到内存空间中,一般通过链地址法或开放定址法解决哈希位置冲突,图2所示为链表法解决冲突问题,在每个链表节点对应的存储空间中本文档来自技高网...

【技术保护点】
1.一种数据的存储方法,其特征在于,包括:/n将待存储的第一字符串,按照第一索引信息进行存储;所述第一索引信息用于表征第一节点在第一数据结构中的链接关系,所述第一节点为所述第一字符串在所述第一数据结构中对应的节点;/n将待存储的第二字符串和所述第一节点的标识,按照第二索引信息进行存储,所述第二字符串为所述第一字符串的关键字,所述第二索引信息用于表征第二节点在第二数据结构中的链接关系,所述第二节点为所述第二字符串在所述第二数据结构中对应的节点。/n其中,所述第一数据结构和所述第二数据结构中至少存在一个压缩路径的数据结构,所述压缩路径的数据结构所包含的多个节点中,至少存在一个节点对应的存储空间中存储有至少两个字符。/n

【技术特征摘要】
1.一种数据的存储方法,其特征在于,包括:
将待存储的第一字符串,按照第一索引信息进行存储;所述第一索引信息用于表征第一节点在第一数据结构中的链接关系,所述第一节点为所述第一字符串在所述第一数据结构中对应的节点;
将待存储的第二字符串和所述第一节点的标识,按照第二索引信息进行存储,所述第二字符串为所述第一字符串的关键字,所述第二索引信息用于表征第二节点在第二数据结构中的链接关系,所述第二节点为所述第二字符串在所述第二数据结构中对应的节点。
其中,所述第一数据结构和所述第二数据结构中至少存在一个压缩路径的数据结构,所述压缩路径的数据结构所包含的多个节点中,至少存在一个节点对应的存储空间中存储有至少两个字符。


2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于所述第一字符串,创建所述第一索引信息。


3.根据权利要求2所述的方法,其特征在于,所述第一索引信息包括:第三节点的标识以及所述第一节点和所述第三节点之间的路径数据;在所述第一数据结构的多个节点中,所述第三节点对应的存储数据与所述第一字符串的公共前缀的字符最多,所述公共前缀为所述第一字符串和所述第三节点对应的存储数据逐字符匹配后匹配成功的连续字符。


4.根据权利要求3所述的方法,其特征在于,所述基于所述第一字符串,创建所述第一索引信息,包括:
基于所述第一字符串,确定所述第三节点;
基于所述第三节点对应的存储数据,创建所述第一节点以及所述第一节点和所述第三节点之间的路径数据,所述路径数据包括失配首字符和失配位置,所述失配首字符为所述第一字符串和所述第三节点对应的存储数据逐字符匹配后第一个失配的字符,所述失配位置为所述公共前缀的最后一个字符在所述第三节点对应的存储空间中所存储的字符串中的字符位置。


5.根据权利要求4所述的方法,其特征在于,所述基于所述第一字符串,确定所述第三节点,包括:
从所述第一数据结构的根节点开始,将所述根节点对应的存储空间中所存储的数据与所述第一字符串进行匹配,得到目标路径数据,所述目标路径数据包括目标失配首字符和目标失配位置,所述目标失配首字符为所述根节点与所述第一字符串逐字符匹配后第一个失配的字符,所述目标失配位置为所述根节点对应的存储数据与所述第一字符串的公共前缀的最后一个字符,在所述根节点对应的存储空间中所存储的字符串中的字符位置;
若所述目标路径数据与连接至所述根节点的任一叶子节点的路径数据均不相同,则所述根节点为所述第三节点;
若所述目标路径数据与连接至所述根节点的任一叶子节点的路径数据相同,则将所述叶子节点作为根节点,重复上述过程,直至所述目标路径数据与连接至所述根节点的任一叶子节点的路径数据均不相同,确定所述第三节点。


6.根据权利要求3至5所述的方法,其特征在于,所述将待存储的第一字符串,按照第一索引信息进行存储,包括:
将所述第一字符串与所述第三节点对应的存储数据的至少一个失配字符中除第一个失配字符外的其他字符存储至所述第一节点对应的存储空间,所述至少一个失配字符为自所述第一字符串中第一个失配字符起至所述第一字符串的最后一个字符止的连续字符。


7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
基于所述第一节点的标识,确定所述第一节点对应的存储空间。


8.根据权利要求7所述的方...

【专利技术属性】
技术研发人员:史承毅杨凯
申请(专利权)人:上海优扬新媒信息技术有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1