CN103793329B - 数据存储方法及数据存储装置 - Google Patents
数据存储方法及数据存储装置 Download PDFInfo
- Publication number
- CN103793329B CN103793329B CN201210418838.3A CN201210418838A CN103793329B CN 103793329 B CN103793329 B CN 103793329B CN 201210418838 A CN201210418838 A CN 201210418838A CN 103793329 B CN103793329 B CN 103793329B
- Authority
- CN
- China
- Prior art keywords
- data
- people logging
- high rate
- access frequency
- data storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种数据存储方法及装置,该数据存储方法包括步骤:根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据;以及采用普通哈希表方式存储高访问率数据,采用索引链表方式存储低访问率数据。本发明还涉及一种数据存储装置。本发明的数据存储方法及装置根据存储数据的访问频率采用不同的方式进行存储,从而在内存有效使用率方面和系统读取性能方面的性能都较高。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种高效的数据存储方法及装置。
背景技术
随着计算机硬件技术的发展,特别是内存容量的增加,系统希望可以将全部用户的数据都加载在到内存中,以提高系统的读写访问性能。
现有的内存数据存储方法可分为两种:普通哈希表(Hash)以及索引链表(Index+Link)。两种存储方法都可提供高性能的数据访问能力。在数据存储上,普通哈希表通常要求某个用户的存储数据是定长的,对于非定长的存储数据,普通哈希表也以存储数据的最大长度分配存储空间;这样如非定长的存储数据过多,会在一定程度上降低内存的有效使用率。索引链表能够以可变的存储空间存储非定长的存储数据,提高了内存的有效使用率,但在读取索引链表中的任何存储数据时,通常需要完整的读取整个链表结构并进行解析;这样在进行索引链表中存储数据的读取和解析时,会涉及到内存中大量存储数据的拷贝,从而影响系统的读取性能。
故,有必要提供一种数据存储方法及装置,以解决现有技术所存在的问题。
发明内容
本发明的目的在于提供一种提高内存有效使用率和系统读取性能的数据存储方法及装置。解决了现有的数据存储方法及装置的内存有效使用率较低或系统读取性能较低的技术问题。
为解决上述问题,本发明提供的技术方案如下:
本发明涉及一种数据存储方法,其包括步骤:
根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据;以及
采用普通哈希表方式存储所述高访问率数据,采用索引链表方式存储所述低访问率数据。
在本发明所述的数据存储方法中,所述根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据的步骤具体为:
将所述访问频率大于所有存储数据的平均访问频率的存储数据设定为所述高访问率数据,将所述访问频率小于所有存储数据的平均访问频率的存储数据设定为所述低访问率数据。
在本发明所述的数据存储方法中,所述数据存储方法还包括步骤:
在所述高访问率数据中设置指向相应用户的所述低访问率数据的指针。
在本发明所述的数据存储方法中,所述指针设置在所述高访问率数据的尾部。
在本发明所述的数据存储方法中,每个用户的所述高访问率数据为定长数据,每个用户的所述低访问率数据为非定长数据。
本发明还涉及一种数据存储装置,其包括:
数据划分模块,用于根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据;以及
数据存储模块,用于采用普通哈希表方式存储所述高访问率数据,采用索引链表方式存储所述低访问率数据。
在本发明所述的数据存储装置中,所述数据划分模块具体用于将所述访问频率大于所有存储数据的平均访问频率的存储数据设定为所述高访问率数据,将所述访问频率小于所有存储数据的平均访问频率的存储数据设定为所述低访问率数据。
在本发明所述的数据存储装置中,所述数据存储装置还包括:
关联模块,用于在所述高访问率数据中设置指向相应用户的所述低访问率数据的指针。
在本发明所述的数据存储装置中,所述关联模块用于在所述高访问率数据的尾部设置指向相应用户的所述低访问率数据的指针。
在本发明所述的数据存储装置中,每个用户的所述高访问率数据为定长数据,每个用户的所述低访问率数据为非定长数据。
相较于现有技术,本发明的数据存储方法及装置根据存储数据的访问频率采用不同的方式进行存储,从而提高了内存有效使用率和系统读取性能。解决了现有的数据存储方法及装置的内存有效使用率较低或系统读取性能较低的技术问题。
为让本发明的上述内容能更明显易懂,下文特举优选实施例,并配合所附图式,作详细说明如下:
附图说明
图1为本发明所述的数据存储方法的优选实施例的流程图;
图2为本发明所述的数据存储方法的优选实施例中的存储数据的存储方式的示意图;
图3为本发明所述的数据存储装置的优选实施例的结构示意图;
其中,附图标记说明如下:
31、数据划分模块;
32、数据存储模块;
33、关联模块。
具体实施方式
以下各实施例的说明是参考附加的图式,用以例示本发明可用以实施的特定实施例。本发明所提到的方向用语,例如「上」、「下」、「前」、「后」、「左」、「右」、「内」、「外」、「侧面」等,仅是参考附加图式的方向。因此,使用的方向用语是用以说明及理解本发明,而非用以限制本发明。
在图中,结构相似的单元是以相同标号表示。
如图1所示,图1为本发明所述的数据存储方法的优选实施例的流程图。该数据存储方法开始于:
步骤101,根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据;
步骤102,采用普通哈希表方式存储高访问率数据,采用索引链表方式存储低访问率数据;
步骤103,在高访问率数据中设置指向相应用户的低访问率数据的指针;
该数据存储方法结束于步骤103。
下面根据图2详细说明本发明的数据存储方法的各步骤的流程,图2为本发明所述的数据存储方法的优选实施例中的存储数据的存储方式的示意图。
在步骤101中,获取所有存储数据(这里的存储数据按业务进行分类)的访问频率,该访问频率可以通过检测实际访问频率得到,也可通过存储数据的设计要求得到(即设计者希望的访问频率)。然后根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据,具体可为:计算所有存储数据的平均访问频率,将访问频率大于该平均访问频率的存储数据设定为高访问率数据,将访问频率小于该平均访问频率的存储数据设定为低访问量数据等。如计算得到平均访问频率为1000次/秒,则访问频率大于1000次/秒的存储数据设定为高访问率数据,访问频率小于1000次/秒的存储数据设定为低访问率数据。存储数据的访问频率的划分方法可有多种,因此采用不同的存储数据的访问频率的划分方法并不限制本发明的保护范围。
随后来到步骤102。
在步骤102中,采用普通哈希表方式存储每个用户的高访问率数据,采用索引链表方式存储每个用户的低访问率数据。其中采用普通哈希表方式存储的高访问率数据为定长数据,其访问频率较高,且用户占有基数较大(即基本所有用户访问时都会读取上述的高访问率数据);而采用索引链表方式存储的数据为非定长数据,其访问频率较低,或只有小部分用户才会读取该数据。
具体的存储数据的存储方式如图2所示,其中用户D1和用户D2的业务数据(存储数据)被划分为高访问率数据A和低访问率数据B,其中用户D1的业务数据包括D1.A、D1.B1、D1.B2以及D1.B3,用户D2的业务数据包括D2.A、D2.B1以及D2.B2。其中D1.A和D2.A为采用普通哈希表方式存储的高访问率数据,D1.B1、D1.B2、D1.B3、D2.B1以及D2.B2为采用索引链表方式存储的低访问率数据。
在存储数据的读取性能方面,当用户只读取高访问率数据时,读取操作可以直接在普通哈希表部分完成,不需要涉及到索引链表结构中存储数据的读取和解析,这样对于高访问率数据D1.A和D2.A的读取,能够提供和普通哈希表结构同样的读取性能。当用户只读取低访问率数据时,由于涉及到链表操作,数据读取代价较大;但由于低访问率数据的访问频率远低于高访问率数据的访问频率,故整个存储数据的总体读取性能主要由高访问率数据的读取性能确定,较接近与普通哈希表结构的读取性能。
在内存的有效使用率方面,由于索引链表采用可变的存储空间存储低访问率数据,因此其内存的有效使用率较高。而对于高访问率数据,虽其采用定长方式存储业务数据,但由于每个用户的高访问率数据的长度均接近与高访问率数据的最大长度(该最大长度由设置为高访问率数据的所有业务数据决定),即高访问率数据定义为所有用户均会进行访问或大部分用户会进行访问的业务数据,这样使得高访问率数据的内存的有效使用率也高于一般的普通哈希表的内存有效使用率,如高访问率数据定义为所有用户均会进行访问的业务数据,则高访问率数据A的内存的有效使用率也可达到100%。
随后来到步骤103。
在步骤103中,在高访问率数据中设置指向相应用户的低访问率数据的指针,这样可以实现高访问率数据A和相应用户的低访问率数据的直接关联,使得用户读取数据时更加方便快捷。这里优选将指针设置在高访问率数据的尾部,如图2所示,在用户D1的高访问率数据D1.A的尾部设置有指向用户D1的低访问率数据D1.B1的指针,在用户D2的高访问率数据D2.A的尾部设置有指向用户D2的低访问率数据D2.B1的指针。这样指针的设置不会对普通哈希表结构的高访问率数据的存储产生影响,保证高访问率数据的连续性。
这样即完成了本发明的整个数据存储方法。
本发明还涉及一种数据存储装置,如图3所示,图3为本发明所述的数据存储装置的优选实施例的结构示意图。该数据存储装置包括数据划分模块31、数据存储模块32以及关联模块33。该数据划分模块31用于根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据;数据存储模块32用于采用普通哈希表方式存储高访问率数据,采用索引链表方式存储低访问率数据;关联模块33用于在高访问率数据中设置指向相应用户的低访问率数据的指针。
本发明的数据存储装置使用时,首先获取所有存储数据的访问频率,数据存储装置31根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据,如将访问频率大于所有存储数据的平均访问频率的存储数据设定为高访问率数据,将访问频率小于所有存储数据的平均访问频率的存储数据设定为低访问率数据,其中高访问率数据为定长数据,低访问率数据为非定长数据。
随后数据存储模块32采用普通哈希表方式存储每个用户的高访问率数据,采用索引链表方式存储每个用户的低访问率数据。
最后关联模块33在高访问率数据中设置指向相应用户的低访问率数据的指针,这里优选将该指针设置在高访问率数据的尾部。这样即完成了本发明的数据存储装置的数据存储过程。
本发明的数据存储装置的具体使用方法与上述的数据存储方法的具体实施例中的描述相同或相似,请参见上述数据存储方法的具体实施例。
本发明的数据存储方法及装置根据存储数据的访问频率采用不同的方式进行存储。本发明相较普通哈希表结构,对业务数据中的低访问率数据进行存储优化,提高了内存的有效使用率;相较索引链表结构,增强业务数据中的高访问率数据的读取性能;使得整个存储数据的总体读取性能较接近与普通哈希表结构的读取性能。解决了现有的数据存储方法及装置的内存有效使用率较低或系统读取性能较低的技术问题。
综上所述,虽然本发明已以优选实施例揭露如上,但上述优选实施例并非用以限制本发明,本领域的普通技术人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。
Claims (6)
1.一种数据存储方法,其特征在于,包括步骤:
根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据;以及
采用普通哈希表方式存储所述高访问率数据,采用索引链表方式存储所述低访问率数据;
其中在所述高访问率数据的尾部设置指向相应用户的所述低访问率数据的指针;
其中所述高访问率数据为定长数据,所述高访问率数据的长度均接近于所述高访问率数据的最大长度,所述最大长度由所述高访问率数据的所有业务数据决定。
2.根据权利要求1所述的数据存储方法,其特征在于,所述根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据的步骤具体为:
将所述访问频率大于所有存储数据的平均访问频率的存储数据设定为所述高访问率数据,将所述访问频率小于所有存储数据的平均访问频率的存储数据设定为所述低访问率数据。
3.根据权利要求1所述的数据存储方法,其特征在于,每个用户的所述低访问率数据为非定长数据。
4.一种数据存储装置,其特征在于,包括:
数据划分模块,用于根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据;
数据存储模块,用于采用普通哈希表方式存储所述高访问率数据,采用索引链表方式存储所述低访问率数据;以及
关联模块,用于在所述高访问率数据的尾部设置指向相应用户的所述低访问率数据的指针;
其中所述高访问率数据为定长数据,所述高访问率数据的长度均接近于所述高访问率数据的最大长度,所述最大长度由所述高访问率数据的所有业务数据决定。
5.根据权利要求4所述的数据存储装置,其特征在于,所述数据划分模块具体用于将所述访问频率大于所有存储数据的平均访问频率的存储数据设定为所述高访问率数据,将所述访问频率小于所有存储数据的平均访问频率的存储数据设定为所述低访问率数据。
6.根据权利要求4所述的数据存储装置,其特征在于,每个用户的所述低访问率数据为非定长数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210418838.3A CN103793329B (zh) | 2012-10-26 | 2012-10-26 | 数据存储方法及数据存储装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210418838.3A CN103793329B (zh) | 2012-10-26 | 2012-10-26 | 数据存储方法及数据存储装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103793329A CN103793329A (zh) | 2014-05-14 |
CN103793329B true CN103793329B (zh) | 2017-12-22 |
Family
ID=50669028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210418838.3A Active CN103793329B (zh) | 2012-10-26 | 2012-10-26 | 数据存储方法及数据存储装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103793329B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107133183B (zh) * | 2017-04-11 | 2020-06-30 | 深圳市联云港科技有限公司 | 一种基于tcmu虚拟块设备的缓存数据访问方法及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6748487B1 (en) * | 1998-02-04 | 2004-06-08 | Hitachi, Ltd. | Disk cache control method, disk array system, and storage system |
DE19961499A1 (de) * | 1999-12-20 | 2001-07-05 | Ericsson Telefon Ab L M | Caching von Objekten in Platten-gestützten Datenbanken |
CN100367241C (zh) * | 2005-03-05 | 2008-02-06 | 腾讯科技(深圳)有限公司 | 一种数据存储的方法、系统及设备 |
US8190832B2 (en) * | 2009-01-29 | 2012-05-29 | International Business Machines Corporation | Data storage performance enhancement through a write activity level metric recorded in high performance block storage metadata |
US8463981B2 (en) * | 2010-12-08 | 2013-06-11 | Hitachi, Ltd. | Storage apparatus having deduplication unit |
CN102364463B (zh) * | 2011-09-19 | 2013-07-10 | 浪潮电子信息产业股份有限公司 | 一种基于Hash查找CAM的方法 |
-
2012
- 2012-10-26 CN CN201210418838.3A patent/CN103793329B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN103793329A (zh) | 2014-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110149803B (zh) | 数据存储方法、系统及终端设备 | |
US11132346B2 (en) | Information processing method and apparatus | |
US9323685B2 (en) | Data storage space processing method and processing system, and data storage server | |
US9558258B2 (en) | Hybrid database table stored as both row and column store | |
Huang et al. | Research on architecture and query performance based on distributed graph database Neo4j | |
CN103577440B (zh) | 一种非关系型数据库中的数据处理方法和装置 | |
CN102662868B (zh) | 用于处理器的动态组相联高速缓存装置及其访问方法 | |
US9990276B2 (en) | Read-write control method for memory, and corresponding memory and server | |
CN103488704B (zh) | 一种数据存储方法及装置 | |
US20100257181A1 (en) | Dynamic Hash Table for Efficient Data Access In A Relational Database System | |
CN105320775A (zh) | 数据的存取方法和装置 | |
CN103678571B (zh) | 应用于单台多核处理器主机的多线程网络爬虫执行方法 | |
CN103942289A (zh) | 一种Hadoop上面向范围查询的内存缓存方法 | |
CN105117417A (zh) | 一种读优化的内存数据库Trie树索引方法 | |
CN102682108B (zh) | 一种行列混合的数据库存储方法 | |
US20150012557A1 (en) | Minimizing result set size when converting from asymmetric to symmetric requests | |
CN110543495A (zh) | 游标遍历存储方法及装置 | |
CN108021702A (zh) | 基于LSM-tree的分级存储方法、装置、OLAP数据库系统及介质 | |
CN112148217B (zh) | 全闪存储系统的重删元数据的缓存方法、装置及介质 | |
CN106503008A (zh) | 文件存储方法和装置及文件查询方法和装置 | |
CN101763433B (zh) | 一种数据存储系统及方法 | |
CN105159616A (zh) | 一种磁盘空间管理方法及装置 | |
CN103914483A (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN103543959B (zh) | 海量数据高速缓存的方法及装置 | |
CN104166649B (zh) | 一种用于搜索引擎的缓存方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |