CN111752954B - 一种大规模特征数据存储的方法及装置 - Google Patents
一种大规模特征数据存储的方法及装置 Download PDFInfo
- Publication number
- CN111752954B CN111752954B CN202010606106.1A CN202010606106A CN111752954B CN 111752954 B CN111752954 B CN 111752954B CN 202010606106 A CN202010606106 A CN 202010606106A CN 111752954 B CN111752954 B CN 111752954B
- Authority
- CN
- China
- Prior art keywords
- feature
- metadata
- value
- data
- features
- 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.)
- Active
Links
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2219—Large Object storage; Management thereof
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
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)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种大规模特征数据存储的方法及装置,该方法包括获取待存储的特征数据,特征数据包括数据业务类型、特征和所述特征的值,根据所述数据业务类型,查找到所述数据业务类型对应的特征分组,从特征分组中确定出当前存储的特征编号,按照当前存储的特征编号,依序将特征的元数据存储在元数据集合,并根据特征的元数据在元数据集合中的位置,将特征的值存储在特征值集合中。在特征数据存储时,将不同数据业务类型的特征存储到对应特征分组中,这种特征分组的方式将同类型的数据存储到一个特征分组中,无需一列数据存储一个位置,降低数据维护成本,同时由于每次读写数据只涉及一个特征分组,可以降低数据遍历的时间,提高数据读写的效率。
Description
技术领域
本发明涉及金融科技(Fintech)领域,尤其涉及一种大规模特征数据存储的方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。在金融领域的数据处理的过程中,数据存储是一个重要的问题。
目前的数据存储大部分使用的是列式存储系统,虽然支持数据列的动态新增,但由于现有的数据存储方式,是每一列数据分别存储,随着数据列的增多,所需的维护成本增高;由于数据量大,写入和读取变慢,导致系统性能下降。
发明内容
本发明提供了一种大规模特征数据存储的方法及装置,可以提高数据读写效率,降低数据维护成本。
第一方面,本发明提供了一种大规模特征数据存储的方法,包括:
获取待存储的特征数据,所述特征数据包括数据业务类型、特征和所述特征的值;
根据所述数据业务类型,查找到所述数据业务类型对应的特征分组;
从所述特征分组中确定出当前存储的特征编号,按照所述当前存储的特征编号,依序将所述特征的元数据存储在元数据集合,并根据所述特征的元数据在所述元数据集合中的位置,将所述特征的值存储在特征值集合中。
上述技术方案中,在特征数据存储时,依据数据业务类型对特征进行分组,得到不同的特征分组,将不同数据业务类型的特征存储到对应特征分组中,这种特征分组的方式可以将同类型的数据存储到一个特征分组中,无需一列数据存储一个位置,降低数据维护成本,同时由于每次读写数据只涉及一个特征分组,其他无关的数据无需遍历,可以降低数据遍历的时间,提高数据读写的效率。
可选的,所述方法还包括:
当特征数据发生变化时,获取变化的特征数据,所述变化的特征数据包括多个特征和多个特征对应的值;
依据所述特征值集合的依赖版本的依赖链的长度和所述多个特征的数量,对所述变化的特征数据进行存储。
上述技术方案中,通过对特征值的依赖版本的依赖链的长度和多个特征的数量进行判断,来实现对特征数据以不同的方式进行存储,可以提高对特征数据的管理。
可选的,所述依据所述特征值集合的依赖版本的依赖链的长度和所述多个特征的数量,对所述变化的特征数据进行存储,包括:
若所述特征值集合的依赖版本的依赖链的长度小于第一阈值且所述多个特征的数量小于第二阈值,则对所述多个特征中元数据发生变化的特征,以所述元数据集合的当前版本为基础,进行元数据存储;对所述多个特征中值发生变化的特征,以所述特征值集合的当前版本为依赖版本,创建所述特征值集合的新版本存储所述多个特征的值;其中,所述新版本的特征值集合中不包括所述当前版本中未发生变化的特征的值以及所述当前版本中被删除的特征的值。
上述技术方案中,通过采用增量的方式对特征数据进行存储,可以节省系统的存储容量,降低存储容量的扩充。
可选的,所述方法还包括:
若所述特征值集合的依赖版本的依赖链的长度大于等于所述第一阈值和/或所述多个特征的数量大于等于所述第二阈值,则根据所述多个特征和多个特征对应的值,对所述元数据集合的当前版本和所述特征值集合的当前版本进行修改后,得到所述元数据集合的新版本和所述特征值集合的新版本。
上述技术方案中,通过全量的方式对特征数据进行存储,可以实现特征数据全版本的修改,提高特征数据的完整性。
可选的,所述特征的元数据包括所述特征的名称、数据类型和默认值;
所述根据所述特征的元数据在所述元数据集合中的位置,将所述特征的值存储在特征值集合,包括:
根据所述特征的元数据在所述元数据集合中的位置,将所述特征的值以三元组的形式存储在所述特征值集合中;所述三元组的元素包括所述特征的元数据在所述元数据集合中的位置、所述特征的值的长度和所述特征的值。
上述技术方案中,通过三元组的形式对特征的值进行存储,可以提高特征数据读写效率。
可选的,所述将所述特征的值以三元组的形式存储在所述特征值集合中,包括:
将所述特征的元数据在所述元数据集合中的位置、所述特征的值的长度和所述特征的值以动态整型的形式存储在所述特征值集合中。
上述技术方案中,通过动态整型的形式来存储三元组中的元素,可以节省特征的值的存储空间,从而节省系统的存储容量。
可选的,所述以动态整型的形式存储在所述特征值集合中,包括:
若所述三元组中各元素的值为单字节整型,则将所述单字节的首位设置为0;
若所述三元组中各元素的值为双字节整型或多字节整型,则将第一个字节以及中间字节的首位设置为1,将最后一个字节的首位设置为0。
上述技术方案中,通过对三元组中各元素的值的类型的不同,进行不同整型的存储,可以使得在读取特征数据时,提高读取效率。
第二方面,本发明实施例提供一种大规模特征数据存储的装置,包括:
获取单元,用于获取待存储的特征数据,所述特征数据包括数据业务类型、特征和所述特征的值;
处理单元,用于根据所述数据业务类型,查找到所述数据业务类型对应的特征分组;从所述特征分组中确定出当前存储的特征编号,按照所述当前存储的特征编号,依序将所述特征的元数据存储在元数据集合,并根据所述特征的元数据在所述元数据集合中的位置,将所述特征的值存储在特征值集合中。
可选的,所述处理单元还用于:
当特征数据发生变化时,获取变化的特征数据,所述变化的特征数据包括多个特征和多个特征对应的值;
依据所述特征值集合的依赖版本的依赖链的长度和所述多个特征的数量,对所述变化的特征数据进行存储。
可选的,所述处理单元具体用于:
若所述特征值集合的依赖版本的依赖链的长度小于第一阈值且所述多个特征的数量小于第二阈值,则对所述多个特征中元数据发生变化的特征,以所述元数据集合的当前版本为基础,进行元数据存储;对所述多个特征中值发生变化的特征,以所述特征值集合的当前版本为依赖版本,创建所述特征值集合的新版本存储所述多个特征的值;其中,所述新版本的特征值集合中不包括所述当前版本中未发生变化的特征的值以及所述当前版本中被删除的特征的值。
可选的,所述处理单元还用于:
若所述特征值集合的依赖版本的依赖链的长度大于等于所述第一阈值和/或所述多个特征的数量大于等于所述第二阈值,则根据所述多个特征和多个特征对应的值,对所述元数据集合的当前版本和所述特征值集合的当前版本进行修改后,得到所述元数据集合的新版本和所述特征值集合的新版本。
可选的,所述特征的元数据包括所述特征的名称、数据类型和默认值;
所述处理单元具体用于:
根据所述特征的元数据在所述元数据集合中的位置,将所述特征的值以三元组的形式存储在所述特征值集合中;所述三元组的元素包括所述特征的元数据在所述元数据集合中的位置、所述特征的值的长度和所述特征的值。
可选的,所述处理单元具体用于:
将所述特征的元数据在所述元数据集合中的位置、所述特征的值的长度和所述特征的值以动态整型的形式存储在所述特征值集合中。
可选的,所述处理单元具体用于:
若所述三元组中各元素的值为单字节整型,则将所述单字节的首位设置为0;
若所述三元组中各元素的值为双字节整型或多字节整型,则将第一个字节以及中间字节的首位设置为1,将最后一个字节的首位设置为0。
第三方面,本发明提供一种计算设备,包括:
存储器,用于存储计算机程序;
处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行上述第一方面所述的方法。
第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序用于使计算机执行上述第一方面所述的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种系统架构的示意图;
图2为本发明实施例提供的一种大规模特征数据存储的方法的流程示意图;
图3为本发明实施例提供的一种特征分组的示意图;
图4为本发明实施例提供的一种特征值集合存储的示意图;
图5为本发明实施例提供的一种大规模特征数据存储的装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种系统架构。如图1所示,该系统架构可以为服务器100,包括处理器110、通信接口120和存储器130。
其中,通信接口120用于与终端设备进行通信,收发该终端设备传输的信息,实现通信。
处理器110是服务器100的控制中心,利用各种接口和线路连接整个服务器100的各个部分,通过运行或执行存储在存储器130内的软件程序/或模块,以及调用存储在存储器130内的数据,执行服务器100的各种功能和处理数据。可选地,处理器110可以包括一个或多个处理单元。
存储器130可用于存储软件程序以及模块,处理器110通过运行存储在存储器130的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器130可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据业务处理所创建的数据等。此外,存储器130可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
需要说明的是,上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。
基于上述描述,图2示例性的示出了本发明实施例提供的一种大规模特征数据存储的方法的流程,该流程可以由一种大规模特征数据存储的装置执行。
如图2所示,该流程具体步骤包括:
步骤201,获取待存储的特征数据。
在本发明实施例中,该特征数据包括数据业务类型、特征和所述特征的值。该数据业务类型可以是依据经验设置的,例如可以按业务主体、加工批次等进行设置。该数据业务类型是为了找到对应的特征分组。
该特征可以为客户的属性特征,例如某个客户的姓名、性别、年龄等特征。
特征的值就是特征的实际值,例如特征为年龄时,特征的值为这个客户的年龄。
步骤202,根据所述数据业务类型,查找到所述数据业务类型对应的特征分组。
在本发明实施例中,特征数据进行存储时,是按照数据业务类型进行分组的。例如待保存的特征数据为:
feature_1:value_1,feature_2:value_2,...,feature_n:value_n;
其中,feature_i即第i个特征的名称,value_i第i个特征的值。
在存储系统中新建n个列,分别存放n个值;然后将n个特征进行分组存储:
feature_set_1:value_set_1,feature_set_2:value_set_2,...feature_set_i:value_set_i,...feature_set_m:value_set_m。
其中,feature_set_i:第i个元数据集合的名称,value_set_i:第i个特征值集合的名称,也即,将特征类型相同的特征数据划分到一个特征分组中,从而得到多个不同特征类型对应的特征分组。具体可以如图3所示。
需要说明的是,每个特征只在且必须在某一个特征集中出现。这种通过特征分组的方式将特征数据进行存储的方式,由于将所有的特征数据分为多个特征分组,减少了单一维护特征名-特征值的映射关系的个数,每次读写只涉及到一个特征分组中的数据,降低了数据遍历时间。
步骤203,从所述特征分组中确定出当前存储的特征编号,按照所述当前存储的特征编号,依序将所述特征的元数据存储在元数据集合,并根据所述特征的元数据在所述元数据集合中的位置,将所述特征的值存储在特征值集合中。
当得到特征分组之后,就需要进行元数据存储和特征的值存储。具体是需要依据当前存储的特征编号,依序进行存储。其中,特征的元数据包括特征的名称、数据类型和默认值等信息。将特征的值存储在特征值集合中时,主要是以三元组的形式将所述特征的值存储在特征值集合中。该三元组包括特征的元数据在元数据集合中的位置、特征的值的长度以及特征的值,具体是将特征的元数据在元数据集合中的位置、特征的值的长度和特征的值以动态整型的形式存储在特征值集合中。
例如,得到特征分组之后,特征分组中的元数据集合用于特征的元数据的存储,特征值集合用于特征的值的存储,其中元数据集合的结构和特征值集合的结构如下:
feature_set_i:feature_1,feature_2,...feature_j;
value_set_i:index_1:size_1:value_1,index_2:size_2:value_2,...index_j:size_j:value_j。
其中,元数据集合feature_set_i包含了每个特征的元数据,每个特征的元数据描述了每个特征的名称、数据类型、默认值等,可以存储在文件系统或其他存储系统中。feature_j表示第j个特征的元数据,j为特征编号。
特征值集合value_set_i包含了每个特征的值,为了特征的值在读写时便于数据遍历,特征的值在进行存储的时候是以三元组的形式进行存储的,通过使用三元组对特征的值进行存储,可以提高数据遍历的效率,能够快速定位到特征的值。例如:第j个特征对应的三元组的元素为index_j:size_j:value_j。
index_j为特征编号,表示第j个特征的元数据在元数据集合中的位置,第一个特征取值1,第二个特征取值2,以此类推。
size_j表示第j个特征的值的长度,如存储字符串‘china’,需要5个字节,则size=5。
value_j表示第j个特征的值,如存储字符串的实际内容为utf8编码的‘china’。
即三元组中的元素包括特征的元数据在元数据集合中的位置、特征的值的长度和特征的值。将特征的值以上述三元组的形式进行存储,可以进一步提高数据遍历的效率,以及提高特征的值的解读效率。
需要说明的是元数据中默认值不存储,其对应的特征的值可以不进行存储。每个特征根据业务含义,可以定义默认值,如“客户类型”默认取值1:私人客户。若value_set中某个特征的元数据feautre_j的默认值取值为1,则在特征值集合中,该元数据feautre_j对应的三元组中可以不出现value_j,即具体的特征的值不出现。
由于元数据集合中特征的个数决定了特征值集合的三元组中index_j应该占用的空间,例如在计算机中采用无符号的单字节整型存储,可以表示0-255个特征;双字节整型则可以表示0-65535个特征。
需要理解,传统方式中,不会根据三元组中各元素的值的字节类型设置数值,默认都是不设置。本实施例中,为了节省空间,采用动态整型方式存储。具体方式是在确定三元组中各元素的值为单字节整型时,可以将单字节的首位设置为0。在确定三元组中各元素的值为双字节整型或多字节整型,则将第一个字节以及中间字节的首位设置为1,将最后一个字节的首位设置为0。
在对三元组中的元素进行读取时,若字节的首位是0,表示到该字节为止;若字节的首位是1,表示取值需要包含下一个字节。
如采用动态整型方式,单字节00001110表示十进制的14;
双字节10001110-00001001表示十进制的2318。需要注意的是,这里转换时假设计算机采用little-endian字节序。
三元组中第二个域size_j表示值的长度,同样采用动态整型方式存储。
三元组中第三个域value_j存储的是实际特征值的二进制数据,根据特征值的内容,采用不同的序列化方式,如字符串数据,可以通过字符集编码(如utf8)成字节数组后,存放在value_j域中。
例如,假设一个表示客户基本属性包含三个特征:name姓名,gender性别,age年龄。
其中,元数据集合可以为:
feature_set_cust_info:name:string,gender:1(男,默认值)|2(女),age:int。
特征值集合可以为:
value_set_cust_info:
00000001-00000200-01001010-01100001-01100011-01101011-00000011-00000001-00010100。
具体的存储方式可以见图4所示,特征的值存储时只存储了特征name和特征age的值,由于特征gender的值是默认值,没有存储。通过对图4进行解析,可以得到name=Jack,gender=男(默认值),age=20。
将上述特征数据进行存储之后,为了提高数据遍历和数据还原的效率,还可以对元数据集合和特征值集合进行版本管理。当其中一个或多个特征的值可能发生变化时,可以依据特征值的依赖版本的依赖链的长度和多个特征的数量来确定是采用增量的方式对变化的特征数据进行存储还是以全量的方式对变化的特征数据进行存储。通过采用增量的方式对变化的特征数据进行存储时能够便于对特征数据的管理,节省系统的存储空间。
具体的,可以获取变化的特征数据,变化的特征数据包括多个特征和多个特征对应的值。若特征值集合的依赖版本的依赖链小于第一阈值且多个特征的数量小于第二阈值,则采用增量的方式对变化的特征数据进行存储,具体是对多个特征中元数据发生变化的特征,以元数据集合的当前版本为基础,进行元数据存储;对多个特征中值发生变化的特征,以特征值集合的当前版本为依赖版本,创建特征值集合的新版本存储多个特征的值。其中,新版本的特征值集合中不包括当前版本中未发生变化的特征的值以及当前版本中被删除的特征的值。
若特征值集合的依赖版本的依赖链大于等于第一阈值和/或多个特征的数量大于等于第二阈值,则采用全量的方式对变化的特征数据进行存储,具体是根据多个特征和多个特征对应的值,对元数据集合的当前版本和特征值集合的当前版本进行修改后,得到元数据集合的新版本和特征值集合的新版本。该第一阈值和第二阈值可以依据经验设置。其中,对元数据集合的当前版本和特征值集合的当前版本进行修改可以包括对元数据集合进行删除、增加特征,对特征值集合中与元数据集合对应的三元组进行删除和增加。其中对应删除的特征,不回收编号,新增的特征编号是对一个版本末尾编号递增得到的。特征值集合中对应删除该被删除的特征的三元组,增加对应增加的特征的三元组。
举例来说,元数据集合的版本:
feature_set_i-v1:feature_1,feature_2,...feature_j;
feature_set_i-v2:feature_1,feature_3,...feature_j,feature_(j+1),feature_(j+2)...。
假设版本v1有j个字段,分配的特征编号从1到j。
版本v2可以新增、删除特征,对于删除的特征,不回收编号;新增的特征编号从上一版本末尾编号+1开始,如j+1表示新增的第一个特征的编号,j+2表示新增第二个,以此类推。
特征值集合的版本:
value_set_j-v1:index_1:size_1:value_1,index_2:size_2:value_2,...index_j:size_j:value_j;
value_set_j-v2-v1:index_2:size_2:value_2,...index_j:size_j:value_j,index_(j+1):size_(j+1):value_(j+1),index_(j+2):size_(j+2):value_(j+2),...。
特征值集合中与元数据集合对应特征的三元组可能被删除,在特征值集合中不包含删除特征的三元组;对于元数据集合中新增的特征,特征值集合直接包含新增的特征的三元组。
特别的,对于特征的值无变化的特征,在特征值集合的新版本中可以不包含该特征的三元组,这种节省存储的方式,称为版本增量存储。
特征值集合的版本可以有依赖,value_set_j-v2-v1表示版本v2的特征值集合,依赖于版本v1,v2可以更新特征的值,无更新的特征的值来自其依赖的版本。
多个版本之间的依赖,可以构成一个依赖链:v1->v2->v3...。
为了获取后面版本的特征的值,必须递归计算其前面的版本,直到第一个无依赖的版本。
此外还需要设置两个相关的参数,即为上述第一阈值和第二阈值。
其中第一阈值为依赖链的最大长度:若新增一个有依赖的版本,会导致依赖链的长度达到该阈值,则不再使用增量存储的方式,而是选择保存该版本特征值集合中的全量的特征的值。
第二阈值为版本特征的最大更新比例:若某个版本,相比上一个版本,需要更新的特征占特征总数的比例超过该阈值,也不再使用增量存储的方式。
在本发明实施例中,元数据集合用于描述特征值集合的特征名、特征值类型、默认值、枚举值等,可以存储在各种实现的文件系统、列式存储系统、或关系型数据库等其他系统中,只要在读取特征值集合时,能配合读取到即可。特征值集合的版本号,可以包含人为定义的版本名称、版本编号和数据日期等,只要能唯一标识版本即可。
本发明实施例表明,获取待存储的特征数据,特征数据包括数据业务类型、特征和所述特征的值,根据所述数据业务类型,查找到所述数据业务类型对应的特征分组,从特征分组中确定出当前存储的特征编号,按照当前存储的特征编号,依序将特征的元数据存储在元数据集合,并根据特征的元数据在元数据集合中的位置,将特征的值存储在特征值集合中。在特征数据存储时,依据数据业务类型对特征进行分组,得到不同的特征分组,将不同数据业务类型的特征存储到对应特征分组中,这种特征分组的方式可以将同类型的数据存储到一个特征分组中,无需一列数据存储一个位置,降低数据维护成本,同时由于每次读写数据只涉及一个特征分组,其他无关的数据无需遍历,可以降低数据遍历的时间,提高数据读写的效率。
基于相同的技术构思,图5示例性的示出了本发明实施例提供的一种大规模特征数据存储的装置的结构示意图,该装置可以执行大规模特征数据存储的流程。
如图5所示,该装置具体包括:
获取单元501,用于获取待存储的特征数据,所述特征数据包括数据业务类型、特征和所述特征的值;
处理单元502,用于根据所述数据业务类型,查找到所述数据业务类型对应的特征分组;从所述特征分组中确定出当前存储的特征编号,按照所述当前存储的特征编号,依序将所述特征的元数据存储在元数据集合,并根据所述特征的元数据在所述元数据集合中的位置,将所述特征的值存储在特征值集合中。
可选的,所述处理单元502还用于:
当特征数据发生变化时,获取变化的特征数据,所述变化的特征数据包括多个特征和多个特征对应的值;
依据所述特征值集合的依赖版本的依赖链的长度和所述多个特征的数量,对所述变化的特征数据进行存储。
可选的,所述处理单元502具体用于:
若所述特征值集合的依赖版本的依赖链的长度小于第一阈值且所述多个特征的数量小于第二阈值,则对所述多个特征中元数据发生变化的特征,以所述元数据集合的当前版本为基础,进行元数据存储;对所述多个特征中值发生变化的特征,以所述特征值集合的当前版本为依赖版本,创建所述特征值集合的新版本存储所述多个特征的值;其中,所述新版本的特征值集合中不包括所述当前版本中未发生变化的特征的值以及所述当前版本中被删除的特征的值。
可选的,所述处理单元502还用于:
若所述特征值集合的依赖版本的依赖链的长度大于等于所述第一阈值和/或所述多个特征的数量大于等于所述第二阈值,则根据所述多个特征和多个特征对应的值,对所述元数据集合的当前版本和所述特征值集合的当前版本进行修改后,得到所述元数据集合的新版本和所述特征值集合的新版本。
可选的,所述特征的元数据包括所述特征的名称、数据类型和默认值;
所述处理单元502具体用于:
根据所述特征的元数据在所述元数据集合中的位置,将所述特征的值以三元组的形式存储在所述特征值集合中;所述三元组的元素包括所述特征的元数据在所述元数据集合中的位置、所述特征的值的长度和所述特征的值。
可选的,所述处理单元502具体用于:
将所述特征的元数据在所述元数据集合中的位置、所述特征的值的长度和所述特征的值以动态整型的形式存储在所述特征值集合中。
可选的,所述处理单元502具体用于:
若所述三元组中各元素的值为单字节整型,则将所述单字节的首位设置为0;
若所述三元组中各元素的值为双字节整型或多字节整型,则将第一个字节以及中间字节的首位设置为1,将最后一个字节的首位设置为0。
基于相同的技术构思,本发明实施例提供一种计算设备,包括:
存储器,用于存储计算机程序;
处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行上述大规模特征数据存储的方法。
基于相同的技术构思,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序用于使计算机执行上述大规模特征数据存储的方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (7)
1.一种大规模特征数据存储的方法,其特征在于,包括:
获取待存储的特征数据,所述特征数据包括数据业务类型、特征和所述特征的值;
根据所述数据业务类型,查找到所述数据业务类型对应的特征分组;
从所述特征分组中确定出当前存储的特征编号,按照所述当前存储的特征编号,依序将所述特征的元数据存储在元数据集合,并根据所述特征的元数据在所述元数据集合中的位置,将所述特征的值存储在特征值集合中;
当特征数据发生变化时,获取变化的特征数据,所述变化的特征数据包括多个特征和多个特征对应的值;
若所述特征值集合的依赖版本的依赖链的长度小于第一阈值且所述多个特征的数量小于第二阈值,则对所述多个特征中元数据发生变化的特征,以所述元数据集合的当前版本为基础,进行元数据存储;对所述多个特征中值发生变化的特征,以所述特征值集合的当前版本为依赖版本,创建所述特征值集合的新版本存储所述多个特征的值;其中,所述新版本的特征值集合中不包括所述当前版本中未发生变化的特征的值以及所述当前版本中被删除的特征的值;
若所述特征值集合的依赖版本的依赖链的长度大于等于所述第一阈值和/或所述多个特征的数量大于等于所述第二阈值,则根据所述多个特征和多个特征对应的值,对所述元数据集合的当前版本和所述特征值集合的当前版本进行修改后,得到所述元数据集合的新版本和所述特征值集合的新版本。
2.如权利要求1所述的方法,其特征在于,所述特征的元数据包括所述特征的名称、数据类型和默认值;
所述根据所述特征的元数据在所述元数据集合中的位置,将所述特征的值存储在特征值集合,包括:
根据所述特征的元数据在所述元数据集合中的位置,将所述特征的值以三元组的形式存储在所述特征值集合中;所述三元组的元素包括所述特征的元数据在所述元数据集合中的位置、所述特征的值的长度和所述特征的值。
3.如权利要求2所述的方法,其特征在于,所述将所述特征的值以三元组的形式存储在所述特征值集合中,包括:
将所述特征的元数据在所述元数据集合中的位置、所述特征的值的长度和所述特征的值以动态整型的形式存储在所述特征值集合中。
4.如权利要求3所述的方法,其特征在于,所述以动态整型的形式存储在所述特征值集合中,包括:
若所述三元组中各元素的值为单字节整型,则将所述单字节的首位设置为0;
若所述三元组中各元素的值为双字节整型或多字节整型,则将第一个字节以及中间字节的首位设置为1,将最后一个字节的首位设置为0。
5.一种大规模特征数据存储的装置,其特征在于,包括:
获取单元,用于获取待存储的特征数据,所述特征数据包括数据业务类型、特征和所述特征的值;
处理单元,用于根据所述数据业务类型,查找到所述数据业务类型对应的特征分组;从所述特征分组中确定出当前存储的特征编号,按照所述当前存储的特征编号,依序将所述特征的元数据存储在元数据集合,并根据所述特征的元数据在所述元数据集合中的位置,将所述特征的值存储在特征值集合中;
以及用于当特征数据发生变化时,获取变化的特征数据,所述变化的特征数据包括多个特征和多个特征对应的值;若所述特征值集合的依赖版本的依赖链的长度小于第一阈值且所述多个特征的数量小于第二阈值,则对所述多个特征中元数据发生变化的特征,以所述元数据集合的当前版本为基础,进行元数据存储;对所述多个特征中值发生变化的特征,以所述特征值集合的当前版本为依赖版本,创建所述特征值集合的新版本存储所述多个特征的值;其中,所述新版本的特征值集合中不包括所述当前版本中未发生变化的特征的值以及所述当前版本中被删除的特征的值;若所述特征值集合的依赖版本的依赖链的长度大于等于所述第一阈值和/或所述多个特征的数量大于等于所述第二阈值,则根据所述多个特征和多个特征对应的值,对所述元数据集合的当前版本和所述特征值集合的当前版本进行修改后,得到所述元数据集合的新版本和所述特征值集合的新版本。
6.一种计算设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行权利要求1至4任一项所述的方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序用于使计算机执行权利要求1至4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010606106.1A CN111752954B (zh) | 2020-06-29 | 2020-06-29 | 一种大规模特征数据存储的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010606106.1A CN111752954B (zh) | 2020-06-29 | 2020-06-29 | 一种大规模特征数据存储的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111752954A CN111752954A (zh) | 2020-10-09 |
CN111752954B true CN111752954B (zh) | 2022-08-12 |
Family
ID=72678017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010606106.1A Active CN111752954B (zh) | 2020-06-29 | 2020-06-29 | 一种大规模特征数据存储的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111752954B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113282814A (zh) * | 2021-05-19 | 2021-08-20 | 北京三快在线科技有限公司 | 特征数据处理方法、装置、服务器及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105930388A (zh) * | 2016-04-14 | 2016-09-07 | 中国人民大学 | 一种基于函数依赖关系的olap分组聚集方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001090949A1 (en) * | 2000-05-22 | 2001-11-29 | Realnetworks, Inc. | System and method of organizing and editing metadata |
US7870164B2 (en) * | 2007-11-20 | 2011-01-11 | Microsoft Corporation | Database part creation, merge and reuse |
CN103106286B (zh) * | 2013-03-04 | 2017-02-01 | 曙光信息产业(北京)有限公司 | 元数据的管理方法和装置 |
CN105718515B (zh) * | 2016-01-14 | 2019-09-10 | 神策网络科技(北京)有限公司 | 数据存储系统及其方法和数据分析系统及其方法 |
CN106547911B (zh) * | 2016-11-25 | 2020-07-10 | 长城计算机软件与系统有限公司 | 一种海量小文件的存取方法和系统 |
CN108256076B (zh) * | 2018-01-18 | 2022-04-01 | 广州大学 | 分布式海量数据处理方法及装置 |
CN108595588B (zh) * | 2018-04-19 | 2022-08-23 | 中国科学院电子学研究所苏州研究院 | 一种科学数据存储关联方法 |
CN108897859A (zh) * | 2018-06-29 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种元数据检索方法、装置、设备及计算机可读存储介质 |
CN109669995A (zh) * | 2018-12-25 | 2019-04-23 | 北京锐安科技有限公司 | 数据存储、质量计算方法、装置、存储介质及服务器 |
-
2020
- 2020-06-29 CN CN202010606106.1A patent/CN111752954B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105930388A (zh) * | 2016-04-14 | 2016-09-07 | 中国人民大学 | 一种基于函数依赖关系的olap分组聚集方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111752954A (zh) | 2020-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10346363B2 (en) | Deduplicated file system | |
US9575976B2 (en) | Methods and apparatuses to optimize updates in a file system based on birth time | |
CN102246163B (zh) | 数据库中的索引压缩 | |
JP4785833B2 (ja) | 永続的でユーザアクセス可能なビットマップ値を有するデータベース管理システム | |
CA2997061C (en) | Method and system for parallelization of ingestion of large data sets | |
WO2015124042A1 (zh) | 分布式文件系统列式存储的元数据更新方法、装置、主机 | |
US20200210399A1 (en) | Signature-based cache optimization for data preparation | |
EP3435256B1 (en) | Optimal sort key compression and index rebuilding | |
CN112230861B (zh) | 一种基于一致性哈希算法的数据存储方法及终端 | |
CN109960612B (zh) | 一种确定数据存储占比的方法、装置及服务器 | |
CN114064984B (zh) | 一种基于稀疏数组链表的世界状态增量更新方法及装置 | |
US20100161668A1 (en) | Method and system for index serialization | |
CN111752954B (zh) | 一种大规模特征数据存储的方法及装置 | |
CN103064991A (zh) | 一种海量数据聚类方法 | |
US20190220363A1 (en) | Method, apparatus and computer program product for improving inline pattern detection | |
WO2020222727A1 (en) | Optimizing storage and retrieval of compressed data | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
CN115438114B (zh) | 存储格式转换方法、系统、装置、电子设备及存储介质 | |
CN111190895B (zh) | 列式存储数据的组织方法、装置及存储介质 | |
CN114443629A (zh) | 一种集群布隆过滤器数据去重方法、终端设备及存储介质 | |
CN115221360A (zh) | 树形结构配置方法和系统 | |
CN113495901A (zh) | 一种面向可变长数据块的快速检索方法 | |
US10380090B1 (en) | Nested object serialization and deserialization | |
CN112015586B (zh) | 一种数据重构计算的方法以及相关装置 | |
CN116383290B (zh) | 一种数据泛化解析方法 |
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 | ||
GR01 | Patent grant |