一种数据存储方法及装置制造方法及图纸

技术编号:15895694 阅读:83 留言:0更新日期:2017-07-28 20:00
本申请公开了一种数据存储方法及装置,该方法包括:由服务器获取数据文件,并将该数据文件拆分成至少两个子文件,其中,每个子文件的数据量均不大于该服务器的内存空间容量,对拆分后的每个子文件分别进行乱序处理,将乱序处理后的每个子文件存储到数据库中。通过上述方法,即使进行乱序处理的包含随机码的数据文件的数据量超过内存空间容量时,也可将数据文件进行拆分,并对拆分后的子文件进行乱序,最后存储到数据库中。

Data storage method and device

The invention discloses a data storage method and apparatus, the method includes: acquiring data file by the server, and the data file is split into at least two sub documents, the memory capacity of each sub file data is not greater than the server, after the split of each sub file are processed out of order that will be out of order processing after each file is stored in the database. By this method, even if out of order processing includes random code data file over memory capacity, data file can also be split, and the split of the sub file is out of order, finally stored in the database.

【技术实现步骤摘要】
一种数据存储方法及装置
本申请涉及计算机
,尤其涉及一种数据存储方法及装置。
技术介绍
随着网络技术的不断发展,数据的安全性已经越来越被人们所重视,为了保证存储的数据的安全性,通常可将需要存储到数据库中的数据进行乱序存储。例如,为了保证用来校验登录用户的验证码,不被除该登录用户以外的人获知,因此,可采用随机码作为验证码,在现有技术中,生成随机码的方式大致分为两种方式。第一种生成方式为:使用随机码生成器直接生成随机码。第二种生成方式为:预先随机生成随机码,并将这些随机码在内存中进行乱序处理,将乱序处理后的各随机码存储到数据库中,后续,在需要使用验证码时,直接从数据库按随机码的存储顺序,取出随机码。即,上述第二种生成方式就是基于乱序存储的生成方式。具体的,在第二种方式中,对预先生成的随机码进行乱序处理时,通常会将预先生成的各随机码添加到一个数据文件中,再将包含各随机码的数据文件在内存中进行乱序处理。但是,在实际应用中,针对第二种生成方式,由于内存的空间是有限的,不可能无限的扩大,当要进行乱序处理的上述数据文件的数据量超过内存空间容量时,则无法对该数据文件进行乱序处理。
技术实现思路
本申请实施例提供一种数据存储方法及装置,用以解决现有技术中当要进行乱序处理的包含随机码的数据文件的数据量超过内存空间容量时,则无法对该数据文件进行乱序处理的问题。本申请实施例提供的一种数据存储方法,所述方法包括:服务器获取数据文件;将所述数据文件拆分成至少两个子文件,其中,每个子文件的数据量均不大于所述服务器的内存空间容量;对拆分后的每个子文件分别进行乱序处理;将乱序处理后的每个子文件存储到数据库中。本申请实施例提供的一种数据存储装置,所述装置包括:拆分模块,用于将所述数据文件拆分成至少两个子文件,其中,每个子文件的数据量均不大于所述装置的内存空间容量;处理模块,用于对拆分后的每个子文件分别进行乱序处理;存储模块,用于将乱序处理后的每个子文件存储到数据库中。本申请实施例提供一种数据存储方法及装置,该方法由服务器获取数据文件,并将该数据文件拆分成至少两个子文件,其中,每个子文件的数据量均不大于该服务器的内存空间容量,对拆分后的每个子文件分别进行乱序处理,将乱序处理后的每个子文件存储到数据库中。通过上述方法,即使进行乱序处理的包含随机码的数据文件的数据量超过内存空间容量时,也可将数据文件进行拆分,并对拆分后的子文件进行乱序,最后存储到数据库中。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为本申请实施例提供的数据存储过程示意图;图2为本申请实施例提供的数据存储装置结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。图1为本申请实施例提供的数据存储过程,具体包括以下步骤:S101:服务器获取数据文件。在实际应用中,为了保证数据的安全性,在将数据存储到数据库之前,需要对数据进行乱序处理。而在对数据进行乱序处理时,通常会将数据添加到一个数据文件中,再将包含数据的数据文件在内存中进行乱序处理,如,对预先生成的随机码进行乱序处理时,通常将预先生成的各随机码添加到一个数据文件中,再将包含各随机码的数据文件在内存中进行乱序。因此,本申请中,在将数据乱序存储到数据库的整个过程中,首先,服务器需要获取数据文件,所述数据文件中包含要进行乱序存储的数据,所述数据可以是任何数据,如,随机码等。例如,假设服务器为用户提供口令红包的业务,服务器在生成向其他用户发送的口令红包的同时,可自动为生成的口令红包附加一个随机码,其他用户需要输入口令红包中的随机码才可以获取口令红包中的金额,因此,服务器需要预先将进行乱序处理的大量随机码存储到数据库中。服务器在将进行乱序处理的大量随机码存储到数据库的过程中,首先,服务器需要获取预先生成包含大量随机码的数据文件,为了方便后续能够阐述本申请中的方案,因此,在该例子中,假设数据文件中所包含的随机码由前向后为:数字1~9。S102:将所述数据文件拆分成至少两个子文件,其中,每个子文件的数据量均不大于所述服务器的内存空间容量。由于整个对数据文件进行乱序处理的过程是在服务器的内存中进行的,而服务器的内存是有限的,这也导致了有可能出现获取到的整个数据文件的数据量超过服务器的内存空间容量,从而无法将整个数据文件一次性放到内存中,因此,在本申请中,可以采用将数据文件拆分成至少两个子文件的方式,使得每个子文件的数据量均不大于服务器的内存空间容量,后续,可对每个子文件分别进行乱序处理。在此需要说明的是,在拆分成至少两个子文件时,每个子文件的数据量可能相等,也可能不等,只要每个子文件的数据量均不大于服务器的内存空间容量即可。考虑到在实际应用中,为了尽可能多的利用服务器的内存空间容量,因此,在本申请中,在将数据文件拆分成至少两个子文件时,可以采用以下方式来进行拆分:将该数据文件拆分成包含的数据量相同的至少两个子文件,其中,每个子文件的数据量均等于服务器的内存空间容量。延续上例,假设服务器的内存空间容量只能一次性对3个数字字符数据进行处理,服务器采用的拆分方式为:将数据文件拆分成包含的数据量相同,且均等于服务器的内存空间容量的至少两个子文件,因此,服务器在获取到预先生成包含数字1~9的数据文件后,直接将该数据文件拆分成包含数字1到数字3的子文件1、包含数字4到数字6的子文件2、包含数字7到数字9的子文件3。S103:对拆分后的每个子文件分别进行乱序处理。在本申请实施例中,服务器在将数据文件拆分成至少两个子文件后,分别对每个子文件进行乱序处理。进一步的,本申请提供了一种具体的乱序处理方式:针对每个子文件,将该子文件中的数据进行分组,将分组后的数据组进行排序,按排序先后顺序,依次针对每个数据组,从该数据组后的各数据组中随机抽取出一个数据组,作为调换组,并将调换组与该数据组在该子文件中的排序位置进行互换。其中,一个数据组可包含多个数据(如,567),也可只包含一个数据(如,3)。另外,基于上述本申请提供的具体的乱序处理方式,本申请还提供了实现该乱序处理方式的代码:在此需要说明的是,以上提到的乱序处理的方式并不是唯一的,只要能够让数据文件中的数据在排序时不再按照某一有规律的顺序排序,而是随机排序即可,在此不再一一赘述。延续上例,假设采用步骤S103中涉及到的乱序处理方式,因此,服务器将子文件1中的每个数字字符单独作为一个数据组,即,将子文件1中的数字字符1~3分别作为数据组1~3,假设当前该子文件中各数据组的排序为:数据组1、数据组2、数据组3,因此,服务器按照排序先后顺序,针对处于最前端位置的数据组1,从数据组1后面的数据组2、数据组3中随机抽取一个数据组,假设随机抽取的数据组为数据组3,将数据组3作为调换组,并且将数据组3与数据组1在子文件1中的本文档来自技高网...
一种数据存储方法及装置

【技术保护点】
一种数据存储方法,其特征在于,所述方法包括:服务器获取数据文件;将所述数据文件拆分成至少两个子文件,其中,每个子文件的数据量均不大于所述服务器的内存空间容量;对拆分后的每个子文件分别进行乱序处理;将乱序处理后的每个子文件存储到数据库中。

【技术特征摘要】
1.一种数据存储方法,其特征在于,所述方法包括:服务器获取数据文件;将所述数据文件拆分成至少两个子文件,其中,每个子文件的数据量均不大于所述服务器的内存空间容量;对拆分后的每个子文件分别进行乱序处理;将乱序处理后的每个子文件存储到数据库中。2.如权利要求1所述的方法,其特征在于,将所述数据文件拆分成至少两个子文件,具体包括:将所述数据文件拆分成包含的数据量相同的至少两个子文件。3.如权利要求1所述的方法,其特征在于,对拆分后的每个子文件分别进行乱序处理,具体包括:针对每个子文件,将该子文件中的数据进行分组;将分组后的数据组进行排序;按排序先后顺序,依次针对每个数据组,从该数据组后的各数据组中随机抽取出一个数据组,作为调换组,并将调换组与该数据组在该子文件中的排序位置进行互换。4.如权利要求1所述的方法,其特征在于,将乱序处理后的每个子文件存储到数据库中,具体包括:将乱序处理后的各子文件合并成乱序文件;按所述乱序文件中各数据的排序先后顺序,读取所述乱序文件中的数据;每当读取的数据的数据量达到预设的数据量时,通过预先建立的线程池中处于空闲状态的线程,将所述读取的数据写入到数据库中,并继续读取所述乱序文件中的数据,直至将所述乱序文件中的所有数据写入到数据库中为止。5.如权利要求4所述的方法,其特征在于,将乱序处理后的各子文件合并成乱序文件,具体包括:从乱序处理后的每个子文件中,随机确定出任意一个子文件,并提取出随机确定出的该子文件中未添加到乱序文件、且排序位置最前的数据,将提取出的数据添加到乱序文件中,直至将每个子文件中的所有数据添加到乱序文件中为止。6.如权利要求4或5任一所述的方法,其特征在于,所述方法还包括:针对每个线程,监测该线程是否成功将数据写入到数据库中;当监测到该线程未成功将数据写入到数据库中时,记录当前读取乱序文件中的数据的排序位置,作为当前位置;根据当前线程池中处于运行状态的线程的数量以及所述预设的数据量,确定出待恢复的数据的数据量;根据所述待恢复的数据的数据量以及所述当前位置,确定当前位置与所述待恢复的数据的数据量的差值,作为恢复位置;在所述乱序文件中,按所述乱序文件中各数据的排序先后顺序,从排序位置为所述恢复位置处,重新开始读取数据,并通过所述线程池中处于空闲状态的线程,将读取的数据写入到数据库中。7.如权利要求4~6任一所述的方法,其特征在于,在将所述乱序文件中的所有数据写入到数据库中之后,所述方法还包括:对所述乱序处理的各子文件以及所述乱序文件进行清除。8...

【专利技术属性】
技术研发人员:姚陶钧
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1