docs: remove proposal from git tracking and ignore it
moon-distinct-sketch 是基于 MoonBit 原生构建的高性能流式基数估计(Streaming Cardinality Estimation)与多维指标统计库。本项目实现了 HyperLogLog(稀疏模式/稠密模式)、HyperLogLog++、Linear Counting、滑动/翻转多窗口统计、时间衰减加权 Sketch、多租户 Active Device / UV 统计引擎、MinHash 集合相似度估计、Count-Min Frequency Sketch 频次统计、紧凑二进制序列化以及分布式树状规约聚合引擎。
moon-distinct-sketch
HyperLogLog & HLL++ 引擎
多窗口与时间衰减统计 (Multi-Window & Time-Decay)
多租户 UV 与集合重叠引擎 (Multi-Tenant & Set Operations)
频次与集合相似度 (MinHash & Count-Min Sketch)
紧凑二进制序列化 (Compact SerDe)
ByteBuffer
分布式树状规约聚合 (Distributed Tree Reduction)
moon-distinct-sketch/ ├── .github/workflows/ci.yml # 跨平台 GitHub Actions CI ├── moon.mod # MoonBit 模块配置 ├── README.md # 项目主文档 ├── LICENSE # Apache 2.0 开源协议 ├── cmd/main/ # CLI 主程序与 Benchmark │ ├── main.mbt │ └── moon.pkg └── src/ ├── utils/ # 位运算(clz, popcount)、数学与稀疏数组 ├── hash/ # MurmurHash3, XXHash64, SipHash24, FNV1a ├── hll/ # HyperLogLog 核心 (Sparse/Dense/Merge/Bias) ├── hllplus/ # HyperLogLog++ 扩展 ├── linear/ # Linear Counting 位图 Counters ├── window/ # Tumbling, Sliding & Exponential Window ├── multitenant/ # 多租户 active metric & Jaccard ├── minhash/ # MinHash & Bottom-K Sketch ├── countmin/ # Count-Min Frequency Sketch ├── serde/ # 二进制位流 Wire Format 编解码 └── distributed/ # 节点树状规约合并引擎
let hll = @hll.HyperLogLog::new(14) // 2^14 = 16384 registers // 添加元素 let mut i = 0 while i < 100000 { hll.add_string("user_device_" + i.to_string()) i = i + 1 } // 获取基数估计值 let estimate = hll.cardinality() println("Estimated Unique Count: " + estimate.to_string())
let engine = @multitenant.TenantMetricsEngine::new(14) // 记录租户日志 engine.record("tenant_app_a", "device_1001") engine.record("tenant_app_a", "device_1002") engine.record("tenant_app_b", "device_1002") let tenant_a_uv = engine.get_tenant_uv("tenant_app_a") let global_uv = engine.get_global_uv()
// 序列化为字节数组 let bytes = @serde.serialize_hll(hll) // 从字节数组还原 Sketch let restored_hll = @serde.deserialize_hll(bytes)
确保已安装最新版 MoonBit 工具链 (0.10.4+):
0.10.4+
# 格式化检查 moon fmt --check # 更新接口声明 moon info # 运行全套单元测试 moon test # 运行主程序基准测试 CLI moon run cmd/main
本项目由 yhsrtty 独立设计与开发,为开源代码竞赛(OSC2026)参赛作品。 代码严格遵循 Apache-2.0 开源协议。所有 MoonBit 源码均由作者编写与测试,无任何第三方代码侵权。
实现 HyperLogLog 的稀疏模式、稠密模式、寄存器合并、误差估计和多窗口统计,用于 UV、设备数、用户数和多租户指标计算。后续可加入加权基数、时间衰减、序列化格式和跨节点聚合。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
moon-distinct-sketch | MoonBit 流式基数估计与多维指标统计库
moon-distinct-sketch是基于 MoonBit 原生构建的高性能流式基数估计(Streaming Cardinality Estimation)与多维指标统计库。本项目实现了 HyperLogLog(稀疏模式/稠密模式)、HyperLogLog++、Linear Counting、滑动/翻转多窗口统计、时间衰减加权 Sketch、多租户 Active Device / UV 统计引擎、MinHash 集合相似度估计、Count-Min Frequency Sketch 频次统计、紧凑二进制序列化以及分布式树状规约聚合引擎。核心特性 (Features)
HyperLogLog & HLL++ 引擎
多窗口与时间衰减统计 (Multi-Window & Time-Decay)
多租户 UV 与集合重叠引擎 (Multi-Tenant & Set Operations)
频次与集合相似度 (MinHash & Count-Min Sketch)
紧凑二进制序列化 (Compact SerDe)
ByteBuffer位流读写器。分布式树状规约聚合 (Distributed Tree Reduction)
目录结构 (Directory Layout)
快速上手 (Quick Start)
1. 基础 HyperLogLog 使用
2. 多租户 UV 引擎与集合合并
3. 二进制序列化与还原
编译与测试 (Build & Test)
确保已安装最新版 MoonBit 工具链 (
0.10.4+):贡献声明与版权 (License & Source)
本项目由 yhsrtty 独立设计与开发,为开源代码竞赛(OSC2026)参赛作品。 代码严格遵循 Apache-2.0 开源协议。所有 MoonBit 源码均由作者编写与测试,无任何第三方代码侵权。