数据缓存与本地存储

来源:互联网 发布:淘宝衣服换货 编辑:程序博客网 时间:2024/04/29 04:33

开发中常常碰到需要本地保存一份远程的镜像,如数据库服务器上的表,以减少网络查询的延迟,提高程序的效率。笔者碰到这种情况时,多编写一个内容管理工具,将远程的数据备份到本地,提供插入,删除,修改,遍历等功能,非常方便。虽然没有berkeleyDB复杂,但也能满足一般需要。

      该工具由缓存和文件存储两部分构成。缓存的设计方法在前文已经介绍,这里只介绍下文件内容的存储管理。假设要处理的记录是等长的,而且记录之间不分先后。可以创建如下结构的文件:

     正常的记录插入和修改都没什么难度,不好做的是当记录数超过最大记录数时的处理。由于插入记录不分先后,删除某条记录可以采用这种方法:将最后一条记录覆盖到需要删除的记录上,这样,减少了记录的移动。当记录数超过最大数目时,需要找到最早插入的若干条记录并将其删除,笔者采用了这种方法:

    1) 创建一个小堆,堆的大小为需删除的记录数。将所有记录的插入时间记录到堆中并排序,找到需要删除的记录。

    2)对需删除的记录按在文件中的位置排序,先删除离文件尾部最近的,最后删除离文件头部最近的记录。

    这样,避免了删除记录时空洞的产生和记录的整体移动,空间利用率也得到保证。

    当然,功能更强大的key-value数据库更适合做本地存储,但是处理还是较复杂,本文介绍的方法简单,容易实现。可以用在仅需要简单存储功能的场合。

原创粉丝点击