CN115203159A - 一种数据存储方法、装置、计算机设备和存储介质 - Google Patents
一种数据存储方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN115203159A CN115203159A CN202210878750.3A CN202210878750A CN115203159A CN 115203159 A CN115203159 A CN 115203159A CN 202210878750 A CN202210878750 A CN 202210878750A CN 115203159 A CN115203159 A CN 115203159A
- Authority
- CN
- China
- Prior art keywords
- data
- key
- value
- value pair
- query
- 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
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000013500 data storage Methods 0.000 title claims abstract description 38
- 238000013507 mapping Methods 0.000 claims abstract description 21
- 230000001960 triggered effect Effects 0.000 claims abstract description 6
- 238000012545 processing Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012216 screening Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 230000004044 response Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000010365 information processing Effects 0.000 description 4
- 230000000977 initiatory effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003203 everyday effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000002354 daily effect Effects 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/156—Query results presentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种数据存储方法、装置、计算机设备和存储介质,其中,该方法包括:获取针对目标小说的操作记录数据;根据目标小说的标识和操作记录数据,生成键值对数据,并将键值对数据缓存至分布式缓存空间;响应于触发定时转存任务,对分布式缓存空间缓存的至少一条键值对数据进行映射处理,得到数据仓库工具表;数据仓库工具表包括至少一条映射后的数据和每条映射后的数据对应的标识;利用预先创建的映射归约MapReduce任务,根据各条映射后的数据和映射后的数据对应的标识,生成值文件和索引文件,并将值文件和索引文件存储至基于分布式计算的分布式文件系统HDFS。
Description
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种数据存储方法、装置、计算机设备和存储介质。
背景技术
在针对小说的业务中,通常包括查询小说对应的各种操作记录的业务,例如,查询小说的内容更改记录,查询阅读小说的人数等。而为了满足查询业务,实现对各种操作记录的查询,前提需要对操作记录进行合理存储。但是,由于小说中包括的章节众多,各个章节可以分别对应存在操作记录,不同的操作记录又可以来自不同的操作方,导致各个小说对应的操作记录的数量繁多,存储成本高。
因此,如何对数量繁多的操作记录进行持久存储,保证存储的操作记录的完整性,并节省存储成本,成为了亟待解决的问题。
发明内容
本公开实施例至少提供一种数据存储方法、装置、计算机设备和存储介质。
第一方面,本公开实施例提供了一种数据存储方法,包括:
获取针对目标小说的操作记录数据;
根据所述目标小说的标识和所述操作记录数据,生成键值对数据,并将所述键值对数据缓存至分布式缓存空间;
响应于触发定时转存任务,对所述分布式缓存空间缓存的至少一条所述键值对数据进行映射处理,得到数据仓库工具表;所述数据仓库工具表包括至少一条映射后的数据和每条所述映射后的数据对应的所述标识;
利用预先创建的映射归约MapReduce任务,根据各条所述映射后的数据和所述映射后的数据对应的所述标识,生成值文件和索引文件,并将所述值文件和所述索引文件存储至基于分布式计算的分布式文件系统HDFS。
在一种可能的实施方式中,所述根据各条所述映射后的数据和所述映射后的数据对应的所述标识,生成值文件和索引文件,包括:
对各条所述映射后的数据,分别进行数据序列化处理,得到序列化后的各条数据;
利用预设数据编码方式,对所述序列化后的各条数据分别进行数据编码处理,得到编码后的各条二进制数据;
根据各条所述二进制数据和所述二进制数据对应的所述标识,生成值文件和索引文件。
在一种可能的实施方式中,所述根据各条所述二进制数据和所述二进制数据对应的所述标识,生成值文件和索引文件,包括:
根据各条所述二进制数据,生成所述值文件,并确定每个所述二进制数据在所述HDFS中的存储位置;
针对每个所述二进制数据,根据该二进制数据对应的所述标识和所述存储位置,生成该二进制数据的索引信息;
根据每个所述二进制数据的所述索引信息,生成所述索引文件。
在一种可能的实施方式中,所述将所述值文件和所述索引文件存储至基于分布式计算的分布式文件系统HDFS,包括:
对所述索引文件、所述值文件、所述HDFS中已存储的索引文件和值文件进行数据去重,得到去重后的索引文件和去重后的值文件;
将所述去重后的索引文件和所述去重后的值文件存储至所述HDFS。
在一种可能的实施方式中,在所述将所述值文件和所述索引文件存储至基于分布式计算的分布式文件系统HDFS之后,还包括:
按照预设周期,对所述HDFS中已存储的所述索引文件和所述值文件,分别进行数据归档操作,得到归档后的多个子索引文件和归档后的多个子值文件,并存储所述子索引文件和所述子值文件;
其中,一个所述索引文件对应于至少一个所述子索引文件;一个所述值文件对应于至少一个所述子值文件。
在一种可能的实施方式中,所述根据所述目标小说的标识和所述操作记录数据,生成键值对数据,包括:
确定所述操作记录数据的生成时间;
根据所述生成时间和所述目标小说的所述标识,生成所述键值对数据中的键数据,并将所述操作记录数据作为所述键值对数据中的值数据。
在一种可能的实施方式中,在将所述值文件和所述索引文件存储至基于分布式计算的分布式文件系统HDFS之后,还包括:
响应于客户端的第一查询请求,确定所述第一查询请求中携带的查询信息;
根据所述查询信息中的查询标识,从所述分布式缓存空间中当前存储的各个所述键值对数据中,确定与所述查询标识相匹配的各个第一键值对数据;
基于各个所述第一键值对数据中的键数据,确定各个所述第一键值对数据中的值数据的反馈顺序;
按照所述反馈顺序,将各个所述第一键值对数据中的值数据反馈至所述客户端。
在一种可能的实施方式中,在所述确定所述第一查询请求中携带的查询信息之后,还包括:
在所述查询信息中的并行查询字段的值为第一预设值的情况下,根据所述查询信息中的查询标识,从所述HDFS存储的各个所述索引文件中,确定与所述查询标识相匹配的目标索引文件;所述第一预设值用于指示对所述HDFS进行查询;
从所述HDFS存储的所述值文件中,确定与所述目标索引文件中包括的各个目标索引信息分别相匹配的目标数据;目标索引信息为携带有所述查询标识的索引信息;
根据所述查询标识和所述目标数据,生成待查询键值对数据;
将所述待查询键值对数据缓存至所述分布式缓存空间,并设置所述待查询键值对数据的有效时长为预设时长。
在一种可能的实施方式中,在所述设置所述待查询键值对数据的有效时长为预设时长之后,还包括:
响应于所述客户端针对所述查询标识的第二查询请求,根据所述查询标识,从所述分布式缓存空间中当前存储的各个所述键值对数据中,确定与所述查询标识相匹配的第二键值对数据;其中,在所述第二查询请求携带的查询信息中并行查询字段的值为第二预设值的情况下,所述第二键值对数据包括所述待查询键值对数据;所述第二预设值用于指示不对所述HDFS进行查询;
基于各个所述第二键值对数据中的键数据,确定各个所述第二键值对数据中的值数据的反馈顺序;
按照所述反馈顺序,将各个所述第二键值对数据中的值数据反馈至所述客户端。
在一种可能的实施方式中,所述查询信息包括查询条件;
所述根据所述查询信息中的查询标识,从所述分布式缓存空间中当前存储的各个所述键值对数据中,确定与所述查询标识相匹配的第一键值对数据,包括:
根据所述查询信息中的查询标识,从所述分布式缓存空间中当前存储的各个所述键值对数据中,确定与所述查询标识相匹配的第三键值对数据;
按照所述查询条件,从所述第三键值对数据中,筛选出所述第一键值对数据。
在一种可能的实施方式中,所述查询条件包括操作记录数据的生成时间大于第一预设时间、操作记录数据的生成时间小于第二预设时间、操作记录数据对应的数据操作的操作方为目标操作方、操作记录数据的数量、反馈顺序中的起始序列号、终止序列号。
第二方面,本公开实施例还提供一种数据存储装置,包括:
获取模块,用于获取针对目标小说的操作记录数据;
第一生成模块,用于根据所述目标小说的标识和所述操作记录数据,生成键值对数据,并将所述键值对数据缓存至分布式缓存空间;
映射模块,用于响应于触发定时转存任务,对所述分布式缓存空间缓存的至少一条所述键值对数据进行映射处理,得到数据仓库工具表;所述数据仓库工具表包括至少一条映射后的数据和每条所述映射后的数据对应的所述标识;
第二生成模块,用于利用预先创建的映射归约MapReduce任务,根据各条所述映射后的数据和所述映射后的数据对应的所述标识,生成值文件和索引文件,并将所述值文件和所述索引文件存储至基于分布式计算的分布式文件系统HDFS。
第三方面,本公开可选实现方式还提供一种计算机设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
关于上述数据存储装置、计算机设备、及计算机可读存储介质的效果描述参见上述数据存储方法的说明,这里不再赘述。
本公开实施例提供的数据存储方法、装置、计算机设备和存储介质,在获取针对目标小说的操作记录数据之后,根据目标小说的标识和操作记录数据,生成键值对数据,可以实现利用结构化的键值对数据表征目标小说的操作记录数据,再通过将键值对数据缓存至分布式缓存空间,可以实现对键值对数据的缓存。由于分布式缓存空间中的存储的数据存在有效期,利用定时转存任务,对分布式缓存空间中缓存的各个键值对数据进行映射处理,得到数据仓库工具表,再利用MapReduce任务,根据数据仓库工具表包括的各条映射后的数据和映射后的数据对应的标识,生成值文件和索引文件,并将索引文件和值文件保存至HDFS,可以实现将分布式缓存空间中缓存的键值对数据,定时转存至HDFS进行存储,既可以防止分布式缓存空间中缓存的数据过期,又可以实现对数据的永久缓存并降低数据存储成本。并且,操作记录数据最终可以以索引文件和值文件的形式存储在HDFS,既具有严谨的数据结构,还保障了数据的完整性。此外,在索引文件可以基于标识生成的基础上,可以实现基于标识和索引文件,在HDFS中快速地查询出目标小说对应在值文件中的数据,提高了数据查询的便利性。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种数据存储方法的流程图;
图2示出了本公开实施例所提供的一种索引文件和值文件的示意图;
图3示出了本公开实施例所提供的一种数据存储方法的具体流程示意图;
图4示出了本公开实施例所提供的一种数据查询页面的示意图;
图5示出了本公开实施例所提供的一种查询示意图;
图6示出了本公开实施例所提供的一种数据存储装置的示意图;
图7示出了本公开实施例所提供的一种计算机设备的结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
另外,本公开实施例中的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。
在本文中提及的“多个或者若干个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
经研究发现,由于小说对应的数据操作记录数量繁多,使用已有的存储方法对繁多的数据操作记录进行存储,不仅会带来较大的存储压力,还会带来存储成本高的问题。另外,已有的存储方法存储完成的数据操作记录,还无法保障数据的完整性和数据查询的便利性。
基于上述研究,本公开提供了一种数据存储方法、装置、计算机设备和存储介质,在获取针对目标小说的操作记录数据之后,根据目标小说的标识和操作记录数据,生成键值对数据,可以实现利用结构化的键值对数据表征目标小说的操作记录数据,再通过将键值对数据缓存至分布式缓存空间,可以实现对键值对数据的缓存。由于分布式缓存空间中的存储的数据存在有效期,利用定时转存任务,对分布式缓存空间中缓存的各个键值对数据进行映射处理,得到数据仓库工具表,再利用MapReduce任务,根据数据仓库工具表包括的各条映射后的数据和映射后的数据对应的标识,生成值文件和索引文件,并将索引文件和值文件保存至HDFS,可以实现将分布式缓存空间中缓存的键值对数据,定时转存至HDFS进行存储,既可以防止分布式缓存空间中缓存的数据过期,又可以实现对数据的永久缓存并降低数据存储成本。并且,操作记录数据最终可以以索引文件和值文件的形式存储在HDFS,既具有严谨的数据结构,还保障了数据的完整性。此外,在索引文件可以基于标识生成的基础上,可以实现基于标识和索引文件,在HDFS中快速地查询出目标小说对应在值文件中的数据,提高了数据查询的便利性。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
需要说明的是,本公开实施例中所提到的特定名词包括:
MD5信息摘要算法:MD5 Message-Digest Algorithm,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种数据存储方法进行详细介绍,本公开实施例所提供的数据存储方法的执行主体一般为具有一定计算能力的终端设备或其他处理设备,其中终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、个人数字处理设备(Personal Digital Assistant,PDA)、手持设备、计算机设备等;在一些可能的实现方式中,该数据存储方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
下面以执行主体为服务器为例对本公开实施例提供的数据存储方法加以说明。
如图1所示,为本公开实施例提供的一种数据存储方法的流程图,可以包括以下步骤:
S101:获取针对目标小说的操作记录数据。
这里,目标小说可以为任一网络小说。操作记录数据可以包括针对目标小说执行的操作的记录和目标小说在操作前后的状态变化记录等,具体的,操作记录数据可以为在针对目标小说执行任一操作后生成的数据。例如,操作记录数据可以为在操作方利用小说状态修改服务将小说由A状态修改后B状态后生成的记录数据;在操作方利用小说内容修改服务更改小说的任一章节的章节内容后生成的记录数据;在操作方新增、删除、替换小说对应的信息后生成的记录数据等。
示例性的,操作记录数据的数据结构可以如下所示:
具体实施时,操作数据记录可以以上述数据结构表征。
示例性的,在任一操作方对目标小说执行操作之后,目标小说对应的小说服务端可以生成针对目标小说的操作记录数据,然后,小说服务端可以将操作记录数据发送至用于执行本公开实施例提供的数据存储方法的服务器,进而,服务器可以获取到针对目标小说的操作记录数据。当然,操作方也可以为对小说进行操作的服务,如上述小说状态修改服务、小说内容修改服务等。
S102:根据目标小说的标识和操作记录数据,生成键值对数据,并将键值对数据缓存至分布式缓存空间。
这里,分布式缓存空间可以为一种用于对数据进行缓存的空间。具体实施时,分布式缓存空间可以为Abase。其中,Abase是一款高性能、大容量、高可用的KV存储系统。
键值对数据即为key-value数据,具体可以包括键数据和值数据。标识用于位于标识小说,不同的小说对应于不同的标识。
具体实施时,可以根据目标小说的标识生成键值对数据中的键数据(即key),并将操作记录数据作为键值对数据中的值数据(value)。如此,可以得到操作记录数据对应的键值对数据。
在一种实施例中,针对S102,可以按照以下步骤实施:
S102-1:确定操作记录数据的生成时间。
这里,操作记录数据的生成时间可以为发起数据操作的操作方,发起数据操作的时间,也可以为生成操作记录数据的时间。具体的,生成时间可以为纳秒级的时间戳(timestamp)。
S102-2:根据生成时间和目标小说的标识,生成键值对数据中的键数据,并将操作记录数据作为键值对数据中的值数据。
这里,目标小说的标识可以用ItemID表示。
具体实施时,可以按照目标小说的标识在前,操作记录数据的生成时间在后的格式,生成键数据。示例性的,键数据的格式可以为“ItemID_timestamp”。
同时,可以将操作记录数据作为键值对数据中的值数据;或者,也可以将操作记录数据中具体的数据内容作为值数据。之后,可以将生成的键数据和值数据,作为得到的键值对数据。
之后,可以调用小说历史记录写入服务(novel.history_record.write服务)对应的信息写入接口,利用信息写入接口,将生成的键值对数据,写入分布式缓存空间Abase中。这里,缓存在Abase中的键值对数据的有效时长可以为预先指定的时长,例如,七天、十天等。也即,可以为缓存至分布式缓存空间Abase中的键值对数据设置生成时间值(Time ToLive,简称TTL)。
由于小说可以包括多个,针对任一小说,在任一时刻均可能存在多个操作方对该小说进行数据操作。因此,在每个时刻,服务器可能获取到多个小说分别对应的多个操作记录数据,或者,在每个时刻,服务器也可能获取针对同一个目标小说的多个操作记录数据。无论服务器在每个时刻获取多少个操作记录数据,均可以先将其转换为键值对数据,再缓存至分布式缓存空间Abase中。
在一种可能的实施方式中,将键值对数据缓存至分布式缓存空间的过程可以分为同步写入的过程和异步写入的过程,具体的:
针对同步写入的过程,服务器在获取到操作记录数据之后,可以直接执行上述S102,生成操作记录数据对应的键值对数据。然后可以调用Abase的信息写入接口,利用信息写入接口,将键值对数据写入至Abase,也即缓存至Abase。
针对异步写入的过程,还可以分为主动异步写入和被动异步写入的过程。针对主动异步写入,服务器在获取到操作记录数据之后,主动将操作记录数据发送至kafka队列中。之后,可以利用FaaS服务,从kafka队列获取操作记录数据,并执行上述S102,生成操作记录数据对应的键值对数据,也即利用FaaS消费kafka队列中的操作记录数据。然后可以调用Abase的信息写入接口,利用信息写入接口,将键值对数据写入Abase。其中,FaaS:全称Functions as a Service,函数即服务,每一个函数都是一个服务,函数可以由任何语言编写,除此之外不需要关心任何运维细节。
针对被动异步写入的过程,服务器在获取到操作记录数据之后,在确定当前针对Abase的写入操作达到预设操作数量的情况下,确定需要触发异步写入。之后,可以将操作记录数据发送至kafka队列中。之后,可以利用FaaS服务,从kafka队列获取操作记录数据,并执行上述S102,生成操作记录数据对应的键值对数据。然后可以调用Abase的信息写入接口,利用信息写入接口,将键值对数据写入Abase。
在一种可选的实施方式中,如果未能成功将键值对数据写入Abase,则可以触发失败补偿,将键值对数据或者键值对数据对应的操作记录数据重新发送至kafka队列中。之后,可以利用FaaS服务,重新尝试将键值对数据写入。如此,通过触发失败补偿,重新写入的方式,可以提高将操作记录数据对应的键值对数据写入Abase的成功率。
S103:响应于触发定时转存任务,对分布式缓存空间缓存的至少一条键值对数据进行映射处理,得到数据仓库工具表。
其中,数据仓库工具表包括至少一条映射后的数据和每条映射后的数据对应的标识。可选的,每条映射后的数据对应的标识可以包括在该条映射的数据中。
这里,定时转存任务为预先创建的任务,用于定时将存储在分布式缓存空间中的全部数据,转换为数据仓库工具表,以便于后续根据数据仓库工具表将操作记录数据存储在HDFS中。示例性的,定时转存任务可以为每天凌晨将分布式缓存空间中的全部数据转换至数据仓库工具表的任务。
数据仓库工具表具体可以为Hive表。其中,Hive是基于分布式计算Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive数据仓库工具能将结构化的数据文件映射为一张数据库表。
具体实施时,可以响应于触发定时转存任务,获取分布式缓存空间当前缓存的全部键值对数据,对每条键值对数据分别进行映射处理,得到每条键值对数据对应的映射后的数据和该映射后的数据对应的标识,也即得到了Hive表。这里,映射后的数据对应的标识即为该映射后的数据对应的键值对数据中的键数据指示的目标小说的标识。
示例性的,可以响应于触发定时转存任务,利用转存dump操作,将分布式缓存空间当前缓存的全部键值对数据dump至Hive表。
这样,由于Hive表中的数据,可以通过hsql语句进行查询。因此,通过将键值对数据dump至Hive表,便于开发人员利用hsql语句,从Hive表中,查询到有关目标小说的操作记录数据。其中,hsql语句一种数据库查询语句,其可以用于从Hive表中查询数据。
S104:利用预先创建的映射归约MapReduce任务,根据各条映射后的数据和映射后的数据对应的标识,生成值文件和索引文件,并将值文件和索引文件存储至基于分布式计算的分布式文件系统HDFS。
这里,MapReduce,映射归约,包Map(映射)和Reduce(归约),是面向大数据并行处理的计算模型、框架和平台,其可以对大规模数据进行处理。MapReduce任务是一种预先创建的离线任务,用于将Hive表中的数据,转存至HDFS中进行永久存储。
HDFS:Hadoop Distributed File System,基于分布式计算的分布式文件系统,能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。在本公开实施例中,HDFS系统应用在小说应用上。
在HDFS系统中,数据可以以索引文件和值文件的形式存储,其中,值文件用于表征具体的数据内容,索引文件用于表征数据在值文件中的存储位置。值文件中可以包括多行数据,一行数据对应于一条操作记录数据。
具体实施时,在基于上述S103得到Hive表后,可以执行预先创建的MapReduce任务,根据Hive表中包括的各条映射后的数据和各条映射后的数据分别对应的标识,生成值文件和索引文件,并将索引文件和值文件存储在HDFS系统中。
这样,在获取针对目标小说的操作记录数据之后,根据目标小说的标识和操作记录数据,生成键值对数据,可以实现利用结构化的键值对数据表征目标小说的操作记录数据,再通过将键值对数据缓存至分布式缓存空间,可以实现对键值对数据的缓存。由于分布式缓存空间中的存储的数据存在有效期,利用定时转存任务,对分布式缓存空间中缓存的各个键值对数据进行映射处理,得到数据仓库工具表,再利用MapReduce任务,根据数据仓库工具表包括的各条映射后的数据和映射后的数据对应的标识,生成值文件和索引文件,并将索引文件和值文件保存至HDFS,可以实现将分布式缓存空间中缓存的键值对数据,定时转存至HDFS进行存储,既可以防止分布式缓存空间中缓存的数据过期,又可以实现对数据的永久缓存并降低数据存储成本。并且,操作记录数据最终可以以索引文件和值文件的形式存储在HDFS,既具有严谨的数据结构,还保障了数据的完整性。此外,在索引文件可以基于标识生成的基础上,可以实现基于标识和索引文件,在HDFS中快速地查询出目标小说对应在值文件中的数据,提高了数据查询的便利性。
在一种实施例中,为了减少存储在HDFS系统中的文件的数据量,针对上述S104中的“根据各条映射后的数据和映射后的数据对应的标识,生成值文件和索引文件”的步骤,可以按照以下步骤实施:
S104-1:对各条映射后的数据,分别进行数据序列化处理,得到序列化后的各条数据。
示例性的,可以利用预先创建的MapReduce任务,按照预设的序列化方式,对Hive表中包括的各条映射后的数据,进行序列化处理,得到序列化后的各条数据。具体的,对映射后的数据进行序列化处理的过程,即为对映射后的数据的数据结构进行映射化处理的过程。
其中,预设的序列化方式例如可以为Protobuf序列化方式。Protobuf序列化,是一款无关平台,无关语言,可扩展,轻量级高效的序列化结构的数据格式,用于将自定义数据结构序列化成字节流,和将字节流反序列化为数据结构。
S104-2:利用预设数据编码方式,对序列化后的各条数据分别进行数据编码处理,得到编码后的各条二进制数据。
这里,预设的数据编码方式包括但不限于Base64编码方式。其中,Base64编码方式是用于传输8Bit字节码的编码方式之一,具体的,Base64编码方式一种基于64个可打印字符来表示二进制数据的方法。
具体实施时,可以利用Base64编码方式,对序列化后的各条数据分别进行数据编码处理,得到编码后的各条二进制数据。其中,二进制数据的数据结构可以与上述操作记录数据的数据结构一致。
S104-3:根据各条二进制数据和二进制数据对应的标识,生成值文件和索引文件。
这里,操作记录数据对应于键值对数据,键值对数据对应于映射后的数据,映射后的数据对应于序列化后的数据,序列化后的数据对应的二进制数据。所以二进制数据对应的标识,即为该二进制数据对应的键值对数据中的键数据指示的标识,该标识也为与该键值对数据相对应的操作记录数据所对应的小说的标识。
具体实施时,在对映射后的数据进行序列化处理,得到序列化后的数据之后,可以将该映射后的数据对应的标识,作为该序列化后的数据对应的标识;在对该序列化后的数据进行数据编码处理,得到编码后的二进制数据之后,可以将该序列化后的数据应的标识,作为该二进制数据的标识。
在得到各条二进制数据和各条二进制数据分别对应的标识之后,可以根据各条二进制数据和二进制数据对应的所述标识,生成值文件和索引文件。
在一种实施例中,S104-3可以按照以下步骤实施:
S104-3-1:根据各条二进制数据,生成值文件,并确定每个二进制数据在HDFS中的存储位置。
这里,由于值文件存储在HDFS系统中,所以二进制数据在HDFS中的存储位置,即为二进制数据在值文件中的存储位置。具体的,存储位置可以为二进制数据在值文件中的起始位置。存储位置可以用offset表示。
具体实施时,可以根据各条二进制数据,生成值文件,即value file。同时,可以确定每个二进制数据在HDFS中的存储位置。如图2所示,为本公开实施例提供的一种索引文件和值文件的示意图,其中,值文件中包括子文件1~4,不同的子文件对应于不同的存储位置,每个子文件中可以包括至少一个二进制数据,在图2中,示出了子文件2中包括的6条二进制数据,即二进制数据1~6。
S104-3-2:针对每个二进制数据,根据该二进制数据对应的标识和存储位置,生成该二进制数据的索引信息。
具体实施时,针对每个二进制数据,可以将该二进制数据对应的标识和该二进制数据在HDFS中的存储位置进行组合,得到该二进制数据的索引信息。示例性的,索引信息可以为“ItemID+offset”的格式,其中,ItemID可以称为索引信息的键key信息,offset可以称为索引信息的值value信息。
索引信息可以为16字节byte的数据,其中,ItemID占8字节byte,offset占8字节byte。如上述图2所示,其中示出的索引文件包括一个索引信息。根据索引信息中的offset,可以从值文件中确定出与该offset相对应的子文件,之后,可以从该子文件中获取索引信息对应的二进制数据。
S104-3-3:根据每个二进制数据的索引信息,生成索引文件。
示例性的,可以将各个二进制数据的索引信息组合存储,得到索引文件,即Indexfile。
在一种实施方式中,也可以预先创建一定数量的Index文件。在得到各条二进制数据对应的索引信息之后,可以按照每两个Index文件的文件大小相差最小为目标,将各个Index分别存储在预先创建的各个Index文件。
示例性的,假设有1亿个ItemID对应的二进制数据,对应的索引文件大小约等于1.6GB,当有100个index文件时,每个index文件可以控制在16MB左右。
在一种可选的实施方式中,在得到Hive表之后,可以先利用预先创建的MapReduce任务,根据各条映射后的数据生成值文件,并确定每条映射后的数据在HDFS中的存储位置。同时,针对每条映射后的数据,根据该映射后的数据对应的标识和存储位置,生成该映射后的数据的索引信息;根据每条映射后的数据的索引信息,生成索引文件。
之后,可以对值文件中的每条映射后的数据,先进行序列化处理,得到序列化后的数据;再利用预设数据编码方式,对序列化后的数据进行数据编码处理,得到编码后的各条二进制数据。如此,可以实现将值文件包括的各条映射后的数据转化为数据量更小的二进制数据,降低值文件的数据量。
在一种实施例中,由于Abase中存储的键值对数据具有有效时长,例如,七天,而定时转存任务和MapReduce任务,通常为每天执行一次的任务,也即,每天都会根据Abase中存储的键值对数据,生成一个Hive表,再根据Hive表生成值文件和索引文件。这种情况下,第二天生成的值文件和索引文件,相对于第一天生成的值文件和索引文件,将存在一定数量的重复的数据;针对第三天生成的值文件和索引文件,相对于第二天生成的值文件和索引文件,也将存在一定数量的重复的数据,依次类推,针对第七天生成的值文件和索引文件,其可能与第一天至第六天生成的值文件和索引文件,均存在重复的数据。此时,如果直接将每天生成的值文件和索引文件存储,必然会存储一定数量的重复的数据,从而造成存储空间不必要的浪费。
为了避免重复存储数据,针对将值文件和索引文件存储至基于分布式计算的分布式文件系统HDFS中的过程,在每天生成值文件和索引文件之后,可以先获取HDFS系统中已存储的索引文件和值文件,然后对当天生成的索引文件、值文件、HDFS中已存储的索引文件和值文件进行数据去重,得到去重后的索引文件和去重后的值文件。之后,可以将去重后的索引文件和去重后的值文件存储至HDFS。
示例性的,可以利用MD5信息摘要算法和hash算法,对已存储的索引文件、值文件、和当前天生成的值文件、索引文件,进行数据去重和文件合并操作。
如图3所示,为本公开实施例提供的一种数据存储方法的具体流程示意图。首先,获取针对目标小说的操作记录数据。然后,确定是否异步写入数据。如果是,则将操作记录数据发送至kafka队列,并利用FaaS消费kafka队列中的操作记录数据;然后调用Abase的信息写入接口,利用信息写入接口,将键值对数据写入Abase,并设置键值对数据的TTL。如果否,则直接调用Abase的信息写入接口,利用信息写入接口,将键值对数据写入至Abase,并设置键值对数据的TTL。
这里,如果未能成功将键值对数据写入Abase,也即写入失败则触发失败补偿,将键值对数据重新发送至kafka队列中。之后,可以利用FaaS服务,重新尝试将键值对数据写入Abase。
之后,可以响应于触发定时转存任务,利用每日转存dump操作,将分布式缓存空间当前缓存的全部键值对数据dump至Hive表。然后,再利用预先创建的MapReduce任务,根据各条映射后的数据和映射后的数据对应的标识,生成值文件和索引文件。
再之后,可以利用MD5信息摘要算法和hash算法,对HDFS系统中已存储的索引文件、值文件、和当前天生成的值文件、索引文件,进行数据去重和文件合并,从而得到去重后的索引文件和去重后的值文件,并将去重后的索引文件和去重后的值文件存储在HDFS中。
关于图3所示的各个步骤的具体实施过程,可以参照上述各实施例,此处不再赘述。
在一种实施例中,在将值文件和索引文件存储至HDFS系统之后,由于随着时间的增长,存储在HDFS系统中的值文件的文件数据量和索引文件的文件数据量将越来越大。文件数据量越大,数据查询的速度越慢,因为,为了提高后续在HDFS中的数据查询速度,可以按照预设周期,对HDFS中已存储的索引文件和值文件,分别进行数据归档操作,得到归档后的多个子索引文件和归档后的多个子值文件,并存储子索引文件和子值文件。其中,一个索引文件对应于至少一个子索引文件;一个值文件对应于至少一个子值文件。
这里,预设周期可以根据经验进行设置,例如,预设周期可以为每四个月、每两个月等。数据归档操作即为将对文件中的数据进行切分的操作。具体的,可以照预设的分割数据量,将值文件切分为多个子值文件,以及将索引文件切分为多个子索引文件,其中,子值文件和子索引文件的数据量小于等于分割数据量。
如此,通过数据归档操作,可以得到数据量较小的多个子文件,然后可以通过并行查询子文件的方式进行数据查询,有效提高了数据查询的速度。
在一种实施例中,在将针对小说的操作记录数据,以索引文件和值文件的形式,永久存储在HDFS系统中之后,还可以对存储在Abase和HDFS系统中的数据进行查询。具体的,可以按照以下步骤,实现数据查询:
步骤一、响应于客户端的第一查询请求,确定第一查询请求中携带的查询信息。
这里,第一查询请求为用于查询待查询的小说对应的操作记录数据的请求,第一查询请求中可以携带有查询信息,查询信息中可以包括待查询的小说的标识,即查询标识。
本公开实施例可以提供一个查询系统,用户在任一客户端登录查询系统后,客户端可以向用户展示数据查询页面,用户可以通过在客户端展示的数据查询页面中输入待查询的小说对应的查询标识,实现对该待查询的小说对应的操作纪录数据的查询。查询系统用于对按照本公开实施例提供数据存储方法存储的数据进行查询。
如图4所示,为本公开实施例提供的一种数据查询页面的示意图。其中包括查询标识输入框,查询条件输入框(将在后文进行详细介绍),位于第一位置的查询按钮,查询结果展示区域,位于第二位置的全量数据查询按钮和查询到的数据的条数指示信息。
具体实施时,用户可以在客户端展示的数据查询页面中的查询标识输入框,输入查询标识,然后点击位于第一位置的查询按钮。之后客户端可以响应于点击查询按钮的操作,根据用户输入的查询标识,生成查询信息,并根据查询信息生成第一查询请求发送至服务器。其中,生成的查询信息中还可以包括并行查询字段,且并行查询字段的值为第一预设值,第一预设值用于指示需要对HDFS进行查询。示例性的,并行查询字段可以为need_hdfs字段,第一预设值可以为正确true。
之后,服务器可以接收到第一查询请求,并响应于第一查询请求,对第一查询请求进行解析,确定出第一查询请求中携带的查询信息。
步骤二、根据查询信息中的查询标识,从分布式缓存空间中当前存储的各个键值对数据中,确定与查询标识相匹配的各个第一键值对数据。
这里,第一键值对数据即为分布式缓存空间中存储的、包括的键数据指示的标识与查询标识一致的键值对数据。
具体实施时,可以调用小说历史记录读取服务(novel.history_record.read)对应的信息读取接口,利用信息读取接口和扫描scan方法,从分布式缓存空间中当前存储的各个键值对数据分别包括的键数据指示的标识中,确定与查询标识一致的匹配标识,将该匹配标识对应的键值对数据作为上述第一键值对数据。
可理解的,确定出的与查询标识相匹配的各个第一键值对数据至少为0个。
在一种实施例中,查询信息中还可以包括用户在查询条件输入框输入的查询条件。这里,查询条件用于对从Abase中查找到的与查询标识匹配的键值对数据进行筛选,得到筛选出的各个第一键值对数据。具体实施时,用户可以在数据查询页面中的查询标识输入框,输入查询标识,以及在查询条件输入框输入查询条件,然后点击查询按钮。之后客户端可以响应于点击查询按钮的操作,根据用户输入的查询标识和查询条件,生成查询信息,并根据查询信息生成第一查询请求发送至服务器。之后,服务器可以响应于第一查询请求,确定包括查询标识和查询条件的查询信息。
在一种实施例中,查询条件可以包括操作记录数据的生成时间大于第一预设时间、操作记录数据的生成时间小于第二预设时间、操作记录数据对应的数据操作的操作方为目标操作方、操作记录数据的数量、反馈顺序中的起始序列号、终止序列号中的至少一种。
操作记录数据的生成时间大于第一预设时间,例如可以为将Abase中存储的键数据指示的生成时间大于第一预设时间的键值对,作为第一键值对。第一预设时间即开始时间,第二预设时间即结束时间。
操作记录数据的生成时间小于第二预设时间,例如可以为将Abase中存储的键数据指示的生成时间小于第一预设时间的键值对,作为第一键值对。
其中,查询条件输入框可以包括预设时间输入框,和其他查询条件输入框,用户可以在图4示出的预设时间输入框设置第一预设时间和/或第二预设时间。
不同操作记录数据可以为在不同的操作方执行数据操作后生成,因此,查询条件可以指定筛选目标操作方对应的操作记录数据。例如,操作记录数据对应的数据操作的操作方为目标操作方,可以为将Abase中存储的目标操作方对应的键值对数据,作为第一键值对数据。
操作记录数据的数量用于指示当前次查询需要返回的操作记录数据的最大数量。例如,将从Abase中筛选出的前10条键值对数据,作为第一键值对数据。
反馈顺序中的起始序列号,即为在从Abase中筛选出的与查询标识相匹配的键值对数据之后,将每个键值对数据先作为初始的第一键值对数据,之后,确定每个初始的第一键值对数据的反馈顺序对应的序列号,将序列号不小于起始序列号的初始的第一键值对数据,作为最终需要反馈的第一键值对数据。这里,需要说明的是,键值对数据的反馈顺序即为键值对数据中的值数据的反馈顺序。
反馈顺序中的终止序列号,即为在从Abase中筛选出的与查询标识相匹配的键值对数据之后,将每个键值对数据先作为初始的第一键值对数据,之后,确定每个初始的第一键值对数据的反馈顺序对应的序列号,将序列号不大于起始序列号的初始的第一键值对数据,作为最终需要反馈的第一键值对数据。
用户输入查询条件可以包括一个或多个,在查询条件包括多个的情况下,将同时满足所有查询条件的键值对数据,作为第一键值对数据。
另外,查询条件还可以包括操作记录数据对应的数据操作的目标发起服务和目标写入服务。其中,目标发起服务为执行数据操作的服务,例如小说新版后台服务、小说内容可见度服务、小说内容合同服务以及小说内容发文服务等。目标写入服务为将操作记录数据写入Abase的服务。关于具体的查询条件,可以根据与上述数据结构中的任一信息进行设置,本公开实施例不进行具体限定。
当然,也可以在从Abase中查询出第一键值对数据,并确定各个第一键值数据的反馈顺序之后,利用查询条件对第一键值对数据进行筛选,将筛选出的第一键值对数据作为最终的第一键值对数据,按照最终的第一键值对数据的反馈顺序,依次对最终的第一键值对数据中的值数据的进行反馈。
进一步的,针对确定第一键值对数据的步骤,可以按照以下步骤实施:
首先,可以根据查询信息中的查询标识,从分布式缓存空间中当前存储的各个键值对数据中,确定与查询标识相匹配的第三键值对数据。
这里,可以利用信息读取接口和扫描scan方法从分布式缓存空间中当前存储的各个键值对数据分别包括的键数据指示的标识中,确定与查询标识一致的匹配标识,将该匹配标识对应的键值对数据作为上述第三键值对数据。
然后,可以按照查询信息中的查询条件,从第三键值对数据中,筛选出第一键值对数据。具体的,在得到每个第三键值对数据之后,可以从第三键值对数据中,确定出同时满足各个查询条件的第一键值对数据。
步骤三、基于各个第一键值对数据中的键数据,确定各个第一键值对数据中的值数据的反馈顺序。
由上述实施例可知,键值对数据中的键数据指示有该键数据对应的操作记录数据的生成时间。因此,如果确定出的第一键值对数据包括多个,则可以基于各个第一键值对数据中的键数据分别指示的生成时间,按照生成时间的先后顺序,确定每个第一键值对数据中的值数据的反馈数据。
示例性的,第一键值对数据包括第一键值对1、2和3,其中第一键值对数据1的生成时间早于第一键值对数据3的生成时间早于第一键值对数据2的生成时间,则可以确定第一键值对数据1中的值数据的反馈顺序为第一个反馈,第一键值对数据3中的值数据的反馈顺序为第二个反馈,第一键值对2中的值数据的反馈顺序为第三个反馈。
如果确定出的第一键值对数据为1个,则可以直接将该唯一第一键值对数据反馈至所述客户端。由于Abase中缓存的数据均为TTL,例如七天。而第一键值对数据为从Abase中查询出的数据,因此,可以存储查询出的第一键值对数据为0个的情况,针对这个情况,则可以返回指示没有查询到数据的反馈信息。并且,可以在图4所示的数据查询页面中,展示默认信息“默认展示最近七天的数据,查询全量数据请点击”。基于此,在客户端展示有“指示没有查询到数据的反馈信息”的情况下,则用户可知在Abase中存储的近七天的数据中,不存在与查询标识匹配的数据。
步骤四、按照反馈顺序,将各个第一键值对数据中的值数据反馈至客户端。
具体实施时,可以按照每个第一键值对数据中的值数据的反馈顺序,依次将各个第一键值对数据中的值数据反馈至客户端。或者,也可以按照每个第一键值对数据中的值数据的反馈顺序,依次将各个第一键值对数据反馈至客户端。
再或者,在确定每个第一键值对数据中的值数据的反馈顺序之后,还可以将每个值数据转换为操作记录数据,并按照每个值数据的反馈顺序,依次将每个值数据对应转换后的操作记录数据反馈至客户端。
如此,用户可以在客户端获取到与查询标识对应的待查询的小说在仅七天的操作记录数据。
在一种实施例中,由于HDFS系统中永久存储有各个小说分别对应的操作记录数据,为了便于用户可以查询到与查询标识相关的所有操作记录数据,在确定第一查询请求中携带的查询信息之后,还可以按照以下步骤,将HDFS中存储的与查询标识相关的所有操作记录数据缓存至Abase中,以便于后续从Abase中查询到所有操作记录数据。
S1:在查询信息中的并行查询字段的值为第一预设值的情况下,根据查询信息中的查询标识,从HDFS存储的各个索引文件中,确定与查询标识相匹配的目标索引文件。
这里,目标索引文件为HDFS中存储的所有索引文件中、ItemID为查询标识的索引文件。并行查询字段的值用于指示是否需要请求HDFS。在具体应用中,可以通过控制need_hdfs字段的值,控制是否需要对HDFS进行查询。need_hdfs字段的值可以包括第一预设值和第二预设值,其中,第一预设值可以为正确true,用于指示需要对HDFS进行查询;第二预设值可以错误false,用于指示不需要对HDFS进行查询。第一预设值可以在响应于用户点击第一位置的查询按钮后设置,第二预设值可以在在响应于用户点击第二位置的全量数据查询按钮后设置。
具体实施时,在获取到查询信息之后,除可以直接根据查询信息携带的查询标识,从Abase中获取第一键值对数据,还可以确定查询信息中的need_hdfs字段的值,若need_hdfs字段的值为true,则可以根据查询标识,并行在HDFS中进行查询。具体的,可以根据HDFS中存储的各个索引文件分别包括的ItemID,从HDFS中存储的各个索引文件中,确定出包括的ItemID与查询标识一致的目标索引文件。这里,HDFS中存储的各个索引文件可以包括进行数据归档前的索引文件和/或进行数据归档后得到的各个子索引文件。若need_hdfs字段的值为false,则表示不需要根据查询标识,并行在HDFS中进行查询,只需要在Abase中进行数据查询即可。
可理解的,在,HDFS中存储的各个索引文件包括进行数据归档前的索引文件和进行数据归档后得到的各个子索引文件的情况下,目标索引文件可以包括进行数据归档前的索引文件和/或子索引文件。
S2:从HDFS存储的值文件中,确定与目标索引文件中包括的各个目标索引信息分别相匹配的目标数据。
其中,目标索引信息为携带有查询标识的索引信息,属于目标索引文件包括的索引信息。
具体实施时,针对每个目标索引文件,可以根据该目标索引文件中的各个索引信息分别包括的ItemID,确定出该目标索引文件中与查询标识匹配的目标索引信息。其中,与查询标识匹配的目标索引信息即为包括的ItemID与查询标识一致的索引信息。
之后,根据可以根据每个目标索引信息中包括的存储位置,从HDFS存储的值文件中,确定与各个目标索引信息分别相匹配的目标数据。这里,目标数据为值文件中包括的二进制数据。在这里,HDFS存储的值文件可以包括进行数据归档前的值文件和/或进行数据归档后得到的各个子值文件。
S3:根据查询标识和目标数据,生成待查询键值对数据。
这里,待查询键值对数据包括待查询键数据和待查询值数据。
具体实施时,由于需要将从HDFS中查询到的目标数据重新缓存至Abase,而Abase中存储的数据均为键值对数据,所以在确定目标数据之后,可以将查询标识、目标数据和目标数据对应的操作记录数据的生成时间,重新生成目标数据对应的待查询键值对数据。
示例性的,可以将目标数据还原为值数据,将该值数据作为待查询值数据;同时,根据该值数据对应的生成时间和查询标识,生成待查询键数据。将该待查询值数据和该待查询键数据作为一个待查询键值对数据。
这里,得到的每个待查询键值对数据,均为待查询的小说对应的数据。
S4:将待查询键值对数据缓存至分布式缓存空间,并设置待查询键值对数据的有效时长为预设时长。
这里,设置有效时长即为设置TTL。预设时长可以根据经验设置,例如十分钟。之所以需要设置有效时长,是为了防止待存储键值对数据在Abase中存储的时间过长,导致Abase的存储压力过大,影响Abase的性能。
具体实施时,可以利用Abase对应的信息写入接口,将各个待查询键值对数据写入至Abase,并将各个待查询键值对数据分别对应的有效时长,均设置为预设时长。
在一种实施例中,在执行完S4之后,还可以按照以下步骤响应于用户发起的第二查询请求:
T1:响应于客户端针对查询标识的第二查询请求,根据查询标识,从分布式缓存空间中当前存储的各个键值对数据中,确定与查询标识相匹配的第二键值对数据。
其中,在第二查询请求携带的查询信息中并行查询字段的值为第二预设值的情况下,第二键值对数据包括待查询键值对数据;第二预设值用于指示不需要对HDFS进行查询。第二查询请求可以为用于查询待查询的小说对应的全量数据的请求,其中,全量数据为小说对应的全部的操作记录数据。
示例性的,在将第一键值对数据中的值数据反馈至客户端之后,如果当前反馈的值数据不完全,用户可以通过点击第二位置处的全量数据查询按钮,客户端可以响应于点击全量数据查询按钮的操作,确定并行查询字段的值为第二预设值,并将查询标识和具有第二预设值的并行查询字段,作为查询信息。之后,可以根据该查询信息生成第二查询请求并发送至服务器。
这里,由于用户点击全量数据查询按钮的操作,通常发生在获取第一键值对数据之后的很短一段时间内,这时待查询键值对数据必定处于有效期内,从Abase中查询到的第二键值对数据则可以包括待查询键值对数据。
当然,在第二查询请求的发起时间与待查询键值对数据的存储时间之间的时间间隔小于预设时长的情况下,第二键值对数据也将包括待查询键值对数据。
具体的,如果用户在发起第一查询请求之后,又针对查询标识发起了第二查询请求,可以确定第二查询请求携带的查询信息中need_hdfs字段的值。若need_hdfs字段的值为false,则仅对Abase进行查询,不对HDFS进行并行查询。进而,可以在对第二查询请求进行响应之后,利用信息读取接口和scan方法,从分布式缓存空间中当前存储的各个键值对数据中,确定与查询标识相匹配的第二键值对数据。其中,第二键值对数据可以包括待查询键值对数据,以及Abase自身存储的除待查询键值对数据以外的、与查询标识相匹配的键值对数据。
如果need_hdfs字段的值为true,则可以按照上述步骤二,从Abase中进行数据查询,同时对HDFS进行并行查询。
另外,需要说明的是,在第二键值对数据中包括待查询键值对数据,以及Abase自身存储的除待查询键值对数据以外的、与查询标识相匹配的键值对数据的情况下,为了避免第二键值对数据中存在重复的键值对数据,可以对第二键值对数据进行数据去重处理,得到去重后的第二键值对数据。
其中,在第二查询请求中包括查询条件的情况下,可以先利用查询条件筛选第二键值对数据,再对第二键值对数据进行数据去重处理,得到去重后的第二键值对数据;也可以先对第三键值对数据进行数据去重处理,得到去重后的第三键值对数据,再利用查询条件,从去重后的第三键值对数据中,筛选出第二目标键值对数据。
T2:基于各个第二键值对数据中的键数据,确定各个第二键值对数据中的值数据的反馈顺序。
示例性的,可以基于各个去重后的第二键值对数据中的键数据,确定各个去重后的第二键值对数据中的反馈顺序。
T3:按照反馈顺序,将各个第二键值对数据中的值数据反馈至客户端。
示例性的,可以按照反馈顺序,将各个去重后的第二键值对数据中的值数据反馈至客户端。
关于上述T2和T3的具体实施步骤,可以参照上述步骤三和步骤四,此处不再赘述。
在一种可能的实施方式中,针对筛选出第二键值对数据的步骤,如果第二查询请求的查询信息中携带有查询条件,也可以在根据查询标识,从Abase中获取到与查询标识相匹配的各个第四键值对数据之后,可以利用第二查询请求的查询信息中携带的查询条件,对各个第四键值对数据进行筛选,筛选出满足查询条件的第三键值对数据,并将满足查询条件的第三键值对数据中的值数据反馈至客户端。
如图5所示,为本公开实施例提供的一种查询示意图,可以包括以下步骤:用户通过客户端展示的查询系统对应的数据查询页面,输入查询标识和查询条件,之后,客户端可以生成第一查询请求,并向服务器发起第一查询请求。服务器可以响应于第一查询请求,调用Abase的信息读取接口,利用信息读取接口和扫描scan方法,从Abase中当前存储的各个键值对数据中,确定与查询标识相匹配的第三键值对数据。然后按照查询条件,从第三键值对数据中,筛选出第一键值对数据。之后,可以确定第一键值对数据中的各个值数据的反馈顺序,并按照反馈顺序进行反馈。
同时,还可以根据查询标识,从HDFS系统中,筛选出目标数据,并生成待查询键值对数据。然后,将待查询键值对数据缓存至Abase,并设置待查询键值对数据的有效时长为预设时长。关于筛选出目标数据,并生成待查询键值对数据的步骤,具体可以参照上述S1至S4。
之后,客户端可以发起第二查询请求,服务器可以响应于第二查询请求,调用Abase的信息读取接口,利用信息读取接口和扫描scan方法,从Abase中当前存储的各个键值对数据中,确定与查询标识相匹配的第四键值对数据。这里,在第二查询请求携带的查询信息中并行查询字段的值为第二预设值的情况下,第二键值对数据可以包括待查询键值对数据。然后按照第二查询请求携带的查询条件,从第四键值对数据中,筛选出第二键值对数据,并对第二键值对数据进行数据去重处理,得到去重后的第二键值对数据。之后,可以对去重后的第二键值对数据进行反馈。
关于图5所示各个步骤的具体实施流程,可以参照上述各实施例,此处不再赘述。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与数据存储方法对应的数据存储装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述数据存储方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
如图6所示,为本公开实施例提供的一种数据存储装置的示意图,包括:
获取模块601,用于获取针对目标小说的操作记录数据;
第一生成模块602,用于根据所述目标小说的标识和所述操作记录数据,生成键值对数据,并将所述键值对数据缓存至分布式缓存空间;
映射模块603,用于响应于触发定时转存任务,对所述分布式缓存空间缓存的至少一条所述键值对数据进行映射处理,得到数据仓库工具表;所述数据仓库工具表包括至少一条映射后的数据和每条所述映射后的数据对应的所述标识;
第二生成模块604,用于利用预先创建的映射归约MapReduce任务,根据各条所述映射后的数据和所述映射后的数据对应的所述标识,生成值文件和索引文件,并将所述值文件和所述索引文件存储至基于分布式计算的分布式文件系统HDFS。
在一种可能的实施方式中,所述第二生成模块604,在所述根据各条所述映射后的数据和所述映射后的数据对应的所述标识,生成值文件和索引文件时,用于对各条所述映射后的数据,分别进行数据序列化处理,得到序列化后的各条数据;
利用预设数据编码方式,对所述序列化后的各条数据分别进行数据编码处理,得到编码后的各条二进制数据;
根据各条所述二进制数据和所述二进制数据对应的所述标识,生成值文件和索引文件。
在一种可能的实施方式中,所述第二生成模块604,在所述根据各条所述二进制数据和所述二进制数据对应的所述标识,生成值文件和索引文件时,用于根据各条所述二进制数据,生成所述值文件,并确定每个所述二进制数据在所述HDFS中的存储位置;
针对每个所述二进制数据,根据该二进制数据对应的所述标识和所述存储位置,生成该二进制数据的索引信息;
根据每个所述二进制数据的所述索引信息,生成所述索引文件。
在一种可能的实施方式中,所述第二生成模块604,在所述将所述值文件和所述索引文件存储至基于分布式计算的分布式文件系统HDFS时,用于对所述索引文件、所述值文件、所述HDFS中已存储的索引文件和值文件进行数据去重,得到去重后的索引文件和去重后的值文件;
将所述去重后的索引文件和所述去重后的值文件存储至所述HDFS。
在一种可能的实施方式中,所述装置还包括:
归档模块605,用于在所述将所述值文件和所述索引文件存储至基于分布式计算的分布式文件系统HDFS之后,按照预设周期,对所述HDFS中已存储的所述索引文件和所述值文件,分别进行数据归档操作,得到归档后的多个子索引文件和归档后的多个子值文件,并存储所述子索引文件和所述子值文件;
其中,一个所述索引文件对应于至少一个所述子索引文件;一个所述值文件对应于至少一个所述子值文件。
在一种可能的实施方式中,所述第一生成模块602,在所述根据所述目标小说的标识和所述操作记录数据,生成键值对数据时,用于确定所述操作记录数据的生成时间;
根据所述生成时间和所述目标小说的所述标识,生成所述键值对数据中的键数据,并将所述操作记录数据作为所述键值对数据中的值数据。
在一种可能的实施方式中,所述装置还包括:
查询模块606,用于在将所述值文件和所述索引文件存储至基于分布式计算的分布式文件系统HDFS之后,响应于客户端的第一查询请求,确定所述第一查询请求中携带的查询信息;
根据所述查询信息中的查询标识,从所述分布式缓存空间中当前存储的各个所述键值对数据中,确定与所述查询标识相匹配的各个第一键值对数据;
基于各个所述第一键值对数据中的键数据,确定各个所述第一键值对数据中的值数据的反馈顺序;
按照所述反馈顺序,将各个所述第一键值对数据中的值数据反馈至所述客户端。
在一种可能的实施方式中,所述查询模块606,在所述确定所述第一查询请求中携带的查询信息之后,还用于在所述查询信息中的并行查询字段的值为第一预设值的情况下,根据所述查询信息中的查询标识,从所述HDFS存储的各个所述索引文件中,确定与所述查询标识相匹配的目标索引文件;所述第一预设值用于指示对所述HDFS进行查询;
从所述HDFS存储的所述值文件中,确定与所述目标索引文件中包括的各个目标索引信息分别相匹配的目标数据;目标索引信息为携带有所述查询标识的索引信息;
根据所述查询标识和所述目标数据,生成待查询键值对数据;
将所述待查询键值对数据缓存至所述分布式缓存空间,并设置所述待查询键值对数据的有效时长为预设时长。
在一种可能的实施方式中,所述查询模块606,在所述设置所述待查询键值对数据的有效时长为预设时长之后,还用于响应于所述客户端针对所述查询标识的第二查询请求,根据所述查询标识,从所述分布式缓存空间中当前存储的各个所述键值对数据中,确定与所述查询标识相匹配的第二键值对数据;其中,在所述第二查询请求携带的查询信息中并行查询字段的值为第二预设值的情况下,所述第二键值对数据包括所述待查询键值对数据;所述第二预设值用于指示不对所述HDFS进行查询;
基于各个所述第二键值对数据中的键数据,确定各个所述第二键值对数据中的值数据的反馈顺序;
按照所述反馈顺序,将各个所述第二键值对数据中的值数据反馈至所述客户端。
在一种可能的实施方式中,所述查询信息包括查询条件;
所述查询模块606,在所述根据所述查询信息中的查询标识,从所述分布式缓存空间中当前存储的各个所述键值对数据中,确定与所述查询标识相匹配的第一键值对数据时,用于根据所述查询信息中的查询标识,从所述分布式缓存空间中当前存储的各个所述键值对数据中,确定与所述查询标识相匹配的第三键值对数据;
按照所述查询条件,从所述第三键值对数据中,筛选出所述第一键值对数据。
在一种可能的实施方式中,所述查询条件包括操作记录数据的生成时间大于第一预设时间、操作记录数据的生成时间小于第二预设时间、操作记录数据对应的数据操作的操作方为目标操作方、操作记录数据的数量、反馈顺序中的起始序列号、终止序列号。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
基于同一技术构思,本申请实施例还提供了一种计算机设备。参照图7所示,为本申请实施例提供的一种计算机设备的结构示意图,包括:
处理器71、存储器72和总线73。其中,存储器72存储有处理器71可执行的机器可读指令,处理器71用于执行存储器72中存储的机器可读指令,所述机器可读指令被处理器71执行时,处理器71执行下述步骤:S101:获取针对目标小说的操作记录数据;S102:根据目标小说的标识和操作记录数据,生成键值对数据,并将键值对数据缓存至分布式缓存空间;S103:响应于触发定时转存任务,对分布式缓存空间缓存的至少一条键值对数据进行映射处理,得到数据仓库工具表以及S104:利用预先创建的映射归约MapReduce任务,根据各条映射后的数据和映射后的数据对应的标识,生成值文件和索引文件,并将值文件和索引文件存储至基于分布式计算的分布式文件系统HDFS。
上述存储器72包括内存721和外部存储器722;这里的内存721也称内存储器,用于暂时存放处理器71中的运算数据,以及与硬盘等外部存储器722交换的数据,处理器71通过内存721与外部存储器722进行数据交换,当计算机设备运行时,处理器71与存储器72之间通过总线73通信,使得处理器71在执行上述方法实施例中所提及的执行指令。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的数据存储方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例所提供的数据存储方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的数据存储方法的步骤,具体可参见上述方法实施例,在此不再赘述。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
若本申请技术方案涉及个人信息,应用本申请技术方案的产品在处理个人信息前,已明确告知个人信息处理规则,并取得个人自主同意。若本申请技术方案涉及敏感个人信息,应用本申请技术方案的产品在处理敏感个人信息前,已取得个人单独同意,并且同时满足“明示同意”的要求。例如,在摄像头等个人信息采集装置处,设置明确显著的标识告知已进入个人信息采集范围,将会对个人信息进行采集,若个人自愿进入采集范围即视为同意对其个人信息进行采集;或者在个人信息处理的装置上,利用明显的标识/信息告知个人信息处理规则的情况下,通过弹窗信息或请个人自行上传其个人信息等方式获得个人授权;其中,个人信息处理规则可包括个人信息处理者、个人信息处理目的、处理方式、处理的个人信息种类等信息。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
Claims (14)
1.一种数据存储方法,其特征在于,包括:
获取针对目标小说的操作记录数据;
根据所述目标小说的标识和所述操作记录数据,生成键值对数据,并将所述键值对数据缓存至分布式缓存空间;
响应于触发定时转存任务,对所述分布式缓存空间缓存的至少一条所述键值对数据进行映射处理,得到数据仓库工具表;所述数据仓库工具表包括至少一条映射后的数据和每条所述映射后的数据对应的所述标识;
利用预先创建的映射归约MapReduce任务,根据各条所述映射后的数据和所述映射后的数据对应的所述标识,生成值文件和索引文件,并将所述值文件和所述索引文件存储至基于分布式计算的分布式文件系统HDFS。
2.根据权利要求1所述的方法,其特征在于,所述根据各条所述映射后的数据和所述映射后的数据对应的所述标识,生成值文件和索引文件,包括:
对各条所述映射后的数据,分别进行数据序列化处理,得到序列化后的各条数据;
利用预设数据编码方式,对所述序列化后的各条数据分别进行数据编码处理,得到编码后的各条二进制数据;
根据各条所述二进制数据和所述二进制数据对应的所述标识,生成值文件和索引文件。
3.根据权利要求要求2所述的方法,其特征在于,所述根据各条所述二进制数据和所述二进制数据对应的所述标识,生成值文件和索引文件,包括:
根据各条所述二进制数据,生成所述值文件,并确定每个所述二进制数据在所述HDFS中的存储位置;
针对每个所述二进制数据,根据该二进制数据对应的所述标识和所述存储位置,生成该二进制数据的索引信息;
根据每个所述二进制数据的所述索引信息,生成所述索引文件。
4.根据权利要求1所述的方法,其特征在于,所述将所述值文件和所述索引文件存储至基于分布式计算的分布式文件系统HDFS,包括:
对所述索引文件、所述值文件、所述HDFS中已存储的索引文件和值文件进行数据去重,得到去重后的索引文件和去重后的值文件;
将所述去重后的索引文件和所述去重后的值文件存储至所述HDFS。
5.根据权利要求1所述的方法,其特征在于,在所述将所述值文件和所述索引文件存储至基于分布式计算的分布式文件系统HDFS之后,还包括:
按照预设周期,对所述HDFS中已存储的所述索引文件和所述值文件,分别进行数据归档操作,得到归档后的多个子索引文件和归档后的多个子值文件,并存储所述子索引文件和所述子值文件;
其中,一个所述索引文件对应于至少一个所述子索引文件;一个所述值文件对应于至少一个所述子值文件。
6.根据权利要求1所述的方法,其特征在于,所述根据所述目标小说的标识和所述操作记录数据,生成键值对数据,包括:
确定所述操作记录数据的生成时间;
根据所述生成时间和所述目标小说的所述标识,生成所述键值对数据中的键数据,并将所述操作记录数据作为所述键值对数据中的值数据。
7.根据权利要求1所述的方法,其特征在于,在将所述值文件和所述索引文件存储至基于分布式计算的分布式文件系统HDFS之后,还包括:
响应于客户端的第一查询请求,确定所述第一查询请求中携带的查询信息;
根据所述查询信息中的查询标识,从所述分布式缓存空间中当前存储的各个所述键值对数据中,确定与所述查询标识相匹配的各个第一键值对数据;
基于各个所述第一键值对数据中的键数据,确定各个所述第一键值对数据中的值数据的反馈顺序;
按照所述反馈顺序,将各个所述第一键值对数据中的值数据反馈至所述客户端。
8.根据权利要求7所述的方法,其特征在于,在所述确定所述第一查询请求中携带的查询信息之后,还包括:
在所述查询信息中的并行查询字段的值为第一预设值的情况下,根据所述查询信息中的查询标识,从所述HDFS存储的各个所述索引文件中,确定与所述查询标识相匹配的目标索引文件;所述第一预设值用于指示对所述HDFS进行查询;
从所述HDFS存储的所述值文件中,确定与所述目标索引文件中包括的各个目标索引信息分别相匹配的目标数据;目标索引信息为携带有所述查询标识的索引信息;
根据所述查询标识和所述目标数据,生成待查询键值对数据;
将所述待查询键值对数据缓存至所述分布式缓存空间,并设置所述待查询键值对数据的有效时长为预设时长。
9.根据权利要求8所述的方法,其特征在于,在所述设置所述待查询键值对数据的有效时长为预设时长之后,还包括:
响应于所述客户端针对所述查询标识的第二查询请求,根据所述查询标识,从所述分布式缓存空间中当前存储的各个所述键值对数据中,确定与所述查询标识相匹配的第二键值对数据;其中,在所述第二查询请求携带的查询信息中并行查询字段的值为第二预设值的情况下,所述第二键值对数据包括所述待查询键值对数据;所述第二预设值用于指示不对所述HDFS进行查询;
基于各个所述第二键值对数据中的键数据,确定各个所述第二键值对数据中的值数据的反馈顺序;
按照所述反馈顺序,将各个所述第二键值对数据中的值数据反馈至所述客户端。
10.根据权利要求7所述的方法,其特征在于,所述查询信息包括查询条件;
所述根据所述查询信息中的查询标识,从所述分布式缓存空间中当前存储的各个所述键值对数据中,确定与所述查询标识相匹配的第一键值对数据,包括:
根据所述查询信息中的查询标识,从所述分布式缓存空间中当前存储的各个所述键值对数据中,确定与所述查询标识相匹配的第三键值对数据;
按照所述查询条件,从所述第三键值对数据中,筛选出所述第一键值对数据。
11.根据权利要求10所述的方法,其特征在于,所述查询条件包括操作记录数据的生成时间大于第一预设时间、操作记录数据的生成时间小于第二预设时间、操作记录数据对应的数据操作的操作方为目标操作方、操作记录数据的数量、反馈顺序中的起始序列号、终止序列号。
12.一种数据存储装置,其特征在于,包括:
获取模块,用于获取针对目标小说的操作记录数据;
第一生成模块,用于根据所述目标小说的标识和所述操作记录数据,生成键值对数据,并将所述键值对数据缓存至分布式缓存空间;
映射模块,用于响应于触发定时转存任务,对所述分布式缓存空间缓存的至少一条所述键值对数据进行映射处理,得到数据仓库工具表;所述数据仓库工具表包括至少一条映射后的数据和每条所述映射后的数据对应的所述标识;
第二生成模块,用于利用预先创建的映射归约MapReduce任务,根据各条所述映射后的数据和所述映射后的数据对应的所述标识,生成值文件和索引文件,并将所述值文件和所述索引文件存储至基于分布式计算的分布式文件系统HDFS。
13.一种计算机设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述处理器执行如权利要求1至11任意一项所述的数据存储方法的步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被计算机设备运行时,所述计算机设备执行如权利要求1至11任意一项所述的数据存储方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210878750.3A CN115203159B (zh) | 2022-07-25 | 一种数据存储方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210878750.3A CN115203159B (zh) | 2022-07-25 | 一种数据存储方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115203159A true CN115203159A (zh) | 2022-10-18 |
CN115203159B CN115203159B (zh) | 2024-06-04 |
Family
ID=
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023197865A1 (zh) * | 2022-04-14 | 2023-10-19 | 北京字节跳动网络技术有限公司 | 一种信息存储方法及装置 |
CN117149100A (zh) * | 2023-11-01 | 2023-12-01 | 恒生电子股份有限公司 | 数据存储方法及装置 |
Citations (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102779185A (zh) * | 2012-06-29 | 2012-11-14 | 浙江大学 | 一种高可用分布式全文索引方法 |
CN103366015A (zh) * | 2013-07-31 | 2013-10-23 | 东南大学 | 一种基于Hadoop的OLAP数据存储与查询方法 |
CN105912703A (zh) * | 2016-04-26 | 2016-08-31 | 北京百度网讯科技有限公司 | 数据存储方法、查询方法及装置 |
CN105975495A (zh) * | 2016-04-26 | 2016-09-28 | 北京奇虎科技有限公司 | 大数据的存储、搜索方法及装置 |
CN106462578A (zh) * | 2014-04-01 | 2017-02-22 | 华为技术有限公司 | 数据库条目查询和更新的方法 |
CN106484691A (zh) * | 2015-08-24 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 移动终端的数据存储方法和装置 |
CN106649676A (zh) * | 2016-12-15 | 2017-05-10 | 北京锐安科技有限公司 | 一种基于hdfs存储文件的去重方法及装置 |
CN106776811A (zh) * | 2016-11-23 | 2017-05-31 | 李天� | 数据索引方法及装置 |
CN107045531A (zh) * | 2017-01-20 | 2017-08-15 | 郑州云海信息技术有限公司 | 一种优化hdfs小文件存取的系统及方法 |
CN108021689A (zh) * | 2017-10-19 | 2018-05-11 | 大连大学 | 使用基于MapReduce的IVkNN算法进行查询的方法 |
CN108959369A (zh) * | 2018-05-22 | 2018-12-07 | 国网浙江省电力有限公司电力科学研究院 | 一种海量数据平台与大数据平台融合方法 |
CN109284351A (zh) * | 2018-08-14 | 2019-01-29 | 青海大学 | 一种基于HBase数据库的数据查询方法 |
CN110019014A (zh) * | 2017-12-19 | 2019-07-16 | 华为技术有限公司 | 向文件系统写入数据记录的方法和装置 |
CN110597814A (zh) * | 2019-09-16 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 结构化数据的序列化、反序列化方法以及装置 |
CN111190928A (zh) * | 2019-12-24 | 2020-05-22 | 平安普惠企业管理有限公司 | 缓存处理方法、装置、计算机设备以及存储介质 |
CN111611225A (zh) * | 2020-05-15 | 2020-09-01 | 腾讯科技(深圳)有限公司 | 数据存储管理方法、查询方法、装置、电子设备及介质 |
CN111767314A (zh) * | 2020-06-29 | 2020-10-13 | 中国平安财产保险股份有限公司 | 数据缓存及查询方法、装置、懒缓存系统及存储介质 |
CN113515518A (zh) * | 2020-04-10 | 2021-10-19 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置、计算机设备和存储介质 |
CN113971238A (zh) * | 2021-11-04 | 2022-01-25 | 杭州安恒信息技术股份有限公司 | 一种数据检索方法、装置、电子设备及存储介质 |
CN114385932A (zh) * | 2022-01-14 | 2022-04-22 | 北京百度网讯科技有限公司 | 气象数据的查询方法和装置 |
CN114385663A (zh) * | 2022-03-23 | 2022-04-22 | 北京国联政信科技有限公司 | 数据处理的方法和装置 |
CN114398343A (zh) * | 2022-01-12 | 2022-04-26 | 平安普惠企业管理有限公司 | 数据库异常键处理方法、装置、设备及介质 |
Patent Citations (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102779185A (zh) * | 2012-06-29 | 2012-11-14 | 浙江大学 | 一种高可用分布式全文索引方法 |
CN103366015A (zh) * | 2013-07-31 | 2013-10-23 | 东南大学 | 一种基于Hadoop的OLAP数据存储与查询方法 |
CN106462578A (zh) * | 2014-04-01 | 2017-02-22 | 华为技术有限公司 | 数据库条目查询和更新的方法 |
CN106484691A (zh) * | 2015-08-24 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 移动终端的数据存储方法和装置 |
CN105912703A (zh) * | 2016-04-26 | 2016-08-31 | 北京百度网讯科技有限公司 | 数据存储方法、查询方法及装置 |
CN105975495A (zh) * | 2016-04-26 | 2016-09-28 | 北京奇虎科技有限公司 | 大数据的存储、搜索方法及装置 |
CN106776811A (zh) * | 2016-11-23 | 2017-05-31 | 李天� | 数据索引方法及装置 |
CN106649676A (zh) * | 2016-12-15 | 2017-05-10 | 北京锐安科技有限公司 | 一种基于hdfs存储文件的去重方法及装置 |
CN107045531A (zh) * | 2017-01-20 | 2017-08-15 | 郑州云海信息技术有限公司 | 一种优化hdfs小文件存取的系统及方法 |
CN108021689A (zh) * | 2017-10-19 | 2018-05-11 | 大连大学 | 使用基于MapReduce的IVkNN算法进行查询的方法 |
CN110019014A (zh) * | 2017-12-19 | 2019-07-16 | 华为技术有限公司 | 向文件系统写入数据记录的方法和装置 |
CN108959369A (zh) * | 2018-05-22 | 2018-12-07 | 国网浙江省电力有限公司电力科学研究院 | 一种海量数据平台与大数据平台融合方法 |
CN109284351A (zh) * | 2018-08-14 | 2019-01-29 | 青海大学 | 一种基于HBase数据库的数据查询方法 |
CN110597814A (zh) * | 2019-09-16 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 结构化数据的序列化、反序列化方法以及装置 |
CN111190928A (zh) * | 2019-12-24 | 2020-05-22 | 平安普惠企业管理有限公司 | 缓存处理方法、装置、计算机设备以及存储介质 |
CN113515518A (zh) * | 2020-04-10 | 2021-10-19 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置、计算机设备和存储介质 |
CN111611225A (zh) * | 2020-05-15 | 2020-09-01 | 腾讯科技(深圳)有限公司 | 数据存储管理方法、查询方法、装置、电子设备及介质 |
CN111767314A (zh) * | 2020-06-29 | 2020-10-13 | 中国平安财产保险股份有限公司 | 数据缓存及查询方法、装置、懒缓存系统及存储介质 |
CN113971238A (zh) * | 2021-11-04 | 2022-01-25 | 杭州安恒信息技术股份有限公司 | 一种数据检索方法、装置、电子设备及存储介质 |
CN114398343A (zh) * | 2022-01-12 | 2022-04-26 | 平安普惠企业管理有限公司 | 数据库异常键处理方法、装置、设备及介质 |
CN114385932A (zh) * | 2022-01-14 | 2022-04-22 | 北京百度网讯科技有限公司 | 气象数据的查询方法和装置 |
CN114385663A (zh) * | 2022-03-23 | 2022-04-22 | 北京国联政信科技有限公司 | 数据处理的方法和装置 |
Non-Patent Citations (3)
Title |
---|
SHARMA 等: "Performance Evaluation of Merging Techniques for Handling Small Size Files in HDFS", 《DATA ANALYTICS AND MANAGEMENT》, 5 January 2021 (2021-01-05), pages 137 - 150 * |
尤勇 等: "一种监控系统的链路跟踪型日志数据的存储设计", 《软件学报》, vol. 32, no. 05, 9 June 2022 (2022-06-09), pages 1302 - 1321 * |
曲朝阳 等: "基于B+树的电力大数据分布式索引", 《东北电力大学学报》, vol. 36, no. 05, 15 October 2016 (2016-10-15), pages 80 - 85 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023197865A1 (zh) * | 2022-04-14 | 2023-10-19 | 北京字节跳动网络技术有限公司 | 一种信息存储方法及装置 |
CN117149100A (zh) * | 2023-11-01 | 2023-12-01 | 恒生电子股份有限公司 | 数据存储方法及装置 |
CN117149100B (zh) * | 2023-11-01 | 2024-04-23 | 恒生电子股份有限公司 | 数据存储方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109034993B (zh) | 对账方法、设备、系统及计算机可读存储介质 | |
CN107220142B (zh) | 执行数据恢复操作的方法及装置 | |
CN106649676B (zh) | 一种基于hdfs存储文件的去重方法及装置 | |
CN102456059A (zh) | 重复数据删除的处理系统 | |
WO2014015488A1 (zh) | 一种数据存储、数据查询的方法及装置 | |
WO2021073510A1 (zh) | 一种数据库的统计方法及装置 | |
CN107590019B (zh) | 一种数据存储的方法和装置 | |
EP3788505B1 (en) | Storing data items and identifying stored data items | |
CN111046041B (zh) | 数据处理方法和装置、存储介质及处理器 | |
CN112035437B (zh) | 病案数据的传输方法、装置、计算机设备及存储介质 | |
CN111177159B (zh) | 一种数据处理的系统、方法和数据更新设备 | |
CN110659283A (zh) | 数据标签处理方法、装置、计算机设备及存储介质 | |
CN112613271A (zh) | 数据分页方法、装置、计算机设备及存储介质 | |
CN113177090A (zh) | 数据处理方法及装置 | |
US11080239B2 (en) | Key value store using generation markers | |
US9633035B2 (en) | Storage system and methods for time continuum data retrieval | |
CN110633261A (zh) | 一种图片存储方法、图片查询方法及装置 | |
US20200311132A1 (en) | Key value store using change values for data properties | |
CN115203159A (zh) | 一种数据存储方法、装置、计算机设备和存储介质 | |
CN115203159B (zh) | 一种数据存储方法、装置、计算机设备和存储介质 | |
CN111045994A (zh) | 一种基于kv数据库的文件分类检索方法及系统 | |
CN111444194B (zh) | 一种块链式账本中索引的清除方法、装置及设备 | |
CN116414801A (zh) | 数据迁移方法、装置、计算机设备和存储介质 | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
US20170316024A1 (en) | Extended attribute storage |
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 |