CN103309901B - 排序集数据的存储方法及装置 - Google Patents

排序集数据的存储方法及装置 Download PDF

Info

Publication number
CN103309901B
CN103309901B CN201210070124.8A CN201210070124A CN103309901B CN 103309901 B CN103309901 B CN 103309901B CN 201210070124 A CN201210070124 A CN 201210070124A CN 103309901 B CN103309901 B CN 103309901B
Authority
CN
China
Prior art keywords
sequence
data
sequence collection
database
collection
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
Application number
CN201210070124.8A
Other languages
English (en)
Other versions
CN103309901A (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.)
Beijing Great Opensource Software Co ltd
Original Assignee
Shenzhen QVOD Technology 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 Shenzhen QVOD Technology Co Ltd filed Critical Shenzhen QVOD Technology Co Ltd
Priority to CN201210070124.8A priority Critical patent/CN103309901B/zh
Publication of CN103309901A publication Critical patent/CN103309901A/zh
Application granted granted Critical
Publication of CN103309901B publication Critical patent/CN103309901B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种排序集数据的存储方法及装置,其中,该方法包括:接收排序集数据并获取排序集数据的标识;将排序集数据进行压缩处理;根据排序集数据的标识将压缩处理后的排序集数据存储至数据库中对应的排序集;根据排序集将数据库进行分片处理;将分片处理后的数据库中的排序集数据映射至内存。通过本发明,可以减小redis系统数据库容量受到物理内存的限制,从而可以实现海量数据的高性能读写。

Description

排序集数据的存储方法及装置
技术领域
本发明涉及数据存储领域,具体地,涉及一种排序集数据的存储方法及装置。
背景技术
在通信系统中,由于redis系统的数据存放在内存,没有持久存储至磁盘来实现数据的高性能读写,因此,一旦系统宕机,整个数据将全部被清空,虽然redis系统自身有持久化机制,但是系统重启后恢复数据较慢。
另外,redis系统的数据处理量受到内存的限制,因为redis系统使用内存比较厉害,而数据一般存放在内存中,因此数据库容量受到物理内存的限制,从而无法实现海量数据的高性能读写。
发明内容
本发明实施例的主要目的在于提供一种排序集数据的存储方法及装置,以解决现有技术中的redis系统数据库容量受到物理内存的限制而导致的无法实现海量数据的高性能读写的问题。
为了实现上述目的,本发明实施例提供一种排序集数据的存储方法,该方法包括:接收排序集数据并获取所述排序集数据的标识;将所述排序集数据进行压缩处理;根据所述排序集数据的标识将压缩处理后的排序集数据存储至数据库中对应的排序集;根据所述排序集将所述的数据库进行分片处理;将分片处理后的数据库中的排序集数据映射至内存。
具体地,在根据所述排序集数据的标识将压缩处理后的排序集数据存储至数据库中对应的排序集之前,所述方法还包括:根据所述排序集数据的标识判断所述数据库中是否存在所述对应的排序集;如果存在所述对应的排序集,则判断所述对应的排序集中的记录数量是否超出限定值,如果是,则删除所述对应的排序集中最早的记录;如果不存在所述对应的排序集,则根据所述排序集数据的标识建立排序集。
将分片处理后的数据库中的排序集数据映射至内存之后,所述的方法还包括:周期性异步备份所述分片处理后的数据库中的排序集数据到预定目录。
本发明实施例还提供一种排序集数据的存储装置,所述装置包括:标识获取单元,用于接收排序集数据并获取所述排序集数据的标识;压缩处理单元,用于将所述排序集数据进行压缩处理;数据存储单元,用于根据所述排序集数据的标识将压缩处理后的排序集数据存储至数据库中对应的排序集;分片处理单元,用于根据所述排序集将所述的数据库进行分片处理;数据映射单元,用于将分片处理后的数据库中的排序集数据映射至内存。
具体地,上述装置还包括:排序集判断单元,用于根据所述排序集数据的标识判断所述数据库中是否存在所述对应的排序集;记录删除单元,用于在存在所述对应的排序集时,判断所述对应的排序集中的记录数量是否超出限定值,如果是,则删除所述对应的排序集中最早的记录;排序集建立单元,用于如果不存在所述对应的排序集,则根据所述排序集数据的标识建立排序集。
上述的装置还包括:备份单元,用于周期性异步备份所述分片处理后的数据库中的排序集数据到预定目录。
借助于上述技术方案至少之一,通过将排序集数据压缩处理后存储至数据库,并将数据库分片后将数据映射至内存,可以提升数据库容量,减小内存限制,从而可以实现海量数据的高性能读写。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的排序集数据存储方法的流程图;
图2是根据本发明实施例的数据存储示意图;
图3是在TC数据库向指定的集合key中添加(Zadd指令)记录的流程图;
图4是在TC数据库向指定的集合key中删除(Zrem指令)记录的流程图;
图5是Zrange指令的流程图;
图6是Zcard指令的流程图;
图7是备份的流程图;
图8是数据回写至磁盘的流程图;
图9是根据本发明实施例的排序集数据存储装置的结构框图;
图10是根据本发明实施例的排序集数据存储装置的详细结构框图;
图11是根据本发明实施例的排序集数据存储装置的另一结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种排序集数据的存储方法及装置。以下结合附图对本发明进行详细说明。
实施例一
图1是根据本发明实施例的排序集数据的存储方法的流程图,如图1所述,该方法包括:
步骤101,接收排序集数据并获取排序集数据的标识;
步骤102,将排序集数据进行压缩处理;
步骤103,根据排序集数据的标识将压缩处理后的排序集数据存储至数据库中对应的排序集;
步骤104,根据排序集将数据库进行分片处理;
步骤105,将分片处理后的数据库中的排序集数据映射至内存。
由以上描述可以看出,通过将排序集数据压缩处理后存储至数据库,并将数据库分片后将数据映射至内存,可以提升数据库容量,减小内存限制,从而可以实现海量数据的高性能读写。
在本发明实施中,可以是将数据库分成256个分片。
上述排序集即为:一个集合,在集合中每一个元素都是唯一的,并且是有序的。
具体地,在步骤103根据排序集数据的标识将压缩处理后的排序集数据存储至数据库中对应的排序集之前,上述方法还包括:
根据排序集数据的标识判断数据库中是否存在对应的排序集;
如果存在对应的排序集,则判断对应的排序集中的记录数量是否超出限定值,如果是,则删除对应的排序集中最早的记录,如果否,则直接进行步骤103;
如果不存在对应的排序集,则根据排序集数据的标识建立排序集,之后进行步骤103。
具体地,在步骤105将分片处理后的数据库中的排序集数据映射至内存之后,上述方法还包括:周期性异步备份分片处理后的数据库中的排序集数据到预定目录。这样,就可以实现redis系统的持久化存储机制,克服现有技术中的redis系统无法实现排序集数据持久化的问题。
在实际操作中,上述的数据库可以是TC(tokyo cabinet)数据库。
数据存储在TC数据库中,TC数据库的设计为:key为字符串标识用户id,每一个key对应一个集合,即为value,value为一个map数据结构,其中以游戏ID作为map中的key,时间作为map中的value,集合中的元素按时间值排序。Map中的记录数可由客户端自由调整,超过限制的记录会按照制定的规则删除一部分数据,使其在限制数以内,在map中每一个key是唯一的,如果添加相同的key,那么会覆盖原先的value。同时,将数据库分片和压缩,并将其映射至内存,以提升读写速度以及减小数据库容量。图2是数据存储示意图。
该TC数据库系统是采用tokyo cabinet实现redis排序集的存储系统。该系统是一种key-value存储系统。Key即为排序集的名称,每一个key唯一对应一个排序集,value即为集合中的元素。该系统采用redis的协议提供了排序集的zadd、zrem、zrange、zrevrange、zcard以及zdel等指令集,分别用于向集合添加、删除、有序获取元素,以及统计集合中元素的个数和删除集合。
以下详细描述各指令的执行过程。
图3示出了在TC数据库向指定的集合key中添加(Zadd指令)记录的流程,如图3所示:
步骤301,查找key对应的集合;
步骤302,判断该集合是否存在,如果不存在,则进行步骤303,否则进行步骤304;
步骤303,在数据库中创建集合,写入记录至集合,之后进行步骤307;
步骤304,在集合中写入记录;
步骤305,判断集合中的记录数是否大于限定值,如果是,则进行步骤306,否则进行步骤307;
步骤306,查找并删除最早的记录;
步骤307,Zadd结束,返回结果。
图4示出了在TC数据库向指定的集合key中删除(Zrem指令)记录的流程,如图4所示:
步骤401,查找key对应的集合;
步骤402,判断该集合是否存在,如果不存在,则进行步骤404,否则进行步骤403;
步骤403,从集合中删除相应的记录;
步骤404,Zrem结束,返回结果。
Zrange指令和Zrevrange指令,都是从指定的集合中按顺序获取指定区间内的元素(相当于map中的key),其中:Zrange是顺序获取,而Zrevrange是逆序获取。如果携带有withscores功能,则还需返回对应元素的权重值(相当于map中的value)。以下Zrange指令为例描述操作流程,如图5所示:
步骤501,查找key对应的集合;
步骤502,判断该集合是否存在,如果不存在,则进行步骤507,否则进行步骤503;
步骤503,将集合中的记录排序;
步骤504,是否带有withsocres功能,如果是,则进行步骤505,否则进行步骤506;
步骤505,返回结果为指定区间内的元素和权重值对组成的集合;
步骤506,返回结果为指定区间内的元素集合;
步骤507,Zrange结束,返回结果。
Zcard指令为统计排序集key中元素的个数,Zdel指令是删除key对应的集合。Zcard指令的流程如图6所示:
步骤601,查找key对应的集合;
步骤602,判断该集合是否存在,如果不存在,则进行步骤603,否则进行步骤604;
步骤603,结果为0,之后返回步骤605;
步骤604,统计集合中的记录数;
步骤605,Zcard结束,返回结果。
TC数据库系统使用一个线程用于异步定时备份数据,当设定的时间到达时,将所有的数据库分片备份至指定的目录,备份时,使用TC的数据备份接口,备份相应的数据库文件。备份流程如图7所示:
步骤701,等待定时触发;
步骤702,判断是否存在需要备份的数据库文件,如果是,则进行步骤703,否则返回步骤701;
步骤703,加锁指定的数据库文件;
步骤704,备份数据库文件至指定的目录;
步骤705,解锁相应的数据库文件,并返回步骤702。
系统实现过程中将数据库文件映射至内存,为了保证数据的一致性,以及避免数据丢失,定时检查制定的条件,在满足条件的情况下,会将内存中的数据回写至磁盘。例如,条件可以为一定时间间隔达到一定的数据修改操作,具体操作流程如图8所示:
步骤801,等待定时触发;
步骤802,根据设定条件判断是否存在需要回写的数据库文件,如果是,则进行步骤803,否则返回步骤801;
步骤803,加锁指定的数据库文件;
步骤804,回写指定的数据库文件至磁盘;
步骤805,解锁相应的数据库文件。
实施例二
本发明实施例还提供一种排序集数据的存储装置,该装置优选地用于实现上述实施例一中的方法。如图9所示,该装置包括:
标识获取单元1,用于接收排序集数据并获取排序集数据的标识;
压缩处理单元2,用于将排序集数据进行压缩处理;
数据存储单元3,用于根据排序集数据的标识将压缩处理后的排序集数据存储至数据库中对应的排序集;
分片处理单元4,用于根据排序集将数据库进行分片处理;
数据映射单元5,用于将分片处理后的数据库中的排序集数据映射至内存。
由以上描述可以看出,通过压缩处理单元将排序集数据压缩处理后存储至数据库,并通过分片处理单元将数据库分片后将数据映射至内存,可以提升数据库容量,减小内存限制,从而可以实现海量数据的高性能读写。
如图10所示,上述装置还包括:
排序集判断单元6,用于根据排序集数据的标识判断数据库中是否存在对应的排序集;
记录删除单元7,用于在存在对应的排序集时,判断对应的排序集中的记录数量是否超出限定值,如果是,则删除对应的排序集中最早的记录;
排序集建立单元8,用于如果不存在对应的排序集,则根据排序集数据的标识建立排序集。
上述装置还包括:备份单元(图中未示出),用于周期性异步备份分片处理后的数据库中的排序集数据到预定目录。
上述各单元的具体执行过程可以参见上述实施例一中的相关描述,此处不再赘述。
在实际操作中,如图11所示,上述装置可以分为三大模块:网络IO模块、协议解析模块以及指令执行模块,其中:
网络IO模块:接收客户端请求以及向客户端发送指令执行结果。
协议解析模块:解析客户端请求,转换成相应的指令。
指令执行模块:执行相应的指令,返回结果给客户端。
同时,该装置还设置了异步定时备份数据,在闲时将数据备份,以及定时异步回写数据,将内存中的数据持久化至磁盘。
通过上述装置,可以实现排序集数据持久化存储以及高性能读写。
综上所述,通过对数据库进行分片处理,之后将每个数据库文件映射至内存,这样可以提升读写性能;由于存入数据库中的数据是经过压缩的,减小了数据库使用大小,从而提升了数据库的容量,并且结合周期性备份等方案,可以实现排序集数据持久化存储以及高性能读写,提升数据库容量,减轻内存限制。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,比如ROM/RAM、磁碟、光盘等。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (2)

1.一种排序集数据的存储方法,其特征在于,所述的方法应用于redis系统数据库,所述的方法包括:
接收排序集数据并获取所述排序集数据的标识;
将所述排序集数据进行压缩处理;
根据所述排序集数据的标识判断所述数据库中是否存在对应的排序集;
如果存在所述对应的排序集,则判断所述对应的排序集中的记录数量是否超出限定值,如果是,则删除所述对应的排序集中最早的记录;
如果不存在所述对应的排序集,则根据所述排序集数据的标识建立排序集;
根据所述排序集数据的标识将压缩处理后的排序集数据存储至数据库中对应的排序集;
根据所述排序集将所述的数据库进行分片处理;
将分片处理后的数据库中的排序集数据映射至内存;
周期性异步备份所述分片处理后的数据库中的排序集数据到预定目录。
2.一种排序集数据的存储装置,其特征在于,所述的装置应用于redis系统数据库,所述的装置包括:
标识获取单元,用于接收排序集数据并获取所述排序集数据的标识;
压缩处理单元,用于将所述排序集数据进行压缩处理;
排序集判断单元,用于根据所述排序集数据的标识判断所述数据库中是否存在对应的排序集;
记录删除单元,用于在存在所述对应的排序集时,判断所述对应的排序集中的记录数量是否超出限定值,如果是,则删除所述对应的排序集中最早的记录;
排序集建立单元,用于如果不存在所述对应的排序集,则根据所述排序集数据的标识建立排序集;
数据存储单元,用于根据所述排序集数据的标识将压缩处理后的排序集数据存储至数据库中对应的排序集;
分片处理单元,用于根据所述排序集将所述的数据库进行分片处理;
数据映射单元,用于将分片处理后的数据库中的排序集数据映射至内存;
备份单元,用于周期性异步备份所述分片处理后的数据库中的排序集数据到预定目录。
CN201210070124.8A 2012-03-16 2012-03-16 排序集数据的存储方法及装置 Active CN103309901B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210070124.8A CN103309901B (zh) 2012-03-16 2012-03-16 排序集数据的存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210070124.8A CN103309901B (zh) 2012-03-16 2012-03-16 排序集数据的存储方法及装置

Publications (2)

Publication Number Publication Date
CN103309901A CN103309901A (zh) 2013-09-18
CN103309901B true CN103309901B (zh) 2017-11-17

Family

ID=49135138

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210070124.8A Active CN103309901B (zh) 2012-03-16 2012-03-16 排序集数据的存储方法及装置

Country Status (1)

Country Link
CN (1) CN103309901B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111625396B (zh) * 2019-02-27 2023-05-26 阿里云计算有限公司 备份数据的校验方法、服务器及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1585548A (zh) * 2004-05-25 2005-02-23 中兴通讯股份有限公司 一种分布式访问位置寄存器vlr的实现方法
CN101540726A (zh) * 2009-04-27 2009-09-23 华为技术有限公司 同步数据的方法、客户端、服务器及系统
CN102354292A (zh) * 2011-09-21 2012-02-15 国家计算机网络与信息安全管理中心 主、备数据库记录一致性校验方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1585548A (zh) * 2004-05-25 2005-02-23 中兴通讯股份有限公司 一种分布式访问位置寄存器vlr的实现方法
CN101540726A (zh) * 2009-04-27 2009-09-23 华为技术有限公司 同步数据的方法、客户端、服务器及系统
CN102354292A (zh) * 2011-09-21 2012-02-15 国家计算机网络与信息安全管理中心 主、备数据库记录一致性校验方法及系统

Also Published As

Publication number Publication date
CN103309901A (zh) 2013-09-18

Similar Documents

Publication Publication Date Title
US10552287B2 (en) Performance metrics for diagnosing causes of poor performing virtual machines
CN107533551B (zh) 数据块级别的大数据统计
US10417190B1 (en) Log-structured file system for zone block devices with small zones
CN103714096B (zh) 基于Lucene的倒排索引系统构建、数据处理方法及装置
US9250811B1 (en) Data write caching for sequentially written media
CN104412241B (zh) 用于主存储器数据库的存储器紧缩机制
CN103902623B (zh) 用于在存储系统上存取文件的方法和系统
CN104584524B (zh) 聚合中介系统中的数据
CN103412916B (zh) 一种监控系统的多维度数据存储、检索方法及装置
US20080162518A1 (en) Data aggregation and grooming in multiple geo-locations
US20100115332A1 (en) Virtual machine-based on-demand parallel disaster recovery system and the method thereof
US20100146003A1 (en) Method and system for building a B-tree
CN103942252B (zh) 一种恢复数据的方法及系统
CN104657364B (zh) 一种日志结构数据库系统查询请求消息处理方法及装置
CN106233259A (zh) 在分散存储网络中检索多世代存储数据
US8380663B2 (en) Data integrity in a database environment through background synchronization
CN102073697A (zh) 一种数据处理方法及装置
CN107958079A (zh) 聚合文件删除方法、系统、装置及可读存储介质
CN106919675A (zh) 一种数据存储方法及装置
CN111339078A (zh) 数据实时存储方法、数据查询方法、装置、设备、介质
US20160154848A1 (en) Database management apparatus, database management method, and storage medium
CN106649870A (zh) 一种搜索引擎分布式实现方法
CN104536908B (zh) 一种面向单机的海量小记录高效存储管理方法
CN107704203A (zh) 聚合大文件的删除方法、装置、设备及计算机存储介质
CN103198150A (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
TR01 Transfer of patent right

Effective date of registration: 20200622

Address after: No.266 Chuangyan Road, Qilin science and Technology Innovation Park, Jiangning District, Nanjing City, Jiangsu Province

Patentee after: Nanjing Qianying Technology Development Co.,Ltd.

Address before: 518057 Guangdong city of Shenzhen province Nanshan District Gao Xin Road No. 009 China Technology Development Institute Technology Park building three, 22 layers of A

Patentee before: SHENZHEN QVOD TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20201102

Address after: 233000 No.10, building 32, Zone 8, Guangcai market, bengshan District, Bengbu City, Anhui Province

Patentee after: Bengbu Shangwei Intellectual Property Operations Co.,Ltd.

Address before: No.266 Chuangyan Road, Qilin science and Technology Innovation Park, Jiangning District, Nanjing City, Jiangsu Province

Patentee before: Nanjing Qianying Technology Development Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220706

Address after: 100071 room 18, unit 1001, floor 10, building 3, yard 6, East Road of Automobile Museum, Fengtai District, Beijing

Patentee after: BEIJING GREAT OPENSOURCE SOFTWARE Co.,Ltd.

Address before: 233000 No.10, building 32, Zone 8, Guangcai market, bengshan District, Bengbu City, Anhui Province

Patentee before: Bengbu Shangwei Intellectual Property Operations Co.,Ltd.

TR01 Transfer of patent right