跳到主要内容

AttributeMap 分区

单个 Attribute 会逐渐变成一个很大的 value,每次写入都要重写它。这两种模式都把数据拆到有大小上限的 AttributeMap instance 中,让一次读取或写入只涉及一个 instance。

按访问方式选择:

  • 只追加且要保持顺序的数据:Sequentially Chunked。
  • 按稳定 key 查找或更新:Hash-Partitioned。

对比​

维度Sequentially ChunkedHash-Partitioned
分组方式按递增 sequence,每 100 条形成一个 chunkCanonical key 的 FNV-1a hash modulo 1,000
主要目标高效 append 和按顺序分页按稳定业务 key 直接 lookup 和 upsert
典型数据Subscriber history、agent messages、audit eventsCustomer profiles、account metadata、配置目录
单次读取一个顺序 chunk一个 hash bucket
单次写入重写活动 chunk;rollover 时额外写 archive重写目标 bucket
顺序天然保留写入顺序没有自然全局顺序
按 key 查找通常需要扫描多个 chunk 或额外索引直接计算一个 partition
更新旧数据不适合;archive chunk 应保持不可变适合在目标 bucket 内 upsert
写入并发所有 append 竞争同一个活动 chunk不同 partition 使用独立 lock
数据增长自动创建新 chunk,不需要 rehashPartition 数固定,每个 bucket 随总量增长
分布按记录数天然均衡通常近似均衡,但可能出现热点 partition
修改参数新数据可以使用带版本的 chunk 策略修改 partition 数需要 rehash 和 migration
全量枚举按顺序读取所有 chunk读取最多 1,000 个 partition
最适合Append-only、有时间或 sequence 顺序的数据有稳定 lookup key 的结构化 value