概述
apache paimin的架构
image.png
如上图所示架构:
读/写: Paimon支持多种读取/写入数据和OLAP查询的方式.
- 对于读,支持消费数据
- 从历史快照(批量模式下)获取
- 从最新的偏移量(在流模式下)开始,或者
- 以一种混合的方式读取增量快照。
- 对于写,支持
- 从数据库变更日志(CDC)获取流式同步数据
- 从离线数据进行批量插入/覆盖操作。
生态:除了 Apache Flink 之外,Paimon 还支持通过诸如 Apache Hive、Apache Spark 和 Trino 等其他计算引擎进行读取操作。
内在:
- 在内部实现层面,Paimon 将列式文件存储在文件系统/对象存储中。
- 该文件的元数据保存在清单文件中,从而实现了大规模存储和跳数功能。
- 对于主键表而言,采用 LSM 树结构来支持大量的数据更新以及高性能查询。
统一存储
对于像 Apache Flink 这样的流处理引擎而言,通常会有三种类型的连接器:
- 消息队列,例如 Apache Kafka,它在该流水线的源阶段和中间阶段均有应用,以确保延迟保持在数秒以内。
- OLAP 系统,例如 ClickHouse,它以流式方式接收处理后的数据,并为用户的即席查询提供服务。
- 批处理存储(例如 Apache Hive),它支持传统批处理的各种操作,包括 INSERT OVERWRITE 操作。
Paimon 提供了表抽象功能。其使用方式与传统数据库并无不同:
- 在批处理执行模式下,它类似于一个 Hive 表,并支持批处理 SQL 的各种操作。查询它以查看最新的快照。
- 在流式执行模式下,它就像一个消息队列。查询它就像查询消息队列中的流变更日志,其中历史数据永远不会过期。