数据存储方法及数据存储装置制造方法

文档序号:6490273阅读:142来源:国知局
数据存储方法及数据存储装置制造方法
【专利摘要】本发明涉及一种数据存储方法及装置,该数据存储方法包括步骤:根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据;以及采用普通哈希表方式存储高访问率数据,采用索引链表方式存储低访问率数据。本发明还涉及一种数据存储装置。本发明的数据存储方法及装置根据存储数据的访问频率采用不同的方式进行存储,从而在内存有效使用率方面和系统读取性能方面的性能都较高。
【专利说明】数据存储方法及数据存储装置
【技术领域】
[0001]本发明涉及计算机【技术领域】,特别是涉及一种高效的数据存储方法及装置。
[0002]【背景技术】
[0003]随着计算机硬件技术的发展,特别是内存容量的增加,系统希望可以将全部用户的数据都加载在到内存中,以提高系统的读写访问性能。
[0004]现有的内存数据存储方法可分为两种:普通哈希表(Hash)以及索引链表(Index+Link)。两种存储方法都可提供高性能的数据访问能力。在数据存储上,普通哈希表通常要求某个用户的存储数据是定长的,对于非定长的存储数据,普通哈希表也以存储数据的最大长度分配存储空间;这样如非定长的存储数据过多,会在一定程度上降低内存的有效使用率。索引链表能够以可变的存储空间存储非定长的存储数据,提高了内存的有效使用率,但在读取索引链表中的任何存储数据时,通常需要完整的读取整个链表结构并进行解析;这样在进行索引链表中存储数据的读取和解析时,会涉及到内存中大量存储数据的拷贝,从而影响系统的读取性能。
[0005]故,有必要提供一种数据存储方法及装置,以解决现有技术所存在的问题。

【发明内容】

[0006]本发明的目的在于提供一种提高内存有效使用率和系统读取性能的数据存储方法及装置。解决了现有的数据存储方法及装置的内存有效使用率较低或系统读取性能较低的技术问题。
[0007]为解决上述问题,本发明提供的技术方案如下:
[0008]本发明涉及一种数据存储方法,其包括步骤:
[0009]根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据;以及
[0010]采用普通哈希表方式存储所述高访问率数据,采用索引链表方式存储所述低访问率数据。
[0011]在本发明所述的数据存储方法中,所述根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据的步骤具体为:
[0012]将所述访问频率大于所有存储数据的平均访问频率的存储数据设定为所述高访问率数据,将所述访问频率小于所有存储数据的平均访问频率的存储数据设定为所述低访问率数据。
[0013]在本发明所述的数据存储方法中,所述数据存储方法还包括步骤:
[0014]在所述高访问率数据中设置指向相应用户的所述低访问率数据的指针。
[0015]在本发明所述的数据存储方法中,所述指针设置在所述高访问率数据的尾部。
[0016]在本发明所述的数据存储方法中,每个用户的所述高访问率数据为定长数据,每个用户的所述低访问率数据为非定长数据。
[0017]本发明还涉及一种数据存储装置,其包括:[0018]数据划分模块,用于根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据;以及
[0019]数据存储模块,用于采用普通哈希表方式存储所述高访问率数据,采用索引链表方式存储所述低访问率数据。
[0020]在本发明所述的数据存储装置中,所述数据划分模块具体用于将所述访问频率大于所有存储数据的平均访问频率的存储数据设定为所述高访问率数据,将所述访问频率小于所有存储数据的平均访问频率的存储数据设定为所述低访问率数据。
[0021]在本发明所述的数据存储装置中,所述数据存储装置还包括:
[0022]关联模块,用于在所述高访问率数据中设置指向相应用户的所述低访问率数据的指针。
[0023]在本发明所述的数据存储装置中,所述关联模块用于在所述高访问率数据的尾部设置指向相应用户的所述低访问率数据的指针。
[0024]在本发明所述的数据存储装置中,每个用户的所述高访问率数据为定长数据,每个用户的所述低访问率数据为非定长数据。
[0025]相较于现有技术,本发明的数据存储方法及装置根据存储数据的访问频率采用不同的方式进行存储,从而提高了内存有效使用率和系统读取性能。解决了现有的数据存储方法及装置的内存有效使用率较低或系统读取性能较低的技术问题。
[0026]为让本发明的上述内容能更明显易懂,下文特举优选实施例,并配合所附图式,作详细说明如下:
【专利附图】

【附图说明】
[0027]图1为本发明所述的数据存储方法的优选实施例的流程图;
[0028]图2为本发明所述的数据存储方法的优选实施例中的存储数据的存储方式的示意图;
[0029]图3为本发明所述的数据存储装置的优选实施例的结构示意图;
[0030]其中,附图标记说明如下:
[0031]31、数据划分模块;
[0032]32、数据存储模块;
[0033]33、关联模块。
【具体实施方式】
[0034]以下各实施例的说明是参考附加的图式,用以例示本发明可用以实施的特定实施例。本发明所提到的方向用语,例如「上」、「下」、「前」、「后」、「左」、「右」、「内」、「外」、「侧面」等,仅是参考附加图式的方向。因此,使用的方向用语是用以说明及理解本发明,而非用以限制本发明。
[0035]在图中,结构相似的单元是以相同标号表示。
[0036]如图1所示,图1为本发明所述的数据存储方法的优选实施例的流程图。该数据存储方法开始于:
[0037]步骤101,根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据;
[0038]步骤102,采用普通哈希表方式存储高访问率数据,采用索引链表方式存储低访问率数据;
[0039]步骤103,在高访问率数据中设置指向相应用户的低访问率数据的指针;
[0040]该数据存储方法结束于步骤103。
[0041]下面根据图2详细说明本发明的数据存储方法的各步骤的流程,图2为本发明所述的数据存储方法的优选实施例中的存储数据的存储方式的示意图。
[0042]在步骤101中,获取所有存储数据(这里的存储数据按业务进行分类)的访问频率,该访问频率可以通过检测实际访问频率得到,也可通过存储数据的设计要求得到(即设计者希望的访问频率)。然后根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据,具体可为:计算所有存储数据的平均访问频率,将访问频率大于该平均访问频率的存储数据设定为高访问率数据,将访问频率小于该平均访问频率的存储数据设定为低访问量数据等。如计算得到平均访问频率为1000次/秒,则访问频率大于1000次/秒的存储数据设定为高访问率数据,访问频率小于1000次/秒的存储数据设定为低访问率数据。存储数据的访问频率的划分方法可有多种,因此采用不同的存储数据的访问频率的划分方法并不限制本发明的保护范围。
[0043]随后来到步骤102。
[0044]在步骤102中,采用普通哈希表方式存储每个用户的高访问率数据,采用索引链表方式存储每个用户的低访问率数据。其中采用普通哈希表方式存储的高访问率数据为定长数据,其访问频率较高,且用户占有基数较大(即基本所有用户访问时都会读取上述的高访问率数据);而采用索引链表方式存储的数据为非定长数据,其访问频率较低,或只有小部分用户才会读取该数据。
[0045]具体的存储数据的存储方式如图2所示,其中用户Dl和用户D2的业务数据(存储数据)被划分为高访问率数据A和低访问率数据B,其中用户Dl的业务数据包括Dl.A、Dl.B1、Dl.B2以及Dl.B3,用户D2的业务数据包括D2.A、D2.BI以及D2.B2。其中Dl.A和D2.A为采用普通哈希表方式存储的高访问率数据,Dl.B1、Dl.B2、Dl.B3、D2.BI以及D2.B2为采用索引链表方式存储的低访问率数据。
[0046]在存储数据的读取性能方面,当用户只读取高访问率数据时,读取操作可以直接在普通哈希表部分完成,不需要涉及到索引链表结构中存储数据的读取和解析,这样对于高访问率数据Dl.A和D2.A的读取,能够提供和普通哈希表结构同样的读取性能。当用户只读取低访问率数据时,由于涉及到链表操作,数据读取代价较大;但由于低访问率数据的访问频率远低于高访问率数据的访问频率,故整个存储数据的总体读取性能主要由高访问率数据的读取性能确定,较接近与普通哈希表结构的读取性能。
[0047]在内存的有效使用率方面,由于索引链表采用可变的存储空间存储低访问率数据,因此其内存的有效使用率较高。而对于高访问率数据,虽其采用定长方式存储业务数据,但由于每个用户的高访问率数据的长度均接近与高访问率数据的最大长度(该最大长度由设置为高访问率数据的所有业务数据决定),即高访问率数据定义为所有用户均会进行访问或大部分用户会进行访问的业务数据,这样使得高访问率数据的内存的有效使用率也高于一般的普通哈希表的内存有效使用率,如高访问率数据定义为所有用户均会进行访问的业务数据,则高访问率数据A的内存的有效使用率也可达到100%。
[0048]随后来到步骤103。
[0049]在步骤103中,在高访问率数据中设置指向相应用户的低访问率数据的指针,这样可以实现高访问率数据A和相应用户的低访问率数据的直接关联,使得用户读取数据时更加方便快捷。这里优选将指针设置在高访问率数据的尾部,如图2所示,在用户Dl的高访问率数据Dl.A的尾部设置有指向用户Dl的低访问率数据Dl.BI的指针,在用户D2的高访问率数据D2.A的尾部设置有指向用户D2的低访问率数据D2.BI的指针。这样指针的设置不会对普通哈希表结构的高访问率数据的存储产生影响,保证高访问率数据的连续性。
[0050]这样即完成了本发明的整个数据存储方法。
[0051]本发明还涉及一种数据存储装置,如图3所示,图3为本发明所述的数据存储装置的优选实施例的结构示意图。该数据存储装置包括数据划分模块31、数据存储模块32以及关联模块33。该数据划分模块31用于根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据;数据存储模块32用于采用普通哈希表方式存储高访问率数据,采用索引链表方式存储低访问率数据;关联模块33用于在高访问率数据中设置指向相应用户的低访问率数据的指针。
[0052]本发明的数据存储装置使用时,首先获取所有存储数据的访问频率,数据存储装置31根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据,如将访问频率大于所有存储数据的平均访问频率的存储数据设定为高访问率数据,将访问频率小于所有存储数据的平均访问频率的存储数据设定为低访问率数据,其中高访问率数据为定长数据,低访问率数据为非定长数据。
[0053]随后数据存储模块32采用普通哈希表方式存储每个用户的高访问率数据,采用索引链表方式存储每个用户的低访问率数据。
[0054]最后关联模块33在高访问率数据中设置指向相应用户的低访问率数据的指针,这里优选将该指针设置在高访问率数据的尾部。这样即完成了本发明的数据存储装置的数据存储过程。
[0055]本发明的数据存储装置的具体使用方法与上述的数据存储方法的具体实施例中的描述相同或相似,请参见上述数据存储方法的具体实施例。
[0056]本发明的数据存储方法及装置根据存储数据的访问频率采用不同的方式进行存储。本发明相较普通哈希表结构,对业务数据中的低访问率数据进行存储优化,提高了内存的有效使用率;相较索引链表结构,增强业务数据中的高访问率数据的读取性能;使得整个存储数据的总体读取性能较接近与普通哈希表结构的读取性能。解决了现有的数据存储方法及装置的内存有效使用率较低或系统读取性能较低的技术问题。
[0057]综上所述,虽然本发明已以优选实施例揭露如上,但上述优选实施例并非用以限制本发明,本领域的普通技术人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。
【权利要求】
1.一种数据存储方法,其特征在于,包括步骤: 根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据;以及 采用普通哈希表方式存储所述高访问率数据,采用索引链表方式存储所述低访问率数据。
2.根据权利要求1所述的数据存储方法,其特征在于,所述根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据的步骤具体为: 将所述访问频率大于所有存储数据的平均访问频率的存储数据设定为所述高访问率数据,将所述访问频率小于所有存储数据的平均访问频率的存储数据设定为所述低访问率数据。
3.根据权利要求1所述的数据存储方法,其特征在于,所述数据存储方法还包括步骤: 在所述高访问率数据中设置指向相应用户的所述低访问率数据的指针。
4.根据权利要求3所述的数据存储方法,其特征在于,所述指针设置在所述高访问率数据的尾部。
5.根据权利要求1所述的数据存储方法,其特征在于,每个用户的所述高访问率数据为定长数据,每个用户的所述低访问率数据为非定长数据。
6.一种数据存储装置,其特征在于,包括: 数据划分模块,用于根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据;以及 数据存储模块,用于采用普通哈希表方式存储所述高访问率数据,采用索引链表方式存储所述低访问率数据。
7.根据权利要求6所述的数据存储装置,其特征在于,所述数据划分模块具体用于将所述访问频率大于所有存储数据的平均访问频率的存储数据设定为所述高访问率数据,将所述访问频率小于所有存储数据的平均访问频率的存储数据设定为所述低访问率数据。
8.根据权利要求6所述的数据存储装置,其特征在于,所述数据存储装置还包括: 关联模块,用于在所述高访问率数据中设置指向相应用户的所述低访问率数据的指针。
9.根据权利要求8所述的数据存储装置,其特征在于,所述关联模块用于在所述高访问率数据的尾部设置指向相应用户的所述低访问率数据的指针。
10.根据权利要求6所述的数据存储装置,其特征在于,每个用户的所述高访问率数据为定长数据,每个用户的所述低访问率数据为非定长数据。
【文档编号】G06F17/30GK103793329SQ201210418838
【公开日】2014年5月14日 申请日期:2012年10月26日 优先权日:2012年10月26日
【发明者】李钟伟, 田明 申请人:腾讯科技(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1