一种支持海量存储的内存数据库方法

文档序号:6607293阅读:311来源:国知局
专利名称:一种支持海量存储的内存数据库方法
技术领域
本发明涉及一种内存数据库数据管理技术,特别是涉及一种支持海量存储的内存 数据库方法。
背景技术
近年来,随着信息技术的快速发展,性能变得越来越重要,许多系统中都用到了内 存数据库。随着信息量的增大,而内存数据库所在主机的内存又不够,产生了一些问题。内存数据库的基本工作原理及目标是将信息保存在内存中,提高响应速度,因为 内存操作的速度比磁盘操作的速度快很多。一些内存数据库系统在启动的时候,将所有的 物理数据库的信息全部加载到内存数据库,以后用户只要操作内存数据库的内容即可,只 需后台工作进程与物理数据库数据进行同步即可,这样大大提高了响应速度。如图1所示, 但是当物理数据库有大量的数据需加载到内存时,会存在内存不足的情况。一些系统的解 决办法是只加载部分数据到内存中,将之前使用的内存置换出来,而其它部分依旧在物理 数据库中,如图2所示,所以,每次用户访问依旧在物理数据库中的数据时,都要重新加载, 这样就不能达到内存数据库的快速访问的目的。

发明内容
本发明要解决的技术问题是为了克服现有技术物理数据库有大量数据时不能全 部加载到内存数据库中的缺陷,提供一种支持海量存储的内存数据库方法,其保障海量存 储的内存数据库的高效性能,使访问内存数据库的速度加快。本发明是通过下述技术方案来解决上述技术问题的一种支持海量存储的内存数 据库方法,其特征在于,其包括以下步骤一个内存数据库将用户要访问且不在内存数据库 中的记录从一个物理数据库载入,当内存数据库使用内存达到上限时,定时清除内存数据 库中使用机率低于设定值的记录。优选地,所述定时清除内存数据库中使用机率低于设定值的记录是通过两个独立 工作的线程完成的,两个独立工作的线程分别从内存数据库的数据的前端和尾端开始逐一 扫描。优选地,所述每一个独立工作的线程扫描一段内存数据库中的记录后,释放一个 同步锁,采用休眠线程的方式切换线程。优选地,所述内存数据库从物理数据库同步在内存数据库中存在的记录。优选地,所述记录中添加每次的访问时间及访问次数,根据访问时间及访问次数 计算记录的使用机率。本发明的积极进步效果在于通过本发明的方法,在一段时间后,下线用户的信息 会由于使用机率变小而从内存中清除,内存中基本上都是上线用户,这样就有了比较快的 上线用户的查询效率,又由于后台清理线程会在清理一段数据后,会休眠,这样就不会在短 时间内占用太多的CPU (微处理器),又会让其它应用程序有访问内存数据的机会,提高了响应速度。


图1为现有内存数据库加载物理数据库内容时可能出现内存不足的示意图。图2为现有内存数据库在内存不足情况下的处理示意图。图3为本发明双线程从内存数据库两端往中间清除使用机率低于设定值的记录 的示意图。图4为本发明内存数据库与物理数据库间的选择同步方式的示意图。
具体实施例方式下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。本发明能够在内存数据库系统启动前,设定数据记录的最低使用机率。当用户应 用程序访问内存数据库时,如果记录在内存数据库中,将其对应的使用次数加1以及记录 使用的时间,后直接访问,如果记录不在内存数据库中,将先从物理数据库中载入此记录到 内存数据库中,并为此记录添加使用次数以及使用的时间等信息,再执行其后的访问操作。内存数据库仅仅从物理数据库同步在内存数据库中存在的记录,如物理数据库的 某条记录修改时,如果内存数据库中也存在这条记录时,则刷新更改到内存数据库,否则将 不必刷新,如图4所示。内存数据库修改数据时,如添加记录,则自动将此记录添加到物理 数据库,即自动同步到物理数据库。与此同时,有两个独立工作的线程,专门计算每条记录的使用机率,具体方法如 下它们分别从数据的两端往中间开始扫描和定时清理,如图3所示,将使用次数除以其第 一次和最后一次的使用时间间隔,如果计算出来的使用机率低于设定值,将其对应的记录 的所有关联内容从内存数据库中清除,并且每个线程在访问了一定量的数据记录后,释放 同步锁,采用休眠的方式,使得其它应用线程可以有机会访问内存数据库,以后再继续,这 样内存数据库就有较快的响应速度。使用双线程从两端访问数据的好处是其一,双线程会比单线程抢到更多的时间 片,会加快访问速度;其二,从两端开始往中间相反方向扫描,使其同时要访问同一数据的 机率变小,其抢同步锁机率就变小,所以遍历的速度加快。这种方案如用在即时通信软件项目中,在用户非常多的情况下,不能将物理数据 库内的所有数据都加载到内存数据库,许多应用服务器上的内存数据库从同一个物理数据 库上加载数据,每台应用服务器仅将在当前服务器上当前使用机率比较高的用户信息记录 从物理数据库加载到内存中。由于采用了这种方案,一段时间后,下线用户的信息会由于使用机率变小而从内 存中清除,内存中基本上都是上线用户,这样就有了比较快的上线用户的查询效率,又由于 后台清理线程会在清理一段数据后,会休眠,这样就不会在短时间内占用太多的CPU(微处 理器),又会让其它应用程序有访问内存数据的机会,提高了响应速度。虽然以上描述了本发明的具体实施方式
,但是本领域的技术人员应当理解,这些 仅是举例说明,在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变 更或修改。因此,本发明的保护范围由所附权利要求书限定。
权利要求
一种支持海量存储的内存数据库方法,其特征在于,其包括以下步骤一个内存数据库将用户要访问且不在内存数据库中的记录从一个物理数据库载入,当内存数据库使用内存达到上限时,定时清除内存数据库中使用机率低于设定值的记录。
2.如权利要求1所述的支持海量存储的内存数据库方法,其特征在于,所述定时清除 内存数据库中使用机率低于设定值的记录是通过两个独立工作的线程完成的,两个独立工 作的线程分别从内存数据库的数据的前端和尾端开始逐一扫描。
3.如权利要求2所述的支持海量存储的内存数据库方法,其特征在于,所述每一个独 立工作的线程扫描一段内存数据库中的记录后,释放一个同步锁,采用休眠线程的方式切 换线程。
4.如权利要求3所述的支持海量存储的内存数据库方法,其特征在于,所述内存数据 库从物理数据库同步在内存数据库中存在的记录。
5.如权利要求1所述的支持海量存储的内存数据库方法,其特征在于,所述记录中添 加每次的访问时间及访问次数,根据访问时间及访问次数计算记录的使用机率。
全文摘要
本发明公开了一种支持海量存储的内存数据库方法,其包括以下步骤一个内存数据库将用户要访问且不在内存数据库中的记录从一个物理数据库载入,当内存数据库使用内存达到上限时,定时清除内存数据库中使用机率低于设定值的记录。本发明的支持海量存储的内存数据库方法充分利用内存,访问内存数据库的速度加快。
文档编号G06F17/30GK101901270SQ201010246288
公开日2010年12月1日 申请日期2010年8月5日 优先权日2010年8月5日
发明者姜权 申请人:上海酷吧信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1