这类格式的特点是 人类可读性强,但效率相对较低。
| 格式 | 核心特点 | 优点 | 缺点 | 典型应用 |
|---|
| JSON (JavaScript Object Notation) | 轻量级的键值对和数组结构,基于文本。 | 跨平台/跨语言兼容性极高;人类可读性好;易于编写和解析。 | 数据冗余(键名重复传输);解析和传输效率低(需要序列化/反序列化);不支持复杂数据类型。 | Web API 通信(RESTful API)、配置文件、简单数据存储。 |
| XML (eXtensible Markup Language) | 使用标签嵌套来定义数据结构,非常灵活。 | 可扩展性强;支持命名空间、文档校验(Schema);适合复杂文档结构。 | 过于冗长(标签多);解析复杂且慢;数据冗余度远高于 JSON。 | SOAP 协议、配置管理、文档交换。 |
| CSV (Comma-Separated Values) | 纯文本格式,以逗号或其他分隔符区分字段。 | 结构简单,可直接用电子表格软件打开;文件小,易于导入导出。 | 无类型信息;难以处理嵌套结构;分隔符问题(数据中包含逗号)。 | 大型表格数据存储、数据导入导出。 |
这类格式牺牲了部分人类可读性,以换取极高的 传输和计算效率。
| 格式 | 核心特点 | 优点 | 缺点 | 典型应用 |
|---|
| Protocol Buffers (Protobuf) | Google 开发的语言无关、平台无关的序列化机制。 | 极度紧凑(文件小);解析速度快;强制使用 Schema(结构定义),确保数据一致性;支持版本向前兼容。 | 不具备人类可读性;需要额外的编译步骤来生成代码;Schema 更改后需要重新编译。 | 微服务间通信、数据存储、gRPC 底层格式。 |
| Apache Avro | Hadoop 生态系统中的数据序列化系统,侧重于 模式演化。 | Schema 存储在数据中或与数据一同传输;支持 模式演化(读写模式不同时仍可兼容)。 | 不具备人类可读性;数据相对 Protobuf 略大。 | Kafka 消息队列、Hadoop/Hive 数据存储。 |
| 格式 | 核心特点 | 优点 | 缺点 | 典型应用 |
|---|
| Apache Arrow | 跨语言、内存内的列式数据格式标准。 | 零拷贝(Zero-Copy):数据无需序列化即可在不同系统间传输;高度优化:内存布局完美适配向量化执行和 CPU 缓存。 | 不是持久化存储格式(设计目标是内存传输);人类可读性极差。 | 高性能数据分析(Polars, DuckDB)、跨语言数据交换、Arrow Flight 协议。 |
| Apache Parquet | 列式存储的 磁盘持久化格式。 | 极高压缩率;查询效率高(可只读取需要的列);支持复杂嵌套类型。 | 不具备人类可读性;写入相对复杂。 | 数据湖存储(S3, HDFS)、大规模 OLAP 分析。 |
这类技术定义了数据如何通过网络传输,并通常依赖特定的序列化格式。
| 协议 | 核心特点 | 优点 | 缺点 | 底层数据格式 |
|---|
| REST/HTTP 1.1/2 | 基于 HTTP 协议,无状态。 | 兼容性最好,几乎所有平台都支持;易于调试 and 理解。 | 请求头冗余;性能依赖于底层的 JSON 或 XML 格式。 | JSON、XML、自定义格式 |
| gRPC | 基于 HTTP/2 协议 and Protocol Buffers。 | 高性能(HTTP/2 的多路复用、Protobuf 的高效);双向流(Streaming)支持;强类型 接口定义。 | 部署相对复杂;主要使用 Protobuf,与其他格式的兼容性差;需要客户端和服务端都生成 Stub 代码。 | Protocol Buffers |
| Apache Arrow Flight | 基于 gRPC and Arrow 格式。 | 极致高性能:利用 Arrow 的零拷贝 and gRPC 的高效传输,特别适合 大数据集传输。 | 仅限于传输 Arrow 格式的数据;生态相对较新。 | Apache Arrow |
- 易用性和可读性优先(人与系统交互):
- JSON: 适用于 REST API、配置文件,以及任何需要人类轻松阅读和修改的场景。
- 高性能和系统间通信优先(微服务):
- gRPC/Protobuf: 适用于对 速度和效率要求极高 的微服务或内部系统间通信。
- 数据分析和大数据优先(分析工作流):
- Apache Arrow: 适用于 内存内 的跨语言、跨框架(如 Python、R、Java)的数据交换,以消除序列化瓶颈。
- Apache Parquet: 适用于 磁盘存储,作为数据湖中表格数据的标准持久化格式。