discuz网站编码,曲靖建设局网站,开发软件的app,免费网站转appIceberg
Iceberg 采用全量预加载数据的方式将维度表数据全部加载到内存中进行关联#xff0c;虽然可以避免频繁访问外部数据库#xff0c;但对计算节点的内存消耗很高#xff0c;不能适用于数量很大的维度表。除此之外#xff0c;当 Iceberg 维表数据更新后#xff0c;可…Iceberg
Iceberg 采用全量预加载数据的方式将维度表数据全部加载到内存中进行关联虽然可以避免频繁访问外部数据库但对计算节点的内存消耗很高不能适用于数量很大的维度表。除此之外当 Iceberg 维表数据更新后可能会存在一定的延迟导致 Lookup Join 获取的数据不是最新的。这是因为 Iceberg 的数据更新操作如插入、删除、修改涉及到数据的重写和元数据的更新等复杂过程。最后Iceberg 不适用于数据频繁写入的场景频繁的写入 Iceberg 会产生大量的小文件。这会增加 Lookup Join 时文件系统的开销因为需要打开和读取更多的文件。可以通过定期进行文件合并操作Iceberg 支持文件合并策略来减少小文件的数量提高文件系统的读取效率进而提升 Lookup Join 性能。
Paimon
Apache Paimon 是一个湖格式结合 Flink 及 Spark 构建流批处理的实时湖仓一体架构。Paimon 创新的结合湖格式与 LSM 技术给数据湖带来了实时流更新以及完整的流处理能力。Paimon 表支持作为维表做 Lookup Join相较于 Iceberg 表Paimon 表的优势在于实现了更好的缓存、以及支持更大的数据量。Lookup Join Iceberg 表时会将所有数据缓存在内存中所以数据量大时容易造成 OOM但是 Paimon 表支持内存、本地磁盘以及远端存储三级存储策略所以对维表的数据量没有太大的限制。
Paimon 针对维表点查做 repartition 等优化平衡了内存使用与性能。在维表数据 100w 行单并发的场景下可以支持的查询 QPS 达到 50000 QPS。使用 Paimon 作为维表其支持三种方式产生 CDC 数据因此能很好的支持双流 join 查询维表。Paimon 作为 Flink 维表的缺点在于数据更新的速度没有 kv 快但也可以覆盖大部分业务场景。
HBase 与 Redis
HBase 与 Redis 作为 KV 存储在 Flink 维表应用时具有相似性。两者都适用于需要维表写入立即可见的极端情况。同时使用 KV 作为 Flink 维表的成本比湖存储要高。
Doris
Doris 是一个基于 MPP 架构的分布式列式存储数据库具有高性能、高可用性和高扩展性适用于大规模数据分析和实时查询场景特别是对实时性要求较高的场景。但它对实时性要求极高的场景可能不如 HBase且数据更新和删除操作相对较慢。目前 Flink 对 Doris 的点查时间延迟在几百毫秒相较于使用 Paimon 作为维表没有优势。
Hologres
针对 Hologres 的点查仅仅在使用主键作为 Join Key 的场景下才能够达到毫秒级延迟。
总结
点查时间延迟内存资源开销支持双流 Join稳定性建议维表大小维表实时性存储状态MySQL100毫秒级开销低支持稳定性低GB级别读入即可见Iceberg毫秒级开销较大不支持文件格式稳定性高100MB级别存在ck延迟Paimon10毫秒-100毫秒开销适中支持文件格式稳定性高GB级别存在ck延迟Doris100毫秒级开销低不支持服务稳定性低GB级别读入即可见Hologres毫秒级主键查询/ 100毫秒级非主键查询开销低支持服务稳定性低GB级别读入即可见HBase毫秒级开销低不支持服务稳定性低TB级别读入即可见Redis毫秒级开销低不支持服务稳定性低GB级别读入即可见