数据库内核实验索引
汇总本站数据库内核文章:PostgreSQL / MySQL InnoDB / 列存引擎 / 数据湖与开放表格式 / 流式数据处理 / 分布式 OLAP 查询引擎 / RocksDB 内核 / 向量检索引擎 / Redis 缓存内核 / 全文检索引擎,以及 LSM-Tree 从零实现实验。
发布来自土法炼钢兴趣小组的知识、笔记、进展和应用。主题包括数据结构和算法、编程语言、网络安全、密码学等。
共 13 篇文章 · 返回首页
汇总本站数据库内核文章:PostgreSQL / MySQL InnoDB / 列存引擎 / 数据湖与开放表格式 / 流式数据处理 / 分布式 OLAP 查询引擎 / RocksDB 内核 / 向量检索引擎 / Redis 缓存内核 / 全文检索引擎,以及 LSM-Tree 从零实现实验。
定位 Lucene 9.x/10.x 库内核与 Elasticsearch 8.x 服务层相对 architecture/42、storage/29、向量引擎与 PG GIN 的分工;以最小索引故事建立坐标系,交代倒排索引学术谱系与 18 篇路线图。
从 Robertson & Zaragoza (2009) 的 BM25 公式出发,拆解 Lucene BM25Similarity 如何把 TF 饱和、文档长度归一与 IDF 落到 postings 与 norms;对照 TF-IDF 工程差异,并划定与学习排序的生产边界。
拆解 Lucene IndexWriter 的 RAM 缓冲、flush 出段与 DirectoryReader.open(IndexWriter) 近实时语义;说明 Searcher 刷新与「刚写入即可搜」在库层与 ES refresh 层各自保证什么。
从 BooleanQuery 的 SHOULD/MUST 语义出发,拆解 Lucene BooleanScorer、两阶段迭代(近似+验证)、Collector 与 TopDocs 截断,以及 galloping 相交与 postings impacts 跳跃剪枝的关系。
说明 Lucene DocValues 的列式访问模型如何服务排序、聚合与脚本,stored fields 的随机取原文代价,以及 Elasticsearch 聚合管线对 DocValues 的依赖——为第 14 篇预埋。
只谈 Elasticsearch 8.x / Lucene 上 BM25 与 kNN 的组合接口与段内共存代价,ANN 算法与专用向量引擎细节外链 vector-engine 与 db-frontier/08;指出倒排与向量同 Segment 生命周期尚未统一的开放问题。
对照 Elasticsearch 8.x 与 OpenSearch 的许可与发行分叉,说明二者与 Solr 如何共享 Lucene 段模型;Solr 仅作边界一句,内核机制仍回链本系列 01–15 篇。
用症状到机制的决策树覆盖 circuit breaker、refresh 过频、大字段、分片过多与慢查询 explain,逐条回链本系列 Lucene 段与 ES NRT 篇章;不含未跑集群 benchmark。
给出 ES/OpenSearch、PostgreSQL GIN、ClickHouse 全文、专用向量引擎与「仅日志检索」的扩展决策树;回链 observability/08 与 llm-infra RAG,收束本系列 18 篇开放问题。
补齐搜索架构叙事与 RAG/向量引擎之间的全文检索内核层:以 Lucene 9.x/10.x 拆解 Analyzer、FST、postings、BM25 与 IndexWriter,并以 Elasticsearch 8.x 拆解分片、refresh/translog 与查询路径;OpenSearch 对照与选型收束。
拆解 PostgreSQL GiST 索引的抽象算子接口(Consistent/Union/Penalty/PickSplit)、深度优先搜索与 Consistent 过滤的组合逻辑、Penalty 引导插入路径与 PickSplit 决定分裂策略的完整流程,以及 point_ops 的几何距离搜索和 tsvector_ops 的全文搜索两种典型实现。读完你会理解为什么 GiST 能用一个通用框架支持十几种数据类型,以及它什么时候比 B-Tree 好、什么时候该用 GIN 替代。
拆解 PostgreSQL GIN 索引的内部结构:entry tree、posting list、posting tree 三者各在什么条件下使用;Fast Update 的 pending list 设计与 gin_clean_pending_list 合并时机;gingetbitmap() 的 bitmap AND/OR 多关键词搜索合并流程;全文搜索 tsvector 与数组 _int4 的 GIN 实现;以及 GIN 与 GiST 在写性能、读性能、存储开销上的三角权衡和具体场景下的选择建议。