CN103793329A - 数据存储方法及数据存储装置 - Google Patents

数据存储方法及数据存储装置 Download PDF

Info

Publication number
CN103793329A
CN103793329A CN201210418838.3A CN201210418838A CN103793329A CN 103793329 A CN103793329 A CN 103793329A CN 201210418838 A CN201210418838 A CN 201210418838A CN 103793329 A CN103793329 A CN 103793329A
Authority
CN
China
Prior art keywords
data
people logging
storage
high rate
access frequency
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.)
Granted
Application number
CN201210418838.3A
Other languages
English (en)
Other versions
CN103793329B (zh
Inventor
李钟伟
田明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Beijing Co Ltd
Original Assignee
Tencent Technology Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Beijing Co Ltd filed Critical Tencent Technology Beijing Co Ltd
Priority to CN201210418838.3A priority Critical patent/CN103793329B/zh
Publication of CN103793329A publication Critical patent/CN103793329A/zh
Application granted granted Critical
Publication of CN103793329B publication Critical patent/CN103793329B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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 (10)

1.一种数据存储方法,其特征在于,包括步骤:
根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据;以及
采用普通哈希表方式存储所述高访问率数据,采用索引链表方式存储所述低访问率数据。
2.根据权利要求1所述的数据存储方法,其特征在于,所述根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据的步骤具体为:
将所述访问频率大于所有存储数据的平均访问频率的存储数据设定为所述高访问率数据,将所述访问频率小于所有存储数据的平均访问频率的存储数据设定为所述低访问率数据。
3.根据权利要求1所述的数据存储方法,其特征在于,所述数据存储方法还包括步骤:
在所述高访问率数据中设置指向相应用户的所述低访问率数据的指针。
4.根据权利要求3所述的数据存储方法,其特征在于,所述指针设置在所述高访问率数据的尾部。
5.根据权利要求1所述的数据存储方法,其特征在于,每个用户的所述高访问率数据为定长数据,每个用户的所述低访问率数据为非定长数据。
6.一种数据存储装置,其特征在于,包括:
数据划分模块,用于根据存储数据的访问频率将每个用户的存储数据划分为高访问率数据和低访问率数据;以及
数据存储模块,用于采用普通哈希表方式存储所述高访问率数据,采用索引链表方式存储所述低访问率数据。
7.根据权利要求6所述的数据存储装置,其特征在于,所述数据划分模块具体用于将所述访问频率大于所有存储数据的平均访问频率的存储数据设定为所述高访问率数据,将所述访问频率小于所有存储数据的平均访问频率的存储数据设定为所述低访问率数据。
8.根据权利要求6所述的数据存储装置,其特征在于,所述数据存储装置还包括:
关联模块,用于在所述高访问率数据中设置指向相应用户的所述低访问率数据的指针。
9.根据权利要求8所述的数据存储装置,其特征在于,所述关联模块用于在所述高访问率数据的尾部设置指向相应用户的所述低访问率数据的指针。
10.根据权利要求6所述的数据存储装置,其特征在于,每个用户的所述高访问率数据为定长数据,每个用户的所述低访问率数据为非定长数据。
CN201210418838.3A 2012-10-26 2012-10-26 数据存储方法及数据存储装置 Active CN103793329B (zh)

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 true CN103793329A (zh) 2014-05-14
CN103793329B 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107133183A (zh) * 2017-04-11 2017-09-05 深圳市云舒网络技术有限公司 一种基于tcmu虚拟块设备的缓存数据访问方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010013087A1 (en) * 1999-12-20 2001-08-09 Ronstrom Ulf Mikael Caching of objects in disk-based databases
US6748487B1 (en) * 1998-02-04 2004-06-08 Hitachi, Ltd. Disk cache control method, disk array system, and storage system
CN1828556A (zh) * 2005-03-05 2006-09-06 腾讯科技(深圳)有限公司 一种数据存储的方法、系统及设备
US20100191922A1 (en) * 2009-01-29 2010-07-29 International Business Machines Corporation Data storage performance enhancement through a write activity level metric recorded in high performance block storage metadata
CN102364463A (zh) * 2011-09-19 2012-02-29 浪潮电子信息产业股份有限公司 一种基于Hash查找CAM的方法
WO2012077162A1 (en) * 2010-12-08 2012-06-14 Hitachi, Ltd. Storage apparatus

Patent Citations (6)

* Cited by examiner, † Cited by third party
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
US20010013087A1 (en) * 1999-12-20 2001-08-09 Ronstrom Ulf Mikael Caching of objects in disk-based databases
CN1828556A (zh) * 2005-03-05 2006-09-06 腾讯科技(深圳)有限公司 一种数据存储的方法、系统及设备
US20100191922A1 (en) * 2009-01-29 2010-07-29 International Business Machines Corporation Data storage performance enhancement through a write activity level metric recorded in high performance block storage metadata
WO2012077162A1 (en) * 2010-12-08 2012-06-14 Hitachi, Ltd. Storage apparatus
CN102364463A (zh) * 2011-09-19 2012-02-29 浪潮电子信息产业股份有限公司 一种基于Hash查找CAM的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张水平: "《数据结构及算法分析》", 31 August 2003 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107133183A (zh) * 2017-04-11 2017-09-05 深圳市云舒网络技术有限公司 一种基于tcmu虚拟块设备的缓存数据访问方法及系统
CN107133183B (zh) * 2017-04-11 2020-06-30 深圳市联云港科技有限公司 一种基于tcmu虚拟块设备的缓存数据访问方法及系统

Also Published As

Publication number Publication date
CN103793329B (zh) 2017-12-22

Similar Documents

Publication Publication Date Title
US9851917B2 (en) Method for de-duplicating data and apparatus therefor
CN107168657B (zh) 一种基于分布式块存储的虚拟磁盘分层缓存设计方法
US20180253456A1 (en) Disk optimized paging for column oriented databases
US8364909B2 (en) Determining a conflict in accessing shared resources using a reduced number of cycles
CN105117417A (zh) 一种读优化的内存数据库Trie树索引方法
CN103914483B (zh) 文件存储方法、装置及文件读取方法、装置
CN104809179A (zh) 访问哈希表的装置和方法
CN104115133A (zh) 复合非易失性存储设备的数据迁移
US10296497B2 (en) Storing a key value to a deleted row based on key range density
CN103902702A (zh) 一种数据存储系统和存储方法
CN104731896A (zh) 一种数据处理方法及系统
US9519679B2 (en) Techniques for query homogenization in cache operations
CN103473314A (zh) 一种基于共享内存的键值对存储方法及装置
CN102880671A (zh) 一种面向分布式文件系统的主动重复数据删除方法
US20150186255A1 (en) Re-use of invalidated data in buffers
CN103823634A (zh) 一种支持无随机写模式的数据处理方法及系统
US8332595B2 (en) Techniques for improving parallel scan operations
CN104331525A (zh) 基于重复数据删除的共享方法
CN104883394A (zh) 一种均衡服务器负载的方法和系统
CN104268225A (zh) 一种多维自由度寻址的文件系统架构及其生成和访问方式
CN103902693A (zh) 一种读优化的内存数据库t树索引结构的方法
CN105808451A (zh) 一种数据缓存方法以及相关装置
CN108804571B (zh) 一种数据存储方法、装置以及设备
CN104252415B (zh) 一种重新分布数据的方法和系统
CN103793329A (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