库内文档

大数据的一切

共 21 条 · 按发布时间排列

数据

解构数据引擎:大数据生态是一个拆开的数据库

一个数据库把存储、页格式、事务、系统目录、日志和执行器封在一个进程里;大数据生态把它们拆成对象存储、文件格式、表格式、Catalog、流存储和计算引擎,每一层都是独立的开源组件,靠公开的规范拼在一起。本文先把 HDFS、Parquet、Iceberg、Kafka、Spark、Flink、Doris 这些常用组件放回它们在数据库里对应的那一块,再在本机用 RustFS、Iceberg、REST Catalog 和 DuckDB 搭一个最小的湖仓,跟着一次写入和一次查询走一遍:查 10 月 21 日晚高峰各城市的销售额,在 60 MB 的表里只读了 0.9 MB。最后看拆开的代价。

数据

少算一点:大数据计算优化的统一视角

递推、HyperLogLog、两阶段聚合、切片窗口,看起来是几套互不相干的技巧,其实都在利用聚合的两个性质:能不能合并,能不能撤销。本文用同一张订单表的四个指标讲清这两个问题,再看计算模式(只算变化的部分、把活拆开)和数据结构(又小又能合并的中间状态)怎样分别利用它们,最后给出拿到一个新指标时的判断顺序。

数据

Life of a Data:跟着一笔订单看数据应用的全貌

产品想知道:用户从点开商品到支付成功,每一步流失了多少?仿照 Chromium 的 Life of a Pixel,本文跟着订单 1001 走过诞生、采集、传输、计算、落盘、加工、服务,变成看板上的一个数字和一次 AB 实验,再看它被退款改写、被回溯修正、最终被清理;最后回答怎样算一个好的数仓。站在数据应用的角度,引擎内部只点到为止,每一站都指向知识库里深入的文章。

数据

例子:机器人数据闭环走一圈

把前三篇放回一个真实场景:20 台双臂机器人做抓取和放置,新策略上线后在透明玻璃杯上频频失手。本文跟着一轮数据闭环走一圈:多路传感器怎样按时间对齐成明细表,数据怎样入湖、打标、算向量,再用失败案例做向量检索挖出难例,生成下一版可复现的训练集。每一步都对照数仓里熟悉的做法。

数据

Daft:让解码和推理流起来

多模态数据的加工主力从 SQL 换成了解码和模型推理:解码在 CPU,推理在 GPU,模型要常驻显存,解码后的图像比压缩前大十几倍。为 SQL 设计、分阶段落盘的引擎在这里处处别扭。本文讲 Daft 的做法:图像和向量是原生类型,算子可以声明要几张 GPU、开几个常驻实例,各阶段流式执行;再用一个可调参数的实验找流水线的瓶颈。

数据

Lance:为随机读、加列和版本而设计

多模态数据有三处差异落在存储上:训练要随机抽样,模型一升级就要给全表加列,「像不像」成了一种查询。为扫描聚合设计的 Parquet + Iceberg 正好不擅长这三件事。本文讲 Lance 的三个核心原理:把列式文件的最小读取单位做小,用片段、清单和版本让加列只写新列,以及在表里直接建向量索引。

数据

从数仓到多模态:哪些数据直觉要改

做过数仓的人,对数据的直觉是一行几百字节、SQL 扫一遍做聚合、按天分区回溯。多模态数据把这些直觉逐一打破:一行 99% 是图像和视频,训练要随机抽样而不是扫描,模型一升级就要给全表加列,加工的主力是解码和 GPU 推理,「像不像」成了一种查询,关联靠时间而不是主键。本文逐条讲清这六处差异、数仓的做法为什么不够,以及 Lance、Daft 这类新工具分别接手了哪一处;分层、质量规则、血缘这些经验则可以照搬。

数据

我理解的流批一体:从三条链路到一个参数

同一张订单宽表,实时链路秒级写入,离线链路天级整表覆盖,已经更新的行会被旧快照改回去。本文用这张表贯穿全文,从现状的实时、离线两条链路讲到 Fluss + Paimon 的改造,最后落到 Materialized Table 的增量语义:需求变了,只改一个 FRESHNESS 参数。衡量每一步的标准是:有多少原本只存在于人记忆里的约束,被系统接管了。

数据

Fluss:重塑实时开发

实时数仓的很多麻烦,根子在中间层用的 Kafka 是为事件流设计的,而实时业务大多是分析场景。本文从这个错配出发,看面向分析的流存储 Fluss 如何用主键表、部分列更新、Delta Join、全局字典、存储层聚合和湖流一体,把原本压在 Flink 状态里的工作交还给存储。

数据

Flink SQL 回撤机制与问题

流式 SQL 的结果会随输入不断变化,回撤(Changelog)就是通知下游「之前那条作废」的机制,它是正确性的最小代价。但一次更新被拆成「撤回 + 新值」两条消息,会带来乱序和中间错误结果两类副作用。本文用词频统计讲清回撤的原理,再分别看引擎如何解决乱序、业务侧如何用版本列和自定义算子挡住中间结果。

数据

SQL Is All Your Need:SQL2API

报表可以只写 SQL 配出来,数据接口能不能也这样?这篇教程跟着 QFlink 里一个可以运行的极简 SQL2API 走一遍:把一个电影列表接口写成「一段 SQL 模板 + 一份参数声明」,看参数怎样变成 SQL、注入怎样被挡住,再用统一的请求协议连 SQL 都不写;最后讨论它的边界:数据开发做轻逻辑的数据服务,业务服务还是交给后端。