Skip to content

memindex 定宽排序矩阵:shm 后端实现(主 issue kvspace#12) #19

Description

@miaobyte

主 issue(契约与总纲):array2d/kvspace#12

kvspace-c(shm)实现 memindex 定宽排序矩阵,与 durable 参考实现逐字节对齐。

格式(见 kvspace#12)

memindex(kind=index):kindexpr=[N,M]index + body N×M(每行 UTF-8 + NUL 补齐到 M),全表 cmp_coord 排序。

改动点

  • memindex( 处 kind=index 值)body 编码由 offset 索引数组改为 [N,M] 矩阵:几何写入 XValueHead 的 [dims](N、M),body 纯 N×M 行。
  • 成员增删:按 cmp_coord 有序插入 / 删除并重建矩阵、重算 M(shm 侧同尺寸可原地覆写,变尺寸走新分配)。
  • listlen 读 head N(O(1),不碰 body);listat(idx) 取单行 body[idx*M..] 去 NUL(O(1));成员存在性 cmp_coord 二分。
  • 比较器 cmp_coord 与 durable 语义一致(数组/map 坐标 row-major、object 字符串键字典序)。
  • extindex 并入同一矩阵:body 改 [N,M]extindex head + 头部变长 ext_path + 尾部 N×M 矩阵(childs,cmp_coord 有序);off=body_len−N*Mext_path=body[..off]、childs 矩阵=body[off..];listat/listlen/二分与普通 index 共用;list(expand_ext=true) 本地矩阵与 base(/lib/<func>/ index)双侧有序归并、本地遮蔽去重。栈帧 churn 增量重建 O(N) 可接受(帧局部小而有界),ext_path 头部固定不被矩阵重建触碰。

验证

  • kvspace-c 自带 tutorial-c;
  • kvlang tutorial shm 全回归;
  • memindex blob 与 durable(fs/redis)逐字节一致。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions