我有大约 5 亿个 128 位整数,每年增加大约 1 亿个。什么都不会被删除。这些数字在规模和时间上是均匀分布的。
基本上,我需要的只是一个添加操作,它还返回数据库中是否已经存在该数字。另外,我不想为这个系统使用太多的 RAM,所以只是将所有内容存储在内存中并不是我想要的。
到目前为止,我们已经在 MySQL 上使用了几个 MyISAM 表,使用两个 bigint 作为主键。这给了我们不错的性能,但我怀疑它不是这项工作的正确工具。在拆分表之前,我们遇到了一些性能问题,并且我们在断电时遇到了损坏。此外,数据库为我们提供了更多我们不需要的功能。
我在 Linux 上使用 Python,但我愿意接受建议。
更新:Marcelo 的评论提到了Bloom Filter,这对我来说似乎很有希望。由于我正在使用哈希,我已经放弃了完全的准确性,所以这可能是一个很好的精度/性能折衷。