持久地重新排序磁盘上的值



我在磁盘上以随机顺序存储了大量(数以百万计的100个)固定大小的值。我在内存中以不同的顺序存储了一组相同的值。我需要将这些值按它们在内存和磁盘中的顺序存储。挑战在于:我需要在任何时候在磁盘上至少保留每个值的一个副本,即它需要持久。

我有相当多的RAM可供使用(这些值只占大约60%),有很多临时存储,但在耐用磁盘上只有很小的空间,足以容纳不到一百万个值。

给定磁盘上的一个值,我可以很快在内存中找到它。但反之亦然,给定内存中的值,在磁盘上查找它的速度非常慢。

考虑到这些限制,将值的顺序尽快从内存转移到磁盘的最佳算法是什么?

听起来您有排序问题,其中您的比较器是RAM中元素的顺序(如果x出现在RAM中的y之后,则元素x比元素y"大")。

它可以使用外部排序来解决。

请注意,如果允许重复,则需要进行更多处理,以确保比较器有效(可以通过枚举相同的值并为RAM和磁盘中的每个重复分配一个"dupe_id"来解决)

最新更新