2026-10-22 软件 holt-cj 1.1.0:从 720 行长到 3300 行的图数据库 holt-cj 1.1.0 介绍 能力补齐了,限制也写清楚了 holt-cj 是基于 badger-cj 的嵌入式图数据库。 这个库在 1.1.0 里做了一次大改:实现从 720 行长到 3273 行, 补上了属性索引、变长遍历和图算法。本文按新版重写。 Continue reading...
2026-10-22 软件 sunku-cj:当 Redis 的 API 装进进程内 sunku-cj 介绍 API 可以一模一样,架构位置不能 sunku-cj 是仓颉生态里的「Redis 兼容本地 KV 数据库」,架在 badger-cj 之上。 本文不吹它「兼容 Redis」,而是把「同构到什么程度、在哪一层不能同构」讲清楚。 Continue reading...
2026-10-19 软件 tsdb-cj 的四次静默失效:代码能跑、测试能过,但什么都没发生 tsdb-cj 排查实录 最危险的不是崩溃,是「看起来在工作」 tsdb-cj 是基于 badger-cj 的嵌入式时序数据库, 也是忆时塔 分层记忆的存储底座。 本文不谈它的设计,只讲一次系统性排查里挖出来的四类问题——它们的共同点是: 代码能跑、测试能过、日志无错,但功能根本没生效。 Continue reading...
2026-10-19 软件 storm-cj 的索引代价:44 倍查询换来的写入腰斩 storm-cj(bstorm)源码拆解 · 上篇 把写吞吐砍掉一半,换 44 倍查询——这笔账怎么算 这是仓颉版 storm 的第一篇。上一篇关于 storm 的文章还是 2019 年写的 Go 版 storm 的使用 ——bstorm 的灵感就来自它, 但实现完全不同:Go 版架在 BoltDB 上,bstorm 架在自研的 LSM 引擎 badger-cj 上。 本文讲索引带来的取舍,不讲 LSM 基础(那个在前四篇里)。 Continue reading...
2026-10-13 软件 把 BadgerDB 移植到仓颉(四):怎样测才算数 从 Go 移植 BadgerDB 到仓颉(四) 四个方法学缺陷、Go 侧三个陷阱,与一套可核验的流程 Cangjie · 基准测试 · 方法论 这是系列最后一篇。第三篇讲了三个被推翻的结论 , 本篇追问:它们为什么会错,以及怎样才能不再错。 Continue reading...
2026-10-12 软件 把 BadgerDB 移植到仓颉(三):重跑基准,三个结论翻了 从 Go 移植 BadgerDB 到仓颉(三) 重跑一遍基准,三个结论都翻了 Cangjie · 基准测试 · badger-cj 这是系列第三篇。前两篇讲实现 与优化 , 本篇讲复核:把积累半年的基准数据重跑一遍之后,有三条结论被推翻, 而且方向都是反的。 Continue reading...
2026-10-11 软件 把 BadgerDB 移植到仓颉(二):十次优化与一次误判 从 Go 移植 BadgerDB 到仓颉(二) 十次优化,和一次「我以为是编译器 bug」的乌龙 Cangjie · 性能优化 · badger-cj 这是系列第二篇。第一篇讲无锁跳表的实现 , 本篇讲怎么把它调快,以及一个把我引向错误方向的排查。 Continue reading...
2026-10-10 软件 把 BadgerDB 移植到仓颉(一):没有裸指针怎么做无锁跳表 从 Go 移植 BadgerDB 到仓颉(一) 仓颉没有裸指针,于是我把节点指针换成了数组下标 Cangjie · LSM-Tree · badger-cj · 移植 这是系列第一篇,讲怎么把它写出来:语言差异怎么绕、以及怎么用。 后续三篇分别讲优化与误判、基准复核、以及怎样测才算数。 Continue reading...