发明内容
为解决现有技术中存在的上述技术问题,本发明提出一种大数据存储优化的方法和装置。
本发明提出的一种大数据存储优化的方法,包括:
步骤S100,对待存储数据进行预处理;将所述待存储数据封装成对象数据,所述对象数据中添加有对象数据的属性信息,所述属性信息包括对象数据的数据类型;
步骤S200,接收对象数据,根据对象数据的属性信息确定对象数据的数据类型;
步骤S300,根据对象数据的数据类型将对象数据存储到不同的存储单元中。
其中,步骤S100中被封装的对象数据具有统一的数据操作接口,所述数据操作接口接收对对象数据的操作;
不同的存储单元分别具有各自的数据操作解析单元,用于接收对象数据的数据操作接口发送的数据操作,并对所述数据操作进行解析,将数据操作接口发送的数据操作转换为本存储单元可以执行的操作。
其中,步骤S100中所述的对象数据的数据类型包括结构化数据、半结构化数据和非结构化数据;步骤S300中所述的不同的存储单元包括HDFS分布式文件系统单元、HBase数据库单元和关系数据库单元;其中,HDFS分布式文件系统单元用于存储非结构化数据,HBase数据库单元用于存储半结构化数据,关系数据库用于存储结构化数据。
其中,采用树型结构保存对象数据之间的关联关系,一方面,树型结构的每个节点保存了指向一个对象数据的链接,即树型结构并没有存储实际的对象数据,树型结构的节点与对象数据是一一对应的关系,另一方面,树型结构父子节点之间的关系表示了对象数据之间的对应关系。
本发明提出的大数据存储优化的方法,进一步包括:
步骤S400,对各存储单元中的对象数据进行同步,所述同步是指客户端的对象数据与服务器端的对象数据之间的同步。
本发明提出的大数据存储优化的方法,进一步包括:
在对象数据的属性信息中包括实时同步标志,在客户端进行同步时,首先检测网络环境,如果数据传输速率大于第一阈值,则进行实时同步,如果数据传输速率不大于第一阈值,则检测对象数据的实时同步标志,如果实时同步标志为“是”,则进行实时同步,如果实时同步标志为“否”,则暂时不进行实时同步,等待数据传输速率大于指定阈值时再进行同步操作。
本发明提出的大数据存储优化的方法,进一步包括:
对于非实时同步的情况,在进行同步时包括两种同步处理方式,一种是全部同步方式,即不用考虑单个对象数据是否需要同步,将全部对象数据进行同步,另一种是增量同步方式,即仅同步需要同步的对象数据,即有变化的对象数据;在同步操作时,通过同步方式判断来决定采用增量同步方式或者全部同步方式,所述同步方式判断包括:判断所有对象数据的最早同步时间,当最早同步时间与当前时间的差值大于第二阈值,则采用全部同步方式。
本发明还提出了一种大数据存储优化的装置,包括:
预处理模块,用于对待存储数据进行预处理;将所述待存储数据封装成对象数据,所述对象数据中添加有对象数据的属性信息,所述属性信息包括对象数据的数据类型;
接收模块,接收对象数据,根据对象数据的属性信息确定对象数据的数据类型;
存储模块,根据对象数据的数据类型将对象数据存储到不同的存储单元中;
其中,预处理模块中被封装的对象数据具有统一的数据操作接口,所述数据操作接口接收对对象数据的操作;不同的存储单元分别具有各自的数据操作解析单元,用于接收对象数据的数据操作接口发送的数据操作,并对所述数据操作进行解析,将数据操作接口发送的数据操作转换为本存储单元可以执行的操作。
本发明提出的一种大数据存储优化的方法和装置,通过利用不同的存储单元分别存储不同数据类型的数据,从而可以发挥不同存储单元的存储优势。通过对象数据的方式将不同数据类型的数据进行封装,并提供统一的数据操作接口,可以实现对不同存储单元中的数据的统一操作。通过树型结构组织不同存储单元中的对象数据,可以方便操作离散的对象数据。
具体实施方式
下面将结合本发明的附图,对本发明的技术方案进行清楚、完整地描述。这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
参见图1,本发明提出的一种大数据存储优化的方法,包括:
步骤S100,对待存储数据进行预处理;将所述待存储数据封装成对象数据,所述对象数据中添加有对象数据的属性信息,所述属性信息包括对象数据的数据类型;
待存储数据可以是各种类型的数据,结构化数据、半结构化数据、非结构化数据。对待存储数据的预处理包括分析并确定待存储数据的数据类型。将待存储数据封装成对象数据,并将待存储数据的数据类型添加到对象数据的属性信息中,即通过对象数据的属性信息即可确定对象数据的数据类型。
步骤S200,接收对象数据,根据对象数据的属性信息确定对象数据的数据类型;
根据对象数据的属性信息中包括的对象数据的数据类型,可以确定对象数据的数据类型为结构化数据、半结构化数据或非结构化数据。
步骤S300,根据对象数据的数据类型将对象数据存储到不同的存储单元中。
进一步的,步骤S300中所述的不同的存储单元包括HDFS分布式文件系统单元、HBase数据库单元和关系数据库单元;其中,HDFS分布式文件系统单元用于存储非结构化数据,HBase数据库单元用于存储半结构化数据,关系数据库用于存储结构化数据。
进一步的,步骤S100中被封装的对象数据具有统一的数据操作接口,所述数据操作接口接收对对象数据的操作。不同的存储单元分别具有各自的数据操作解析单元,用于接收对象数据的数据操作接口发送的数据操作,并对所述数据操作进行解析,将数据操作接口发送的数据操作转换为本存储单元可以执行的操作。
由于不同的数据类型的结构差异,不同数据类型的数据在存储和查询操作上具有不同的要求,如果对不同数据类型的数据都使用单一的存储和查询方法,所述单一的存储和查询方法在对一种数据类型的数据的操作有利时,对另一种数据类型的数据的操作可能不利。本发明提出的一种大数据存储优化的方法,对不同数据类型的数据,都能够提供有效的存储和查询方法。
本发明提供的一种大数据存储优化的方法,进一步包括:采用树型结构保存对象数据之间的关联关系,一方面,树型结构的每个节点保存了指向一个对象数据的链接,即树型结构并没有存储实际的对象数据,树型结构的节点与对象数据是一一对应的关系,另一方面,树型结构父子节点之间的关系表示了对象数据之间的对应关系。不同的存储单元存储的是离散的数据对象,而树型结构则将这些对象数据进行了关联,方便对数据的应用操作。
本发明提供的一种大数据存储优化的方法,进一步包括:
步骤S400,对各存储单元中的对象数据进行同步。
在大量的互联网应用中,服务器端维护一个大的数据集,每个客户端分别维护大数据集的一个子集,这样就需要在客户端和服务器端进行数据的同步。步骤S300中的各存储单元位于服务器端,客户端和服务器端都可以对存储单元中的对象数据进行维护,比如增加、删除、修改,通过日志记录数据的操作。客户端与服务器端都必须能够识别出上次同步以后(可能成功,也可能失败),发生变化的数据项,即哪些数据被修改了、新增了哪些数据以及删除了哪些数据。这里引入同步锚的概念,同步锚就是服务器端与客户端同步时保存的一个时间戳,它标志了上一次同步是否完成。
在客户端第一次发起同步请求前,将为本次同步生成一个同步锚,记录到日志中,并携带在同步请求中发送给客户端。服务器端接收到消息后将该锚记录到一个与用户关联的、以客户端ID为键值的哈希表中进行缓存,同时处理同步请求,返回相应的数据。返回数据时将携带该锚值。客户端接收到服务器端返回值后,将锚值与日志中的锚值进行比对,更新本地数据库,并将相应的改变日志标记为已确认。在下一次同步请求前,生成下一个锚值,并在同步请求中分别携带新的锚值与上一个已确认的锚值(分别用next与last标识)。服务器端接收到新的同步请求后,先确认请求中的last锚与服务器缓存中的锚标识相同(即客户端以last标识发送锚信息作为对服务器端的反馈),标识上一次同步已被确认,然后按照上一个步骤对同步信息进行处理,处理完后以新的锚值覆盖旧值,从而完成新一次的同步。当服务器端发现last标识与当前缓存中的锚值不同时,拒绝执行新的同步请求,并返回通知客户端。同样,客户端只有完成一个同步请求,并且得到服务端确认后才会发送下一次同步请求,从而保证同步的时序性。
在数据同步时,涉及到数据同步的实时性。在互联网应用环境,尤其是移动互联网应用,网络环境千差万别,比如有wifi网络和没有wifi网络,数据传输速率可能相差很多,而且花费在网络传输上的费用也不同。为了即满足数据同步的实时性要求,同时又考虑用户的实际网络环境情况。
本发明进一步在对象数据的属性信息中包括实时同步标志,在客户端进行同步时,首先检测网络环境,如果数据传输速率大于指定阈值,则进行实时同步,如果数据传输速率不大于指定阈值,则检测对象数据的实时同步标志,如果实时同步标志为“是”,则进行实时同步,如果实时同步标志为“否”,则暂时不进行实时同步,等待数据传输速率大于指定阈值时再进行同步操作。
在数据同步时,还需要考虑同步的数据量。在网络环境较差时,如果同步的数据量较多,则会造成客户端设备性能下降和用户使用费用的增加。对于非实时同步的情况,在进行同步时可能有多个对象数据需要同步,这时有两种同步处理方式,一种是全部同步方式,即不用考虑单个对象数据是否需要同步,将全部对象数据进行同步,另一种是增量同步方式,即仅同步需要同步的对象数据,即有变化的对象数据。显然,增量同步方式的数据传输量较小,可以节省网络带宽。但是,增量同步方式的前提是需要逐一判断哪些对象数据需要进行同步,当有变化的对象数据较多时,这种判断所花费的系统开销也可能很高,整体而言,有时这种成本可能要高于全部同步方式。
本发明在同步操作时,通过同步方式判断来决定采用增量同步方式或者全部同步方式,所述同步方式判断包括:判断所有对象数据的最早同步时间,当最早同步时间与当前时间的差值大于指定阈值,则采用全部同步方式。最早同步时间较早的话,表明较长时间没有进行同步操作,可以认为需要进行同步的对象数据较多,这时直接采取全部同步方式。由于仅需要判断对象数据的最早同步时间,不用逐一比较对象数据是否需要更新,从而可以大大降低计算量。
另外,不同的数据组织方式,对于同步的影响也很大。对树型结构的父节点进行数据更新时,相应的需要对所述父节点所属的所有下级节点以及它们的后继节点进行更新,所述下级节点包括所述父节点的子节点以及子节点的下级节点。如果所述父节点包含的下级节点很多,相应的更新的量会很大。为了尽量减少这种相关联的更新,本发明对树型结构的节点进行版本控制,确定树型结构中受版本控制的节点,并且由作为根的受版本控制的以及不是受版本控制的所有下级节点和它们的后继节点构成一个更新单元。
通过适当确定受版本控制的节点的数量,使得预期经常要更新的数据处在那些没有或者仅有少量下级节点的更新单元之中。通过以受版本控制的节点的方式构成更新单元,能够使得更新单元的数据按照需要进行排列,以这种方式可以防止某个节点的更新发展成为雪崩式更新。
参见图2,本发明还提出了一种大数据存储优化的装置,包括:
预处理模块,用于对待存储数据进行预处理;将所述待存储数据封装成对象数据,所述对象数据中添加有对象数据的属性信息,所述属性信息包括对象数据的数据类型;
接收模块,接收对象数据,根据对象数据的属性信息确定对象数据的数据类型;
存储模块,根据对象数据的数据类型将对象数据存储到不同的存储单元中;
其中,预处理模块中被封装的对象数据具有统一的数据操作接口,所述数据操作接口接收对对象数据的操作;不同的存储单元分别具有各自的数据操作解析单元,用于接收对象数据的数据操作接口发送的数据操作,并对所述数据操作进行解析,将数据操作接口发送的数据操作转换为本存储单元可以执行的操作。
本发明提出的一种大数据存储优化的方法和装置,通过利用不同的存储单元分别存储不同数据类型的数据,从而可以发挥不同存储单元的存储优势。通过对象数据的方式将不同数据类型的数据进行封装,并提供统一的数据操作接口,可以实现对不同存储单元中的数据的统一操作。通过树型结构组织不同存储单元中的对象数据,可以方便操作离散的对象数据。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。