| 1234567891011121314151617181920212223 |
- // Package core 是 TsDB2 的底层嵌入式存储引擎(零依赖)。
- //
- // 职责:以固定大小页组织整个数据库文件 —— 数据 / 索引页 16KB、元数据页 4KB
- // (const.go 的 PageSize / PageSize4K、Magic、Version)—— 包括 HeaderPage 头页
- // 与空闲页链、TablePage 表元数据页链、堆页溢出存储、B+ 树 / 哈希 / 时序 / 复合
- // 索引页、WAL 日志页与崩溃恢复。页布局的权威定义与编译期断言在子包 page
- // (base_page.go / hdr.go / datapage.go / walpage.go)。
- //
- // 上层入口:Open / Close / CreateTable / FindTable / DropTable(db.go),行级
- // 增删改查(inserter.go / updater.go / deleter.go),查询与聚合(query*.go),
- // 事务(transaction.go),链式 Blob(blob_*.go),整库重写回收(vacuum.go)。
- // 索引类型经 index 包的处理器注册表(index.Compose)挂进引擎。
- //
- // 单写入者模型:同一时刻只允许一个 goroutine 写 —— Insert / Update / Delete /
- // Commit 应由同一个写入者串行调用;引擎不对并发读提供一致性保证,读取端要严格
- // 一致需把读写串起来,多写入者由调用方自行加锁(pool/buffer_pool.go 中
- // capacityWait 的注释是同一约定)。
- //
- // 提交策略:脏页阈值(SetDirtyThreshold)与防抖计时器(SetAutoCommitDelay,
- // 传 0 禁用)在写入者 goroutine 内同步触发 Commit,Close 兜底提交剩余脏页;
- // 预设组合见 ORM 层 DB.SetCommitPreset。LockWrites / UnlockWrites 只推迟页
- // 落盘、不拒绝写入。
- package core
|