缓存矢量添加更改集合

时间:2010-06-01 09:01:09

标签: data-structures

我有以下设置:

我有大量的uuids(目前大约10k但预计会无限增长 - 他们是用户ID)和函数f:id - >具有32位整数值的稀疏向量(无需担心精度)。该功能相当昂贵(并非如此,但对于给定的id,可能只有几百毫秒的数量级)。稀疏矢量的维度应该假设为无穷大,因为新的维度可以随着时间的推移出现,但实际上不可能超过大约20k(并且f的单个结果不可能具有超过几百个非零值)。

我希望有效地支持以下操作:

  • 在集合中添加新ID
  • 使现有ID无效
  • 检索O中的sum f(id)(自上次检索后的更改)

即。我希望以一种合理的方式逐步缓存向量的总和。

一种选择是支持删除ID操作,并将失效视为删除后跟添加。这个问题是它需要我们跟踪f的所有旧值,这在空间上是昂贵的。我可能需要使用这种缓存结构的许多实例,所以我想避免这种情况。

可能的使用模式是新ID以相当连续的速率添加,并且最初经常无效。最近失效的ID比长期保持有效的ID更可能再次失效,但原则上旧的Id仍然可以无效。

理想情况下,我不想在内存中执行此操作(或者至少我想要一种方法可以让我有效地将结果保存到磁盘上),所以让我背负某种现有数据库实现的想法将是特别感谢。

0 个答案:

没有答案