
文本检索场景下的分布式索引设计
本文详细记录了 2025 年为推动基研 Rust 生态建设,从 0 到 1 的分布式索引项目的设计与实现过程。 该项目需要解决的问题非常具体:为基于 Parquet 数据文件存储的 TimeSeries DB 做查询加速。 上游 SQL 通常会先给出一个时间范围,如果数据库直接按这个时间窗口去扫描,就很可能把时间窗口里的全部 parquet 都访问一遍。我们的目标不是替代数据库执行 S...

本文详细记录了 2025 年为推动基研 Rust 生态建设,从 0 到 1 的分布式索引项目的设计与实现过程。 该项目需要解决的问题非常具体:为基于 Parquet 数据文件存储的 TimeSeries DB 做查询加速。 上游 SQL 通常会先给出一个时间范围,如果数据库直接按这个时间窗口去扫描,就很可能把时间窗口里的全部 parquet 都访问一遍。我们的目标不是替代数据库执行 S...
记录下 MetaServer 分布式服务开发的经验 在前文《一个时序元数据引擎的实现复盘:从双层 MemTable 到流式合并》中,我们构建了一个针对时序元数据场景深度优化的存储内核。本文将探讨如何将其向上抽象,封装为具备 API 访问能力的分布式服务。 从项目的职责边界来看,我们可以这样进行区分: Key 定位 ...

沉淀一下从零实现 MetaStorage 元数据存储内核的心得体会,记录从 0 到 1 的开发全历程 MetaStorage 不是一个追求通用性的数据库内核,而是一套面向 “时序数据文件元数据检索” 场景、参考 LSM Tree 思想深度定制的存储引擎。 在项目初期,我们也曾尝试过 MySQL、DuckDB 等成熟方案,但在面对 PB 级元数据压力和严酷的查询性能要求时,通用组件的短板...

Benchmark 测试结果表明,集成 Tantivy 全文检索引擎后,MyScaleDB 的文本搜索在响应速度与检索精度上均实现了显著飞跃。➡️ TheNewStack 英文原版链接 🔗 全球数据规模正在快速膨胀,且其中绝大部分都是非结构化数据。传统数据库在处理这类文本数据时往往力不从心,而全文检索 (FTS) 恰恰能够提供一种更自然、更高效的访问方式,让用户按照主题、关键词甚至语义相...
记录 &mut 的 move 与 reborrow 行为差异,以及背后的 coercion 与 NLL 机制。 在写链表、树这类需要「拿着一个 &mut 指针沿结构往下走」的代码时,会遇到一个现象:把一个可变引用赋给另一个变量,编译器报 borrow of moved value;而给这次赋值补上类型注解之后,同样的逻辑就能通过。这篇文章记录这个差异的成因,涉及 Rust...
题目 原题 25. K 个一组翻转链表 解题 使用 Rust 解题时, 我们应该关注 Node 节点的所有权转移 (Ownership Transfer), 这也是链表问题在 Rust 场景下的主要难点. 解题思路 对链表进行递归处理 (recursively), 内层已翻转, 外层待调整 在调整链表时, 使用头插法将外层的 node 逐个移动到内层有序结果内 ...
map 函数在不同场景下的设计理念 rust 的 map() 函数设计原则有两种类别: eager(execute immediately): 调用 map 时立刻执行转换逻辑 lazy(wait for use): 调用 map 时会返回一个包装类型, 不会立刻对内部的数据进行转换, 外部执行收集时才会转换. Type Natur...
一、关于 Prelude 机制 在使用 Rust 的 Option 和 Box 时, 我们不需要手动导入相关的模块, 它们都是 Rust 标准库的一部分, 但是它们有着不同的可见性机制。 事实上这些数据结构是通过 Prelude 机制进行自动导入的 std::prelude::v1 包含的内容如下 // 标准库位置:std::prelude::v1 pub use crate::mark...
在排查一个线上问题的过程中,对 Tokio 有了更深入的理解。 问题现象 服务部署在 K8s Pod 中,运行时主要包含两部分: 对外提供实时数据查询的 RPC 接口; 后台持续执行的数据处理任务,用来更新内部状态,保证 RPC 返回结果的正确性。 这两部分都运行在 Tokio 异步 runtime 上。上线后发现,客户端循环请求 RPC 接口时,会概率性出现 time...
学习理解 Datafusion 的 TableSource, TableProvider 之间的关系 一、TableSource 和 TableProvider 的作用 1. TableSource TableSource 是在逻辑查询规划和优化阶段使用的 Trait, 提供: schema 信息 filter 下推能力 table 类型信息 约束条件 (比如主键) ...