数据读写方法和装置的制造方法

文档序号:9371906阅读:279来源:国知局
数据读写方法和装置的制造方法
【技术领域】
[0001] 本发明涉及数据处理领域,尤其涉及一种数据读写方法和装置。
【背景技术】
[0002] 谷歌协议缓冲器(Google Protocol Buffer,简称 ProtoBuf)是 Google 公司内 部的混合语言数据标准,目前已经正在使用的有超过48162种报文格式定义和超过12183 个.proto文件。它们用于远程过程调用协议(Remote Procedure Call Protocol,RPC)系 统和持续数据存储系统。
[0003] 协议缓冲器(Protocol Buffer)是一种轻便高效的结构化数据存储格式,可以用 于结构化数据串行化,或者说序列化。它很适合做数据存储或RPC数据交换格式。可用于 通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。
[0004] Google提供的ProtoBuf包括两部分内容:编码协议和代码生成器,其中编码协议 是ProtoBuff数据的存储方式,代码生成器则提供了基于定义文件的翻译机制,用户可以 自己定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。图1是 现有技术中protobuff数据读写装置构成示意图,如图1所示,编写模块101用于定义数据 格式、编写proto文件;生成模块102用于调用代码生成器,生成工具代码;编译模块103用 于根据生成模块102生成的代码,编写编解码工具,并编译打包;应用模块104,其将编译包 部署到应用机器上;编解码模块105,其用于在应用机器上调用编解码工具读写数据,通过 调用编码工具,可以将结构化的数据转化成ProtoBuf格式的数据,通过调用解码工具,可 以将数据解码成明文(需要依赖Google提供的基本工具包)。
[0005] 应该注意,上面对技术背景的介绍只是为了方便对本发明的技术方案进行清楚、 完整的说明,并方便本领域技术人员的理解而阐述的。不能仅仅因为这些方案在本发明的
【背景技术】部分进行了阐述而认为上述技术方案为本领域技术人员所公知。

【发明内容】

[0006] 发明人在实现上述内容时发现,现有技术中存在以下问题:
[0007] 首先ProtoBuff数据可读性差,即获取明文数据需要使用代码生成器产出的代 码,定制解码器,不具有通用性。其次,格式修改复杂,编解码器依赖于proto定义,修改格 式牵一发动全身,需要重新产出代码,重新定制编解码器;并且改动成本很高,每次改动都 需要重复生成并编译代码的过程,在所有应用机器上都需要更新编解码器并重新部署服 务。
[0008] 本发明实施例提出了一种数据读写方法和装置,重新设计了通用的编解码器,可 以动态加载协议文件;编解码协议由通用编解码器实现,而不是通过代码生成器写在代码 中,因此读文件只需要获取数据的协议文件即可,不需要重新定制解码器,数据格式修改也 只需要修改定义文件,不需要重新定制编解码器,在应用机器上,同样也只需要更新定义文 件,而不必重新部署。从而解决了上述技术问题。
[0009] 根据本发明实施例的一个方面,提供了一种数据读写方法,其中,所述方法包括:
[0010] 根据定义好的数据格式生成协议文件;
[0011] 根据所述协议文件定义消息对象和节点对象;
[0012] 根据所述节点对象的类型选择对应的编解码器;
[0013] 利用选择的编解码器进行数据的读写。
[0014] 根据本发明实施例的另一个方面,其中,所述协议文件包括一个以上的消息,每一 个消息包含一个以上的数据条目,根据所述协议文件定义消息对象和节点对象,包括:
[0015] 将所述协议文件的每一个消息定义为消息对象,所述消息对象包含消息对象名称 和节点对象列表,所述消息对象名称对应所述协议文件的每一个消息的消息名称,所述节 点对象列表包含一个以上的节点对象;
[0016] 将所述协议文件的每一个消息所包含的每一个数据条目定义为对应的节点对象。
[0017] 根据本发明实施例的另一个方面,其中,所述节点对象的类型对应所述数据条目 中数据的类型,根据所述数据条目中数据的类型选择对应的编解码器。
[0018] 根据本发明实施例的另一个方面,其中,利用选择的编解码器进行数据的读写包 括:
[0019] 将待读写的数据转换为所述节点对象;
[0020] 利用选择的编解码器对所述节点对象进行读写。
[0021 ] 根据本发明实施例的一个方面,提供了一种数据读写装置,其中,所述装置包括:
[0022] 生成单元,其根据定义好的数据格式生成协议文件;
[0023] 定义单元,其根据所述生成单元成的协议文件定义消息对象和节点对象;
[0024] 选择单元,其根据所述节点对象的类型选择对应的编解码器;
[0025] 处理单元,其利用所述选择单元选择的编解码器进行数据的读写。
[0026] 根据本发明实施例的另一个方面,其中,所述协议文件包括一个以上的消息,每一 个消息包含一个以上的数据条目,所述定义单元还包括:
[0027] 第一定义模块,其将所述协议文件的每一个消息定义为消息对象,所述消息对象 包含消息对象名称和节点对象列表,所述消息对象名称对应所述协议文件的每一个消息的 消息名称,所述节点对象列表包含一个以上的节点对象;
[0028] 第二定义模块,其将所述协议文件的每一个消息所包含的每一个数据条目定义为 对应的节点对象。
[0029] 根据本发明实施例的另一个方面,其中,所述节点对象的类型对应所述数据条目 中数据的类型,所述选择单元根据所述数据条目中数据的类型选择对应的编解码器。
[0030] 根据本发明实施例的另一个方面,其中,所述处理单元包括:
[0031] 第一处理模块,其将待读写的数据转换为所述节点对象;
[0032] 第二处理模块,其利用所述选择单元选择的编解码器对所述节点对象进行读写。
[0033] 本发明实施例的有益效果在于,通过本发明实施例的数据读写方法和装置,可以 提高数据读写效率,通用性高且成本较低。
[0034] 参照后文的说明和附图,详细公开了本发明的特定实施方式,指明了本发明的原 理可以被采用的方式。应该理解,本发明的实施方式在范围上并不因而受到限制。在所附 权利要求的精神和条款的范围内,本发明的实施方式包括许多改变、修改和等同。
[0035] 针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更 多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特 征。
[0036] 应该强调,术语"包括/包含"在本文使用时指特征、整件、步骤或组件的存在,但 并不排除一个或更多个其它特征、整件、步骤或组件的存在或附加。
【附图说明】
[0037] 参照以下的附图可以更好地理解本发明的很多方面。附图中的部件不是成比例绘 制的,而只是为了示出本发明的原理。为了便于示出和描述本发明的一些部分,附图中对应 部分可能被放大或缩小。在本发明的一个附图或一种实施方式中描述的元素和特征可以与 一个或更多个其它附图或实施方式中示出的元素和特征相结合。此外,在附图中,类似的标 号表示几个附图中对应的部件,并可用于指示多于一种实施方式中使用的对应部件。
[0038] 在附图中:
[0039] 图1是现有技术中数据读写流程图;
[0040] 图2是本发明实施例1的数据读写方法流程图;
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1