在磁盘上持久重新排序值

时间:2013-11-22 11:28:44

标签: algorithm diskspace durability

我在磁盘上以随机顺序存储了大量(100亿)固定大小的值。我有相同的值集以不同的顺序存储在内存中。我需要按照它们在磁盘上的内存顺序存储值。挑战在于:我需要在任何时候在磁盘上至少保留每个值的一个副本 - 即它需要耐用。

我有相当多的RAM工作(价值只占60%左右),很多短暂的存储空间,但耐用磁盘只有很小的空间,足够不到一百万价值观。

给定磁盘上的值,我可以非常快速地在内存中找到它。但反过来却不正确,给定内存中的值,在磁盘上找到它是非常慢的。

鉴于这些限制,尽可能快地将值从内存传输到磁盘的最佳算法是什么?

1 个答案:

答案 0 :(得分:0)

听起来你有一个排序问题,你的比较器是RAM中元素的顺序(元素x比元素y'更大',如果x出现在RAM之后的y之后。) / p>

可以使用external sort来解决。

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