CN115989488A - 在标准化序列化数据结构中一般地存储序列化结构化数据 - Google Patents
在标准化序列化数据结构中一般地存储序列化结构化数据 Download PDFInfo
- Publication number
- CN115989488A CN115989488A CN202180053520.7A CN202180053520A CN115989488A CN 115989488 A CN115989488 A CN 115989488A CN 202180053520 A CN202180053520 A CN 202180053520A CN 115989488 A CN115989488 A CN 115989488A
- Authority
- CN
- China
- Prior art keywords
- self
- data
- serialized
- field
- describing
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2291—User-Defined Types; Storage management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种用于在标准化序列化数据结构中一般地存储序列化结构化数据的方法(500)。该方法包括获得包括一个或多个字段对(112)的结构化数据(110),并将该结构化数据编码转换为序列化自描述数据(160)。每个字段对包括相应的字段标识符(114)和与相应的字段标识符相关联的字段值(116)。序列化自描述数据包括一个或多个自描述数据部分(161),每个自描述数据部分表示一个或多个字段对中相应的一个字段对。一个或多个自描述部分的每个自描述部分包括表示相应字段标识符的第一位串(162)、和表示与相应字段标识符相关联的字段值的第二位串(164)。该方法还包括将序列化自描述数据发送到远程实体(32)。
Description
技术领域
本发明涉及在标准化序列化数据结构中一般地存储序列化结构化数据。
背景技术
结构化数据被广泛地用于在不同的软件应用程序之间提供信息。通常,在不同实体之间通信之前,必须将数据序列化为位串(series of bits)。通常,序列化的数据结构不是自描述的。也就是说,序列化的数据不包括理解或解码消息所必需的信息,相反,接收者必须访问包括信息的独立规范,以便解码消息。
发明内容
本公开的一个方面提供了一种计算机实施的方法,当在数据处理硬件上执行时,该方法使数据处理硬件执行用于在标准化序列化数据结构中一般地存储序列化结构化数据的操作。该操作包括获得包括一个或多个字段对的结构化数据,并将该结构化数据编码转换(transcoding)为序列化自描述数据。每个字段对包括相应的字段标识符和与相应的字段标识符相关联的字段值。序列化自描述数据包括一个或多个自描述数据部分,每个自描述数据部分表示一个或多个字段对中相应的一个字段对。一个或多个自描述部分的每个自描述部分包括表示相应字段标识符的第一位串、和表示与相应字段标识符相关联的字段值的第二位串。该操作还包括将序列化自描述数据发送到远程实体。
本公开的实施方式可以包括以下可选特征中的一个或多个。在一些实施方式中,操作还包括获得指定序列化非自描述数据的字段对的数据规范,接收序列化非自描述数据,以及使用数据规范将序列化非自描述数据编码转换为结构化数据。在这些实施方式中,将序列化自描述数据发送到远程实体可以使得远程实体:基于一个或多个自描述数据部分中的每一个自描述数据部分来确定路由路径,一个或多个自描述数据部分中的每一个自描述数据部分表示结构化数据的一个或多个字段对中的相应的字段对;将序列化自描述数据编码转换为序列化非自描述数据;以及,基于所确定的路由路径发送序列化非自描述数据。可选地,将序列化自描述数据发送到远程实体可以使得远程实体:基于一个或多个自描述数据部分中的每一个自描述数据部分来转换序列化自描述数据,一个或多个自描述数据部分中的每一个自描述数据部分表示结构化数据的一个或多个字段对中的相应的字段对;将转换后的序列化自描述数据编码转换为新的序列化非自描述数据;以及,将新的序列化非自描述数据发送到第二远程实体。在一些示例中,序列化非自描述数据包括协议缓冲(ProtocolBuffer)。这里,序列化自描述数据可以包括将非自描述数据的协议缓冲编码转换为另一协议缓冲。
在一些实施方式中,一个或多个字段对的每个字段对中的字段标识符包括长度定界的可变长度整数和/或一个或多个字段对的每个字段对中的字段值包括至少一个可变长度整数。在一些示例中,将结构化数据编码转换为序列化自描述数据包括,对于每个字段对,选择表示相应字段值的字段类型。字段类型可以包括以下之一:32位整数、64位整数、布尔或字符串。序列化自描述数据可以进一步包括元数据。这里,元数据可以包括校验和(checksum),以验证序列化自描述数据的完整性。
本发明的另一方面提供一种用于在标准化序列化数据结构中一般地存储序列化结构化数据的系统。该系统包括数据处理硬件和与数据处理硬件通信并存储指令的存储器硬件,该指令在在数据处理硬件上执行时使数据处理硬件执行操作。该操作包括获得包括一个或多个字段对的结构化数据,并将该结构化数据编码转换为序列化自描述数据。每个字段对包括相应的字段标识符和与相应的字段标识符相关联的字段值。序列化自描述数据包括一个或多个自描述数据部分,每个自描述数据部分表示一个或多个字段对中相应的一个字段对。一个或多个自描述部分的每个自描述部分包括表示相应字段标识符的第一位串、和表示与相应字段标识符相关联的字段值的第二位串。该操作还包括将序列化自描述数据发送到远程实体。
本公开的该方面可以包括以下可选特征中的一个或多个。在一些实施方式中,操作还包括获得指定序列化非自描述数据的字段对的数据规范,接收序列化非自描述数据,以及使用数据规范将序列化非自描述数据编码转换为结构化数据。在这些实施方式中,将序列化自描述数据发送到远程实体可以使得远程实体:基于一个或多个自描述数据部分中的每一个自描述数据部分来确定路由路径,一个或多个自描述数据部分中的每一个自描述数据部分表示结构化数据的一个或多个字段对中的相应的字段对;将序列化自描述数据编码转换为序列化非自描述数据;以及基于所确定的路由路径发送序列化非自描述数据。可选地,将序列化自描述数据发送到远程实体可以使得远程实体:基于一个或多个自描述数据部分中的每一个自描述数据部分来转换序列化自描述数据,一个或多个自描述数据部分中的每一个自描述数据部分表示结构化数据的一个或多个字段对中的相应的字段对;将转换后的序列化自描述数据编码转换为新的序列化非自描述数据;将新的序列化非自描述数据发送到第二远程实体。在一些示例中,序列化非自描述数据包括协议缓冲(ProtocolBuffer)。这里,序列化自描述数据可以包括将非自描述数据的协议缓冲编码转换为另一协议缓冲。
在一些实施方式中,一个或多个字段对的每个字段对中的字段标识符包括长度定界的可变长度整数和/或一个或多个字段对的每个字段对中的字段值包括至少一个可变长度整数。在一些示例中,将结构化数据编码转换为序列化自描述数据包括,对于每个字段对,选择表示相应字段值的字段类型。字段类型可以包括以下之一:32位整数、64位整数、布尔或字符串。序列化自描述数据可以进一步包括元数据。这里,元数据可以包括校验和(checksum),以验证序列化自描述数据的完整性。
本公开的一个或多个实施方式的细节在附图和以下描述中阐述。通过说明书、和附图、以及权利要求书,其他方面、特征和优点将变得显而易见。
附图说明
图1是用于标准化序列化数据结构的示例系统的示意图。
图2是接收非自描述序列化数据和外部规范的示例系统的示意图。
图3是路由序列化自描述数据的远程实体的示意图。
图4是用于转换协议缓冲的框图的示意图。
图5是用于在标准化序列化数据结构中一般地存储序列化结构化数据的方法的操作的示例性布置的流程图。
图6是可用于实现本文描述的系统和方法的示例计算设备的示意图。
在各个附图中,相同的附图符号表示相同的元件。
具体实施方式
在日益计算机化和网络化的世界中,结构化数据经常用于在系统和应用之间传递信息。将消息传输到其它系统(例如,经由网络)通常需要序列化。一旦被序列化,数据可以是自描述的或非自描述的。具有自描述数据的消息包括描述消息的格式和含义所必需的所有信息(即,数据和元数据)。例如,自描述数据包括,例如,字段标识符和字段值的对。相反,具有非自描述数据的消息缺少确定消息的格式和含义所必需的信息。例如,如果消息包括字段标识符“Employee ID”和字段值“101”,则非自描述数据可能仅包括值“101”,而不包括字段标识符“Employee ID”所提供的上下文。由于,例如,对降低的带宽要求而经常使用非自描述数据。然而,自描述数据对于减少系统之间的耦合或促进独立的演化可能是重要的。
例如,协议缓冲是用于序列化结构化数据的常见方法。因为协议缓冲是语言中性的和平台中性的,所以它们对于通过线路在不同应用程序之间传送信息或数据存储非常有用。协议缓冲有效地编码结构化数据的值,但不编码相关的字段标识符。因此,协议缓冲产生非自描述序列化数据。也就是说,没有办法在没有外部规范的情况下告诉字段的标识符、含义或全部数据类型。然而,在某些情况下,发送自描述的消息是有益的。例如,可以检查自描述消息以基于内容确定消息的路由目的地。虽然协议缓冲可以被序列化以生成例如字符串以便变得自描述,但是该技术不是类型安全的并且是脆弱的。
本文中的实施方式针对在标准化序列化数据结构(例如,协议缓冲)中一般地存储序列化结构化数据的系统。该系统获得包括一个或多个字段对的结构化数据。每个字段对包括相应的字段标识符和与字段标识符相关联的字段值。系统将结构化数据编码转换为包括一个或多个自描述部分的序列化自描述数据,每个自描述部分包括表示相应字段标识符的第一位串和表示与相应字段标识符相关联的字段值的第二位串。序列化自描述数据被发送到远程实体。
参考图1,在一些实施方式中,示例系统100包括处理系统10。处理系统10可以是具有固定或可扩展/弹性计算资源12(例如,数据处理硬件)和/或存储资源14(例如,存储硬件)的单个计算机、多个计算机或分布式系统(例如,云环境)。处理系统10执行获得结构化数据110的数据结构编码转换器150。数据结构编码转换器150,例如,从另一个处理系统(经由有线或无线通信),经由存储在处理系统10的存储器硬件14上的程序例程的执行,和/或经由用户输入(例如,键盘和鼠标、触摸屏等)从用户接收结构化数据110到处理系统10。
软件应用(即,软件资源)可以指使计算设备执行任务的计算机软件。在一些示例中,可以将软件应用称为“应用”、“应用程序”、或者“程序”。示例应用包括:但不限于,系统诊断应用、系统管理应用、系统维护应用、文字处理应用、电子表格应用、消息应用、媒体流应用、社交网络应用、和游戏应用。
结构化数据110包括一个或多个字段对112,112a-n。每个字段对包括字段标识符114和相关联的字段值116。字段标识符114标识字段对112,而字段值116量化字段对112。数据结构编码转换器150将结构化数据110编码转换为序列化自描述数据160。在一些示例中,数据结构编码转换器150选择表示相应字段值116的字段类型。例如,“真”字段值116可以表示为布尔字段类型。字段类型包括例如32位整数、64位整数、布尔、字符串、整数阵列等。
对于每个字段对112,序列化自描述数据160包括相应的自描述数据部分161,161a-n。每个自描述数据部分161包括表示相应字段对112的字段标识符114的第一位串162,162a-n以及表示相关联字段标识符114的字段值116的第二位串164,164a-n。因为字段标识符114描述字段对112,所以序列化数据160是自描述的,并且不需要外部规范来理解字段值。
处理系统10经由例如网络20将序列化自描述数据160发送到远程实体30。远程实体30可以解码和处理序列化自描述数据160,而不需要提取外部规范(例如,从处理系统10)。
现在参考图2,在一些示例中,处理系统10从远程实体(例如,经由网络连接到处理系统10的另一计算机或服务器)接收非自描述序列化数据210。因为数据210是非自描述的,所以处理系统10获得指定序列化非自描述数据210的字段对112的数据规范220。例如,数据规范220可以指定与非自描述序列化数据210的字段值116相关联的位置和字段标识符114。处理系统10可以从另一个远程实体(例如,发送非自描述序列化数据210的远程实体)检索数据规范220。处理系统10可以从用户(例如,经由用户输入)获得数据规范220。理想地,处理系统10在接收非自描述序列化数据210之前获得数据规范220,并使用数据规范220对所有接收到的或获得的与数据规范220相关联的消息进行解码。处理系统10可基于非自描述序列化数据210本身内的标识信息(例如,元数据)和/或基于发送者来建立非自描述序列化数据210与数据规范220之间的关联。
处理系统可以使用数据规范220将非自描述序列化数据210编码转换成图1所示的序列化自描述数据160。处理系统10可以将自描述序列化数据160发送到远程实体30。
在一些示例中,处理系统10包括到序列化自描述数据160的附加元数据230。元数据可以帮助远程实体30(或任何其他接收器)转换和/或验证序列化自描述数据160。例如,元数据230包括校验和、循环冗余校验(CRC)、散列、签名等。远程实体30可以使用元数据230来帮助将序列化自描述数据160转换成另一种形式。附加地或替代地,远程实体30使用元数据230来验证自描述数据160(例如,验证数据没有被改变或破坏)。如果检测到错误,则远程实体30可以通知处理系统10(例如,请求重传)。
现在参考图3,在一些实施方式中,处理系统10将所获得的数据110(例如,从用户输入)或所接收的数据210(例如,从另一个联网的计算设备)编码转换为序列化自描述数据160,并将序列化自描述数据160发送到远程实体30。在该示例中,远程实体30可以是路由器或中间盒或被配置为将接收到的消息路由到不同目的地的其它实体。这里,远程实体30基于字段对112确定数据110,210的路由路径310。即,远程实体30可以检查序列化自描述数据160的内容(即,字段标识符114和字段对112的字段值116)以确定数据110,210的目的地。例如,当字段标识符114和/或字段对112的字段值116满足特定标准(例如,包括特定字段对112,包括特定字段值116,一个或多个字段值116满足一个或多个阈值等)时,远程实体30可以将数据110,210路由到第二远程实体32a。当字段标识符114和/或字段对112的字段值116未能满足阈值时,远程实体30可以将数据110,210路由到不同的第二实体32b。附加地或替代地,远程实体30可以利用接收到的消息来执行其它任务(例如,过滤,检查等)。
在一些示例中,远程实体30在基于所确定的路由路径310将消息传输到第二远程实体32a-b之前将序列化自描述数据160编码转换回序列化非自描述数据210。例如,第二远程实体32a-b可以执行期望或要求序列化非自描述数据210的遗留应用程序(例如,发送不包括字段标识符114的数据)。以这种方式,系统100允许检查,路由,过滤和其它通常是非自描述的消息服务(例如,协议缓冲)。在其它示例中,远程实体30将自描述序列化数据160传输到第二远程实体32a-b而不将数据编码转换回非自描述格式(即,传输包括字段标识符114和字段对112的字段值116两者的数据)。
在其它示例中,远程实体30在将数据传输到第二远程实体32a-b之前转换序列化自描述数据160。远程实体还可以将转换后的序列化自描述数据160编码转换为新的序列化非自描述数据320。远程实体30可以将新的序列化非自描述数据320发送到第二远程实体32a-b。也就是说,替代地或除了将序列化自描述数据160编码转换为序列化非自描述数据210之外,远程实体30可以首先转换序列化自描述数据160。例如,远程实体30可以改变字段对112的一个或多个字段标识符114或字段值116,和/或远程实体30可以添加或减去字段对112。在转换之后,远程实体30可以发送转换的数据160,或者可替换地将转换的数据160编码转换成新的序列化非自描述数据320。
现在参考图4,框图400说明了在一些实施方式中,系统100如何转换特定的序列化数据结构,例如处理系统10从另一个远程实体或应用接收的协议缓冲(即,序列化非自描述数据210)。在一些示例中,在410,系统接收协议缓冲。协议缓冲不是自描述的。在420,系统使用与协议缓冲相关联的数据规范将协议缓冲转换为自描述的中间表示。中间表示可以是被配置为定义其它协议缓冲的另一个协议缓冲(即,被配置为封装另一个协议缓冲的协议缓冲)。也就是说,系统可以将协议缓冲编码转换为另一个协议缓冲,该另一个协议缓冲被配置为一般地定义其它协议缓冲。
在430,系统或远程实体可以将中间表示转换为另一中间表示。在一些示例中,系统利用配置而不是代码(即,数据驱动而不是以特定语言编码)来执行转换。转换后的中间表示可以通过中介(例如,路由服务)并且在转接期间被最优地检查或过滤。在440处,远程实体可在传输到协议缓冲的最终目的地之前将经转换的中间表示转换回二进制协议缓冲(即,非自描述协议缓冲)。当接收协议缓冲的系统响应时,可以颠倒这些步骤以向任何顶层服务通知任何底层操作的结果。
因此,系统100可以表示协议缓冲内的协议缓冲。这允许系统经由通用接口创建和传送ad-hoc协议缓冲以及操纵和/或转换协议缓冲。该系统还允许在飞行期间(例如,在从源行进到目的地时)操纵和/或转换协议缓冲。
图5是用于在标准化序列化数据结构中一般地存储序列化结构化数据的方法500的操作的示例性布置的流程图。在操作502,方法500包括在数据处理硬件12获得结构化数据110。结构化数据110包括一个或多个字段对112。每个字段对112包括相应的字段标识符114和与相应的字段标识符114相关联的字段值116。在一些示例中,每个字段标识符114包括长度定界的可变长度整数。每个字段值116可以包括至少一个可变长度整数。可变长度整数允许系统在序列化数据110,210时有效地编码字段标识符114和/或字段值116。
在步骤504,方法500包括由数据处理硬件12将结构化数据110编码转换成序列化自描述数据160。序列化自描述数据160包括一个或多个自描述数据部分161,每个自描述数据部分表示一个或多个字段对112中相应的一个字段对。一个或多个自描述部分161的每个自描述部分161包括表示相应字段标识符114的第一位串162和表示与相应字段标识符114相关联的字段值116的第二位串164。在步骤506,方法500包括由数据处理硬件12将序列化自描述数据160发送到远程实体30。
图6是可用于实现本文档描述的系统和方法的示例计算设备600的示意图。计算设备600旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片式服务器、大型计算机、和其它合适的计算机。本文所示的部件、它们的连接和关系、以及它们的功能仅仅旨在作为示例,并且不旨在限制本文档中描述的和/或者要求保护的本发明的实施。
计算设备600包括:处理器610(例如,数据处理硬件)、存储器620、存储设备630、连接至存储器620和高速扩展端口650的高速接口/控制器640、和连接至低速总线670和存储设备630的低速接口/控制器660。通过使用不同的总线将每个部件610、620、630、640、650、和660互相连接,并且可以将上述每个部件安装在公共主板上、或者根据需要以其它的方式安装上述每个部件。处理器610可以对在计算设备600内执行的指令进行处理,指令包括存储在存储器620中或者存储设备630上以在外部输入/输出设备上显示图形用户界面(GUI)的图形信息的指令,外部输入/输出设备诸如为耦合至高速接口640的显示器680。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多种存储器一起使用。同样,可以连接多个计算设备600,每个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。
存储器620将信息非暂时性地存储在计算设备600内。存储器620可以是计算机可读介质、(多个)易失性存储器单元、或者(多个)非易失性存储器单元。非易失性存储器620可以是用于在暂时或者持久基础上存储供计算设备600使用的程序(例如,指令序列)或者数据(程序状态信息)的物理设备。非易失性存储器的示例包括,但不限于:闪存和只读存储器(ROM)/可编程只读存储器(PROM)/可擦除编程只读存储器(EPROM)/电可擦除编程只读存储器(EEPROM)(例如,通常用于诸如为引导程序的固件)。易失性存储器的示例包括:但不限于,随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、相变存储器(PCM)、以及光盘或者磁带。
存储设备630能够为计算设备600提供海量存储。在一些实施方式中,存储设备630是计算机可读介质。在各种不同的实施方式中,存储设备630可以是软盘设备、硬盘设备、光盘设备、或者磁带设备、闪存或者其它相似的固态存储器设备、或者设备阵列,包括:在存储区域网络或者其它配置中的设备。在附加实施方式中,计算机程序产品有形地体现为信息载体。计算机程序产品包含指令,该指令在被执行时执行一种或者多种方法,诸如,上文描述的方法。信息载体是计算机可读介质或者机器可读介质,诸如,存储器620、存储设备630、或者在处理器610上的存储器。
高速控制器640管理计算设备600的带宽密集型操作,而低速控制器660管理较低带宽的密集型操作。这种功能分配仅仅是示例性的。在一些实施方式中,高速控制器640耦合至存储器620、显示器680(例如,通过图形处理器或者加速器)耦合至高速扩展端口650,该高速扩展端口1150可以接受各种扩展卡(未示出)。在一些实施方式中,低速控制器660耦合至存储设备630和低速扩展端口690。低速扩展端口690可以包括各种通信端口(例如,USB、蓝牙、以太网,和无线以太网),可以,例如通过网络适配器,耦合至一个或者多个输入/输出设备,例如,键盘、指向设备、扫描器、或者诸如交换机或者路由器的网络设备。
如图所示,可以利用多种形式来实施计算设备600。例如,可以将它实施为标准服务器600a、或者多次实施在一组这种服务器600a中、或者实施为膝上型计算机600b、或者实施为机架式服务器系统600c的一部分。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统和/或光学电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实施方式。这些各种实施方式可以包括实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用的,可以从存储系统、至少一个输入设备、和至少一个输出设备接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入设备、和该至少一个输出设备。
这些计算机程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、非暂时性计算机可读介质、设备、和/或设备(例如,磁盘、光盘、存储器、可编程逻辑设备(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
可以通过一个或者多个可编程处理器来执行本说明书中所描述的过程和逻辑流程,该一个或者多个可编程处理器执行一个或者多个计算机程序以通过操作输入数据并且生成输出来执行功能。也可以通过诸如FPGA(现场可编程门阵列)或者ASIC(专用集成电路)的专用逻辑电路来执行过程和逻辑流程。适合执行计算机程序的处理器包括:例如,通用微处理器、专用微处理器、以及任何种类的数字计算机的任何一个或者多个处理器。一般而言,处理器将接收来自只读存储器或者随机存取存储器或者两者的指令和数据。计算机的必要元件是:用于执行指令的处理器、和用于存储指令和数据的一个或者多个存储器设备。一般而言,计算机还将包括用于存储数据的一个或者多个海量存储设备,或者计算机可以操作地耦合以接收来自该一个或者多个海量存储设备的数据或者将数据传输至该一个或者多个海量存储设备或者进行两者,该海量存储设备例如为磁盘、磁光盘、或者光盘。然而,计算机不必具有这种设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,包括,例如,半导体存储设备(例如EPROM,EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动磁盘)、磁光盘、以及CD ROM和DVD-ROM磁盘。处理器和存储器可以由专用逻辑电路系统补充或者可以并入该专用逻辑电路系统中。
为了提供与用户的交互,可以在计算机上实施本公开的一个或者多个方面,该计算机具有:用于向用户显示信息的显示设备,例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器、或者触摸屏、以及可选地包括键盘和指向设备(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向设备来将输入提供给计算机。其它种类的设备可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈,例如,视觉反馈、听觉反馈或者触觉反馈;并且可以用包括声输入、语音输入或者触觉输入的任何形式来接收来自用户的输入。另外,计算机可以通过将文档发送到用户所使用的设备并且接收来自该设备的文档,来与用于交互,例如,通过响应于从网络浏览器接收的请求来将网页发送至在用户的客户端设备上的网络浏览器。
已经描述了多个实施方式。然而,可理解的是,在不脱离本公开的精神和范围的情况下,可以进行各种修改。因此,其他实施方式在所附权利要求的范围内。
Claims (24)
1.一种计算机实施的方法(500),其特征在于,当在数据处理硬件(12)上执行时,使所述数据处理硬件(12)执行操作,所述操作包括:
获得包括一个或多个字段对(112)的结构化数据(110),每个所述字段对(112)包括相应的字段标识符(114)和与所述相应的字段标识符(114)关联的字段值(116);
将所述结构化数据(110)编码转换成序列化自描述数据(160),所述序列化自描述数据(160)包括一个或多个自描述数据部分(161),每个所述自描述数据部分(161)表示所述一个或多个字段对(112)中相应的一个字段对,所述一个或多个自描述部分(161)的每个自描述部分(161)包括:
表示所述相应的字段标识符(114)的第一位串(162);和
表示与所述相应的字段标识符(114)相关联的字段值(116)的第二位串(164);以及
将所述序列化自描述数据(160)发送到远程实体(30)。
2.根据权利要求1所述的方法(500),其特征在于,所述操作还包括:
获取指定序列化非自描述数据(210)的字段对(112)的数据规范(220);
接收所述序列化非自描述数据(210);以及
使用所述数据规范(220),将所述序列化非自描述数据(210)编码转换为所述结构化数据(110)。
3.根据权利要求2所述的方法(500),其特征在于,向所述远程实体(30)发送所述序列化自描述数据(160),使得所述远程实体(30):
基于所述一个或多个自描述数据部分(161)中的每一个自描述数据部分,确定路由路径(310),所述一个或多个自描述数据部分(161)中的每一个自描述数据部分表示所述结构化数据(110)的所述一个或多个字段对(112)中的相应的字段对;
将所述序列化自描述数据(160)编码转换为所述序列化非自描述数据(210);以及
基于所确定的所述路由路径(310)发送所述序列化非自描述数据(210)。
4.根据权利要求2或3所述的方法(500),其特征在于,向所述远程实体(30)发送所述序列化自描述数据(160),使得所述远程实体(30):
基于所述一个或多个自描述数据部分(161)中的每一个自描述数据部分,转换所述序列化自描述数据(160),所述一个或多个自描述数据部分(161)中的每一个自描述数据部分表示所述结构化数据(110)的所述一个或多个字段对(112)中的相应的字段对;
将转换后的所述序列化自描述数据(160)编码转换为新的序列化非自描述数据(210);以及
将所述新的序列化非自描述数据(210)发送到第二远程实体(30)。
5.根据权利要求2-4中任一项所述的方法(500),其特征在于,所述序列化非自描述数据(210)包括协议缓冲。
6.根据权利要求5所述的方法(500),其特征在于,所述序列化自描述数据(160)包括将所述非自描述数据的所述协议缓冲编码转换成另一协议缓冲。
7.根据权利要求1-6中任一项所述的方法(500),其特征在于,所述一个或多个字段对(112)的每个字段对(112)中的所述字段标识符(114)包括长度界定的可变长度整数。
8.根据权利要求1-7中任一项所述的方法(500),其特征在于,所述一个或多个字段对(112)的每个字段对(112)中的所述字段值(116)包括至少一个可变长度整数。
9.根据权利要求1-8中任一项所述的方法(500),其特征在于,将所述结构化数据(110)编码转换为序列化自描述数据(160)包括,对于每个所述字段对(112),选择表示所述相应的字段值(116)的字段类型。
10.根据权利要求1-9中任一项所述的方法(500),其特征在于,所述字段类型包括以下之一:32位整数、64位整数、布尔或字符串。
11.根据权利要求1-10中任一项所述的方法(500),其特征在于,所述序列化自描述数据(160)还包括元数据(230)。
12.根据权利要求11所述的方法(500),其特征在于,所述元数据(230)包括验证所述序列化自描述数据(160)的完整性的校验和。
13.一种系统(100),其特征在于,包括:
数据处理硬件(12);和
与所述数据处理硬件(12)通信的存储硬件(14),所述存储硬件(14)存储指令,所述指令在所述数据处理硬件(12)上执行时使所述数据处理硬件(12)执行以下操作:
获得包括一个或多个字段对(112)的结构化数据(110),每个所述字段对(112)包括相应的字段标识符(114)和与相应的字段标识符(114)相关联的字段值(116);
将所述结构化数据(110)编码转换成序列化自描述数据(160),所述序列化自描述数据(160)包括一个或多个自描述数据部分(161),每个所述自描述数据部分(161)表示所述一个或多个字段对(112)中相应的一个字段对,所述一个或多个自描述部分(161)的每个自描述部分(161)包括:
表示所述相应的字段标识符(114)的第一位串(162);和
表示与所述相应的字段标识符(114)相关联的字段值(116)的第二位串(164);以及
将所述序列化自描述数据(160)发送到远程实体(30)。
14.根据权利要求13所述的系统(100),其特征在于,所述操作还包括:
获取指定序列化非自描述数据(210)的字段对(112)的数据规范(220);
接收所述序列化非自描述数据(210);以及
使用所述数据规范(220)将所述序列化非自描述数据(210)编码转换为所述结构化数据(110)。
15.根据权利要求14所述的系统(100),其特征在于,向所述远程实体(30)发送所述序列化自描述数据(160)使得所述远程实体(30):
基于所述一个或多个自描述数据部分(161)中的每一个自描述数据部分来确定路由路径(310),所述一个或多个自描述数据部分(161)中的每一个自描述数据部分表示所述结构化数据(110)的所述一个或多个字段对(112)中的相应的字段对;
将所述序列化自描述数据(160)编码转换为所述序列化非自描述数据(210);以及
基于所确定的所述路由路径(310)发送所述序列化非自描述数据(210)。
16.根据权利要求14或15所述的系统(100),其特征在于,向所述远程实体(30)发送所述序列化自描述数据(160)使得所述远程实体(30):
基于所述一个或多个自描述数据部分(161)中的每一个自描述数据部分来转换所述序列化自描述数据(160),所述一个或多个自描述数据部分(161)中的每一个自描述数据部分表示所述结构化数据(110)的所述一个或多个字段对(112)中的相应的字段对;
将转换后的所述序列化自描述数据(160)编码转换为新的序列化非自描述数据(210);以及
将所述新的序列化非自描述数据(210)发送到第二远程实体(30)。
17.根据权利要求14-16中任一项所述的系统(100),其特征在于,所述序列化非自描述数据(210)包括协议缓冲。
18.根据权利要求17所述的系统(100),其特征在于,所述序列化自描述数据(160)包括将所述非自描述数据的所述协议缓冲编码转换成另一协议缓冲。
19.根据权利要求13-18中任一项所述的系统(100),其特征在于,所述一个或多个字段对(112)的每个字段对(112)中的所述字段标识符(114)包括长度界定的可变长度整数。
20.根据权利要求13-19中任一项所述的系统(100),其特征在于,所述一个或多个字段对(112)的每个字段对(112)中的所述字段值(116)包括至少一个可变长度整数。
21.根据权利要求13-20中任一项所述的系统(100),其特征在于,将所述结构化数据(110)编码转换为序列化自描述数据(160)包括,对于每个所述字段对(112),选择表示所述相应的字段值(116)的字段类型。
22.根据权利要求13-21中任一项所述的系统(100),其特征在于,所述字段类型包括以下之一:32位整数、64位整数、布尔或字符串。
23.根据权利要求13-22中任一项所述的系统(100),其特征在于,所述序列化自描述数据(160)还包括元数据(230)。
24.根据权利要求23所述的系统(100),其特征在于,所述元数据(230)包括验证所述序列化自描述数据(160)的完整性的校验和。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063072927P | 2020-08-31 | 2020-08-31 | |
US63/072,927 | 2020-08-31 | ||
PCT/US2021/032101 WO2022046207A1 (en) | 2020-08-31 | 2021-05-12 | Storing serialized structured data generically in a standardized serialized data structure |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115989488A true CN115989488A (zh) | 2023-04-18 |
Family
ID=76197666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180053520.7A Pending CN115989488A (zh) | 2020-08-31 | 2021-05-12 | 在标准化序列化数据结构中一般地存储序列化结构化数据 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11650963B2 (zh) |
EP (1) | EP4204982A1 (zh) |
CN (1) | CN115989488A (zh) |
WO (1) | WO2022046207A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120016901A1 (en) * | 2010-05-18 | 2012-01-19 | Google Inc. | Data Storage and Processing Service |
CA2759516C (en) * | 2011-11-24 | 2019-12-31 | Ibm Canada Limited - Ibm Canada Limitee | Serialization of pre-initialized objects |
US11023506B2 (en) * | 2018-10-31 | 2021-06-01 | Laserlike, Inc. | Query pattern matching |
US11783024B2 (en) * | 2019-01-31 | 2023-10-10 | Salesforce, Inc. | Systems, methods, and apparatuses for protecting consumer data privacy using solid, blockchain and IPFS integration |
-
2021
- 2021-05-12 CN CN202180053520.7A patent/CN115989488A/zh active Pending
- 2021-05-12 WO PCT/US2021/032101 patent/WO2022046207A1/en unknown
- 2021-05-12 US US17/319,012 patent/US11650963B2/en active Active
- 2021-05-12 EP EP21729191.3A patent/EP4204982A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022046207A1 (en) | 2022-03-03 |
US11650963B2 (en) | 2023-05-16 |
EP4204982A1 (en) | 2023-07-05 |
US20220067001A1 (en) | 2022-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20100115041A1 (en) | Creating a message readable by a plurality of heterogeneous recipients | |
US8344916B2 (en) | System and method for simplifying transmission in parallel computing system | |
KR101027299B1 (ko) | 웹 서비스 통신의 히스토리 구동 최적화를 위한 시스템 및방법 | |
US8120515B2 (en) | Knowledge based encoding of data with multiplexing to facilitate compression | |
US11917038B2 (en) | Methods and apparatus to compress packets in a computing environment | |
CN109039876B (zh) | 邮件处理方法和装置 | |
US20170242850A1 (en) | Performing a code conversion in a smaller target encoding space | |
CN113992755A (zh) | 基于微服务网关的请求处理方法、系统、设备及存储介质 | |
US9449306B2 (en) | User identifier management | |
US11470035B2 (en) | Systems and methods for suppressing repetitive notifications about messages in messaging groups | |
JP2009123202A (ja) | データを処理するためのプロセッサ‐サーバ・ハイブリッド・システムおよび方法 | |
CN115989488A (zh) | 在标准化序列化数据结构中一般地存储序列化结构化数据 | |
EP1865434A1 (en) | Multiple-level data processing system and method thereof | |
US8112666B2 (en) | Message producer with message type validation | |
JP2011024179A (ja) | Httpパケットにおけるハングルまたは日本語のデコード方法と装置、及びこれを用いたハングルまたは日本語ウェブコンテンツの分析方法 | |
Ying et al. | A performance Evaluation of Using SOAP with Attachments for e-Science | |
JP2006216024A (ja) | 交換フォーマットメッセージの効率的な変換 | |
WO2014029081A1 (zh) | 压缩方法及设备 | |
US20160157129A1 (en) | Compressing and transmitting structured information | |
WO2015100652A1 (zh) | 序列化消息之间的转换方法和装置 | |
WO2021036189A1 (zh) | Rdma数据发送及接收方法、电子设备及可读存储介质 | |
CN108282454A (zh) | 用于使用内联模式匹配加速安全检查的装置、系统和方法 | |
US9330056B2 (en) | Communication protocol placement into switch memory | |
US20080005315A1 (en) | Apparatus, system and method for stream-based data filtering | |
US11330032B2 (en) | Method and system for content proxying between formats |
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 |