Protobuf学习(1)

来源:互联网 发布:宝贝标题优化技巧 编辑:程序博客网 时间:2024/06/05 17:36

今天开始学习 Protobuf。在一篇博客里面说, Protobuf是结构化数据存储,什么是结构化数据存储呢?既然有结构化数据存储,想必也有非结构化数据存储把。

在经过一番百度后,得到如下结论)。


结构化数据存储 & 非结构化数据存储

结构化数据(二维表(关系型))

定义:即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据。
举例:比如企业ERP、财务系统;医疗HIS数据库;教育一卡通;政府行政审批;其他核心数据库等。这些应用需要哪些存储方案呢?基本包括高速存储应用需求、数据备份需求、数据共享需求以及数据容灾需求。


非结构化数据

定义:不方便用数据库二维逻辑表来表现的数据即称为非结构化数据。
举例:包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等等。

半结构化数据

定义:介于完全结构化数据(如关系型数据库、面向对象数据库中的数据)和完全无结构的数据(如声音、图像文件等)之间的数据,HTML文档就属于半结构化数据。它一般是自描述的,数据的结构和内容混在一起,没有明显的区分。


哎呀,我参考的这2篇文章写的太好了。我总结下学习 Protobuf的几个步骤。后面直接用关键字描述。

1. 什么是Protobuf?

结构化数据存储格式; 结构化数据串行化;数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。


2. Protobuf用什么作用?为什么要用Protobuf?

Google开源项目;以特定格式存储数据;人气旺;


3. Protobuf优缺点?

性能好/效率高;

时间和空间开销均优于XML存储格式;


可读性不如XML


4. 编译protobuf

 在参考文章3中,使用vs2010编译protobuf很简单,只要Build Solution就可以,千万不要Rebuild Soludtion,这样会出现错误"error MSB6006: "cmd.exe" exited with code 9009."..这也无关紧要。

只有libprotobuf; libprotobuf-lite; libprotoc; lite-test; protoc; test_plugin; tests这几个库/ exe是我们需要的。










参考文章:

1. Google Protocol Buffer 的使用和原理
http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/


2. 开源点评:Protocol Buffers介绍
http://blog.csdn.net/program_think/article/details/4229773


3.  Windows环境下google protobuf入门

http://www.tuicool.com/articles/AnMRJf7



0 0
原创粉丝点击