IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Protobuf—简介,优缺点 -> 正文阅读

[大数据]Protobuf—简介,优缺点

protobuf 是Google旗下的一款平台无关、语言无关,可扩展的序列化结构数据格式。所以很适合用做数据存储和作为不同应用、不同语言之间相互通信的数据交换格式,只要实现相同的协议格式的统一proto文件,就可以被编译程不同语言版本,从而加入各自的工程中。这样不同语言之间可以解析其它语言通过protobuf序列化的数据。
目前protobuf官网提供了C++,C#,Dart,GO,JAVA,Kotlin,Python等语言支持。Google在2008年7月7号将其作为开源项目对外公布。

1. ProtoBuf 简介

Google Protocol Buffers (简称protobuf)是一种平台无关、语言无关、可扩展的轻便高效的序列化数据存储格式。

2. 数据交互的格式比较

2.1 数据交互XML、json、protobuf之间的比较

  1. json:一般的web项目中,最流行的还是json。因为浏览器对json数据非常友好,有很多内建的函数支持;
  2. xml:在web service中应用最为广泛,但是相比于json,它的数据更加冗余,因为需要成对的闭合标签。而json使用的键值对,不仅压缩了一定的数据空间,同时也具有可读性。
  3. protobuf:是后起之秀,是谷歌开源的一种数据格式,适合高性能,对响应速度有要求的数据传输场景。因为protobuf是二进制数据格式,需要编码和解码。数据本身不具备可读性,只能通过反序列化来得到真正可读的数据。

2.2 相比于其它数据格式,protobuf更具有优势

  1. 序列化后体积相比json和XML很小,很适合网络传输;
  2. 支持跨平台多种语言;
  3. 序列化反序列速度很快,快于json的处理速度;
  4. 消息格式升级和兼容性不错。

3. ProtoBuf的优缺点

3.1 优点

  • 更小更快更简单
  • 可以定义自己的数据结构:
    ○ 使用代码生成器生成的代码来读写这个数据结构;
    ○ 可以在无需重新部署程序的情况下,更新数据结构;
    ○ 只需要使用ProtoBuf对数据结构进行依次描述,就可以利用不同语言或从各种不同数据流中实现对结构化数据的轻松读写;
  • 向后兼容:
    ○ 不必破坏已经部署的、依靠老数据格式的程序就可以实现对数据结构进行升级。
  • 语义更清晰
    ○ 无需类似XML解析器的东西
    因为ProtoBuf编译器会将.proto文件生成对应的数据访问类,从而实现对protobuf数据的序列化与反序列化操作;
  • 简单易学
    ○ 使用protobuf无需学习复杂的文档对象模型,protobuf比较友好,并且有良好的文档和示例。

3.2 缺点

protobuf与XML相比也有不足之处:

  • 功能简单,无法用来表示复杂的概念。
  • XML已经是多种行业标准的编写工具,而Protobuf是Google内部使用的工具。在通用性上差很多。
  • 不适用于对基于文本的标记文档(如HTML)建模,因为文本并不适合用来描述数据结构;
  • XML具有某种程度的自解释性,它可以被人直接读取编辑;而protobuf是以二进制的方式存储,除非有.proto定义,否则无法解析。
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-06 11:06:45  更:2022-05-06 11:09:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:48:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码