CN109542854B - 数据压缩方法、装置、介质及电子设备 - Google Patents

数据压缩方法、装置、介质及电子设备 Download PDF

Info

Publication number
CN109542854B
CN109542854B CN201811371727.5A CN201811371727A CN109542854B CN 109542854 B CN109542854 B CN 109542854B CN 201811371727 A CN201811371727 A CN 201811371727A CN 109542854 B CN109542854 B CN 109542854B
Authority
CN
China
Prior art keywords
discrete
discrete points
distance
discrete point
points
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811371727.5A
Other languages
English (en)
Other versions
CN109542854A (zh
Inventor
蒋宇翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201811371727.5A priority Critical patent/CN109542854B/zh
Publication of CN109542854A publication Critical patent/CN109542854A/zh
Application granted granted Critical
Publication of CN109542854B publication Critical patent/CN109542854B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例是关于一种数据压缩方法及装置,属于数据处理技术领域,该方法包括:将原始数据表中的字段以及该字段中的表项进行抽象处理,得到与所述字段对应的维度空间以及与所述表项对应的离散点;根据所述离散点所属的维度空间以及所述离散点之间的距离大小,将所述离散点进行划分得到离散点集合;根据所述离散点集合中的各离散点之间的距离构建离散点树形结构;删除所述树形结构中的根节点对应的离散点与子节点对应的离散点之间的相同字段,并保留差异字段。该方法解决了现有技术中由于各条表项中冗余数据过多导致终端设备负担过重的问题,减少了冗余数据量,同时也减少了终端设备的负担。

Description

数据压缩方法、装置、介质及电子设备
技术领域
本发明实施例涉及数据处理技术领域,具体而言,涉及一种数据压缩方法、基于差异控制的数据压缩装置、计算机可读存储介质以及电子设备。
背景技术
随着游戏规模和运营时间的增长,导表数据不可避免的会不断膨胀。在端游时代,***内存相对充足,数据配置表的内存占用尚可接受。而到了手游时代,导表数据的内存占用量太大,会使得终端设备的负担过大,进而造成终端设备在游戏过程中反应较慢,影响了用户体验。
为了解决上述问题,在游戏数据内存的优化方面,大多数企业目前已有很多的尝试,例如DesignData、TupleDict、SparseDict、TaggedDict以及带__slots__的recordclass等。
但是,在上述的优化方案中,都只是在尽量优化单条表项的格式或修改内部实现来减小内存占用量,但是,如果单独看某一条表项,可能已经非常紧凑,没什么压缩的空间了,但是,如果把多条表项放在一起看就会发现各条表项中还是有很多相同的冗余数据。例如,在图1所示的数据表中,方框中的内容也完全一致,因此会产生大量的冗余数据,增加终端设备的负担。
因此,需要提供一种新的数据压缩方法及装置。
需要说明的是,在上述背景技术部分发明的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明的目的在于提供一种数据压缩方法、基于差异控制的数据压缩装置、计算机可读存储介质以及电子设备,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的冗余数据过多导致终端设备负担过重的问题。
根据本公开的一个方面,提供一种数据压缩方法,包括:
将原始数据表中的字段以及该字段中的表项进行抽象处理,得到与所述字段对应的维度空间以及与所述表项对应的离散点;
根据所述离散点所属的维度空间以及所述离散点之间的距离大小,将所述离散点进行划分得到离散点集合;
根据所述离散点集合中的各离散点之间的距离构建离散点树形结构;
删除所述树形结构中的根节点对应的离散点与子节点对应的离散点之间的相同字段,并保留差异字段。
在本公开的一种示例性实施例中,根据所述离散点所属的维度空间以及所述离散点之间的距离大小,将所述离散点进行划分得到离散点集合包括:
计算所述离散点之间的距离;
根据所述离散点所属的维度空间以及所述距离的大小,将满足最大距离限制原则的离散点划分为相同集合,得到多个离散点集合。
在本公开的一种示例性实施例中,将满足最大距离限制原则的离散点划分为相同集合包括:
判断所述离散点之间的距离是否小于最大距离限制;
如果所述离散点之间的距离小于最大距离限制,则将该离散点划分为相同集合。
在本公开的一种示例性实施例中,计算所述离散点之间的距离包括:
根据所述离散点在所述字段上的差异总和,计算所述离散点之间的距离。
在本公开的一种示例性实施例中,根据所述离散点集合中的各离散点之间的距离构建离散点树形结构包括:
配置父表项;
将所述离散点集合中的父表项对应的离散点配置为根节点,将除根节点以外的其他离散点作为子节点;
根据所述子节点与所述根节点之间的距离,构建离散点树形结构。
在本公开的一种示例性实施例中,根据所述离散点集合中的各离散点之间的距离构建离散点树形结构还包括:
判断所述离散点集合的数量是否大于预设集合数量;其中,所述预设集合数量根据所述表项的数量进行确定;
如果所述离散点集合的数量小于所述预设集合数量,则根据所述离散点集合中的各离散点之间的距离构建离散点树形结构。
在本公开的一种示例性实施例中,在保留差异字段之后,所述数据压缩方法还包括:
将所述差异字段以RecordManager的方式进行封装存储。
根据本公开的一个方面,提供一种数据压缩装置,包括:
抽象处理模块,用于将原始数据表中的字段以及该字段中的表项进行抽象处理,得到与所述字段对应的维度空间以及与所述表项对应的离散点;
划分模块,用于根据所述离散点所属的维度空间以及所述离散点之间的距离大小,将所述离散点进行划分得到离散点集合;
构建模块,用于根据所述离散点集合中的各离散点之间的距离构建离散点树形结构;
删除模块,用于删除所述树形结构中的根节点对应的离散点与子节点对应的离散点之间的相同字段,并保留差异字段。
根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的数据压缩方法。
根据本公开的一个方面,提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的数据压缩方法。
本发明实施例一种数据压缩方法及装置,通过将字段以及该字段中的表项进行抽象处理得到与维度空间以及离散点;再将离散点进行划分得到离散点集合并构建离散点树形结构;最后删除树形结构中的相同字段并保留差异字段;一方面,通过删除树形结构中的根节点对应的离散点与子节点对应的离散点之间的相同字段,并保留差异字段,解决了现有技术中由于各条表项中冗余数据过多导致终端设备负担过重的问题,减少了冗余数据量,同时也减少了终端设备的负担;另一方面,通过根据离散点集合中的各离散点之间的距离构建离散点树形结构,再删除树形结构中的根节点对应的离散点与子节点对应的离散点之间的相同字段,并保留差异字段;当需要再次访问该树形结构中包括的表项数据时,可以直接通过子节点以及父节点的关系,获取到完整的数据;通过该方法,既减少了冗余数据量,同时也避免了由于减少数据量引起的降低表象数据的准确性的问题,提高了表象数据压缩的准确性;再一方面,通过将原始数据表中的字段以及该字段中的表项进行抽象处理,得到与字段对应的维度空间以及与表项对应的离散点;再根据离散点所属的维度空间以及离散点之间的距离大小,将离散点进行划分得到离散点集合,提高了离散点集合构建的准确性,进而提高了数据压缩的准确性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出一种原始数据表示例图。
图2示意性示出一种数据压缩方法的流程图。
图3示意性示出一种离散点示例图。
图4示意性示出一种离散点集合示例图。
图5示意性示出一种树形结构示例图。
图6示意性示出一种压缩后的数据示例图。
图7示意性示出一种RecoredManager的示例图。
图8示意性示出另一种数据压缩方法的流程图。
图9示意性示出另一种原始数据表示例图。
图10示意性示出一种数据压缩前详细内存占用量的示例图。
图11示意性示出一种数据压缩后详细内存占用量的示例图。
图12示意性示出一种数据压缩前总体内存占用量的示例图。
图13示意性示出一种数据压缩后总体内存占用量的示例图。
图14示意性示出一种数据压缩装置的框图。
图15示意性示出一种用于实现上述数据压缩方法的电子设备。
图16示意性示出一种用于实现上述数据压缩方法的计算机可读存储介质。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本发明的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本发明的各方面变得模糊。
此外,附图仅为本发明的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
本示例实施方式中首先提供了一种数据压缩方法,如该方法可以运行于服务器、服务器集群或云服务器等,也可以运行于设备终端;当然,本领域技术人员也可以根据需求在其他平台运行本发明的方法,本示例性实施例中对此不做特殊限定。参考图2所示,该数据压缩方法可以包括以下步骤:
步骤S210.将原始数据表中的字段以及该字段中的表项进行抽象处理,得到与所述字段对应的维度空间以及与所述表项对应的离散点。
步骤S220.根据所述离散点所属的维度空间以及所述离散点之间的距离大小,将所述离散点进行划分得到离散点集合。
步骤S230.根据所述离散点集合中的各离散点之间的距离构建离散点树形结构。
步骤S240.删除所述树形结构中的根节点对应的离散点与子节点对应的离散点之间的相同字段,并保留差异字段。
上述数据压缩方法中,一方面,通过删除树形结构中的根节点对应的离散点与子节点对应的离散点之间的相同字段,并保留差异字段,解决了现有技术中由于各条表项中冗余数据过多导致终端设备负担过重的问题,减少了冗余数据量,同时也减少了终端设备的负担;另一方面,通过根据离散点集合中的各离散点之间的距离构建离散点树形结构,再删除树形结构中的根节点对应的离散点与子节点对应的离散点之间的相同字段,并保留差异字段;当需要再次访问该树形结构中包括的表项数据时,可以直接通过子节点以及父节点的关系,获取到完整的数据;通过该方法,既减少了冗余数据量,同时也避免了由于减少数据量引起的降低表象数据的准确性的问题,提高了表象数据压缩的准确性;再一方面,通过将原始数据表中的字段以及该字段中的表项进行抽象处理,得到与字段对应的维度空间以及与表项对应的离散点;再根据离散点所属的维度空间以及离散点之间的距离大小,将离散点进行划分得到离散点集合,提高了离散点集合构建的准确性,进而提高了数据压缩的准确性。
下面,将结合附图对本示例实施方式中上述数据压缩方法进行详细的解释以及说明。
在步骤S210中,将原始数据表中的字段以及该字段中的表项进行抽象处理,得到与所述字段对应的维度空间以及与所述表项对应的离散点。
在本示例实施方式中,将一张包括n个表项m个字段的原始数据表进行抽象处理,得到m维空间的n个离散点;例如,参考图1所示,包括9个表项6个字段的数据表可表示为如图3所示的9个离散点(为了便于理解,可以将离散点从m维空间压缩到2维空间显示,进一步的,在真正的算法中并不会预先了解各个离散点之间的距离,因此将维度空间压缩到二维空间进行显示,也可以方便理解算法的思想)。此处需要补充说明的是,为了便于后续对压缩文件的读取,表项和离散点是一一对应的;即一个离散点对应一个表项。
在步骤S220中,根据所述离散点所属的维度空间以及所述离散点之间的距离大小,将所述离散点进行划分得到离散点集合。
在本示例实施方式中,根据离散点所属的维度空间以及离散点之间的距离大小,将离散点进行划分得到离散点集合具体的可以包括步骤S2202以及步骤S2204。其中:
在步骤S2202中,计算所述离散点之间的距离。
在本示例实施方式中,计算离散点之间的距离可以包括:根据所述离散点在所述字段上的差异总和,计算所述离散点之间的距离。举例而言:
继续参考图1所示,例如,表项1(离散点1)和表项2(离散点2)有6个字段不同,则对应的离散点1与离散点2的距离为6。
在步骤S2204中,根据所述离散点所属的维度空间以及所述距离的大小,将满足最大距离限制原则的离散点划分为相同集合,得到多个离散点集合。
在本示例实施方式中,当得到各离散点之间的距离后,可以根据各离散点所述的维度空间以及各距离之间的大小,将满足最大距离限制原则的离散点划分为相同集合,得到多个离散点集合;其中,该离散点集合例如可以参考图4所示。进一步的,将满足最大距离限制原则的离散点划分为相同集合可以包括:判断所述离散点之间的距离是否小于最大距离限制;如果所述离散点之间的距离小于最大距离限制,则将该离散点划分为相同集合。详细而言:
最大距离限制原则(MAX_DIS_LIMIT),也可以被称为差异控制;基于最大距离限制原则,若离散点之间距离小于最大距离限制,有可能在同一个集合中,而超过最大距离限制则一定不可能在同一个集合中。进一步的,经过测试,可以将最大距离限制设定为min(15,1/2m),m是原始数据表的字段数量,也就是说如果两条表项之间的不同的字段数小于min(15,1/2m),则可以认为是相似的。由于设置了最大距离限制,所以在计算离散点之间的距离时若超过最大距离限制之后就没有必要继续计算,比如两个表项的真实距离为100,也只会记录他们的距离为15,这样可以进一步缩减算法的复杂度,通过伪代码和最大距离限制的设定,可以得出此算法的最坏时间复杂度为O(n2)。所以,此方式是一种非常快速且有效的聚合方式,不用预先了解所有离散点之间距离;也不用预先指定聚合后的集合数量,不会受到脏数据的影响。
在步骤S230中,根据所述离散点集合中的各离散点之间的距离构建离散点树形结构。
在本示例实施方式中,根据所述离散点集合中的各离散点之间的距离构建离散点树形结构可以包括步骤S310-步骤S330。其中:
在步骤S310中,配置父表项。
在步骤S320中,将所述离散点集合中的父表项对应的离散点配置为根节点,将除根节点以外的其他离散点作为子节点。
在步骤S330中,根据所述子节点与所述根节点之间的距离,构建离散点树形结构。
下面,将对步骤S310-步骤S330进行解释以及说明。首先,配置父表项;其中,父表项可以根据原始数据表中的字段内容与其他字段内容的差异性大小进行配置;然后,将各离散点集合中的父表项对应的离散点配置为根节点,将除了根节点以外的其他离散点作为子节点;其中,该根节点仅包括一个;最后,再根据子节点与根节点之间的距离,构建离散点树形结构(树形结构的相互依赖关系);其中,树形结构可以参考图5所示。通过该方法,每个集合都可以表示为一棵树,所有节点就可以表示为森林,其中,树的各边权值是各点到其父节点的距离。由于离散点和表项之间是一一对应的关系,所以一张表的各个表项最终也将拥有同样的树形结构相互依赖关系。
更进一步的,为了避免离散点集合过多引起的问题,该根据所述离散点集合中的各离散点之间的距离构建离散点树形结构还可以包括:判断所述离散点集合的数量是否大于预设集合数量;其中,所述预设集合数量根据所述表项的数量进行确定;如果所述离散点集合的数量小于所述预设集合数量,则根据所述离散点集合中的各离散点之间的距离构建离散点树形结构。详细而言:
首先,判断离散点集合的数量是否大于预设集合数量;其中,预设集合树龄可以设置为1/2n,n是原始数据表中表项的数量;然后,在判断离散点集合的数量小于预设集合数量时,可以根据离散点集合中的各离散点之间的距离构建离散点树形结构;在判断离散点集合的数量大于预设集合数量时,停止对该原始数据表的压缩;也就是说,如果在压缩的过程中集合的数量超过表项数量的一半,则认为此表不适合压缩,此时将停止算法转而使用原始的储存形式。
进一步的,由于每个集合是一棵树,集合中心点是树根,尝试将新加入的点连接到距离其最近的高度为2的点上,若不成功,则将其连接至树根上,通过这样的方式可将树的最大高度控制为3,且尽量减小树中各边的权值。可能有的读者会认为在聚合步骤完成后再对每个集合创建最小生成树,这样可以使树的权值最小。但是,最小生成树的高度不可控,而且压缩收益不高,由上文可知在第一次访问某条数据时可能需要递归创建record实例,这样可能出现递归太深的情况,从而导致效率过低;其次,最小生成树需要知道各个离散点之间的距离,为了减小算法的复杂度,我们不会去主动求出所有离散点之间的距离。所以,我们使用树形结构储存数据,并控制树的最大高度,可在不影响效率的情况下尽量减少父子表项间的差异字段,从而减少内存占用。
在步骤S240中,删除所述树形结构中的根节点对应的离散点与子节点对应的离散点之间的相同字段,并保留差异字段。
在本示例实施方式中,当得到上述树形结构以后,删除根节点对应的离散点与子节点对应的离散点之间的相同字段,然后保留差异字段。进一步的,在每棵树中,子节点是可以完全依赖于父节点的,所以除树根以外的所有表项都可以只保留他们与父表项之间的差异字段信息,这样,完整字段信息可由父表项信息和差异字段信息一起间接构造而成,而不用直接全部呈现,这样就可以消除表项之间的冗余数据。例如,在完成数据压缩算法后,图3中的数据导出结构变为图6所示的形式。更进一步的,在保留差异字段之后,该数据压缩方法还可以包括:将所述差异字段以RecordManager的方式进行封装存储。详细而言:
由于差异字段是以一种非常紧凑、没有多余冗余的形式储存,这样的形式并不会呈现完整信息,所以不能直接对其访问。为了不影响访问的效率,可以将data封装为RecordManager并存储。当用RecordManager代替data进行访问后,仅有第一次访问某条表项时会有一个构造真实数据的过程,再次访问时将和正常访问的速度一致,这样就不会影响游戏中数据访问的效率。RecoredManager的简易实现如图7所示,它的主要工作是,如果被访问表项的record实例不存在,则会尝试创建并保存record实例,同时删除data中的源数据,再次访问此表项时就可以直接得到record实例而不用再走创建的流程。
进一步的,在RecoredManager中需要注意的地方是:record实例的创建过程。如果此表项是根表项,则根据表项中的complete_values直接创建record实例即可;若不是根表项,会先创建一个与父表项内容相同的record实例,再修改与父表项不同的字段值来构造最终的record实例。例如,首次访问3号表项时,由于3号表项的父表项是2号表项,所以会先获取其父2号表项的完整内容,再修改3号表项与2号表项不同的字段值来构造3号表项的record实例,最后删除3号表项的源数据。若在尝试获取2号表项的完整内容时2号表项的record实例并没有被创建,则先会创建2号表项的record实例。在此之后,若再次访问2号或3号表项,由于他们的record实例已经被创建并保存,则可以直接得到。通过这样的方式,可以保证每条表项的record实例只会被创建一次,且除根表项以外的其余表项只有一次额外复制父表项内容并修改的过程,这样是几乎不影响访问效率的。
更进一步的,在图6中,Record没有变化,intern部分也是对应自动生成的,这些都不是重点,应该主要关注的是data部分的格式。data现在主要分为两类:
一类是,对于所有的树根表项(图7中1、2、5号表项),表示为id:("ROOT",complete_values)。其中,complete_values是此表项的完整字段值集合,例如,表项1的内容是("ROOT",("FFF","DDD",9,3.0,None,None)),其含义是:表项1是树根表项,他的完整字段信息是("FFF","DDD",9,3.0,None,None)。
另一类是,对于所有非树根表项(图7中3、4、6、7、8、9号表项),表示为id:(father_id,diff_keys,diff_values)。其中,father_id是此表项的父表项,diff_keys和diff_values分别是此表项和父表项之间不同的字段名集合和字段值集合。例如,表项6的内容是(5,(S02,"attrE"),(5.0,True)),其含义是:表项6的父表项是表项5,表项6与表项5不同之处是表项6在"attrD"和"attrE"字段的值分别是5.0和True。可以注意到,树中各边的权值就是最终各个非树根表项必须要显示的字段数量。
图8示意性示出一种基于差异控制的数据压缩方法的流程图。参考图8所示,该基于差异控制的数据压缩方法可以包括以下步骤:
步骤S801,构建第一个集合s1,将第一条表项d1作为第一个集合的中心表项c1,完成对第一条表项的处理;对第二条表项d2到最后一条表项dn重复做步骤S802-S806。
步骤S802,顺序选择一个尚未完成处理的表项,标记为i;计算第i条表项di到所有集合中心表项的距离,找到距离最近的集合sj并得到对应的距离
Figure BDA0001865982070000111
步骤S803,判断
Figure BDA0001865982070000112
是否小于“最大距离限制”(MAX_DIS_LIMIT),如果是则进入步骤S804,否则进入步骤S808。
步骤S804,将di加入sj;在此集合的所有高度为2的表项中找到与di距离最小的表项
Figure BDA0001865982070000113
并得到对应的距离
Figure BDA0001865982070000114
步骤S805,判断
Figure BDA0001865982070000115
是否小于
Figure BDA0001865982070000116
如果是,则进入步骤S806,否则进入步骤S807。
步骤S806,设置di的父表项为
Figure BDA0001865982070000117
则di为集合sj中高度为3的表项,完成对表项di的处理;
步骤S807,设置di的父表项为此集合的中心表项cj,则di为集合sj中高度为2的表项,完成对表项di的处理;
步骤S808,生成新的集合snext,di作为此集合的中心表项cnext,完成对表项di的处理。
伪代码如下:
Figure BDA0001865982070000121
运用上述基于差异控制的数据压缩方法以后,对数据的使用就变成了类似于“database+cache”的模式,只不过这里的“database”并不是真的database,而是被此算法压缩后的内容,它以一种紧凑的、几乎无冗余的形式储存数据;而“cache”是被创建并保存在RecordManager中真正用于访问的record实例。由于客户端一次完整的游戏过程真正会使用到的表项很少,而访问次数很多,这种“database+cache”的模式非常有效。
由于每个项目中都有一部分数据非常少的表,这些表并没有太多的压缩空间,压缩后效果不明显,所以这部分数据表并没有进行压缩。
目前,上述基于差异控制的数据压缩方法已经在多个手游项目中使用。
其中,在某一手游项目中,统计所有被压缩过的表,可将数据内存压缩至仅剩余31%左右;统计包括未被压缩的表在内的所有表,总体数据内存也仅剩余37%左右,这个压缩率是非常可观的。
在另一手游(该手游的原始数据可以参考图9所示)项目中,由于之前已经做过一部分的优化工作,压缩率要稍低一些,统计所有被压缩过的表,数据内存仅剩余38%左右;其中,数据压缩前详细内存占用表可以参考图10所示;数据压缩后详细内存占用表可以参考图11所示;统计包括未被压缩的表在内的所有表,总体数据内存也仅剩余59%左右,依然是很可观的;其中,数据压缩前总体内存占用量可以参考图12所示;数据压缩后总体内存占用量可以参考图13所示。。
在第三种手游项目中,虽然此项目也经过一定程度上的优化,但经过初步统计,经此算法压缩后总体数据内存仍然仅剩余51%左右。
本公开还提供了一种数据压缩装置。参考图14所示,该数据压缩装置可以包括抽象处理模块1410、划分模块1420、构建模块1430以及删除模块1440。其中:
抽象处理模块1410可以用于将原始数据表中的字段以及该字段中的表项进行抽象处理,得到与所述字段对应的维度空间以及与所述表项对应的离散点;
划分模块1420可以用于根据所述离散点所属的维度空间以及所述离散点之间的距离大小,将所述离散点进行划分得到离散点集合;
构建模块1430可以用于根据所述离散点集合中的各离散点之间的距离构建离散点树形结构;
删除模块1440可以用于删除所述树形结构中的根节点对应的离散点与子节点对应的离散点之间的相同字段,并保留差异字段。
在本公开的一种示例实施方式中,根据所述离散点所属的维度空间以及所述离散点之间的距离大小,将所述离散点进行划分得到离散点集合包括:
计算所述离散点之间的距离;
根据所述离散点所属的维度空间以及所述距离的大小,将满足最大距离限制原则的离散点划分为相同集合,得到多个离散点集合。
在本公开的一种示例实施方式中,将满足最大距离限制原则的离散点划分为相同集合包括:
判断所述离散点之间的距离是否小于最大距离限制;
如果所述离散点之间的距离小于最大距离限制,则将该离散点划分为相同集合。
在本公开的一种示例实施方式中,计算所述离散点之间的距离包括:
根据所述离散点在所述字段上的差异总和,计算所述离散点之间的距离。
在本公开的一种示例实施方式中,根据所述离散点集合中的各离散点之间的距离构建离散点树形结构包括:
配置父表项;
将所述离散点集合中的父表项对应的离散点配置为根节点,将除根节点以外的其他离散点作为子节点;
根据所述子节点与所述根节点之间的距离,构建离散点树形结构。
在本公开的一种示例实施方式中,根据所述离散点集合中的各离散点之间的距离构建离散点树形结构还包括:
判断所述离散点集合的数量是否大于预设集合数量;其中,所述预设集合数量根据所述表项的数量进行确定;
如果所述离散点集合的数量小于所述预设集合数量,则根据所述离散点集合中的各离散点之间的距离构建离散点树形结构。
在本公开的一种示例实施方式中,所述数据压缩装置还可以包括:
封装存储模块,可以用于将所述差异字段以RecordManager的方式进行封装存储。
上述数据压缩装置中各模块的具体细节已经在对应的数据压缩方法中进行了详细的描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本发明中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本发明实施方式的方法。
在本发明的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为***、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。
下面参照图15来描述根据本发明的这种实施方式的电子设备1500。图15显示的电子设备1500仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图15所示,电子设备1500以通用计算设备的形式表现。电子设备1500的组件可以包括但不限于:上述至少一个处理单元1510、上述至少一个存储单元1520、连接不同***组件(包括存储单元1520和处理单元1510)的总线1530。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1510执行,使得所述处理单元1510执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元1510可以执行如图2中所示的步骤S210:将原始数据表中的字段以及该字段中的表项进行抽象处理,得到与所述字段对应的维度空间以及与所述表项对应的离散点;S220:根据所述离散点所属的维度空间以及所述离散点之间的距离大小,将所述离散点进行划分得到离散点集合;步骤S230:根据所述离散点集合中的各离散点之间的距离构建离散点树形结构;步骤S240:删除所述树形结构中的根节点对应的离散点与子节点对应的离散点之间的相同字段,并保留差异字段。
存储单元1520可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)15201和/或高速缓存存储单元15202,还可以进一步包括只读存储单元(ROM)15203。
存储单元1520还可以包括具有一组(至少一个)程序模块15205的程序/实用工具15204,这样的程序模块15205包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线1530可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、***总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备1500也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1500交互的设备通信,和/或与使得该电子设备1500能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1550进行。并且,电子设备1500还可以通过网络适配器1560与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1560通过总线1530与电子设备1500的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本发明实施方式的方法。
在本发明的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
参考图16所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品1600,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、C++等,还包括常规的过程式程序设计语言-诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
本领域技术人员在考虑说明书及实践这里发明的发明后,将容易想到本发明的其他实施例。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未发明的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由权利要求指出。

Claims (8)

1.一种数据压缩方法,其特征在于,包括:
将原始数据表中的字段以及该字段中的表项进行抽象处理,得到与所述字段对应的维度空间以及与所述表项对应的离散点;
根据所述离散点所属的维度空间以及所述离散点之间的距离大小,将所述离散点进行划分得到离散点集合;
根据所述离散点集合中的各离散点之间的距离构建离散点树形结构;
删除所述树形结构中的根节点对应的离散点与子节点对应的离散点之间的相同字段,并保留差异字段;
其中,根据所述离散点所属的维度空间以及所述离散点之间的距离大小,将所述离散点进行划分得到离散点集合包括:
计算所述离散点之间的距离;
根据所述离散点所属的维度空间以及所述距离的大小,将满足最大距离限制原则的离散点划分为相同集合,得到多个离散点集合;
根据所述离散点集合中的各离散点之间的距离构建离散点树形结构包括:
配置父表项;
将所述离散点集合中的父表项对应的离散点配置为根节点,将除根节点以外的其他离散点作为子节点;
根据所述子节点与所述根节点之间的距离,构建离散点树形结构。
2.根据权利要求1所述的数据压缩方法,其特征在于,将满足最大距离限制原则的离散点划分为相同集合包括:
判断所述离散点之间的距离是否小于最大距离限制;
如果所述离散点之间的距离小于最大距离限制,则将该离散点划分为相同集合。
3.根据权利要求1所述的数据压缩方法,其特征在于,计算所述离散点之间的距离包括:
根据所述离散点在所述字段上的差异总和,计算所述离散点之间的距离。
4.根据权利要求1所述的数据压缩方法,其特征在于,根据所述离散点集合中的各离散点之间的距离构建离散点树形结构还包括:
判断所述离散点集合的数量是否大于预设集合数量;其中,所述预设集合数量根据所述表项的数量进行确定;
如果所述离散点集合的数量小于所述预设集合数量,则根据所述离散点集合中的各离散点之间的距离构建离散点树形结构。
5.根据权利要求1-4任一项所述的数据压缩方法,其特征在于,在保留差异字段之后,所述数据压缩方法还包括:
将所述差异字段以RecordManager的方式进行封装存储。
6.一种数据压缩装置,其特征在于,包括:
抽象处理模块,用于将原始数据表中的字段以及该字段中的表项进行抽象处理,得到与所述字段对应的维度空间以及与所述表项对应的离散点;
划分模块,用于根据所述离散点所属的维度空间以及所述离散点之间的距离大小,将所述离散点进行划分得到离散点集合;
构建模块,用于根据所述离散点集合中的各离散点之间的距离构建离散点树形结构;
删除模块,用于删除所述树形结构中的根节点对应的离散点与子节点对应的离散点之间的相同字段,并保留差异字段;
其中,根据所述离散点所属的维度空间以及所述离散点之间的距离大小,将所述离散点进行划分得到离散点集合包括:
计算所述离散点之间的距离;
根据所述离散点所属的维度空间以及所述距离的大小,将满足最大距离限制原则的离散点划分为相同集合,得到多个离散点集合;
根据所述离散点集合中的各离散点之间的距离构建离散点树形结构包括:
配置父表项;
将所述离散点集合中的父表项对应的离散点配置为根节点,将除根节点以外的其他离散点作为子节点;
根据所述子节点与所述根节点之间的距离,构建离散点树形结构。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-5任一项所述的数据压缩方法。
8.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-5任一项所述的数据压缩方法。
CN201811371727.5A 2018-11-14 2018-11-14 数据压缩方法、装置、介质及电子设备 Active CN109542854B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811371727.5A CN109542854B (zh) 2018-11-14 2018-11-14 数据压缩方法、装置、介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811371727.5A CN109542854B (zh) 2018-11-14 2018-11-14 数据压缩方法、装置、介质及电子设备

Publications (2)

Publication Number Publication Date
CN109542854A CN109542854A (zh) 2019-03-29
CN109542854B true CN109542854B (zh) 2020-11-24

Family

ID=65848176

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811371727.5A Active CN109542854B (zh) 2018-11-14 2018-11-14 数据压缩方法、装置、介质及电子设备

Country Status (1)

Country Link
CN (1) CN109542854B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110334086B (zh) * 2019-05-30 2024-07-02 平安科技(深圳)有限公司 数据去重方法、装置、计算机设备以及存储介质
CN110781194B (zh) * 2019-11-05 2022-06-14 网易(杭州)网络有限公司 应用程序的表数据处理方法、装置、电子设备及存储介质
CN111522710B (zh) * 2020-04-16 2021-02-26 星环信息科技(上海)股份有限公司 基于大数据的数据压缩方法、设备及介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101741708A (zh) * 2008-11-13 2010-06-16 华为技术有限公司 一种存储数据的方法、装置及***
CN103678330A (zh) * 2012-09-04 2014-03-26 北京新岸线移动多媒体技术有限公司 网页数据加载方法、***及装置
CN104682966A (zh) * 2015-03-24 2015-06-03 河海大学 列表数据的无损压缩方法
CN104809190A (zh) * 2015-04-21 2015-07-29 浙江大学 一种树形结构数据的数据库存取方法
CN106803099A (zh) * 2016-12-29 2017-06-06 东软集团股份有限公司 一种数据处理方法和装置
CN107153647A (zh) * 2016-03-02 2017-09-12 奇简软件(北京)有限公司 进行数据压缩的方法、装置、***和计算机程序产品
CN107609186A (zh) * 2017-09-30 2018-01-19 百度在线网络技术(北京)有限公司 信息处理方法及装置、终端设备及计算机可读存储介质
CN108664504A (zh) * 2017-03-30 2018-10-16 富士施乐实业发展(中国)有限公司 一种对结构化数据进行简化的方法
CN108696599A (zh) * 2017-04-07 2018-10-23 北京上元信安技术有限公司 一种去除冗余域名的方法、***和防火墙设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130204861A1 (en) * 2012-02-03 2013-08-08 Quova, Inc. Method and apparatus for facilitating finding a nearest neighbor in a database
US9195673B2 (en) * 2013-03-15 2015-11-24 International Business Machines Corporation Scalable graph modeling of metadata for deduplicated storage systems

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101741708A (zh) * 2008-11-13 2010-06-16 华为技术有限公司 一种存储数据的方法、装置及***
CN103678330A (zh) * 2012-09-04 2014-03-26 北京新岸线移动多媒体技术有限公司 网页数据加载方法、***及装置
CN104682966A (zh) * 2015-03-24 2015-06-03 河海大学 列表数据的无损压缩方法
CN104809190A (zh) * 2015-04-21 2015-07-29 浙江大学 一种树形结构数据的数据库存取方法
CN107153647A (zh) * 2016-03-02 2017-09-12 奇简软件(北京)有限公司 进行数据压缩的方法、装置、***和计算机程序产品
CN106803099A (zh) * 2016-12-29 2017-06-06 东软集团股份有限公司 一种数据处理方法和装置
CN108664504A (zh) * 2017-03-30 2018-10-16 富士施乐实业发展(中国)有限公司 一种对结构化数据进行简化的方法
CN108696599A (zh) * 2017-04-07 2018-10-23 北京上元信安技术有限公司 一种去除冗余域名的方法、***和防火墙设备
CN107609186A (zh) * 2017-09-30 2018-01-19 百度在线网络技术(北京)有限公司 信息处理方法及装置、终端设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN109542854A (zh) 2019-03-29

Similar Documents

Publication Publication Date Title
US11146286B2 (en) Compression of JavaScript object notation data using structure information
US11789978B2 (en) System and method for load, aggregate and batch calculation in one scan in a multidimensional database environment
CN109542854B (zh) 数据压缩方法、装置、介质及电子设备
US20160378809A1 (en) Massive time series correlation similarity computation
US20130066890A1 (en) Method and system for specifying, preparing and using parameterized database queries
US10904316B2 (en) Data processing method and apparatus in service-oriented architecture system, and the service-oriented architecture system
US10437470B1 (en) Disk space manager
US11216434B2 (en) Systems and methods for performing tree-structured dataset operations
CN111339078A (zh) 数据实时存储方法、数据查询方法、装置、设备、介质
CN107016115B (zh) 数据导出方法、装置、计算机可读存储介质及电子设备
US20240020886A1 (en) Updates on context modeling of occupancy coding for point cloud coding
CN106886568B (zh) 一种分表方法、装置及电子设备
US20210385494A1 (en) Hash-based accessing of geometry occupancy information for point cloud coding
US20190347246A1 (en) Determining when a change set was delivered to a workspace or stream and by whom
US11307984B2 (en) Optimized sorting of variable-length records
CN113408668A (zh) 基于联邦学习***的决策树构建方法、装置及电子设备
US10606837B2 (en) Partitioned join with dense inner table representation
CN113190773A (zh) 显示数据的渲染方法、电子设备、移动终端及存储介质
US10810458B2 (en) Incremental automatic update of ranked neighbor lists based on k-th nearest neighbors
US11093458B2 (en) Automatic attribute structural variation detection for not only structured query language database
CN112800091B (zh) 一种流批一体式计算控制***及方法
CN112035401A (zh) 模型数据处理方法、装置、电子设备及可读介质
US11651030B2 (en) Delta-based conflict-free replicated data type arrays using dot stores that map dots to dot stores
US20210311942A1 (en) Dynamically altering a query access plan
CN111752912B (zh) 数据处理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant