用户数据存储方法、读取方法及系统技术方案

技术编号:10145218 阅读:178 留言:0更新日期:2014-06-30 15:23
本发明专利技术涉及互联网海量数据存储技术领域,公开了一种用户数据存储方法,包括步骤:将用户的用户数据存储在预先创建的基础文件的文件体中,使同一用户的用户数据连续存储,所述基础文件存储预定用户数的用户数据;在所述基础文件的文件头中记录用户数据在基础文件中的存储位置的位置索引。还公开了一种用户数据存储系统、用户数据读取方法及系统。本发明专利技术通过采用基础文件来存储预定用户数的用户数据,且用户数据连续的存储在基础文件中,从而提高了数据的查询或读取的效率;且不需要像现有技术一样维护全量用户的第一个数据节点信息,避免了额外的内存资源开销,降低了运维成本。

【技术实现步骤摘要】
【专利摘要】本专利技术涉及互联网海量数据存储
,公开了一种用户数据存储方法,包括步骤:将用户的用户数据存储在预先创建的基础文件的文件体中,使同一用户的用户数据连续存储,所述基础文件存储预定用户数的用户数据;在所述基础文件的文件头中记录用户数据在基础文件中的存储位置的位置索引。还公开了一种用户数据存储系统、用户数据读取方法及系统。本专利技术通过采用基础文件来存储预定用户数的用户数据,且用户数据连续的存储在基础文件中,从而提高了数据的查询或读取的效率;且不需要像现有技术一样维护全量用户的第一个数据节点信息,避免了额外的内存资源开销,降低了运维成本。【专利说明】用户数据存储方法、读取方法及系统
本专利技术涉及互联网海量数据存储
,特别涉及一种用户数据存储方法、读取方法及系统。
技术介绍
用户原创内容(User Generated Content,UGC)是一种用户使用互联网的新方式,即由原来的以下载为主变成下载和上传并重。社区网络、视频分享和博客等都是UGC的主要应用形式。随着全球互联网业务的不断发展,UGC业务正在日渐崛起,引起了业界的广泛关注。由于数据是用户产生的,海量的用户催生出海量的数据,同时又会带来海量的读写量。如何有效地存储这些用户数据,如何提供高并发的读写服务是
必然面临的问题。现有技术中将用户数据以数据文件的形式存储,所有文件都是串起来的,组成一个链,文件个数越多,链就越长。一个文件由若干个“节点”组成,每个节点代表一个数据单元,每个数据单元只能存储一个用户的数据。每个用户的数据由若干个不连续的节点组成,一个用户的所有节点在逻辑上是头尾相连的,组成一个链。也就是说,一个文件里有多个节点,且可能存放多个用户的数据。一个用户的数据是由多个不连续的节点组成,也就是说一个用户的数据可能分布在多个文件中。其文件存储结构示意图如图1所示,内存索引中标记所有用户在文件中第一个节点的位置。一次读请求的处理逻辑是:先读取内存索引,获取用户在文件中的第一个节点的位置。找到该节点获取该节点的数据,如果满足读取条件则返回,否则通过第一个节点,继续找第二个节点的数据(每个节点都有指向下一个节点位置的信息),依此类推,直到用户所有节点都读取完毕或者满足读取条件为止。上述用户数据的存储方法具有如下缺陷:1、若每个文件大小为2GB,随着时间的推移,数据量越来越多,文件个数也越来越多,用户的数据也越来越长,用户数据分布的文件数会越来越多,读取一个用户的数据可能要打开操作多个数据文件,处理的复杂度是O (η),这样会导致互联网产品运营成本高、数据查询效率低、服务质量差;2、内存索引保存用户的第一个节点的数据,如果内存索引里的数据丢失,将丢失用户的第一个节点的信息,也就找不到后继节点的位置,那用户的数据也将丢失;3、内存索引需要保存全量用户的第一条节点信息,而用户数又非常多,这需要消耗非常大的内存。尤其是对于微博数据,海量用户频繁地读取、更新微博数据,上述缺陷更加明显,在时间和空间上随着用户量的增加而剧增。如果能有一种简单、高效、低成本的方法,将极大地缩减运维复杂度以及成本,也能为以后类似的服务模型提供一种新的思路。
技术实现思路
本专利技术的目的在于提供一种用户数据存储方法及系统,旨在解决海量用户数据在存储时资源消耗大、运维成本高及查询时效率低的问题。为解决上述技术问题,本专利技术提供了一种用户数据存储方法,包括步骤:将用户的用户数据存储在预先创建的基础文件的文件体中,使同一用户的用户数据连续存储,所述基础文件存储预定用户数的用户数据;在所述基础文件的文件头中记录用户数据在基础文件中的存储位置的位置索引。其中,将用户的用户数据存储在预先创建的基础文件的文件体中,使同一用户的用户数据连续存储的步骤具体包括:通过用户ID计算存储所述用户的用户数据的基础文件ID,基础文件ID=(用户ID/预定用户数)+1,/为整除运算;若该基础文件已创建,则将所述用户数据连续存储在基础文件的相应区域;若该基础文件未创建,则创建该基础文件,并将所述用户数据连续存储在基础文件中。其中,在所述基础文件的文件头中记录用户数据在基础文件中的存储位置的位置索引的步骤具体包括:通过用户ID计算所述基础文件的头文件中的存储所述位置索引的地址偏移,地址偏移=用户ID%预定用户数,%为取模运算;将所述位置索引存储在基础文件的头文件的地址偏移所在的存储单元。其中,所述用户数据按时间顺序有序存储,存储用户数据时同时存储该用户数据被存储时的时间信息,当连续存储的用户数据的数据量超过预定量时,按所述预定量的用户数据划分一个逻辑区块,并将该逻辑区块的起始用户数据的时间信息、结尾用户数据的时间、起始地址及结尾地址的映射关系作为所述位置索引存储在所述文件头中。其中,将所述用户数据存储在所述基础文件的文件体中时,若用户数据的大小超过预定阈值,则创建扩展文件,将所述用户数据迁移到所述扩展文件中存储,并在所述存储位置记录所述用户数据在所述扩展文件中的地址信息。其中,所述扩展文件包括一个或多个用户的用户数据。本专利技术还提供了一种用户数据存储系统,包括:用户数据存储模块,用于将用户的用户数据存储在预先创建的基础文件的文件体中,使同一用户的用户数据连续存储,所述基础文件存储预定用户数的用户数据;位置索引记录模块,用于在所述基础文件的文件头中记录用户数据在基础文件中的存储位置的位置索引。其中,所述用户数据存储模块具体包括:基础文件ID计算模块,用于通过用户ID计算存储所述用户的用户数据的基础文件ID,基础文件ID=(用户ID/预定用户数)+1 ;判断存储模块,用于在该基础文件已创建时将所述用户数据连续存储在基础文件的相应区域;在未创建时创建该基础文件,并将所述用户数据连续存储在基础文件中。其中,所述位置索引记录模块具体包括:地址偏移计算模块,用于通过用户ID计算所述基础文件的头文件中的存储所述位置索引的地址偏移,地址偏移=用户ID%预定用户数;位置索引存储模块,用于将所述位置索引存储在基础文件的头文件的地址偏移所在的存储单元。其中,还包括:逻辑区块划分模块,用于当连续存储的用户数据的数据量超过预定量时,按所述预定量的用户数据划分一个逻辑区块,并将该逻辑区块的起始用户数据的时间信息、结尾用户数据的时间、起始地址及结尾地址的映射关系作为所述位置索引存储在所述文件头中,所述用户数据按时间顺序有序存储,存储用户数据时同时存储该用户数据被存储时的时间信息。其中,还包括:扩展文件创建模块,用于当存储的用户数据的大小超过预定阈值时创建扩展文件,将所述用户数据迁移到所述扩展文件中存储,并在所述存储位置记录所述用户数据在所述扩展文件中的地址信息。本专利技术还提供了一种用户数据读取方法,读取步骤包括:定位指向用户数据的位置索引所在的基础文件,并将所述基础文件加载到内存,所述基础文件包括用于存储用户数据的文件体和用于存储用户数据在基础文件中的存储位置的位置索引的文件头;查询所述位置索引,定位用户的用户数据所在的存储位置;从所述存储位置读取所述用户数据。其中,定位指向用户数据的位置索引所在的基础文件的具体方式为:通过用户ID计算存储所述用户数据的基础文件ID,基础文件ID=(用户ID/预定用户本文档来自技高网
...

【技术保护点】
一种用户数据存储方法,其特征在于,包括步骤:将用户的用户数据存储在预先创建的基础文件的文件体中,使同一用户的用户数据连续存储,所述基础文件存储预定用户数的用户数据;在所述基础文件的文件头中记录用户数据在基础文件中的存储位置的位置索引。

【技术特征摘要】

【专利技术属性】
技术研发人员:王瑶田明刘里
申请(专利权)人:腾讯科技北京有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1