我的程序有一个存储空间:一个文件,除以页面4 ... 16Kb。
存储保留项目数,每个项目具有不同的大小。这些项目按照它们被添加到存储中的顺序一个接一个地存储(没有索引,没有排序)。这一系列的物品占据了多个页面,每个页面有100个...... 300个项目(因为一个项目的大小不同)。
每个项目可以通过2个数字来寻址:(page_number,index_in_a_page)。
我正在寻找一种数据结构和算法来组织这些项目的列表。该算法应允许使用最少页面写入将任何项目从其当前位置移动到列表顶部。我希望这个数据结构将存储在相同类型的页面中,我希望每个项目移动最少的页面写入。
还有一个容错问题:页面写入是原子的(使用双写缓冲区)但是2次写入不是,因此事务,日志记录等都会出现在场景中。
目前我正在研究日记方法:每个动作只留下单个日志记录,当期刊获得临界质量时,它会在真实页面上执行。