海量数据高速缓存的方法及装置制造方法

文档序号:6514766阅读:192来源:国知局
海量数据高速缓存的方法及装置制造方法
【专利摘要】本发明适用于数据处理【技术领域】,提供了一种海量数据高速缓存的方法及装置,该方法包括:将数据库中获取的原始数据转换成标准化的矩阵格式的数据,并将转换后的数据以mat文件格式缓存;在接收到用户的数据请求信息时,判断所缓存的mat文件中是否存在与所述数据请求信息相对应的全部数据;若否,利用统计模型算法,从所述数据库中获取缺失的数据;将所述缺失的数据转换成标准化的矩阵格式的数据后填充到所述mat文件中,并将填充后的所述mat文件中与所述数据请求信息相对应的数据反馈给所述用户;将所述缺失的数据转换成标准化的矩阵格式的数据后以mat文件格式缓存。通过本发明,可大量减少数据存储冗余,提高数据存储和读取的效率。
【专利说明】海量数据高速缓存的方法及装置
【技术领域】
[0001]本发明属于数据处理【技术领域】,尤其涉及海量数据高速缓存的方法及装置。
【背景技术】
[0002]随着大数据时代的来临,对海量数据的处理及存储的需求越来越大。目前主要采用关系型数据库来存储和处理海量数据。然而,由于关系型数据库存储的是记录型数据,容易存在大量的数据冗余,在统计分析时需要进行数据转换才可以使用,很不方便。而且,关系型数据库请求不同的数据需要关联不同的表,单独做查询接口,获取数据效率较低。另夕卜,虽然关系型数据库提供了内存级别的缓存功能,在数据请求时会在服务器的内存中将数据缓存起来,下次相同的请求速度会加快很多。但是这种内存缓存会受到服务器内存大小的限制,存在缓存容量的瓶颈。

【发明内容】

[0003]本发明实施例提供一种海量数据高速缓存的方法,以解决现有技术采用关系型数据库来存储和处理海量数据,容易存在大量的数据冗余,且不适合统计分析平台进行数据处理的问题。
[0004]本发明实施例的第一方面,提供一种海量数据高速缓存的方法,所述方法包括:
[0005]将数据库中获取的原始数据转换成标准化的矩阵格式的数据,并将转换后的数据以mat文件格式缓存;
[0006]在接收到用户的数据请求信息时,判断所缓存的mat文件中是否存在与所述数据请求信息相对应的全部数据;
[0007]若否,从所述数据库中获取缺失的数据,所述缺失的数据为所缓存的mat文件中缺失的与所述数据请求信息相对应的数据;
[0008]将所述缺失的数据转换成标准化的矩阵格式的数据后填充到所述mat文件中,并将填充后的所述mat文件中与所述数据请求信息相对应的数据反馈给所述用户,所述mat文件为与所述数据请求信息相对应的文件;
[0009]将所述缺失的数据转换成标准化的矩阵格式的数据后以mat文件格式缓存。
[0010]本发明实施例的第二方面,一种海量数据高速缓存的装置,所述装置包括:
[0011]第一缓存单元,用于将数据库中获取的原始数据转换成标准化的矩阵格式的数据,并将转换后的数据以mat文件格式缓存;
[0012]判断单元,用于在接收到用户的数据请求信息时,判断所缓存的mat文件中是否存在与所述数据请求信息相对应的全部数据;
[0013]数据获取单元,用于在所述判断单元判断结果为否时,从所述数据库中获取缺失的数据,所述缺失的数据为所缓存的mat文件中缺失的与所述数据请求信息相对应的数据;
[0014]数据填充单元,用于将所述缺失的数据转换成标准化的矩阵格式的数据后填充到所述mat文件中,并将填充后的所述mat文件中与所述数据请求信息相对应的数据反馈给所述用户,所述mat文件为与所述数据请求信息相对应的文件;
[0015]所述第一缓存单元,还用于将所述缺失的数据转换成标准化的矩阵格式的数据后以mat文件格式缓存。
[0016]本发明实施例与现有技术相比存在的有益效果是:本发明实施例将数据库中的记录型数据转换成标准矩阵格式使用和存储,可大量减少记录型数据中的描述性冗余数据。而且将标准的矩阵数据缓存到mat文件,省去了数据转换的过程,从而可以和统计分析平台之间进行数据交互,大幅提升数据存储和读取的效率。另外,基于mat文件形式的数据缓存功能,可将缓存文件存储到硬盘,形成缓存文件管理系统,突破了内存缓存的容量限制。
【专利附图】

【附图说明】
[0017]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0018]图1是本发明实施例一提供的海量数据高速缓存方法的实现流程图;
[0019]图2是本发明实施例二提供的海量数据高速缓存装置的架构示例图;
[0020]图3是本发明实施例三提供的海量数据高速缓存装置的组成结构图。
【具体实施方式】
[0021]以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透切理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
[0022]为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
[0023]实施例一:
[0024]图1示出了本发明第一实施例提供的海量数据高速缓存方法的实现流程,其过程详述如下:
[0025]在步骤SlOl中,将数据库中获取的原始数据转换成标准化的矩阵格式的数据,并将转换后的数据以mat文件格式缓存。
[0026]在本实施例中,所述标准化的矩阵格式的数据为matlab标准矩阵数据。所述mat文件是matlab数据存储的标准格式。mat文件是标准的二进制文件,可以以ASCII码形式保存和加载。
[0027]其中,将数据库中获取的原始数据转换成标准化的矩阵格式的数据具体包括:
[0028]从数据库中获取cell格式的数据;具体的可以是,通过多个数据适配器从数据库中获取原始数据,所述原始数据从数据库中获取到matlab平台是cell矩阵格式,每一行表不一条记录,每一列表不一个字段。
[0029]根据获取的所述数据生成行列索引;具体的是,根据所述cell矩阵中行列所表示的业务含义生成行列索引,示例性的,所述行索引可以为证券代码列表,列索引可以为时间点列表,通过所述行列索引可以定位到所需要的数据在矩阵中的位置。
[0030]根据所述行列索引将所述cell格式的数据转换成标准化的数值矩阵,并根据所述行列索引对获取的所述数据进行定位,即每条数据在所述数值矩阵中的行列坐标。
[0031]根据所述定位,将获取的所述数据批量插入到所述数值矩阵的相应位置。
[0032]对所述数值矩阵中空缺的位置进行数据填充、插值或标记。
[0033]本实施例将记录型数据转换为矩阵数据后,免去了很多描述性的重复数据存储,矩阵中只存储核心的业务数据,从而可大大减少数据冗余。另外,一般情况下,在matlab平台下直接连接数据库获取到的数据是cell格式,进行科学计算和时间序列分析非常不方便。本实施例通过将获取到的cell格式数据转换成标准化的矩阵格式数据后,可以在matlab平台上非常方便的使用,从而大大降低用户处理和转换数据的时间,提高数据处理和转换的效率。
[0034]进一步的,本实施例还提供了基于mat文件形式的数据缓存功能,将缓存文件存储到硬盘,形成缓存文件管理系统,突破了内存缓存的容量限制。而且,将标准的矩阵数据缓存到mat文件,减少了数据加工转换的过程,节省了数据计算和存储的资源,大幅提升使用效率。
[0035]在步骤S102中,在接收到用户的数据请求信息时,判断所缓存的mat文件中是否存在与所述数据请求信息相对应的全部数据,如果判断结果为“是”,则执行步骤S103 ;如果判断结果为“否”,则执行步骤S104。
[0036]在本实施例中,从缓存的mat文件中提取数据时,如果所请求的数据都不存在所述缓存中,则全部从数据库中获取。如果所请求的数据部分存在于所述缓存中,则需要从数据库中提取所缺失的数据。
[0037]其中,所述接收用户的数据请求信息包括:
[0038]接收用户通过统一接口发送的数据请求信息,所述统一接口通过多个数据适配器和数据接口路由实现,所述数据适配器用于对从所述数据库中获取的不同的原始数据进行处理(包括数据的提取、转换等),其中每一个数据适配器处理一类数据,所述数据接口路由用于将不同的数据请求信息发送至相应的数据适配器。
[0039]为了解决现有数据库请求不同的数据需要关联不同的表,单独做查询接口,获取数据效率较低的问题。本实施例提供了基于统计分析平台的统一接口获取数据,即各种类型的数据都可以通过所述统一接口获取,并以标准的矩阵数据格式返回给用户。
[0040]在步骤S103中,将所述数据请求信息相对应的数据返回给用户。示例性的,可以以数值矩阵的方式将所述数据返回给用户。
[0041]在步骤S104中,从所述数据库中获取缺失的数据,所述缺失的数据为所缓存的mat文件中缺失的与所述数据请求信息相对应的数据。
[0042]在本实施例中,当从所述数据库中获取数据时,需要向数据库发送数据请求信息。如果需要尽可能少的数据请求次数,极限的做法是只请求一次,不管缓存中是否存在,全部从数据库中获取,这种做法必然造成大量数据的重复提取,也使得mat缓存失去其价值。如果需要尽可能减少数据的重复提取,极限的做法是缓存中已存在的数据都不会向数据库重新请求,这种做法当缺失的数据很零散的存在时,需要较多的数据请求次数,会影响到数据获取的效率。因此,为了尽可能少的数据请求次数,又不能重复提取过多的已缓存数据,本实施例优选的是:以最大化命中率和完成率为目标函数,并通过聚类的方式获得最大化目标函数,根据所述最大化目标函数确定搜索的次数以及每次搜索的行列索引,并根据所述搜索的次数以及每次搜索的行列索引对所述数据库进行搜索以获取所述缺失的数据。其中,命中率保证每次数据请求中包含尽可能少的已缓存数据,完成率保证尽可能少的数据请求次数。
[0043]其具体实现过程如下:
[0044]A、将与所述数据请求信息相对应的mat文件中标准化的矩阵按列进行分段;
[0045]B、统计每个列区间缺失数据的数量,并按照所述缺失数据的数量对列区间进行排序;
[0046]C、从缺失数据数量最多或最少的列区间开始,进行行变换,并与其相连的列区间进行相同缺失数据行的合并,计算合并后列区间待获取子矩阵的命中率和完成率,其中所述子矩阵的命中率=(等于)子矩阵中缺失数据的数量/ (除以)子矩阵大小,所述子矩阵的完成率=子矩阵中缺失数据的数量/矩阵缺失数据的总数;
[0047]D、以所述子矩阵的命中率和所述子矩阵的完成率为目标函数进行列区间的搜索合并,以获得最大化目标函数的合并方式,并根据所述最大化目标函数的合并方式对所述数据库进行搜索以获取所述列区间缺失的数据;
[0048]E、迭代进行A、B、C、D步骤,直到所述矩阵中所有缺失的数据都被获取。
[0049]在步骤S105中,将所述缺失的数据转换成标准化的矩阵格式的数据后填充到所述mat文件中,并将填充后的所述mat文件中与所述数据请求信息相对应的数据反馈给所述用户,所述mat文件为与所述数据请求信息相对应的文件。
[0050]在本实施例中,当所述矩阵中所缺失的数据都被填充后,将所述矩阵格式的数据发送给所述数据请求的用户。填充后的所述mat文件中包含了所有与所述数据请求信息相对应的数据。
[0051 ] 在步骤S106中,将所述缺失的数据转换成标准化的矩阵格式的数据后以mat文件格式缓存。
[0052]在本实施例中,mat文件是matlab标准化的数据存储格式,适合矩阵式数据的存储,通过mat文件可以和matlab平台方便的进行数据传递,实现数据的快速存储和读取。
[0053]另外,mat文件基于matlab内嵌的matfiIe类进行封装,以支持更大规模,更高效的数据存取。实现的接口有保存数据,提取数据,插入行,插入列,可以方便的进行大规模数据分文件存取,保证存储文件的稳定性和存取性能。
[0054]实施例二:
[0055]图2示出了本发明第二实施例提供的海量数据高速缓存装置的架构示例,如图2所示,该海量数据高速缓存装置架构从下到上依次包括数据库层、适配器层、数据接口路由层、数据提取及缓存调度层以及图形用户交互层,各层的具体应用如下:
[0056]I)数据库层
[0057]数据库层主要通过数据库存储原始数据,并通过一系列存储过程提取所述原始数据。
[0058]2)适配器层
[0059]适配器层主要是从所述数据库中提取原始数据,并将提取的所述原始数据转换成matlab标准矩阵数据。所述适配器层包括多个数据适配器,每个数据适配器处理一类数据。
[0060]适配器层的具体应用如下:首先从所述数据库中提取原始数据。所述原始数据从数据库中取到matlab平台是cell矩阵格式,每一行是一条记录,每一列是一个字段。然后将cell矩阵按照预定的行索引(如证券代码)和列索引(时间点)转换成数值矩阵,使得一个数值矩阵表示一个字段,每一行表示一只证券,每一列表示一个时间点。转成数值矩阵后,有些因子需要对矩阵进行再计算,计算后返回给上一层(如计算买卖价差因子,需要先提取委买价和委买价的因子矩阵,然后将两个矩阵相减,最终得到的矩阵返回给上一层),不需计算的就直接返回给上一层。
[0061]3)数据接口路由层
[0062]数据接口路由层主要功能是将用户不同的数据请求路由到相应的数据适配器,以对应的获取到所需的数值矩阵。具体实现时,是通过建立字段名称、频率和数据适配器间的映射表,每次接收到新的数据请求时(所述数据请求中携带有请求数据的字段名称),数据接口路由在所述映射表中定位到请求的字段名称和频率后,将所述数据请求发送给对应的数据适配器。
[0063]4)数据提取及缓存调度层
[0064]数据提取及缓存调度层主要功能是处理用户的数据请求,在本地mat文件缓存和数据库之间进行调度。具体是,在接收到用户的数据请求时,判断本地缓存的mat文件中是否存在与所述数据请求相对应的全部数据,若否,则通过调度算法从所述数据库中提取缺失的数据,向用户返回最终完整的数据,并将提取的所述缺失的数据转换成标准化的矩阵格式的数据后以mat文件格式补充缓存至本地。其中通过调度算法从所述数据库中提取缺失的数据的具体过程如实施例所述,在此不再赘述。
[0065]5)图形用户交互层
[0066]图形用户交互层提供了基于统计分析平台的统一接口获取数据,使得各种类型的数据都可以通过所述统一接口获取,并以标准的矩阵数据格式返回给用户。
[0067]所述统一接口统一了高频数据,财务数据,因子仓库,风险控制模型等多个数据源的数据。通过所述统一接口返回相同的数据格式,极大减少了用户提取并处理数据的时间成本。同时,通过所述统一接口隔离了用户与交互型数据库的直接交互,可以实现交互型数据库的无缝切换,提高了系统的安全性和稳定性。
[0068]本实施例通过mat文件缓存的机制,突破了内存缓存受内存大小限制的瓶颈,只要硬盘容量支持,可以实现大规模数据的本地缓存,且可以实现高速的文件存取操作。为了更好的体现mat文件缓存的实用性,本实施例以收盘价字段为例,展示提取不同频率,不同股票数量时,有mat文件缓存和无mat文件缓存情况的性能测试报告,如表I所示:
[0069]
【权利要求】
1.一种海量数据高速缓存的方法,其特征在于,所述方法包括: 将数据库中获取的原始数据转换成标准化的矩阵格式的数据,并将转换后的数据以mat文件格式缓存; 在接收到用户的数据请求信息时,判断所缓存的mat文件中是否存在与所述数据请求信息相对应的全部数据; 若否,从所述数据库中获取缺失的数据,所述缺失的数据为所缓存的mat文件中缺失的与所述数据请求信息相对应的数据; 将所述缺失的数据转换成标准化的矩阵格式的数据后填充到所述mat文件中,并将填充后的所述mat文件中与所述数据请求信息相对应的数据反馈给所述用户,所述mat文件为与所述数据请求信息相对应的文件; 将所述缺失的数据转换成标准化的矩阵格式的数据后以mat文件格式缓存。
2.如权利要求1所述的方法,其特征在于,所述将数据转换成标准化的矩阵格式的数据包括: 从数据库中获取cell格式的数据; 根据获取的所述数据生成行列索引; 根据所述行列索引将所述cell格式的数据转换成标准化的数值矩阵,并根据所述行列索引对获取的所述数据进行定位,即每条数据在所述数值矩阵中的行列坐标; 根据所述定位,将获取的所述数 据批量插入到所述数值矩阵的相应位置; 对所述数值矩阵中空缺的位置进行数据填充、插值或标记。
3.如权利要求1所述的方法,其特征在于,从所述数据库中获取缺失的数据包括: 以最大化命中率和完成率为目标函数,并通过聚类的方式获得最大化目标函数,根据所述最大化目标函数确定搜索的次数以及每次搜索的行列索引,并根据所述搜索的次数以及每次搜索的行列索引对所述数据库进行搜索以获取所述缺失的数据。
4.如权利要求3所述的方法,其特征在于,所述以最大化命中率和完成率为目标函数,并通过聚类的方式获得最大化目标函数,根据所述最大化目标函数确定搜索的次数以及每次搜索的行列索引,并根据所述搜索的次数以及每次搜索的行列索引对所述数据库进行搜索以获取所述缺失的数据包括: A、将与所述数据请求信息相对应的mat文件中标准化的矩阵按列进行分段; B、统计每个列区间缺失数据的数量,并按照所述缺失数据的数量对列区间进行排序; C、从缺失数据数量最多或最少的列区间开始,进行行变换,并与其相连的列区间进行相同缺失数据行的合并,计算合并后列区间待获取子矩阵的命中率和完成率,其中所述子矩阵的命中率=子矩阵中缺失数据的数量/子矩阵大小,所述子矩阵的完成率=子矩阵中缺失数据的数量/矩阵缺失数据的总数; D、以所述子矩阵的命中率和完成率为目标函数进行列区间的搜索合并,以获得最大化目标函数的合并方式,并根据所述最大化目标函数的合并方式对所述数据库进行搜索以获取所述列区间缺失的数据; E、迭代进行A、B、C、D步骤,直到所述矩阵中所有缺失的数据都被获取。
5.如权利要求1所述的方法,其特征在于,所述接收用户的数据请求信息包括: 接收用户通过统一接口发送的数据请求信息,所述统一接口通过多个数据适配器和数据接口路由实现,所述数据适配器用于对从所述数据库中获取的不同的原始数据进行处理,其中每一个数据适配器处理一类数据,所述数据接口路由用于将不同的数据请求信息发送至相应的数据适配器。
6.一种海量数据高速缓存的装置,其特征在于,所述装置包括: 第一缓存单元,用于将数据库中获取的原始数据转换成标准化的矩阵格式的数据,并将转换后的数据以mat文件格式缓存; 判断单元,用于在接收到用户的数据请求信息时,判断所缓存的mat文件中是否存在与所述数据请求信息相对应的全部数据; 数据获取单元,用于在所述判断单元判断结果为否时,从所述数据库中获取缺失的数据,所述缺失的数据为所缓存的mat文件中缺失的与所述数据请求信息相对应的数据; 数据填充单元,用于将所述缺失的数据转换成标准化的矩阵格式的数据后填充到所述mat文件中,并将填充后的所述mat文件中与所述数据请求信息相对应的数据反馈给所述用户,所述mat文件为与所述数据请求信息相对应的文件; 所述第一缓存单元,还用于将所述缺失的数据转换成标准化的矩阵格式的数据后以mat文件格式缓存。
7.如权利要求6所述的装置,其特征在于,所述第一缓存单元包括: 数据获取模块,用于从数据库中获取cell格式的数据; 生成模块,用于根据获取的 所述数据生成行列索引; 定位模块,用于根据所述行列索引将所述cell格式的数据转换成标准化的数值矩阵,并根据所述行列索引对获取的所述数据进行定位,即每条数据在所述数值矩阵中的行列坐标; 数据插入模块,用于根据所述定位,将获取的所述数据批量插入到所述数值矩阵的相应位置; 处理模块,用于对所述数值矩阵中空缺的位置进行数据填充、插值或标记。
8.如权利要求6所述的装置,其特征在于,所述数据获取单元用于: 以最大化命中率和完成率为目标函数,并通过聚类的方式获得最大化目标函数,根据所述最大化目标函数确定搜索的次数以及每次搜索的行列索引,并根据所述搜索的次数以及每次搜索的行列索引对所述数据库进行搜索以获取所述缺失的数据。
9.如权利要求8所述的装置,其特征在于,所述数据获取单元包括: 分段模块,用于将与所述数据请求信息相对应的mat文件中标准化的矩阵按列进行分段; 统计模块,用于统计每个列区间缺失数据的数量,并按照所述缺失数据的数量对列区间进行排序; 处理模块,用于从缺失数据数量最多或最少的列区间开始,进行行变换,并与其相连的列区间进行相同缺失数据行的合并,计算合并后列区间待获取子矩阵的命中率和完成率,其中所述子矩阵的命中率=子矩阵中缺失数据的数量/子矩阵大小,所述子矩阵的完成率=子矩阵中缺失数据的数量/矩阵缺失数据的总数; 数据获取模块,用于以所述子矩阵的命中率和完成率为目标函数进行列区间的搜索合并,以获得最大化目标函数的合并方式,并根据所述最大化目标函数的合并方式对所述数据库进行搜索以获取所述列区间缺失的数据; 控制模块,用于控制分段模块、统计模块、处理模块以及数据获取模块的迭代处理,直到所述矩阵中所有缺失的数据都被获取。
10.如权利要求6所述的装置,其特征在于,所述判断单元包括: 数据请求接收模块,用于接收用户通过统一接口发送的数据请求信息,所述统一接口通过多个数据适配器和数据接口路由实现,所述数据适配器用于对从所述数据库中获取的不同的原始数据进行处理,其中每一个数据适配器处理一类数据,所述数据接口路由用于将不同的数据请求 信息发送至相应的数据适配器。
【文档编号】G06F3/06GK103543959SQ201310467372
【公开日】2014年1月29日 申请日期:2013年10月8日 优先权日:2013年10月8日
【发明者】林健武, 李倬, 杨波, 凌宗平 申请人:深圳市国泰安信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1