用于文档传输的方法、设备和计算机程序产品与流程

未命名 10-09 阅读:105 评论:0


1.本公开的实施例涉及文档传输技术,并且更具体地,涉及用于传输其中包括结构化数据的文档的方法、设备和计算机程序产品。


背景技术:

2.在客户设备的管理中,为了获得客户设备的准确状态,需要从客户设备向服务端的后台(例如,定期地)发送反映客户设备的各种信息的遥测数据。在传统的解决方案中,客户设备通常向后台发送包括结构化数据的文档(例如,使用json格式),其中包含后对客户设备进行管理所需的所有预定义类型的数据。这些文档尺寸通常较大,并且需要以较高的频率被发送。因此,技术人员仍然在寻找更有效率的方法来传输这样的遥测数据。


技术实现要素:

3.在本公开的第一方面,提供了一种用于文档传输的方法。该方法包括:从文档选择待编码部分,该文档包括结构化部分,结构化部分中的每个结构化部分包括标识符和与标识符相关联的数据;获取待编码部分的至少一个结构化部分;针对至少一个结构化部分中的相应结构化部分执行以下操作,以编码文档:生成相应结构化部分的数据的哈希值;确定哈希值存储库是否包括该哈希值;以及基于确定哈希值存储库包括该哈希值,将文档中的相应结构化部分的数据替换为该哈希值;以及向接收方发送经编码的文档。
4.在本公开的第二方面,提供了一种用于文档传输的方法。该方法包括:从发送方接收被传输的文档,该文档包括结构化部分,结构化部分中的每个结构化部分包括标识符和与标识符相关联的数据;从文档选择待解码部分;获取待解码部分的至少一个结构化部分;针对至少一个结构化部分中的相应结构化部分执行以下操作:确定相应结构化部分是否包括有效哈希值;以及基于确定相应结构化部分包括有效哈希值:确定哈希文档存储库是否包括该有效哈希值的对应条目,对应条目存储文档部分的数据和该数据的哈希值,该数据的该哈希值与该有效哈希值相同;以及基于确定哈希文档存储库包括对应条目,将文档中的有效哈希值替换为文档部分的数据。
5.在本公开的第三方面,提供了一种电子设备。该电子设备包括:处理器;以及与该处理器耦合的存储器,存储器具有存储于其中的指令,该指令在被处理器执行时使所述设备执行动作,该动作包括:从文档选择待编码部分,该文档包括结构化部分,结构化部分中的每个结构化部分包括标识符和与标识符相关联的数据;获取待编码部分的至少一个结构化部分;针对至少一个结构化部分中的相应结构化部分执行以下操作,以编码文档:生成相应结构化部分的数据的哈希值;确定哈希值存储库是否包括该哈希值;以及基于确定哈希值存储库包括该哈希值,将文档中的相应结构化部分的数据替换为该哈希值;以及向接收方发送经编码的文档。
6.在本公开的第四方面,提供了一种电子设备。该电子设备包括:处理器;以及与该处理器耦合的存储器,存储器具有存储于其中的指令,该指令在被处理器执行时使所述设
备执行动作,该动作包括:从发送方接收被传输的文档,该文档包括结构化部分,结构化部分中的每个结构化部分包括标识符和与标识符相关联的数据;从文档选择待解码部分;获取待解码部分的至少一个结构化部分;针对至少一个结构化部分中的相应结构化部分执行以下操作:确定相应结构化部分是否包括有效哈希值;以及基于确定相应结构化部分包括有效哈希值:确定哈希文档存储库是否包括该有效哈希值的对应条目,对应条目存储文档部分的数据和该数据的哈希值,该数据的该哈希值与该有效哈希值相同;以及基于确定哈希文档存储库包括对应条目,将文档中的有效哈希值替换为文档部分的数据
7.在本公开的第五方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在计算机可读介质上并且包括机器可执行指令,该机器可执行指令在被执行时使机器执行根据本公开的第一方面或本公开的第二方面的方法。
8.请注意,提供本发明内容是为了以简化的形式来介绍对概念的选择,这些概念在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开内容的关键特征或主要特征,也无意限制本公开内容的范围。
附图说明
9.通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中:
10.图1示出了本公开的多个实施例能够在其中实现的示例环境100的示意图;
11.图2示出了根据本公开的一些实施例的用于传输文档的示例方法200;
12.图3示出了根据本公开的一些实施例的用于处理接收到的被传输文档的示例方法300;
13.图4示出了根据本公开的一些实施例的用于传输文档的示例架构400;
14.图5示出了根据本公开的一些实施例的用于确定多个字段过滤器的示例架构500,该字段过滤器指示一个或多个预定义结构化部分的一个或多个标识符;以及
15.图6示出了可以用来实现本公开的实施例的设备的示意性框图。
16.在所有附图中,相同或相似的附图标记表示相同或相似的元素。
具体实施方式
17.下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开,并非用于限制本公开的保护范围。
18.本文中使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”。其他术语的相关定义将在下文描述中给出。
19.采集来自客户设备的遥测报告是设备或服务提供方的后台监测和管理客户设备以及其上应用的重要途径。这些报告反映客户设备以及其上应用的相关标识以及各种状态。随着设备应用的发展,越来越多方面的的数据需要被采集。在传统的解决方案中,客户设备通常向后台发送包括结构化数据的文档(例如,使用json格式),其中包含后台监测和
管理客户设备所需类型的数据。这些文档的尺寸通常较大,并且需要以较短的时间间隔被发送,因而给网络带宽,尤其是客户设备的上行带宽带来了很大压力。例如,如果需要被发送的每个遥测报告大小为10mb并且客户设备每小时发送一次报告,则该客户设备每天需要发送240mb数据用于状态监测。而对后台而言,每天接收1000个客户设备的报告就将产生240g的数据量。
20.尽管可以减少被发送给后台的数据内容,但是这可能使得后台无法获取足够全面的数据以对客户设备进行有效管理。在另一方面,如果降低发送这些遥测报告的频率,则可能降低后台接收到的遥测报告的即时性,使得后台无法及时地获取客户设备的最新变化并进行反馈。
21.由于同一类型的遥测报告通常具有类似的结构并包含部分相同的内容,另一些方法使得客户设备在每个报告中仅发送与上次被发送的报告不同的部分。然而,这要求客户侧的设备“记忆”其上次发送的报告内容、并且将报告中的每个值与先前的报告进行比较,这消耗了客户端的大量存储空间和计算资源。
22.为了至少部分地解决上述问题以及其它潜在问题,本公开的实施例提出了一种用于传输文档的方案。该方案可以将被发送的文档中频繁变化的结构化部分保留在文档中,并且在发送和接收其余部分的一个或多个结构化部分时,对这一个或多个部分进行处理。在发送方处,该方案通过确定哈希值存储库是否包括其中某个部分的数据的哈希值,来确定该部分是否曾经被发送给接收方。如果是,则在发送文档前使用该哈希值替换文档中的该部分。如果否,则在被发送的文档中保留该部分,并且将该哈希值存储在哈希值存储库中。在接收方处,该方案获取接收到的文档中相应的一个或多个结构化部分。如果其中某个结构化部分不包括有效哈希值,则将该部分的数据的哈希值和数据存储为哈希文档存储库的条目。如果某个结构化部分包括有效的哈希值,则使用哈希文档存储库中具有相同哈希值的条目中的数据替换文档中的哈希值,从而还原文档。如果哈希文档存储库中不包括某个有效哈希值的对应条目,则接收方向发送方发送需要重新发送文档的通知。
23.通过上述方式,发送方可以对被传输的文档进行内容去重,并且不再重复地发送接收方已知的文档部分。这样,在使得接收方能够获得相同数据内容的情况下,实际被传输的文档大小可以被显著降低,从而节约了传输文档所需的时间和带宽等资源。由于在发送方一端仅需要计算和存储哈希值,本方案不会给容量有限的发送方带来较大额外负载,并且易于移植到多个设备上。另一方面,在通常存储和计算资源较多的接收方处,来自大量历史文档的部分可以被存储,使得这些部分无需被发送方再次发送。相比仅在客户设备比较有限报告的方法,该方案可以达到更高的去重率。以下将在客户设备管理的场景中描述本方案。但是应理解,本方案也适用于其他需要频繁向接收方传输包括结构化部分的文档的场景中。
24.图1示出了本公开的多个实施例能够在其中实现的示例环境100的示意图。如图1所示,示例环境100中包括文档130的发送方110和接收方120。例如,发送方110可以是发送遥测报告的客户设备,而接收方120可以是管理和监测客户设备的服务提供方后台。发送方110和接收方120也可以是任何的固定或移动设备。
25.发送方110可以向接收方120发送多个文档。例如,客户设备可以以某个频率向后台发送反映客户设备状态的遥测报告。在某个时刻,发送方110可以需要向接收方120发送
文档130。文档130中可以包含结构化的数据(例如,json格式的数据)。发送方110可以对文档130的内容进行处理,并且向接收方经处理的文档130。在接收方120接收到经处理的文档130后,可以对经处理的文档130进行各种操作(例如,解析、数据提取和分析等),和/或将经处理的文档130发送给下游应用或设备。此外,接收方120也可以向发送方110直接或间接地发送信息,例如关于遥测报告应被发送的时间间隔、文档中数据应当包括的方面等。
26.应理解,仅出于示例性的目的来描述示例环境100中的架构和功能,而不暗示对本公开的范围的任何限制。发送方110和接收方120可以是单个设备、分布式设备、或者以其他任何合适的形式存在的设备。并且,示例环境100中还可以存在其他未示出的设备、系统或组件等。例如,接收方120可以从多个不同的发送方接收文档。另外,本公开的实施例还可以被应用到具有不同的结构和/或功能的其他环境中。
27.图2示出了根据本公开的一些实施例的用于文档传输的示例方法200的流程图。示例方法200可以例如由如图1所示的发送方110来执行。应当理解,方法200还可以包括未示出的附加动作,本公开的范围在此方面不受限制。以下结合图1来详细描述方法200。
28.在框210处,发送方110从文档130选择待编码部分,该文档130包括结构化部分,其中每个结构化部分包括标识符和与标识符相关联的数据。作为示例,文档130可以是json或xml等格式的结构化文档,或者以其他方式包括一个或多个可标识的结构化部分。在一些实施例中,文档130可以是关于客户设备状态的遥测报告,其可以客户设备被发送给监测和管理该客户设备的服务后台。
29.在一些实施例中,发送方110可以获取对一个或多个预定义结构化部分的一个或多个标识符。然后,发送方110基于该一个或多个标识符,选择文档130中除该一个或多个预定义结构化部分之外的部分作为待编码部分。以json格式的文档130为例,发送方可以获取一个或多个json字段(也称为条目)的键,并且选择130中除该一个或多个键对应的字段之外的部分作为该编码部分。这样的标识符可以由发送方110在需要发送文档130时从接收方120或第三方获取,可以预先存储在发送方110本地并且由其在需要时读取,或者以任何适当方式获取。
30.在这样的一些实施例中,一个或多个预定义结构化部分可以基于多个文档之中的结构化部分改变的频率来确定,该多个文档中的文档与文档130包括至少部分相同的结构(例如,具有部分相同的字段和/或层级结构)。
31.在框220处,发送方110获取待编码部分的至少一个结构化部分。例如,发送方110可以基于结构化部分的标识符、或者结构化部分在整个文档中的相对位置来获取该至少一个结构化部分。在一些实施例中,文档130具有树形层级结构(例如,json格式)。在这样的实施例中,发送方110可以获取预定义编解码层级,并且将编码部分的、处于预定义编解码层级的结构化分区(例如,json文档在某个层级的字段)作为至少一个结构化部分。发送方110可以使用与获取预定义结构化部分的标识符的方法类似的方法来获取编解码层级。
32.在框230处,发送方110针对至少一个结构化部分中的相应结构化部分执行以下操作,以编码文档:生成相应结构化部分的数据的哈希值;确定哈希值存储库是否包括该哈希值;以及基于确定哈希值存储库包括该哈希值,将文档中的相应结构化部分的数据替换为该哈希值。该哈希值存储库可以例如位于客户设备本地。例如,发送方110可以使用预定哈希算法来生成哈希值,使得对相同数据生成哈希值时所得的结果相同。在一些实施例中,基
于确定哈希值存储库不包括该哈希值,发送方110将该哈希值存储在哈希值存储库中。
33.在对需编码的结构化部分进行了上述编码之后,在框240处,发送方110向接收方120发送经编码的文档130。应理解,发送方110还可以继续使用方法200向接收方120发送更多的文档。
34.在一些实施例中,发送方110还可以基于从接收方120接收到通知而进行操作,该通知指示已发送的经编码的文档130中包括接收方120无法处理的至少一个哈希值。响应于接收到该通知,发送方110可以从哈希值存储库删除该至少一个哈希值。发送方110还可以在从哈希值存储库删除该至少一个哈希值后,以与前所述的方式相同的方式重新编码文档130,以及向接收方发送经重新编码的文档130。通过这种方式,可以避免由于编码错误或者接收方已知数据的变化而导致的数据丢失。
35.图3示出了根据本公开的一些实施例的用于处理接收到的被传输文档的方法;示例方法300可以例如由如图1所示的接收方120来执行。应当理解,方法300还可以包括未示出的附加动作,本公开的范围在此方面不受限制。以下结合图1来详细描述方法200。
36.在框310处,接收方120从发送方110接收被传输的文档130,该文档包括结构化部分,其中每个结构化部分包括标识符和与标识符相关联的数据。作为示例,文档130可以是json或xml等格式的结构化文档,或者以其他方式包括一个或多个可标识的结构化部分。例如,该文档130可以是发送方110根据方法200而向接收方120发送的经编码的文档130。在一些实施例中,文档130可以是关于客户设备状态的遥测报告。监测和管理该客户设备的服务后台可以从客户设备接收遥测报告。
37.在框320处,接收方120从文档130选择待解码部分。在一些实施例中,接收方120可以获取对一个或多个预定义结构化部分的一个或多个标识符(诸如json字段的键)。然后,接收方120基于该标识符选择文档130中除该一个或多个预定义结构化部分之外的部分作为待解码部分。该标识符可以是例如由接收方120预先确定和/或存储、并且在需要时读取的。在这样的示例中,接收方120可以向发送方110提供该标识以供使用(例如,在方法200中作为预定义结构化部分的标识使用)。接收方120也可以以其他适当的方式或从第三方获取该标识符。
38.在这样的一些实施例中,类似于方法200中对预定义结构化部分的确定,这里的一个或多个预定义结构化部分可以基于多个文档之中的结构化部分改变的频率来被确定。
39.在框330处,接收方120获取待解码部分的至少一个结构化部分。例如,接收方120可以基于结构化部分的标识符、或者结构化部分在整个文档中的相对位置来获取该至少一个结构化部分。在一些实施例中,文档130具有树形层级结构(例如,json格式)。在这样的实施例中,接收方120可以获取预定义编解码层级,并且将编码部分的、处于预定义编解码层级的结构化分区(json文档在某个层级的字段)作为至少一个结构化部分。接收方120可以使用与获取预定义结构化部分的标识符的方法类似的方法来获取编解码层级。
40.在框340处,接收方120针对该至少一个结构化部分中的相应结构化部分执行以下操作。首先,接收方120确定该相应结构化部分是否包括有效哈希值。基于确定相应结构化部分包括有效哈希值,接收方120确定哈希文档存储库是否包括该有效哈希值的对应条目。该哈希文档存储库可以例如位于接收方120本地。该对应条目存储文档部分的数据和该数据的哈希值,并且该数据的哈希值与有效哈希值相同。这意味着有效哈希值所代表的数据
与该对应条目中的数据相同。然后,基于确定哈希文档存储库包括对应条目,接收方120将文档中的有效哈希值替换为文档部分的数据。
41.在一些实施例中,基于确定相应结构化部分不包括有效哈希值,接收方120可以生成相应结构化部分的数据的哈希值并且向哈希文档存储库添加条目,该条目存储所生成的哈希值和相应结构化部分的数据。例如,接收方120可以使用预定哈希算法来生成哈希值,使得对相同数据生成哈希值时所得的结果相同。
42.在接收方120针对所有相应结构化部分执行上述操作之后,文档130中的有效哈希值被还原为原始文档中的数据,接收方120由此获得文档130中的完整的原始数据。应理解,接收方120还可以继续使用方法300来处理从发送方110接收到的更多文档。
43.在一些实施例中,基于确定哈希文档存储库不包括所确定的至少一个有效哈希值的对应条目,接收方120还可以向发送方110发送通知,该通知指示文档中包括无法被处理的该至少一个有效哈希值。通过该操作,接收方120可以通知发送方应当被重新发送的数据,从而避免了因无法还原原始数据内容而造成的数据丢失。
44.在一些实施例中,方法300可以与方法200结合使用并且分别由接收方和发送方执行。在这样的实施例中,发送方110在方法200中获取的一个或多个预定义结构化部分可以与接收方120在方法300中获取的一个或多个预定义结构化部分相同。此外,发送方110在200中针对其编码的至少一个结构化部分可以与接收方120在方法300中针对其解码的至少一个预定义结构化部分相同。例如,在文档130具有层级结构的实施例中,发送方110和接收方120各自在方法200和方法300中获取的预定义编码层级可以相同。由此,可以确保发送方110和接收方120以相同的粒度执行针对文档130的哈希值生成和内容去重。此外,发送方110和接收方120可以使用相同的哈希算法来计算哈希值,以使得双方对相同数据计算哈希值将得到同样的结果哈希值。该哈希算法可以以任何适当的方式被双方获取,本公开的范围不限制于此。
45.图4示出了根据本公开的一些实施例的示例架构400,其中示出了发送方110示例实现和接收方120的示例实现,即发送方410和接收方420。在示例架构400中,例如,发送方410可以是客户设备,而接收方420可以是设备或服务提供方的后台。如箭头460所示,发送方410可以向接收方420发送各种数据,例如反映客户设备状态的遥测报告等文档。应理解,架构400中各种设备、组件以及其分布仅作为示例,其他能够执行本公开描述的方案的适当设备、组件以及其分布也可以被使用。
46.文档430可以是图1中的文档130,其可以是由客户设备上的监测、统计或相关应用生成的遥测报告,诸如表1所示的示例第一json文档和表2所示的示例第二json文档。以下将使用表1和表3中的文档作为文档430的两个示例来描述架构400。为说明清楚起见,这些json文档中的一些部分在表中未示出并且由省略号指示。
47.表1:示例第一json文档
[0048][0049]
在该示例实现中,预定义值440被示出为与发送方410和接收方420分离。例如,预定义值440可以被存储在能够与发送方410和/或接收方420通信的第三方(未示出)。在其他一些示例中,发送方410的编码引擎415也可以从接收方420处获取预定义值440。预定义值440可以包括例如一个或多个预定义结构化部分的标识符,并且在文档430具有层级结构的情况下包括编解码层级。在以下结合表1和表3中文档的示例描述中,出于说明而非限制的目的,假设预定义值440中包括一个或多个预定义结构化部分的标识符“applianceinfo.uptimeindays”和编解码层级“1”,并且在整个示例中不发生改变。
[0050]
首先,发送方410将向接收方420发送表1中的第一json文档。基于上述值,发送方410的编码引擎415选择第一json文档中排除了字段“uptimeindays”的部分作为待编码部分。进一步地,编码引擎415获取待编码部分处于第一层级的分区,即“applianceinfo”和“licensing”作为待编码的结构化部分。
[0051]
然后,编码引擎415生成针对第一json文档中除“applianceinfo”之外的数据的哈希值如下:
[0052]
5c41329ec6b9328cf8efb5112540f96b
[0053]
以及生成针对“licensing”中的数据的哈希值如下:
[0054]
b1073d8b27c705f4045dd13b0f3e6eea
[0055]
编码引擎415然后检查哈希值存储库411中是否包括所生成的哈希值。假设此识哈希值存储库411中尚未存储任何哈希值,则编码引擎415不替换第一json文档中的任何部
分。因此,经编码的第一json文档依然如表1所示。发送方410将该文档发送给接收方420。
[0056]
接收方420从接收到如表1所示的经编码的第一json文档并对其进行解码。如前所述,接收方420的解码引擎425可以例如从本地或从第三方读取预定义值440。在该示例中,预定义值440包括一个或多个预定义结构化部分的标识符“applianceinfo.uptimeindays”和编解码层级为“1”。
[0057]
基于上述值,解码引擎425将第一json文档中排除了字段“uptimeindays”的部分作为待解码部分,并且获取待解码部分中处于第一层级的分区“applianceinfo”和“licensing”作为待解码的结构化部分。然后,解码引擎425确定这些结构化部分中是否包括有效的哈希值。
[0058]
基于确定相应部分不包括有效的哈希值,解码引擎425针对第一json文档的“applianceinfo”中除“uptimeindays”之外的数据生成哈希值如下:
[0059]
5c41329ec6b9328cf8efb5112540f96b
[0060]
以及生成针对“licensing”中的数据的哈希值如下:
[0061]
b1073d8b27c705f4045dd13b0f3e6eea
[0062]
假设此时哈希文档存储库421中尚未存储任何条目,则解码引擎425将上述哈希值与其对应数据存储在哈希文档存储库421的条目中,如表2所示。至此,解码引擎425完成对经编码的第一json文档的处理,并且将经处理的文档发送给诸如文档存储库450的下游应用或设备。文档存储库450可以是例如存储后台接收到的历史遥测报告的报告数据湖。
[0063]
表2:基于第一json文档存储的哈希文档条目
[0064]
[0065]
在该示例中,在发送方410处理并发送第一示例json文档之后,例如经过预定的时间间隔、或者响应于某种触发,发送方410将向接收方发送如表3所示的示例第二json文档。在此,编码引擎415针对第二json文档的“applianceinfo”中除“uptimeindays”之外的数据生成哈希值如下,并且确定哈希值存储库411中是否已经包含该哈希值:
[0066]
5c41329ec6b9328cf8efb5112540f96b
[0067]
表3:示例第二json文档
[0068][0069]
在该示例中,哈希值存储库411中已经包括该哈希值。这说明与对应部分相同的数据已经为接收方420所知。在该示例中,这是由于相同数据先前已经在第一json文档中被发送给接收方420。因此,编码引擎415将第二示例json文档中对应部分的数据(即“applianceinfo”中除“uptimeindays”之外的数据)替换为该哈希值,而无需再次向接收方420发送该部分的完整数据。
[0070]
编码引擎415针对第二json文档的“licensing”中的数据生成哈希值如下,并且确定哈希值存储库中是否已经包含该哈希值:
[0071]
b0f607e28a886b05ca9ae0dadbbc1cb4
[0072]
在该示例中,哈希值存储库411中不包括该哈希值。因此,发送方410不使用该哈希值替换对应部分的数据,并且将该哈希值存储在哈希值存储库411中。
[0073]
至此,编码引擎415完成对第二json文档中待编码的结构化部分的处理并且得到经编码的第二json文档,如表4所示。然后,发送方410向接收方420发送经编码的第二json
文档。应理解,发送方410还可以继续以类似的方式向接收方420发送更多的文档。
[0074]
应注意,在该示例中,“uptimeindays”作为预定义结构化部分而从文档的待编码部分被排除。因此,无论该部分的数据先前是否已经被发送给接收方420,其都将被保留在被发送的文档中。
[0075]
接收方420从发送方410接收该经编码的示例第二json文档。在此,接收方420的解码引擎425确定该文档的“applianceinfo”中包括有效的哈希值,即5c41329ec6b9328cf8efb5112540f96b。因此,解码引擎425将确定哈希文档存储库421中是否包括该哈希值。
[0076]
表4:经编码的示例第二json文档
[0077][0078]
在该示例中,该哈希值已经在接收方420接收到第一json文档时存储在哈希文档存储库421中。因此,解码引擎425将经编码的第二示例json文档中的该哈希值替换为对应条目中存储的数据,从而恢复对应部分的原始数据。
[0079]
解码引擎425还确定经编码的第二json文档的“licensing”部分中不包括有效的哈希值。基于该确定,接收方生成针对该部分数据的哈希值,并且将该哈希值与对应的数据存储在哈希文档存储库421中,如表5所示。
[0080]
表5:基于第二json文档存储的哈希文档条目
[0081][0082]
至此,解码引擎425完成对经编码的第二json文档中待解码的结构化部分的处理并且得到经解码的第二json文档,如表6所示。该文档与图2所示的第二json文档包含相同的数据。应理解,接收方120还可以继续以类似的方式处理更多接收到的文档。
[0083]
表6:经解码的示例第二json文档
[0084][0085]
应注意,前述示例中的文件格式和结构、标识符、编解码层级等、以及相关联的值仅作为示例,其他合适的文件格式和结构、字段以及编解码层级等也可以被使用。
[0086]
通过上述方法,可以在不给发送方带来显著额外负载、并且确保接收方获得相同数据的情况下,显著降低需要被发送的文档的大小(针对一些与前述示例中的json文档相同类型的文档,可以降低超过70%),从而节约了网络资源。
[0087]
由于哈希文档存储库421的更新或者发送方410处的编码错误等原因,接收方420从发送方410处接收到的文档中可能包括在哈希文档存储库421中没有对应条目的至少一个有效哈希值。在这种情况下,作为错误处理机制的一部分,接收方420可以向发送方发送通知,如箭头470所示。该通知指示已发送的经编码的文档430中包括无法由接收方处理的该至少一个有效哈希值。响应于接收到该通知,接收方420可以从哈希值存储库411中删除该至少一个有效值。在此之后,发送方410可以重新编码并如箭头460所示向接收方发送该文档430。
[0088]
在一些实施例中,接收方420可以从多个发送方接收多个不同类型的结构化文档,并且针对不同类型的文档,不同的预定义值440被定义。然后,解码引擎425可以针对特定类型的文档获取对应的预定义值440。类似地,发送方410也可以针对特定类型的文档获取对应的预定义值440。例如,可以针对客户设备发送给后台的遥测报告的每个类型来定义字段过滤器,每个字段过滤器包括一个或多个预定义结构化部分的标识符(诸如json字段键)。字段过滤器可以基于对相应类型的一系列报告的分析而被确定。
[0089]
图5示出了根据本公开的一些实施例的用于确定多个字段过滤器的示例架构500。架构500可以例如是接收方120或接收方420的一部分,并且发送方110或发送方410可以以
适当的方式获取所确定的字段过滤器。应理解,用于确定字段过滤器的组件也可以以其他方式分布。
[0090]
在图5中,字段分析器组件501可以从文档存储库550中读取相同类型的一系列文档(诸如,最新的n个特定类型的遥测报告)并且对这些文档进行分析。文档存储库550可以例如是图4中的文档存储库450。基于该分析,字段分析器组件501可以定义针对该类型的字段过滤器,或者更新相应的已定义字段过滤器。例如,字段分析器组件501可以读取相同类型的最新n个报告,并且对该n个报告中字段发生变化的次数进行统计,并且将发生变化的次数超过阈值的字段包括在字段过滤器中。字段过滤器也可以基于更复杂的分析来确定,本公开的方案不限于此。已定义的多个字段标识符502-1至502-m然后可以由相应的组件503-1至503-m使用,其中每个字段标识符针对不同的文档类型。例如,组件503-1至503-m可以是例如根据本公开的实施例的用于相应类型文档的传输的组件,或者其他文档管理组件。
[0091]
图6示出了可以用来实施本公开的实施例的设备600的示意性框图,设备600可以是本公开的实施例所描述的设备或装置,例如发送方110、410和接收方120、420等。如图6所示,设备600包括中央处理单元(cpu)601,其可以根据存储在只读存储器(rom)602中的计算机程序指令或者从存储单元608加载到随机访问存储器(ram)603中的计算机程序指令,来执行各种适当的动作和处理。在ram 603中,还可存储设备600操作所需的各种程序和数据。cpu 601、rom 602以及ram 603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。虽然未在图6中示出,设备600还可以包括协处理器。
[0092]
设备600中的多个部件连接至i/o接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如互联网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0093]
上文所描述的各个方法或过程可由处理单元601来执行。例如,在一些实施例中,方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由rom 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序被加载到ram 603并由cpu 601执行时,可以执行上文描述的方法或过程中的一个或多个步骤或动作。
[0094]
在一些实施例中,以上所描述的方法和过程可以被实现为计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
[0095]
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波
导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0096]
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如互联网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0097]
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言,以及常规的过程式编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用互联网服务提供方来通过互联网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
[0098]
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个框中规定的功能/动作的各个方面的指令。
[0099]
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个框中规定的功能/动作。
[0100]
附图中的流程图和框图显示了根据本公开的多个实施例的设备、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这取决于所涉及的功能。也要注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0101]
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也
不限于所公开的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中技术的技术改进,或者使得本技术领域的其它普通技术人员能理解本文公开的各实施例。

技术特征:
1.一种用于文档传输的方法,包括:从文档选择待编码部分,所述文档包括结构化部分,所述结构化部分中的每个结构化部分包括标识符和与所述标识符相关联的数据;获取所述待编码部分的至少一个结构化部分;针对所述至少一个结构化部分中的相应结构化部分执行以下操作,以编码所述文档:生成所述相应结构化部分的数据的哈希值;确定哈希值存储库是否包括所述哈希值;以及基于确定所述哈希值存储库包括所述哈希值,将所述文档中的所述相应结构化部分的所述数据替换为所述哈希值;以及向接收方发送经编码的所述文档。2.根据权利要求1所述的方法,其中所述操作还包括:基于确定所述哈希值存储库不包括所述哈希值,将所述哈希值存储在所述哈希值存储库中。3.根据权利要求1所述的方法,其中从所述文档选择所述待编码部分包括:获取一个或多个预定义结构化部分的一个或多个标识符;以及基于所述一个或多个标识符,选择所述文档中除所述一个或多个预定义结构化部分之外的部分作为所述待编码部分。4.根据权利要求3所述的方法,其中所述一个或多个预定义结构化部分是基于多个文档之中的结构化部分改变的频率来确定的,所述多个文档中的文档与所述文档包括至少部分相同的结构。5.根据权利要求1所述的方法,其中所述文档具有树形层级结构,并且获取所述至少一个结构化部分包括:获取预定义编解码层级;以及将所述待编码部分的、处于所述预定义编解码层级的结构化分区作为所述至少一个结构化部分。6.根据权利要求1所述的方法,还包括响应于从所述接收方接收到通知而执行以下操作,所述通知指示已发送的经编码的所述文档中包括所述接收方无法处理的至少一个哈希值:从所述哈希值存储库删除所述至少一个哈希值;在从所述哈希值存储库删除所述至少一个哈希值后,重新编码所述文档;以及向所述接收方发送经重新编码的所述文档。7.根据权利要求1所述的方法,其中所述文档是关于客户设备状态的遥测报告。8.一种用于文档传输的方法,包括:从发送方接收被传输的文档,所述文档包括结构化部分,所述结构化部分中的每个结构化部分包括标识符和与所述标识符相关联的数据;从所述文档选择待解码部分;获取所述待解码部分的至少一个结构化部分;针对所述至少一个结构化部分中的相应结构化部分执行以下操作:确定所述相应结构化部分是否包括有效哈希值;以及基于确定所述相应结构化部分包括有效哈希值:
确定哈希文档存储库是否包括所述有效哈希值的对应条目,所述对应条目存储文档部分的数据和所述数据的哈希值,所述数据的所述哈希值与所述有效哈希值相同;以及基于确定所述哈希文档存储库包括所述对应条目,将所述文档中的所述有效哈希值替换为所述文档部分的所述数据。9.根据权利要求8所述的方法,其中所述操作还包括:基于确定所述相应结构化部分不包括有效哈希值:生成所述相应结构化部分的数据的哈希值;以及向所述哈希文档存储库添加条目,所述条目存储所生成的所述哈希值和所述相应结构化部分的所述数据。10.根据权利要求8所述的方法,其中从所述文档选择所述待解码部分包括:获取一个或多个预定义结构化部分的一个或多个标识符;以及基于所述一个或多个标识符,选择所述文档中除所述一个或多个预定义结构化部分之外的部分作为所述待解码部分。11.根据权利要求10所述的方法,其中所述一个或多个预定义结构化部分是基于多个文档之中的结构化部分改变的频率被确定的,所述多个文档中的文档与所述文档包括至少部分相同的结构。12.根据权利要求8所述的方法,其中所述文档具有树形层级结构,并且获取所述至少一个结构化部分包括:获取预定义编解码层级;以及将所述待解码部分的、处于所述预定义编解码层级的结构化分区作为所述至少一个结构化部分。13.根据权利要求8所述的方法,还包括:响应于确定所述哈希文档存储库不包括所确定的至少一个有效哈希值的对应条目,向所述发送方发送通知,所述通知指示所述文档中包括无法被处理的至少一个有效哈希值。14.根据权利要求8所述的方法,其中所述文档是关于客户设备状态的遥测报告。15.一种电子设备,包括:处理器;以及与所述处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被处理器执行时使所述设备执行动作,所述动作包括:从文档选择待编码部分,所述文档包括结构化部分,所述结构化部分中的每个结构化部分包括标识符和与所述标识符相关联的数据;获取所述待编码部分的至少一个结构化部分;针对所述至少一个结构化部分中的相应结构化部分执行以下操作,以编码所述文档:生成所述相应结构化部分的数据的哈希值;确定哈希值存储库是否包括所述哈希值;以及基于确定所述哈希值存储库包括所述哈希值,将所述文档中的所述相应结构化部分的所述数据替换为所述哈希值;以及向接收方发送经编码的所述文档。16.根据权利要求15所述的设备,其中所述操作还包括:
基于确定所述哈希值存储库不包括所述哈希值,将所述哈希值存储在所述哈希值存储库中。17.根据权利要求15所述的设备,其中从所述文档选择所述待编码部分包括:获取一个或多个预定义结构化部分的一个或多个标识符;以及基于所述一个或多个标识符,选择所述文档中除所述一个或多个预定义结构化部分之外的部分作为所述待编码部分。18.根据权利要求17所述的设备,其中所述一个或多个预定义结构化部分是基于多个文档之中的结构化部分改变的频率来确定的,所述多个文档中的文档与所述文档包括至少部分相同的结构。19.根据权利要求15所述的设备,其中所述文档具有树形层级结构,并且获取所述至少一个结构化部分包括:获取预定义编解码层级;以及将所述待编码部分的、处于所述预定义编解码层级的结构化分区作为所述至少一个结构化部分。20.根据权利要求15所述的设备,其中所述动作还包括响应于从所述接收方接收到通知而执行以下操作,所述通知指示已发送的经编码的所述文档中包括所述接收方无法处理的至少一个哈希值:从所述哈希值存储库删除所述至少一个哈希值;在从所述哈希值存储库删除所述至少一个哈希值后,重新编码所述文档;以及向所述接收方发送经重新编码的所述文档。21.根据权利要求15所述的设备,其中所述文档是关于客户设备状态的遥测报告。22.一种电子设备,包括:处理器;以及与所述处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被处理器执行时使所述设备执行动作,所述动作包括:从发送方接收被传输的文档,所述文档包括结构化部分,所述结构化部分中的每个结构化部分包括标识符和与所述标识符相关联的数据;从所述文档选择待解码部分;获取所述待解码部分的至少一个结构化部分;针对所述至少一个结构化部分中的相应结构化部分执行以下操作:确定所述相应结构化部分是否包括有效哈希值;以及基于确定所述相应结构化部分包括有效哈希值:确定哈希文档存储库是否包括所述有效哈希值的对应条目,所述对应条目存储文档部分的数据和所述数据的哈希值,所述数据的所述哈希值与所述有效哈希值相同;以及基于确定所述哈希文档存储库包括所述对应条目,将所述文档中的所述有效哈希值替换为所述文档部分的所述数据。23.根据权利要求22所述的设备,其中所述操作还包括:基于确定所述相应结构化部分不包括有效哈希值:生成所述相应结构化部分的数据的哈希值;以及
向所述哈希文档存储库添加条目,所述条目存储所生成的所述哈希值和所述相应结构化部分的所述数据。24.根据权利要求22所述的设备,其中从所述文档选择所述待解码部分包括:获取一个或多个预定义结构化部分的一个或多个标识符;以及基于所述一个或多个标识符,选择所述文档中除所述一个或多个预定义结构化部分之外的部分作为所述待解码部分。25.根据权利要求24所述的设备,其中所述一个或多个预定义结构化部分是基于多个文档之中的结构化部分改变的频率被确定的,所述多个文档中的文档与所述文档包括至少部分相同的结构。26.根据权利要求22所述的设备,其中所述文档具有树形层级结构,并且获取所述至少一个结构化部分包括:获取预定义编解码层级;以及将所述待解码部分的、处于所述预定义编解码层级的结构化分区作为所述至少一个结构化部分。27.根据权利要求22所述的设备,其中所述动作还包括:响应于确定所述哈希文档存储库不包括所确定的至少一个有效哈希值的对应条目,向所述发送方发送通知,所述通知指示所述文档中包括无法被处理的至少一个有效哈希值。28.根据权利要求23所述的设备,其中所述文档是关于客户设备状态的遥测报告。29.一种计算机程序产品,所述计算机程序产品被有形地存储在计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求1至7或8至14中任一项所述的方法。

技术总结
本公开的实施例涉及用于文档传输的方法、设备和计算机程序产品。该方法包括:从文档选择待编码部分,该文档包括结构化部分,结构化部分中的每个结构化部分包括标识符和与标识符相关联的数据;获取待编码部分的至少一个结构化部分;针对至少一个结构化部分中的相应结构化部分执行以下操作,以编码文档:生成相应结构化部分的数据的哈希值;确定哈希值存储库是否包括该哈希值;以及基于确定哈希值存储库包括该哈希值,将文档中的相应结构化部分的数据替换为该哈希值;以及向接收方发送经编码的文档。该方案可以在确保接收方获得所需信息的情况下,减少传输包括结构化数据的文档的带宽消耗,以及潜在地节约接收方存储接收到的文档的所需存储空间。的所需存储空间。的所需存储空间。


技术研发人员:薛咏冰 刘敏 刘威扬 刘原一 廖梦泽
受保护的技术使用者:戴尔产品有限公司
技术研发日:2022.03.25
技术公布日:2023/10/8
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐