CN107229670A - 基于Avro的通用数据序列化及反序列化方法 - Google Patents
基于Avro的通用数据序列化及反序列化方法 Download PDFInfo
- Publication number
- CN107229670A CN107229670A CN201710229253.XA CN201710229253A CN107229670A CN 107229670 A CN107229670 A CN 107229670A CN 201710229253 A CN201710229253 A CN 201710229253A CN 107229670 A CN107229670 A CN 107229670A
- Authority
- CN
- China
- Prior art keywords
- avro
- data
- doc
- formatted
- docs
- 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
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/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)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了基于Avro的通用数据序列化及反序列化方法。该方法使用统一的数据格式,从而保证不同表的数据均可用这种方式进行存储,降低不同表的数据与系统之间的耦合度;支持数据的打包存储,可以提供数据的批量传输,大大的提高了传输效率,此外,本发明使用Avro技术对数据进行校验,避免生成错误数据。
Description
技术领域
本发明属于网络数据处理技术领域,涉及基于Avro的通用数据序列化及反序列化方法。
背景技术
序列化是将数据对象状态转换为可存储或传输的格式的过程,与序列化相反的是反序列化,它将流转换为数据对象,这两个过程结合起来,可以轻松地存储和传输数据。
随着云计算、社交网络、移动互联网的快速发展,数据量以前所未有的速度增长,人们也越来越深的认识到数据传输格式的重要性。
由于对象序列化技术使用的广泛性,很多计算机语言都在语言层面,通过标准库的方式,提供对象序列化的功能的支持,Java,C#,Python等。标准库都仅仅是实现了对象的序列化功能,开发人员如果要使用这些库,必须自己去设计对象具体的外部表现形式。
现阶段,基于互联网云技术的发展,大数据越来越受到关注。结构化数据的数据量爆炸性增长,因此如何将数据快速而又稳定的传输是我们需要解决的问题。在实际过程中,面对海量的有价值结构化数据,格式的不同是令人头疼的问题,并且传输的效率很低下。目前已有的序列化方法(如专利申请201210475914.4公开的通用的对象序列化的实现方法),很难满足一些比较灵活的应用场景。并且,目前对C语言的接口过于繁琐,开发人员使用不方便。
发明内容
本发明的目的在于提供基于Avro的通用数据序列化及反序列化方法。该方法使用统一的结构保证可以适用数据库中任何的表,降低不同表的数据与系统之间的耦合度。同时,可以提供数据的批量传输,大大的提高了传输效率。
为了实现上述目的,本发明提供以下技术方案:
基于Avro的通用数据序列化方法,包括如下步骤:
1-1)基于待序列化数据定义Avro模式的doc消息格式文件。
1-2)使用步骤1-1)中定义的doc消息格式文件将每条待序列化的数据转换为与其一一对应的doc格式文件对象,然后将doc格式文件对象用docs格式文件对象进行封装。
1-3)使用Avro技术实现对步骤1-2)封装得到的docs格式文件对象的序列化。
进一步地,步骤1-1)中基于待序列化数据中的内容字段所包含的字段类型通过Json定义Avro模式的doc消息格式文件。
进一步地,步骤1-1)中定义的doc消息格式文件包含基本类型(含整型,浮点型,布尔型等)和构造类型(包含数据类型和构造类型等)。
进一步地,步骤1-1)中,所述doc消息格式文件用于存储不同的表的数据。
进一步地,所述doc消息格式文件以map形式存储不同的表的数据。
进一步地,步骤1-2)中,还包括使用Avro技术将每条待序列化的数据的doc格式文件转换为Avro的doc格式文件对象,再将每条待序列化的数据放入相应位置。
进一步地,步骤1-2)中,还包括使用Avro技术将待序列化的数据的docs格式文件转换为Avro的docs格式文件对象,再将单条或多条doc格式文件对象转换成二进制放入docs格式文件对象中的doc_set中以实现封装,其中,doc_set中为阵列数组,用于存储doc格式文件对象。
进一步地,步骤1-3)还包括对进行序列化的docs格式文件对象进行校验,当docs格式文件对象中封装的字段的值与类型不匹配时,无法实现序列化。
基于Avro对上述方法得到的序列化数据进行反序列化的方法,包括如下步骤:
2-1)使用Avro技术对序列化数据进行反序列化,得到docs格式文件对象。
2-2)将反序列化出的docs格式文件对象内的doc文件对象逐条取出,完成数据的反序列化。
进一步地,步骤2-1)中,所述序列化数据为二进制数据。
进一步地,步骤2-1)还包括将序列化数据使用步骤1-1)中定义的doc消息格式文件以Avro技术转换为doc格式文件对象。
本发明具有以下优点:
1、使用统一的数据格式。不同表的数据均可用这种方式进行存储。
2、而且支持数据的打包存储。例如将N条数据打包成一条数据,并以二进制的方式传输,极大的提高了传输效率。
3、使用Avro技术对数据进行校验,避免生成错误数据。
附图说明
图1为本发明的序列化方法以及基于该序列化方法进行网络通信的流程图。
具体实施方式
为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。
实施例
如图1所示,根据本发明的优选实施例包括:
第一步骤S1:按照常规结构体定义的方式,根据需要序列化的字段所包含的类型通过Json定义成Avro模式的doc消息格式文件。
例如数据库中某一张表字段名与字段类型如下表1所示:
表1.数据库中某一张表的字段名与字段类型列表
对于上表中的数据就可以通过Json定义成以下doc消息格式文件,
其中"protocol":"doc"为模板名,"types"中为自定义的类型,以"types"中的"record"类型为例,"int_s"存储表中int类型数据,"string_s"存储表中的string类型的数据,数据以map形式进行存储,key为字段名,value为字段的值。(int_a、string_a分别表示int类型和string类型的数组,此处不做详述。)
Docs格式文件如下:
其中,"name":"doc_schema_name"为数据库所对应的库表,例:db.table,即此次批量的数据需为同一张表,doc_set中为array数组,这里可以将doc数据格式文件放入,此处仅为一个示例,如需要其他内容可自行定义。
第二步骤S2:使用Avro技术将doc格式文件转换为Avro的doc格式文件对象,将表中数据放入第一步骤S1中的相应位置,如果需要批量发送则重复第二步骤S2。
第三步骤S3:使用Avro技术将docs格式文件转换为Avro的docs格式文件对象,将第二步骤S2中的单条或多条数据转换成二进制数据放入docs格式文件对象中的doc_set中。
第四步骤S4:使用公知的Avro技术对第三步骤S3中的docs格式文件对象进行序列化,由此可以对数据进行校验,如值与类型放入不匹配时,将无法序列化,亦可保证数据的完整性。
第五步骤S5:将序列化的二进制数据进行传输。
将序列化的二进制数据使用第一步骤中定义的Avro模式的doc消息格式文件以Avro技术转换为doc文件格式对象,此时可以将数据取出并使用。例如:可以从数据库中获取表结构,根据获取的表结构从doc文件格式对象中获取相应类型的数据,便于操作。此处使用的Avro模式的doc消息格式文件之所以与序列化方法中第一步骤S1中定义的Avro模式的doc消息格式文件保持一致,同样是为了对数据进行校验以及确保数据的完整性。
本发明提供了一个成熟的易于使用的序列化及反序列化方法。序列化及反序列化方法使用Json格式表示对象的序列化数据,可读性强,方便编辑。
本发明并不限于上文讨论的实施方式。以上对具体实施方式的描述旨在于为了描述和说明本发明涉及的技术方案。基于本发明启示的显而易见的变换或替代也应当被落为本发明的保护范围。以上的具体实施方式用来揭示本发明的最佳实施方案,以使得本领域的普通技术人员能够应用本发明的多种实施方式以及多种替代方式来达到本发明的目的。
Claims (10)
1.基于Avro的通用数据序列化方法,包括如下步骤:
1-1)基于待序列化数据定义Avro模式的doc消息格式文件;
1-2)使用步骤1-1)中定义的doc消息格式文件将每条待序列化的数据转换为与其一一对应的doc格式文件对象,然后将doc格式文件对象用docs格式文件对象进行封装;
1-3)使用Avro技术实现对步骤1-2)封装得到的docs格式文件对象的序列化。
2.如权利要求1所述的基于Avro的通用数据序列化方法,其特征在于,步骤1-1)中定义的doc消息格式文件包含基本类型和构造类型。
3.如权利要求1所述的基于Avro的通用数据序列化方法,其特征在于,步骤1-1)中,所述doc消息格式文件用于存储不同的表的数据。
4.如权利要求3所述的基于Avro的通用数据序列化方法,其特征在于,所述doc消息格式文件以map形式存储不同的表的数据。
5.如权利要求1所述的基于Avro的通用数据序列化方法,其特征在于,步骤1-2)中,还包括使用Avro技术将每条待序列化的数据的doc格式文件转换为Avro的doc格式文件对象,再将每条待序列化的数据放入相应位置。
6.如权利要求5所述的基于Avro的通用数据序列化方法,其特征在于,步骤1-2)中,还包括使用Avro技术将待序列化的数据的docs格式文件转换为Avro的格式文件对象,再将单条或多条doc格式文件对象转换成二进制放入docs格式文件对象中的doc_set中以实现封装,其中,doc_set中为阵列数组,用于存储doc格式文件对象。
7.如权利要求1所述的基于Avro的通用数据序列化方法,其特征在于,步骤1-3)还包括对进行序列化的docs格式文件对象进行校验,当docs格式文件对象中封装的字段的值与类型不匹配时,无法实现序列化。
8.基于Avro对权利要求1-7任一所述方法得到的序列化数据进行反序列化的方法,包括如下步骤:
2-1)使用Avro技术对序列化数据进行反序列化,得到docs格式文件对象;
2-2)将反序列化出的docs格式文件对象内的doc文件对象逐条取出,完成数据的反序列化。
9.如权利要求8所述的进行反序列化的方法,其特征在于,步骤2-1)中,所述序列化数据为二进制数据。
10.如权利要求8所述的进行反序列化的方法,其特征在于,步骤2-1)还包括将序列化数据使用步骤1-1)中定义的doc消息格式文件以Avro技术转换为doc格式文件对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710229253.XA CN107229670A (zh) | 2017-04-10 | 2017-04-10 | 基于Avro的通用数据序列化及反序列化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710229253.XA CN107229670A (zh) | 2017-04-10 | 2017-04-10 | 基于Avro的通用数据序列化及反序列化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107229670A true CN107229670A (zh) | 2017-10-03 |
Family
ID=59933691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710229253.XA Pending CN107229670A (zh) | 2017-04-10 | 2017-04-10 | 基于Avro的通用数据序列化及反序列化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107229670A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109257337A (zh) * | 2018-08-28 | 2019-01-22 | 科大国创软件股份有限公司 | 物联网设备协议转换方法及基于该方法的灯杆运营平台 |
CN111930568A (zh) * | 2020-08-05 | 2020-11-13 | 上海英方软件股份有限公司 | 一种基于Avro的结构化数据序列化传输方法及装置 |
CN112035831A (zh) * | 2020-08-14 | 2020-12-04 | 深信服科技股份有限公司 | 一种数据处理方法、装置、服务器及存储介质 |
CN113190528A (zh) * | 2021-04-21 | 2021-07-30 | 中国海洋大学 | 一种并行分布式大数据架构构建方法及系统 |
CN117880335A (zh) * | 2023-12-08 | 2024-04-12 | 中国经济信息社有限公司 | 数据传输方法、装置、计算设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102710768A (zh) * | 2012-05-31 | 2012-10-03 | 深圳市远行科技有限公司 | 一种基于面向服务架构的大批量数据传输系统及方法 |
CN102750268A (zh) * | 2012-06-19 | 2012-10-24 | 山东中创软件商用中间件股份有限公司 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
CN103019689A (zh) * | 2012-11-21 | 2013-04-03 | 上海富欣智能交通控制有限公司 | 通用的对象序列化的实现方法 |
CN104113390A (zh) * | 2014-06-20 | 2014-10-22 | 广州市集智信息科技有限公司 | 一种移动网络数据序列化方法 |
CN104780222A (zh) * | 2015-04-29 | 2015-07-15 | 江苏物联网研究发展中心 | 基于http和对象序列化的通用数据交换方法 |
CN106339274A (zh) * | 2015-07-14 | 2017-01-18 | 阿里巴巴集团控股有限公司 | 一种数据快照获取的方法及系统 |
CN106502802A (zh) * | 2016-10-12 | 2017-03-15 | 山东浪潮云服务信息科技有限公司 | 一种基于Avro RPC传输的分布式云端并发采集方法 |
-
2017
- 2017-04-10 CN CN201710229253.XA patent/CN107229670A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102710768A (zh) * | 2012-05-31 | 2012-10-03 | 深圳市远行科技有限公司 | 一种基于面向服务架构的大批量数据传输系统及方法 |
CN102750268A (zh) * | 2012-06-19 | 2012-10-24 | 山东中创软件商用中间件股份有限公司 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
CN103019689A (zh) * | 2012-11-21 | 2013-04-03 | 上海富欣智能交通控制有限公司 | 通用的对象序列化的实现方法 |
CN104113390A (zh) * | 2014-06-20 | 2014-10-22 | 广州市集智信息科技有限公司 | 一种移动网络数据序列化方法 |
CN104780222A (zh) * | 2015-04-29 | 2015-07-15 | 江苏物联网研究发展中心 | 基于http和对象序列化的通用数据交换方法 |
CN106339274A (zh) * | 2015-07-14 | 2017-01-18 | 阿里巴巴集团控股有限公司 | 一种数据快照获取的方法及系统 |
CN106502802A (zh) * | 2016-10-12 | 2017-03-15 | 山东浪潮云服务信息科技有限公司 | 一种基于Avro RPC传输的分布式云端并发采集方法 |
Non-Patent Citations (1)
Title |
---|
以浪为码: ""Avro-简单介绍,Java版-序列化与反序列化官方例子"", 《HTTPS://BLOG.CSDN.NET/U013054888/ARTICLE/DETAILS/64444908》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109257337A (zh) * | 2018-08-28 | 2019-01-22 | 科大国创软件股份有限公司 | 物联网设备协议转换方法及基于该方法的灯杆运营平台 |
CN109257337B (zh) * | 2018-08-28 | 2021-09-07 | 科大国创软件股份有限公司 | 物联网设备协议转换方法及基于该方法的灯杆运营平台 |
CN111930568A (zh) * | 2020-08-05 | 2020-11-13 | 上海英方软件股份有限公司 | 一种基于Avro的结构化数据序列化传输方法及装置 |
CN112035831A (zh) * | 2020-08-14 | 2020-12-04 | 深信服科技股份有限公司 | 一种数据处理方法、装置、服务器及存储介质 |
CN113190528A (zh) * | 2021-04-21 | 2021-07-30 | 中国海洋大学 | 一种并行分布式大数据架构构建方法及系统 |
CN113190528B (zh) * | 2021-04-21 | 2022-12-06 | 中国海洋大学 | 一种并行分布式大数据架构构建方法及系统 |
CN117880335A (zh) * | 2023-12-08 | 2024-04-12 | 中国经济信息社有限公司 | 数据传输方法、装置、计算设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107229670A (zh) | 基于Avro的通用数据序列化及反序列化方法 | |
US11853389B2 (en) | Methods and apparatus for sorting data | |
US8650207B2 (en) | Inductive synthesis of table-based string transformations | |
CN101620636B (zh) | 一种显示表格数据的方法和装置 | |
US9002758B2 (en) | Ranking for inductive synthesis of string transformations | |
US10073817B1 (en) | Optimized matrix multiplication using vector multiplication of interleaved matrix values | |
CN103425632B (zh) | 一种序列化的方法、装置及处理器 | |
CN102713904B (zh) | 利用可缩放的数据结构的方法和装置 | |
CN105117378B (zh) | 一种json文件转换为excel文件的方法及装置 | |
CN104360865B (zh) | 一种序列化方法、反序列化方法及相关设备 | |
US20160103706A1 (en) | Automatically Generating Execution Sequences for Workflows | |
US10325015B2 (en) | Conversion of data ranges to table objects | |
CN103019689B (zh) | 通用的对象序列化的实现方法 | |
CN104679903B (zh) | 一种数据表的操作方法及装置 | |
CN103605518A (zh) | 对象反序列化方法和装置 | |
US11281438B2 (en) | Platform for web services development and method therefor | |
CN112860970B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN105468793B (zh) | 一种仿真模型数据的自动化管理方法 | |
CN107832324A (zh) | 提供场境事实 | |
CN112559760A (zh) | 一种面向文本描述的cps资源能力知识图谱构建方法 | |
CN105550176A (zh) | 一种关系数据库与xml的基本映射方法 | |
CN104993906B (zh) | 一种消息传输的方法及系统 | |
CN105793842B (zh) | 序列化消息之间的转换方法和装置 | |
CN109086326B (zh) | 一种将接口文档转化成数据模型文件的方法及装置 | |
CN109753533A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171003 |