moonbit-etskv

    Download zip
    Author
    Version
    0.0.2
    License
    Apache-2.0
    Last updated
    6 hours ago
    Downloads
    3

    #MoonBit EtsKv — MoonBit 生态原生 BEAM 数据通路(Erlang ETS 读写桥)

    #定位+血统

    etskv 是 MoonBit 生态里唯一原生的 BEAM 数据通路:MoonBit 程序以 Erlang distribution 协议真件(beam-dist 家族)直说 BEAM 母语,经 rpc rex apply 读写 Erlang/OTP 集群中的 ETS 表——对标口径是 "Redis 客户端 + ETS 语义"(借 OTP 王国的桥,而非另起炉灶的独立 数据库;见 .mingspace/etskv_ming.md §十七 对标 Redis 评审卷)。

    真件背书:

    • ets 金罐闭环(beam-rpc probe 臂十四):MoonBit 写→ETS→双端读回 PASS——往返延迟 sub-ms
    • 批写杠杆:batch_insert 一次 call 50 keys,对拍单条 insert 12-17× 吞吐(批写杠杆为对外基准数字)
    • 协议底座:beam-dist@0.0.18(27 罐)/ eetf@0.0.4 / beam-rpc@0.0.9—— 真网门全闭环(epmd 握手/demonitor/EXIT/multi_lookup 谱)

    思想致敬 Erlang/OTP ets;clean-room 自 ets:insert/lookup call 线形 (rex apply 面)重写。

    #性能口径(真读数·2026-11-11 收口)

    面数字域钉
    往返延迟avg sub-ms(RTT hit 50/50)跨语言通路域(dist RTT+ETF 编解码+rex apply·~500-700μs/op)
    串行写~1360 ops/s真 RTT 域(sink 真判·equal_val 守恒精判)
    串行读~1960 ops/s真 RTT 域(读回真值 VList/VAtom 结构域)
    批写40,000-50,000 ops/s(26-33×)50 keys/call 杠杆——对外基准
    全表批读一次 call 全表(match_all)ets:match/2 杠杆(读回 VList 嵌套真结构)

    真读数域(2026-11-11 双 len 帧封装破案后收口):bench 判域假中 (show 判 Nil 假中)+读窗 FIN(双 len 帧封装——send_frame 双包层) 两域连环破案后,串行/批写数字全部 equal_val 真判域落定。ETS 本体 (BEAM 内)为 μs 级百万 ops/s 域,不在本通路域内。破案录见 .mingspace/etskv_ming.md §十五-§二十一。

    #包结构

    包面
    src/EtsKv 组合根(sock+codec+etf_port+caller+table/node/creation 参数化)——insert/lookup/batch_insert/multi_lookup(rpc call rex apply 面——读窗循环 ref 对拍+残帧过滤+equal_val 结构判)

    #语义面

    API形域
    insert(k, v, ref)ets:insert 单键值写(回执对拍)
    batch_insert(pairs, ref)一次 call N 键值批写(17× 杠杆——对外基准)
    lookup(k, ref)ets:lookup 读回 list读(equal_val 结构判换装)
    multi_lookup(keys, ref)life_chk helper 批读读批(Erlang 侧实证 200 keys 全回)
    call_rex(ref, m, f, args)任意 MFA rex apply 面通用(ets 之外 Erlang 函数皆达)

    表属主律:表建/属主必 Erlang 侧常驻进程(-s 模块式 run+sleep 保活—— life_chk 形;rpc call 临时进程建表不可行实锤:属主死表随死)。

    #测试门+演进位

    • 门:moon check --deny-warn / moon run cmd/bench(VERDICT 判线—— equal_val 真判形·守恒精判=读回即写入值精确对拍);金罐真件背书= beam-rpc probe 臂十四(ets 金罐闭环)
    • 已收口(勘定录):bench 读窗 FIN 域(双 len 帧封装终钉——call_rex 自拼 len+send_frame 再包=双包层——§二十终破案);match/2 复活(同根 翻案——match_all API 重生);读回真值域(to_val 直转·VAtom(show) 退场)
    • 挂候:EMap/EPid/EPort/ERef EtfVal 对位扩展(结构域全谱);beam-dist DIST_FLAGS FRAGMENTS 补位实验退(拍 1 dump 分片头域候——深勘候令)
    • 演进位(0.1 三小步——对标 Redis 补短):Erlang 侧 checkpoint (ets:tab2file 持久化)→ TTL wrapper(表 wrapper+清扫进程)→ helper 语义层(List/Set/Hash/ZSet 映射);bag 型谱/结构对拍进阶随
    • 架构血统:beam 系家族七件(beam-dist/eetf/epmd/beam-rpc/beam-node/ observer-ui/etskv)——README 域表见各仓