CN107436738A - 一种数据存储方法及系统 - Google Patents
一种数据存储方法及系统 Download PDFInfo
- Publication number
- CN107436738A CN107436738A CN201710707620.2A CN201710707620A CN107436738A CN 107436738 A CN107436738 A CN 107436738A CN 201710707620 A CN201710707620 A CN 201710707620A CN 107436738 A CN107436738 A CN 107436738A
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- compression
- written
- disk
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种数据存储方法及系统。该方法包括:获取待存储数据;将所述待存储数据划分成数据块;将所述数据块写入到内存中;对所述内存中的所述数据块进行并行压缩处理,得到数据压缩包;将所述数据压缩包写入到磁盘中。本发明公开的数据存储方法及系统,提高了数据写入磁盘的速度。
Description
技术领域
本发明涉及数据存储技术领域,特别是涉及一种数据存储方法及系统。
背景技术
随着互联网技术的发展,大数据时代的到来,人们对数据访问的需求越来越多。为了提高访问的速度和可靠性,通常把数据存储到缓存中,具体为分布到一系列服务器上,这种数据存储的方式称为分布式缓存。
分布式缓存的出现使用户可以高性能地读取数据、动态地扩展缓存节点、自动发现和切换故障节点、自动均衡数据分区,而且能够为使用者提供图形化的管理界面,部署和维护都十分方便。
Redis是一个使用ANSIC编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。根据月度排行网站DB-Engines.com的数据显示,Redis是最流行的键值对存储数据库,是目前最流行的分布式缓存的一种具体的技术实现手段。
然而Redis虽然能提高整个系统的响应速度和存储能力,但Redis为了提高检索的速度,把数据全部存储到内存中,这样使得当数据规模较大时,对机器内存的要求太高,必然增加成本。为了满足用户对存储的需求,通常把一些非热点的数据写入到磁盘中,此时需要保证写入磁盘的速度很快。而Redis本身自带的写入方式为基于附加文件(AOF,Append-only file)的协议文本的方式,这种方式直接将数据写入磁盘,使得数据写入磁盘的效率较低。
发明内容
本发明的目的是提供一种数据存储方法及系统,以提高数据写入磁盘的速度。
为实现上述目的,本发明提供了如下方案:
一种数据存储方法,包括:
获取待存储数据;
将所述待存储数据划分成数据块;
将所述数据块写入到内存中;
对所述内存中的所述数据块进行并行压缩处理,得到数据压缩包;
将所述数据压缩包写入到磁盘中。
可选的,所述将所述待存储数据划分成数据块,具体包括:
利用LSM树将所述待存储数据划分成相同大小的所述数据块。
可选的,所述将所述数据块写入到内存中,具体包括:
生成所述数据块的日志文件;
将所述日志文件写入到所述磁盘中;
将所述数据块写入到所述内存中。
可选的,所述对所述内存中的所述数据块进行并行压缩处理,得到数据压缩包,具体包括:
利用snappy算法对所述数据块进行压缩,并引入AVX指令集在一个时钟周期内按字节进行并行压缩。
可选的,在所述将所述数据压缩包写入到磁盘之后,还包括:
删除所述数据压缩包所对应的所述数据块的日志文件。
本发明还公开了一种数据存储系统,包括:
获取模块,用于获取待存储数据;
划分模块,用于将所述待存储数据划分成数据块;
写内存模块,用于将所述数据块写入到内存中;
压缩模块,用于对所述内存中的所述数据块进行并行压缩处理,得到数据压缩包;
写磁盘模块,用于将所述数据压缩包写入到磁盘中。
可选的,所述划分模块,具体包括:
等划分单元,用于利用LSM树将所述待存储数据划分成相同大小的所述数据块。
可选的,所述写内存模块,具体包括:
日志生成单元,用于生成所述数据块的日志文件;
日志写入磁盘单元,用于将所述日志文件写入到所述磁盘中;
数据写内存单元,用于将所述数据块写入到所述内存中。
可选的,所述压缩模块,具体包括:
压缩单元,用于利用snappy算法对所述数据块进行压缩,并引入AVX指令集在一个时钟周期内按字节进行并行压缩。
可选的,本发明的数据存储系统还包括:
日志删除模块,用于删除所述数据压缩包所对应的所述数据块的日志文件。
根据本发明提供的具体实施例,本发明公开了以下技术效果:本发明在数据存储到磁盘的过程中,先对数据进行压缩处理,然后将压缩后的数据写入磁盘,提高了写入的速度。同时本发明的压缩方式采用并行压缩的方式,加快了压缩的速度,进一步提高了数据写入磁盘的速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明数据存储方法实施例的方法流程图;
图2为本发明数据存储系统实施例的系统结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明数据存储方法实施例的方法流程图。
参见图1,该数据存储方法包括:
步骤101:获取待存储数据。
步骤102:将所述待存储数据划分成数据块;具体为:
利用LSM树将所述待存储数据划分成相同大小的所述数据块。采用LSM树对数据进行划分,提高Redis存储的序列化程度,同时提高数据顺序写入磁盘的能力,便于按照key-value进行查找。
步骤103:将所述数据块写入到内存中;具体为:
生成所述数据块的日志文件;
将所述日志文件写入到所述磁盘中;
将所述数据块写入到所述内存中。
本发明的数据存储方法在内存设置了mtables数据结构,在磁盘中设置了
sttablesindex数据结构,同时还设置用于存储日志文件的logstructfile数据结构。当获
取到待存储数据时,对所述待存储数据被划分成的数据块生成日志文件,先将所述日志文
件写入到所述logstructfile数据结构中,然后再将所述数据块按顺序写入到所述内存中。
当内存中的所述mtables数据结构填满后,所述mtables数据结构中的数据块就会被按顺序
写入到磁盘中的sttablesindex数据结构中。所述数据块按顺序存放是为了方便按key-
value进行查找。
在该实施例中,所述数据块的大小为32kb。
步骤104:对所述内存中的所述数据块进行并行压缩处理,得到数据压缩包,具体为:
利用snappy算法对所述数据块进行压缩,并引入AVX指令集在一个时钟周期内按字节进行并行压缩。
sttablesindex数据结构为多个;当sttablesindex数据结构中的数据量达到预设
值时,则需要对所述sttablesindex数据结构中的数据块进行压缩,并且还对需要从内存写
入到磁盘的数据块进行压缩。压缩算法采用的算法为snappy算法;采用snappy算法进行压
缩时,可以同时进行多个sttablesindex数据结构中数据的并行压缩,大大提高了压缩速
度,缩短了压缩时间。同时在压缩的过程中引入AVX指令集,可以在一个时钟周期内在每个
sttablesindex数据结构中同时处理32个字节的并行压缩,进一步提高压缩速度。
本发明的该实施例中,引入snappy算法实现了多个sttablesindex数据结构中数
据的并行压缩,并且引入AVX指令集,可以在每个sttablesindex数据结构中实现32个字节
的并行压缩,即本发明在采用数据压缩的方法提高写入速度的同时,实现了双层并行压缩,
极大提高了数据压缩的速度,进而使得数据写入的速度得到进一步提升。
步骤105:将所述数据压缩包写入到磁盘中。
在步骤105之后,还包括:
删除所述数据压缩包所对应的所述数据块的日志文件。
图2为本发明数据存储系统实施例的系统结构图。
参见图2,该数据存储系统,包括:
获取模块201,用于获取待存储数据。
划分模块202,用于将所述待存储数据划分成数据块。
该划分模块202,具体包括:等划分单元,用于利用LSM树将所述待存储数据划分成相同大小的所述数据块。
写内存模块203,用于将所述数据块写入到内存中。
该写内存模块203,具体包括:
日志生成单元,用于生成所述数据块的日志文件;
日志写入磁盘单元,用于将所述日志文件写入到磁盘中;
数据写内存单元,用于将所述数据块写入到所述内存中。
压缩模块204,用于对所述内存中的所述数据块进行并行压缩处理,得到数据压缩包。
该压缩模块204,具体包括:
压缩单元,用于利用snappy算法对所述数据块进行压缩,并引入AVX指令集在一个时钟周期内按字节进行并行压缩。
写磁盘模块205,用于将所述数据压缩包写入到磁盘中。
该数据存储系统还包括日志删除模块,用于删除所述数据压缩包所对应的数据块的日志文件。
本发明在数据存储到磁盘的过程中,先对数据进行压缩处理,然后将压缩后的数据写入磁盘,提高了写入的速度。同时本发明的压缩方式采用并行压缩的方式,加快了压缩的速度,进一步提高了数据写入磁盘的速度。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种数据存储方法,其特征在于,包括:
获取待存储数据;
将所述待存储数据划分成数据块;
将所述数据块写入到内存中;
对所述内存中的所述数据块进行并行压缩处理,得到数据压缩包;
将所述数据压缩包写入到磁盘中。
2.根据权利要求1所述的一种数据存储方法,其特征在于,所述将所述待存储数据划分成数据块,具体包括:
利用LSM树将所述待存储数据划分成相同大小的所述数据块。
3.根据权利要求1所述的一种数据存储方法,其特征在于,所述将所述数据块写入到内存中,具体包括:
生成所述数据块的日志文件;
将所述日志文件写入到所述磁盘中;
将所述数据块写入到所述内存中。
4.根据权利要求1所述的一种数据存储方法,其特征在于,所述对所述内存中的所述数据块进行并行压缩处理,得到数据压缩包,具体包括:
利用snappy算法对所述数据块进行压缩,并引入AVX指令集在一个时钟周期内按字节进行并行压缩。
5.根据权利要求3所述的一种数据存储方法,其特征在于,在所述将所述数据压缩包写入到磁盘之后,还包括:
删除所述数据压缩包所对应的所述数据块的日志文件。
6.一种数据存储系统,其特征在于,包括:
获取模块,用于获取待存储数据;
划分模块,用于将所述待存储数据划分成数据块;
写内存模块,用于将所述数据块写入到内存中;
压缩模块,用于对所述内存中的所述数据块进行并行压缩处理,得到数据压缩包;
写磁盘模块,用于将所述数据压缩包写入到磁盘中。
7.根据权利要求6所述的一种数据存储系统,其特征在于,所述划分模块,具体包括:
等划分单元,用于利用LSM树将所述待存储数据划分成相同大小的所述数据块。
8.根据权利要求6所述的一种数据存储系统,其特征在于,所述写内存模块,具体包括:
日志生成单元,用于生成所述数据块的日志文件;
日志写入磁盘单元,用于将所述日志文件写入到所述磁盘中;
数据写内存单元,用于将所述数据块写入到所述内存中。
9.根据权利要求1所述的一种数据存储系统,其特征在于,所述压缩模块,具体包括:
压缩单元,用于利用snappy算法对所述数据块进行压缩,并引入AVX指令集在一个时钟周期内按字节进行并行压缩。
10.根据权利要求8所述的一种数据存储系统,其特征在于,还包括:
日志删除模块,用于删除所述数据压缩包所对应的所述数据块的日志文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710707620.2A CN107436738B (zh) | 2017-08-17 | 2017-08-17 | 一种数据存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710707620.2A CN107436738B (zh) | 2017-08-17 | 2017-08-17 | 一种数据存储方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107436738A true CN107436738A (zh) | 2017-12-05 |
CN107436738B CN107436738B (zh) | 2019-10-25 |
Family
ID=60460526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710707620.2A Active CN107436738B (zh) | 2017-08-17 | 2017-08-17 | 一种数据存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107436738B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109634523A (zh) * | 2018-12-10 | 2019-04-16 | 深圳市网心科技有限公司 | 一种磁盘管理方法、系统及电子设备和存储介质 |
CN109710194A (zh) * | 2018-12-29 | 2019-05-03 | 武汉思普崚技术有限公司 | 上传文件的存储方法及装置 |
CN109947371A (zh) * | 2019-03-27 | 2019-06-28 | 北京经纬恒润科技有限公司 | 数据记录方法、装置、存储器及t-box |
CN110032549A (zh) * | 2019-01-28 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 分区分裂方法、装置、电子设备及可读存储介质 |
CN110377227A (zh) * | 2019-06-13 | 2019-10-25 | 阿里巴巴集团控股有限公司 | 一种数据分块存储方法、装置及电子设备 |
CN111831423A (zh) * | 2019-04-15 | 2020-10-27 | 阿里巴巴集团控股有限公司 | 一种在非易失性内存上实现Redis内存数据库的方法和系统 |
US10983975B2 (en) | 2019-06-13 | 2021-04-20 | Ant Financial (Hang Zhou) Network Technology Co., Ltd. | Data block storage method and apparatus, and electronic device |
CN113590051A (zh) * | 2021-09-29 | 2021-11-02 | 阿里云计算有限公司 | 数据存储和读取方法、装置、电子设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1904882A (zh) * | 2005-07-26 | 2007-01-31 | 北京九州汇宝软件有限公司 | 数据库近线数据的压缩方法 |
US20090006728A1 (en) * | 2007-06-26 | 2009-01-01 | Microsoft Corporation | Virtual machine state snapshots |
CN102203718A (zh) * | 2011-05-26 | 2011-09-28 | 华为技术有限公司 | 内存转储处理方法和装置及内存转储系统 |
CN104123300A (zh) * | 2013-04-26 | 2014-10-29 | 上海云人信息科技有限公司 | 数据分布式存储系统及方法 |
CN105117176A (zh) * | 2015-09-09 | 2015-12-02 | 浪潮(北京)电子信息产业有限公司 | 一种数据读写方法和系统 |
CN106648442A (zh) * | 2015-10-29 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种元数据节点的内存镜像方法、装置 |
-
2017
- 2017-08-17 CN CN201710707620.2A patent/CN107436738B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1904882A (zh) * | 2005-07-26 | 2007-01-31 | 北京九州汇宝软件有限公司 | 数据库近线数据的压缩方法 |
US20090006728A1 (en) * | 2007-06-26 | 2009-01-01 | Microsoft Corporation | Virtual machine state snapshots |
CN102203718A (zh) * | 2011-05-26 | 2011-09-28 | 华为技术有限公司 | 内存转储处理方法和装置及内存转储系统 |
CN104123300A (zh) * | 2013-04-26 | 2014-10-29 | 上海云人信息科技有限公司 | 数据分布式存储系统及方法 |
CN105117176A (zh) * | 2015-09-09 | 2015-12-02 | 浪潮(北京)电子信息产业有限公司 | 一种数据读写方法和系统 |
CN106648442A (zh) * | 2015-10-29 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种元数据节点的内存镜像方法、装置 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109634523A (zh) * | 2018-12-10 | 2019-04-16 | 深圳市网心科技有限公司 | 一种磁盘管理方法、系统及电子设备和存储介质 |
CN109710194A (zh) * | 2018-12-29 | 2019-05-03 | 武汉思普崚技术有限公司 | 上传文件的存储方法及装置 |
CN110032549A (zh) * | 2019-01-28 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 分区分裂方法、装置、电子设备及可读存储介质 |
CN110032549B (zh) * | 2019-01-28 | 2023-10-20 | 北京奥星贝斯科技有限公司 | 分区分裂方法、装置、电子设备及可读存储介质 |
CN109947371A (zh) * | 2019-03-27 | 2019-06-28 | 北京经纬恒润科技有限公司 | 数据记录方法、装置、存储器及t-box |
CN109947371B (zh) * | 2019-03-27 | 2022-04-29 | 北京经纬恒润科技股份有限公司 | 数据记录方法、装置、存储器及t-box |
CN111831423A (zh) * | 2019-04-15 | 2020-10-27 | 阿里巴巴集团控股有限公司 | 一种在非易失性内存上实现Redis内存数据库的方法和系统 |
CN110377227A (zh) * | 2019-06-13 | 2019-10-25 | 阿里巴巴集团控股有限公司 | 一种数据分块存储方法、装置及电子设备 |
WO2020248598A1 (zh) * | 2019-06-13 | 2020-12-17 | 创新先进技术有限公司 | 一种数据分块存储方法、装置及电子设备 |
US10983975B2 (en) | 2019-06-13 | 2021-04-20 | Ant Financial (Hang Zhou) Network Technology Co., Ltd. | Data block storage method and apparatus, and electronic device |
CN113590051A (zh) * | 2021-09-29 | 2021-11-02 | 阿里云计算有限公司 | 数据存储和读取方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107436738B (zh) | 2019-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107436738A (zh) | 一种数据存储方法及系统 | |
CN104331478B (zh) | 一种自精简存储系统数据一致性管理方法 | |
CN105242881B (zh) | 分布式存储系统及其数据读写方法 | |
CN104639658A (zh) | 一种以文件系统挂载访问对象存储的实现方法 | |
CN110493325A (zh) | 区块链状态数据同步方法及装置、电子设备 | |
CN104503703B (zh) | 缓存的处理方法和装置 | |
Adya et al. | Fast key-value stores: An idea whose time has come and gone | |
CN104035925B (zh) | 数据存储方法、装置和存储系统 | |
CN106354890A (zh) | 一种基于N‑ary树结构的随机访问的文件系统的实现方法 | |
CN106055622A (zh) | 一种数据搜索方法及系统 | |
CN104462224A (zh) | 一种云盘文件在线编辑方法 | |
CN109471843A (zh) | 一种元数据缓存方法、系统及相关装置 | |
CN108776682A (zh) | 基于对象存储的随机读写对象的方法和系统 | |
CN110399096A (zh) | 分布式文件系统元数据缓存重删的方法、装置以及设备 | |
CN103701469A (zh) | 一种大规模图数据的压缩存储方法 | |
CN103324763A (zh) | 一种手机端树形数据结构的展现方法 | |
CN106227677A (zh) | 一种变长缓存元数据管理的方法 | |
CN110069557A (zh) | 数据传输方法、装置、设备及存储介质 | |
CN106951182A (zh) | 一种块设备缓存方法和装置 | |
CN109359729A (zh) | 一种在fpga上实现缓存数据的系统及方法 | |
CN103870571B (zh) | 多维联机分析处理系统中的立方体重构方法和装置 | |
CN105915595A (zh) | 一种集群存储系统存取数据的方法以及集群存储系统 | |
CN106959997A (zh) | 基于集群文件系统的文件处理方法和装置 | |
CN111427920B (zh) | 数据采集方法、装置、系统、计算机设备及存储介质 | |
CN104484136B (zh) | 一种可支撑高并发内存数据的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |