我有一个无法完全加载到内存中的哈希集。所以假设它有 ABC 部分,每个都可以加载到内存中,但不是一次全部加载。
我也时不时收到随机条目,我几乎无法分辨它可能属于哪个部分。所以其中一种方法可能是我先加载A然后进行检查,然后是B,C。但是下一个条目可能属于B,所以我必须卸载C,然后加载A,然后B......希望我让这个理解。
这显然会很慢,所以我想知道有没有更好的方法来做到这一点?(如果使用 db 不是替代方案)
我建议您不要使用某些标准将数据输入到 A 或 B。换句话说,A、B、C - 这只是将整个数据划分为 3 个相等部分的结果。我对吗?如果是这样,我建议您在向集合中添加新条目时添加一些标准。例如,如果您的条目是数字,则将那些从 0-3 开始到 A,从 4-6 到 B,从 7-9 到 C。在 A 或 B 或 C 中。如果您的条目是单词 - 相同的解决方案,但现在标准是第一个字母。可能在这里最好不要使用 3 套,而是使用 26 大小的英文字母。请注意,无论如何您都必须将其中一组存储在内存中。您看到了一个优势 - 您最多进行 1 次加载/卸载操作,您无需检查所有集合 - 您现在可以真正存储您的价值。这个想法在 DB - 分区中被广泛使用。如果您存储在集合、数字或单词中,而是存储一些复杂的对象,那么您无论如何都可以发明一些简单的标准。