#database/olap # 思考 ## 架构 - 整体 - <img src="https://img.jonahgao.com/oss/note/2025p1/fts_summary_arch.png" width="526" height="340" /> - Table Format:能存储全量数据,能够提供很强的更新能力以处理数据库 CDC 和流处理产生的大量更新数据, 且能够面向 Ad-Hoc 提供高效的批查询。 - Streaming Queue:流读、流写,能在存储上建立增量处理 Pipeline。 - Lake structure: - <img src="https://img.jonahgao.com/oss/note/2025p1/fts_summary_lake.png" width="650" /> - bucket: - <img src="https://img.jonahgao.com/oss/note/2025p1/fts_summary_bucket.png" width="600" /> ## API ### streaming read - 基于 kafka (秒/毫秒级别延迟) - 基于 lake storage (分钟级别的延迟) ### Hybird 先读取湖存储,再读取 log store。 ## 数据模型 - rollup - partial update ## metadata 两个选择 - 存储在filesystem - 单独的metastore ## 存储模型 LSM优势: - merge效率高(MOR和compaction) - point update 按主键更新效率高 是否需要 Memstore - 对 AppendOnly 数据的支持 ## 分区 两级: - partitions - 一致性hash分bucket,支持 bucket resize,bucket对应kafka分区 ## Changelog - 依赖上游提供 - lake storage提供(compaction?如paritial update) # 资料汇总 - Proposals [FLP-188](https://cwiki.apache.org/confluence/display/Flink/FLIP-188%3A+Introduce+Built-in+Dynamic+Table+Storage) 笔记: [[fts-proposal]] - 视频: [Flink Table Store: Streaming Data Warehouse Architecture And Scenario](https://www.youtube.com/watch?v=PTjE0BjhWyY) - PPT: [Flink-Table-Store-Ververica](https://docs.google.com/presentation/d/1zysF8kG6BZRDTdIMIfVGV1FE6Thqn-uw/edit?usp=share_link&ouid=109417362972881820600&rtpof=true&sd=true) - [Discuss](https://lists.apache.org/thread/tqyn1cro5ohl3c3fkjb1zvxbo03sofn7) 笔记:[[fts-discuss]] - 语雀 [Flink Table Store 是什么?](https://www.yuque.com/lijinsongzhixin/qxwonh/iktr4c) - 语雀 [Flink Table Store FAQ](https://www.yuque.com/nicholasjiang-cnnfj/cxyb5c/xovuiu) - 文章 - [Flink Table Store 是什么?](https://www.yuque.com/lijinsongzhixin/qxwonh/iktr4c) - [Flink Table Store 典型应用场景](https://zhuanlan.zhihu.com/p/603814382) - [中原银行对金融行业实时数仓的现状与发展趋势思考](https://mp.weixin.qq.com/s/N2yGl6KDNKUGXTIihfm14Q) - [基于 Apache Flink Table Store 的全增量一体实时入湖](https://flink-learning.org.cn/article/detail/bb443cbb2f0216d34aa4380cd445e0be) - [Flink Table Store:流批一体存储](https://mp.weixin.qq.com/s/fRGr-0uqq4jRB9TPCn1GmQ) - [Apache Flink Table Store 0.2.0 发布](https://mp.weixin.qq.com/s/Xy9HkWlzrq63mRUMuQluQg) - [Flink Table Store v0.2 应用场景和核心功能](https://mp.weixin.qq.com/s/lEH4cA0Z4XYVPVppOyzU5g) - [Streaming Data Warehouse 存储:需求与架构](https://mp.weixin.qq.com/s/ptRJY4jAmZrDmwMYCd9mjA) # 问题 - bucket 调整 - 老分区需要全部重写 - 可以老分区不动,新分区使用新的配置 - 不支持多作业写入 # 其他 支持实时数仓和离线数仓 data skipping 读写流程 - append only 模式 - 低成本,没有合并:当做传统离线表来使用 - Kafka Tiered Storage: 流读输入序,提供 Kafka 流读相同体验 数据可查询 - 自动 Compaction,避免小文件 [后续架构](https://mp.weixin.qq.com/s/lEH4cA0Z4XYVPVppOyzU5g) v0.3 [下一步](https://mp.weixin.qq.com/s/Xy9HkWlzrq63mRUMuQluQg) - Lookup:支持 Flink Dim Lookup Join。(即将来临) - 并发更新:多个 Flink 作业写入同一张 Flink Table Store 表。 - Compaction分离:单独的任务完成Compaction。 - 物化视图:Flink Table Store 提供预聚合模型。 - 变更日志生成:为各种 MergeEngine 生成准确的变更日志。 - 多引擎的写支持:支持 Spark、Hive 写入 Flink Table Store。 - 价值:https://mp.weixin.qq.com/s/ptRJY4jAmZrDmwMYCd9mjA #### **6.2.2 价值一:实时中间层可查** Table Store 给原有实时数仓的 Kafka 分层存储带来查询的能力,中间数据可查; Table Store 仍然具有流式实时 Pipeline 的能力,它原生 Log 集成,支持集成 Kafka,屏蔽掉流批的概念,用户只看到 Table 的抽象。 但是值得注意的是,数据写入存储不应该影响原有写入 Kafka 的稳定性,这点是需要加强和保证的。 #### **■ 6.2.3 价值二:离线数仓加速** Table Store 加速离线数仓,兼容 Hive 离线数仓的同时,提供增量更新的能力。 Table Store 提供完善的湖存储 Table Format,提供准实时 OLAP 查询,LSM 的结构不但有利于更新性能,也可以有更好的 Data Skipping,加速 OLAP 查询。 - 生态