doc.go 1.6 KB

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