#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 查询。
- 生态