CN105556474B - 管理数据操作的存储器和存储空间 - Google Patents

管理数据操作的存储器和存储空间 Download PDF

Info

Publication number
CN105556474B
CN105556474B CN201480040788.7A CN201480040788A CN105556474B CN 105556474 B CN105556474 B CN 105556474B CN 201480040788 A CN201480040788 A CN 201480040788A CN 105556474 B CN105556474 B CN 105556474B
Authority
CN
China
Prior art keywords
data
memory space
value
stored
information
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
Application number
CN201480040788.7A
Other languages
English (en)
Other versions
CN105556474A (zh
Inventor
M·A·可汗
S·G·雷比茨基
乔尔·古尔德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ab Initio Software LLC
Original Assignee
Ab Initio Software LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ab Initio Software LLC filed Critical Ab Initio Software LLC
Publication of CN105556474A publication Critical patent/CN105556474A/zh
Application granted granted Critical
Publication of CN105556474B publication Critical patent/CN105556474B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation

Abstract

处理多个数据单元以产生结果信息,包括:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作并且将与该数据操作的结果相关联的信息存储在存储器设备(108)的工作存储器设备中存储的一个或多个数据结果的第一子集中;在所述工作存储器空间的溢出条件满足之后,将信息存储在存储设备(110)的溢出存储空间中;以及在所述处理所述多个数据单元期间重复多次溢出处理过程,所述溢出处理过程包括:使用所述溢出存储空间中存储的至少一些信息来更新所述工作存储器空间中存储的一个或多个数据结构的新集合。

Description

管理数据操作的存储器和存储空间
相关申请的交叉引用
本申请要求享有2013年5月17日提交的61/824,686号美国专利申请的优先权。
技术领域
本申请涉及一种管理数据操作的存储器和存储空间。
背景技术
一些计算系统使用虚拟存储器方案来管理在操作系统内执行的程序所使用的存储器设备。例如,使用从存储设备换入和换出的存储器页面,操作系统可以处理存储器设备(也称为“主存储器”)的较大虚拟地址空间和较小实地址空间之间的转译,其中上述存储设备用作具有比存储器设备更大存储容量的后备存储。因此,程序可访问的工作存储器的量不受限于主存储器的大小。在虚拟存储器方案中,程序的工作存储器中地址页面在存储器设备和后备存储之间的往返移动对使用该工作存储器的程序而言通常是透明的。一些计算系统可能具有对虚拟存储器的硬件支持,诸如内置于中央处理单元(CPU)中的存储器管理单元(MMU)。一些计算系统还可以使用具有一个或多个级别的缓存系统来在相对更快速的高速缓冲存储器中存储有限量的主存储器地址的副本,以加速对存储器地址的重复访问。
发明内容
在一个方案中,一般而言,一种计算系统,包括:存储器设备,用于提供工作存储器空间;存储设备,用于提供溢出存储空间;以及至少一个处理器,被配置为处理多个数据单元以产生结果信息。所述处理包括:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作并且将与该数据操作的结果相关联的信息存储在所述工作存储器空间中存储的一个或多个数据结构的第一集合中;在所述工作存储器空间的溢出条件满足之后,将信息存储在所述溢出存储空间中并且释放至少一些所述工作存储器空间,并为所述多个数据单元的数据单元第二子集的每个数据单元执行所述数据操作,且将与该数据操作的结果相关联的信息存储在所述工作存储器空间中存储的一个或多个数据结构的第二集合中;将一个或多个数据结构的多个集合结合,包括所述第一集合和第二集合,以产生所述结果信息。将与数据操作的结果相关联的所述信息存储在一个或多个数据结构的集合中包括,对于至少一个数据单元,执行改变一个或多个数据结构的所述集合中信息的操作而免于增大一个或多个数据结构的所述集合所使用的所述工作存储器空间的量。
这些方案可包括一个或多个以下特征。
如果一个或多个数据结构的所述第一集合所使用的所述工作存储器空间的所述量大于等于预定阈值,则所述工作存储器空间的所述溢出条件满足。
所述处理还包括,在所述溢出条件满足之后并且在为所述数据单元第二子集的每个数据单元执行所述数据操作之前,将一个或多个数据结构的所述第一集合存储在所述溢出存储空间中,并且从所述工作存储器空间移除一个或多个数据结构的所述第一集合。
将一个或多个数据结构的多个集合结合包括将所述第一集合的至少一个数据结构与所述第二集合的至少一个数据结构合并。
将所述第一集合的至少一个数据结构与所述第二集合的至少一个数据结构合并包括将一个或多个数据结构的所述第一集合的所述数据结构中的第一键与一个或多个数据结构的所述第二集合的所述数据结构中的第二键相匹配,并且对与所述第一键相关联的值和与所述第二键相关联的值执行聚合操作。
所述处理还包括,在所述溢出条件满足之后并且在为所述数据单元第二子集的每个数据单元执行所述数据操作之前,为数据单元的所述第二子集的每个数据单元执行所述数据操作,为所述多个数据单元的数据单元第三子集的每个数据单元执行所述数据操作,并且将与该数据操作的结果相关联的信息存储在所述工作存储器空间中存储的一个或多个数据结构的所述第一集合中。
所述数据单元第二子集是所述数据单元第三子集的数据单元的子集。
所述处理还包括,在为所述数据单元第三子集的第一数据单元执行所述数据操作之后,确定将与该数据操作的结果相关联的信息存储在:(1)所述工作存储器空间中存储的一个或多个数据结构的所述第一集合中,或者(2)所述溢出存储空间中。
改变一个或多个数据结构的所述集合中的信息的所述操作包括就地存储器操作,所述就地存储器操作将所述工作存储器空间内一位置中存储的值覆写为不同值并存储在所述工作存储器空间内的相同位置中。
将与所述数据操作的结果相关联的信息存储在所述溢出存储空间中包括将所述第一数据单元的至少一些内容存储在所述溢出存储空间中。
为所述第一数据单元执行所述数据操作包括将所述第一数据单元中的键与一个或多个数据结构的所述第一集合中的一个或多个键相比较,并且如果所述比较结果为匹配,则将与该数据操作的结果相关联的所述信息存储在所述工作存储器空间中存储的一个或多个数据结构的第一集合中,而如果所述比较结果为不匹配,则将与该数据操作的结果相关联的所述信息存储在所述溢出存储空间中。
所述处理还包括根据数据源产生所述多个数据单元,每个数据单元包括数据源的字段的标识符以及出现在所述数据源的记录内的该字段中的值。
所述数据操作包括使用所述数据单元中包括的所述值作为键来对多个数据单元的信息进行聚合,所述键用来选择信息经过聚合的匹配数据单元。
所述存储器设备包括易失性存储器设备。
所述存储设备包括非易失性存储设备。
在另一个方案中,一般而言,一种计算系统,包括:用于提供工作存储器空间的装置;用于提供溢出存储空间的装置;以及用于处理多个数据单元以产生结果信息的装置。所述处理包括:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作并且将与该数据操作的结果相关联的信息存储在所述工作存储器空间中存储的一个或多个数据结构的第一集合中;在所述工作存储器空间的溢出条件满足之后,将信息存储在所述溢出存储空间中并且释放至少一些所述工作存储器空间,并为所述多个数据单元的数据单元第二子集的每个数据单元执行所述数据操作,且将与该数据操作的结果相关联的信息存储在所述工作存储器空间中存储的一个或多个数据结构的第二集合中;将一个或多个数据结构的多个集合结合,包括所述第一集合和第二集合,以产生所述结果信息。将与所述数据操作的结果相关联的所述信息存储在一个或多个数据结构的集合中包括,对于至少一个数据单元,执行改变一个或多个数据结构的所述集合中信息的操作而免于增大一个或多个数据结构的所述集合所使用的所述工作存储器空间的量。
在另一个方案中,一般而言,一种用于处理多个数据单元以产生结果信息的方法,包括:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作并且将与该数据操作的结果相关联的信息存储在存储器设备的工作存储器空间中存储的一个或多个数据结构的第一集合中;在所述工作存储器空间的溢出条件满足之后,将信息存储在存储设备的溢出存储空间中并且释放至少一些所述工作存储器空间,并为所述多个数据单元的数据单元第二子集的每个数据单元执行所述数据操作,且将与该数据操作的结果相关联的信息存储在所述工作存储器空间中存储的一个或多个数据结构的第二集合中;以及将一个或多个数据结构的多个集合结合,包括所述第一集合和第二集合,以产生所述结果信息。将与所述数据操作的结果相关联的所述信息存储在一个或多个数据结构的集合中包括,对于至少一个数据单元,执行改变一个或多个数据结构的所述集合中信息的操作而免于增大一个或多个数据结构的所述集合所使用的所述工作存储器空间的量。
在另一个方案中,一般而言,软件存储在计算机可读介质上用于处理多个数据单元以产生结果信息。所述软件包括指令用于使得计算系统执行:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作并且将与该数据操作的结果相关联的信息存储在存储器设备的工作存储器空间中存储的一个或多个数据结构的第一集合中;在所述工作存储器空间的溢出条件满足之后,将信息存储在存储设备的溢出存储空间中并且释放至少一些所述工作存储器空间,并为所述多个数据单元的数据单元第二子集的每个数据单元执行所述数据操作,且将与该数据操作的结果相关联的信息存储在所述工作存储器空间中存储的一个或多个数据结构的第二集合中;以及将一个或多个数据结构的多个集合结合,包括所述第一集合和第二集合,以产生所述结果信息。将与所述数据操作的结果相关联的所述信息存储在一个或多个数据结构的集合中包括,对于至少一个数据单元,执行改变一个或多个数据结构的所述集合中信息的操作而免于增大一个或多个数据结构的所述集合所使用的所述工作存储器空间的量。
在另一个方案中,一般而言,一种计算系统,包括:存储器设备,用于提供工作存储器空间;存储设备,用于提供溢出存储空间;以及至少一个处理器,被配置为处理多个数据单元以产生结果信息。所述处理包括:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作并且将与该数据操作的结果相关联的信息存储在所述工作存储器空间中存储的一个或多个数据结构的第一集合中;在所述工作存储器空间的溢出条件满足之后,为所述多个数据单元的数据单元的第二子集的每个数据单元执行所述数据操作,并且确定将与所述数据操作的结果相关联的信息存储在:(1)所述工作存储器空间中存储的一个或多个数据结构的所述第一集合中,或者(2)所述溢出存储空间中。
这些方案可包括一个或多个以下特征。
如果一个或多个数据结构的所述第一集合所使用的所述工作存储器空间的所述量大于等于预定阈值,则所述工作存储器空间的所述溢出条件满足。
所述数据操作至少部分基于每个数据单元中的键值,并且所述确定包括在所述第一集合的至少一个所述数据结构中搜索至少一个键值以确定:(1)更新与所述工作存储器空间中一个或多个数据结构的所述第一集合的数据结构中的该键值相关联的信息,或者(2)存储与所述溢出存储空间中的该键值相关联的信息。
所述数据操作包括就地存储器操作,所述就地存储器操作将所述工作存储器空间内一位置中存储的值覆写为不同值并存储在所述工作存储器空间内的相同位置处。
将与所述数据操作的结果相关联的信息存储在所述溢出存储空间中包括将执行了所述数据操作的数据单元的至少一些内容存储在所述溢出存储空间中。
为所述第一数据单元执行所述数据操作包括将所述第一数据单元中的键与一个或多个数据结构的所述第一集合中的一个或多个键相比较,并且如果所述比较结果为匹配,则将与该数据操作的结果相关联的所述信息存储在所述工作存储器空间中存储的一个或多个数据结构的第一集合中,并且如果所述比较结果为不匹配,则将与该数据操作的结果相关联的所述信息存储在所述溢出存储空间中。
所述处理还包括根据数据源产生所述多个数据单元,每个数据单元包括数据源的字段的标识符以及出现在所述数据源的记录内的该字段中的值。
所述数据操作包括使用所述数据单元中包括的所述值作为键来对多个数据单元的信息进行聚合,所述键用来选择信息经过聚合的匹配数据单元。
产生所述多个数据单元包括为所述数据源的至少第一字段和所述数据源的至少第二字段产生数据单元。
为所述第二子集的每个数据单元执行所述数据操作包括:将与在第一数据单元上执行的所述数据操作的结果相关联的信息存储在一个或多个数据结构的所述第一集合中,并且将与在第二数据单元上执行的所述数据操作的结果相关联的信息存储在所述溢出存储空间中。
所述第一数据单元和所述第二数据单元对于所述数据源的相同字段分别包括各标识符。
所述存储器设备包括易失性存储器设备。
所述存储设备包括非易失性存储设备。
在另一个方案中,一般而言,一种计算系统,包括:用于提供工作存储器空间的装置;用于提供溢出存储空间的装置;以及用于处理多个数据单元以产生结果信息的装置,所述处理包括:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作并且将与该数据操作的结果相关联的信息存储在所述工作存储器空间中存储的一个或多个数据结构的第一集合中;以及在所述工作存储器空间的溢出条件满足之后,为所述多个数据单元的数据单元第二子集的每个数据单元执行所述数据操作,并且确定将与该数据操作的结果相关联的信息存储在:(1)所述工作存储器空间中存储的一个或多个数据结构的所述第一集合中,或者(2)所述溢出存储空间中。
在另一个方案中,一般而言,一种用于处理多个数据单元以产生结果信息的方法,包括:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作并且将与该数据操作的结果相关联的信息存储在存储器设备的工作存储器空间中存储的一个或多个数据结构的第一集合中;以及在所述工作存储器空间的溢出条件满足之后,为所述多个数据单元的数据单元第二子集的每个数据单元执行所述数据操作,并且确定是否将与该数据操作的结果相关联的信息存储在:(1)所述工作存储器空间中存储的一个或多个数据结构的所述第一集合中,或者(2)存储设备的溢出存储空间中。
在另一个方案中,一般而言,软件存储在计算机可读介质上用于处理多个数据单元以产生结果信息。所述软件包括指令用于使得计算系统执行:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作并且将与该数据操作的结果相关联的信息存储在存储设备的工作存储器空间中存储的一个或多个数据结构的第一集合中;以及在所述工作存储器空间的溢出条件满足之后,为所述多个数据单元的数据单元第二子集的每个数据单元执行所述数据操作,并且确定是否将与该数据操作的结果相关联的信息存储在:(1)所述工作存储器空间中存储的一个或多个数据结构的所述第一集合中,或者(2)存储设备的溢出存储空间中。
在另一个方案中,一般而言,一种计算系统,包括:存储器设备,用于提供工作存储器空间;存储设备,用于提供溢出存储空间;以及至少一个处理器,被配置为处理多个数据单元以产生结果信息。所述处理包括:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作,该数据操作包括在所述工作存储器空间中存储的一个或多个数据结构的第一集合的至少一个数据结构内的数据单元中搜索一值,并且如果找到该值,则修改所述第一集合的该至少一个数据结构中的信息,而如果未找到该值,则将信息添加至所述第一集合的至少一个数据结构;在所述工作存储器空间的溢出条件满足之后,将信息存储在所述溢出存储空间中并且释放至少一些所述工作存储器空间,并且对于所述多个数据单元的数据单元第二子集的每个数据单元执行数据操作,该数据操作包括在所述工作存储器空间中存储的一个或多个数据结构的第二集合的至少一个数据结构内的数据单元中搜索一值,并且如果找到该值,则修改所述第二集合的该至少一个数据结构中的信息,以及将一个或多个数据结构的多个集合结合,包括所述第一集合和第二集合,以产生所述结果信息。
这些方案可包括一个或多个以下特征。
如果一个或多个数据结构的所述第一集合所使用的所述工作存储器空间的所述量大于等于预定阈值,则所述工作存储器空间的所述溢出条件满足。
所述处理还包括,在所述溢出条件满足之后并且在为所述数据单元第二子集的每个数据单元执行所述搜索之前,将一个或多个数据结构的所述第一集合存储在所述溢出存储空间中,并且从所述工作存储器空间移除一个或多个数据结构的所述第一集合。
将一个或多个数据结构的多个集合结合包括将所述第一集合的至少一个数据结构与所述第二集合的至少一个数据结构合并。
将所述第一集合的至少一个数据结构与所述第二集合的至少一个数据结构合并包括将一个或多个数据结构的所述第一集合的所述数据结构中的第一键与一个或多个数据结构的所述第二集合的所述数据结构中的第二键相匹配,并且对与所述第一键相关联的值和与所述第二键相关联的值执行聚合操作。
所述处理还包括,在所述溢出条件满足之后并且在为所述数据单元第二子集的每个数据单元执行所述搜索之前,对于所述多个数据单元的数据单元第三子集的每个数据单元,在所述工作存储器空间中存储的一个或多个数据结构的所述第一集合的至少一个数据结构内的数据单元中搜索一值,并且如果找到该值,则修改所述第一集合的该至少一个数据结构中的信息。
所述数据单元第二子集是所述数据单元第三子集的数据单元的子集。
修改所述信息包括执行就地存储器操作,所述就地存储器操作将所述工作存储器空间内一位置处存储的值覆写为不同值存储在所述工作存储器空间内相同位置处。
所述处理还包括根据数据源产生所述多个数据单元,每个数据单元包括数据源的字段的标识符以及出现在所述数据源的记录内的该字段中的值。
一个或多个数据结构的所述第一集合包括键值配对条目的多个关联阵列。
在所述工作存储器空间中存储的一个或多个数据结构的第一集合的至少一个数据结构内的所述数据单元搜索所述值包括在选定的其中一个键值配对条目关联阵列内搜索作为一条目的键的所述值。
所述选定的其中一个键值配对条目关联阵列对应于所述数据单元中的所述标识符。
修改所述第一集合的至少一个数据结构中的信息包括增加找到的所述键值配对条目的所述值。
添加信息至所述第一集合的至少一个数据结构包括添加新的键值配对条目至所述选定的阵列,使得该条目的键为所述数据单元中的所述值且该条目的值为计数1。
所述存储器设备包括易失性存储器设备。
所述存储设备包括非易失性存储设备。
在另一个方案中,一般而言,一种计算系统,包括:用于提供工作存储器空间的装置;用于提供溢出存储空间的装置;以及用于处理多个数据单元以产生结果信息的装置。所述处理包括:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作,该数据操作包括在所述工作存储器空间中存储的一个或多个数据结构的第一集合的至少一个数据结构内的数据单元中搜索一值,并且如果找到该值,则修改所述第一集合的该至少一个数据结构中的信息,而如果未找到该值,则将信息添加至所述第一集合的至少一个数据结构;在所述工作存储器空间的溢出条件满足之后,将信息存储在所述溢出存储空间中并且释放至少一些所述工作存储器空间,并且对于所述多个数据单元的数据单元第二子集的每个数据单元执行数据操作,该数据操作包括在所述工作存储器空间中存储的一个或多个数据结构的第二集合的至少一个数据结构内的数据单元中搜索一值,并且如果找到该值,则修改所述第二集合的该至少一个数据结构中的信息,以及将一个或多个数据结构的多个集合结合,包括所述第一集合和第二集合,以产生所述结果信息。
在另一个方案中,一般而言,一种用于处理多个数据单元以产生结果信息的方法,包括:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作,该数据操作包括在存储器设备的工作存储器空间中存储的一个或多个数据结构的第一集合的至少一个数据结构内的数据单元中搜索一值,并且如果找到该值,则修改所述第一集合的该至少一个数据结构中的信息,而如果未找到该值,则将信息添加至所述第一集合的至少一个数据结构;在所述工作存储器空间的溢出条件满足之后,将信息存储在存储设备的溢出存储空间中并且释放至少一些所述工作存储器空间,并且对于所述多个数据单元的数据单元第二子集的每个数据单元执行数据操作,该数据操作包括在所述工作存储器空间中存储的一个或多个数据结构的第二集合的至少一个数据结构内的数据单元中搜索一值,并且如果找到该值,则修改所述第二集合的该至少一个数据结构中的信息,以及将一个或多个数据结构的多个集合结合,包括所述第一集合和第二集合,以产生所述结果信息。
在另一个方案中,一般而言,软件存储在计算机可读介质上用于处理多个数据单元以产生结果信息。所述软件包括指令用于使得计算系统执行:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作,该数据操作包括在存储器设备的工作存储器空间中存储的一个或多个数据结构的第一集合的至少一个数据结构内的数据单元中搜索一值,并且如果找到该值,则修改所述第一集合的该至少一个数据结构中的信息,而如果未找到该值,则将信息添加至所述第一集合的至少一个数据结构;在所述工作存储器空间的溢出条件满足之后,将信息存储在存储设备的溢出存储空间中并且释放至少一些所述工作存储器空间,并且对于所述多个数据单元的数据单元第二子集的每个数据单元执行数据操作,该数据操作包括在所述工作存储器空间中存储的一个或多个数据结构的第二集合的至少一个数据结构内的数据单元中搜索一值,并且如果找到该值,则修改所述第二集合的至少一个数据结构中的信息,以及将一个或多个数据结构的多个集合结合,包括所述第一集合和第二集合,以产生所述结果信息。
在另一个方案中,一般而言,一种计算系统,包括:存储器设备,用于提供工作存储器空间;存储设备,用于提供溢出存储空间;以及至少一个处理器,被配置为处理多个数据单元以产生结果信息。所述处理包括:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作,并且将与该数据操作的结果相关联的信息存储在所述工作存储器空间中存储的一个或多个数据结构的第一集合中;在所述工作存储器空间的溢出条件满足之后,将信息存储在所述溢出存储空间中;以及在所述处理所述多个数据单元期间重复多次溢出处理过程,所述溢出处理过程包括:使用所述溢出存储空间中存储的至少一些信息来更新所述工作存储器空间中存储的一个或多个数据结构的新集合。
这些方案可包括一个或多个以下特征。
如果一个或多个数据结构的所述第一集合所使用的所述工作存储器空间的所述量大于等于预定阈值,则所述工作存储器空间的所述溢出条件满足。
所述处理还包括,在所述溢出条件满足之后并且在为所述数据单元第二子集的每个数据单元执行所述数据操作之前,将一个或多个数据结构的所述第一集合存储在所述溢出存储空间中作为被移动集合,并且从所述工作存储器空间移除一个或多个数据结构的所述第一集合。
使用所述溢出存储空间中存储的至少一些信息来更新所述工作存储器空间中存储的一个或多个数据结构的新集合包括将所述溢出存储空间中存储的一个或多个数据结构的所述被移动集合的至少一个数据结构的信息与所述工作存储器空间中存储的一个或多个数据结构的所述新集合的至少一个数据结构的信息合并。
所述合并包括将一个或多个数据结构的所述被移动集合的所述数据结构中的第一键与一个或多个数据结构的所述新集合的所述数据结构中的第二键相匹配,并且对与所述第一键相关联的值和与所述第二键相关联的值执行聚合操作。
使用所述溢出存储空间中存储的至少一些信息来更新所述工作存储器空间中存储的一个或多个数据结构的新集合包括将所述溢出存储空间中存储的数据单元中的第一键与一个或多个数据结构的所述新集合的数据结构中的第二键相匹配,并且增加与所述第二键相关联的值。
使用所述溢出存储空间中存储的至少一些信息来更新所述工作存储器空间中存储的一个或多个数据结构的新集合包括执行就地存储器操作,所述就地存储器操作将所述工作存储器空间内一位置处存储的值覆写为不同值存储在所述工作存储器空间内相同位置处。
所述处理还包括根据数据源产生所述多个数据单元,每个数据单元包括数据源的字段的标识符以及出现在所述数据源的记录内的该字段中的值。
所述数据操作包括使用所述数据单元中包括的所述值作为键来对多个数据单元的信息进行聚合,所述键用来选择信息经过聚合的匹配数据单元。
一个或多个数据结构的所述第一集合包括键值配对条目的多个关联阵列。
第一数据单元的所述数据操作包括使用所述第一数据单元中的值作为键以在选定的其中一个键值配对条目关联阵列内搜索。
所述选定的其中一个键值配对条目关联阵列对应于所述第一数据单元中的所述标识符。
所述存储器设备包括易失性存储器设备。
所述存储设备包括非易失性存储设备。
在另一个方案中,一般而言,一种计算系统,包括:用于提供工作存储器空间的装置;用于提供溢出存储空间的装置;以及用于处理多个数据单元以产生结果信息装置。所述处理包括:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作,并且将与该数据操作的结果相关联的信息存储在所述工作存储器空间中存储的一个或多个数据结构的第一集合中;在所述工作存储器空间的溢出条件满足之后,将信息存储在所述溢出存储空间中;以及在所述处理所述多个数据单元期间重复多次溢出处理过程,所述溢出处理过程包括:使用所述溢出存储空间中存储的至少一些信息来更新所述工作存储器空间中存储的一个或多个数据结构的新集合。
在另一个方案中,一般而言,一种用于处理多个数据单元以产生结果信息的方法,包括:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作,并且将与该数据操作的结果相关联的信息存储在存储器设备的工作存储器空间中存储的一个或多个数据结构的第一集合中;在所述工作存储器空间的溢出条件满足之后,将信息存储在储存设备的溢出存储空间中;以及在所述处理所述多个数据单元期间重复多次溢出处理过程,所述溢出处理过程包括:使用所述溢出存储空间中存储的至少一些信息来更新所述工作存储器空间中存储的一个或多个数据结构的新集合。
在另一个方案中,一般而言,软件被存储在计算机可读介质上用于处理多个数据单元以产生结果信息。所述软件包括指令用于使得计算系统执行:为多个数据单元的数据单元第一子集的每个数据单元执行数据操作,并且将与该数据操作的结果相关联的信息存储在存储器设备的工作存储器空间中存储的一个或多个数据结构的第一集合中;在所述工作存储器空间的溢出条件满足之后,将信息存储在存储设备的溢出存储空间中;以及在所述处理所述多个数据单元期间重复多次溢出处理过程,所述溢出处理过程包括:使用所述溢出存储空间中存储的至少一些信息来更新所述工作存储器空间中存储的一个或多个数据结构的新集合。
这些方案可包括一个或多个以下优点。
一些计算系统(例如,一些数据库管理系统)不仅仅依靠虚拟存储器来管理工作存储器,而是能够直接控制将正在被处理的数据存储在存储设备的主存储器中还是溢出存储空间中。例如,一些系统对程序可用的工作存储器大小施加明确限制,由此工作存储器限制小于主存储器大小(例如,因为该程序可以与其他程序共享工作存储器)。如果程序接近工作存储器限制,则程序具有使用“溢出至磁盘(spill to disk)”技术的选项以将一些数据临时地存储在溢出存储空间内,并且在可得到足够的工作存储器之后,稍后结束处理该数据。在一些情况下,溢出数据到磁盘,或者依靠操作系统来交换存储器页面会大大影响数据操作的性能。
对于数据处理系统的一些应用程序,诸如以下更详细描述的数据剖析,如果将对潜在的大量数据(例如,大的数据集和/或大量数据集)执行数据操作,则系统应该被配置为以有效方式来管理工作存储器和溢出储存空间,以确保数据处理应用程序可以提供足够的性能。管理工作存储器和溢出储存空间的一种方法是基于以下认知,对于一些数据操作,取代将输入数据溢出至磁盘而不处理该数据,该系统可以对该输入数据至少部分地执行数据操作,并且在一些情况下,无需将该输入数据溢出至磁盘。
例如,一些数据操作处理每个与键值相关联的输入记录的流,并且对于键值与之前键值匹配的记录,数据操作更新被存储器的数据结构中存储的结果。在一些实现方式中,使用“溢出处理”过程,即使在已经达到工作存储器限制之后,本文描述的计算系统能够保持处理带有使用任意键的新记录。描述溢出处理过程的两个具体示例。两个过程使得待匹配和使用的一些记录能够更新结果数据结构,而不使那些记录溢出。对于匹配的记录,结果数据结构可以被就地更新,而不使用更多的存储器。一个溢出处理过程通过仅仅将结果数据结构移动至溢出存储并且继续处理所有的新记录(在待与被移动结果数据结构合并的新结果数据结构中)来处理溢出,并且其他溢出处理过程通过仅仅将不匹配记录移动至溢出存储并且继续处理所有的新记录(在相同的结果数据结构中)来处理溢出。
使用本文描述的技术可以执行的数据操作的一个示例是普查操作,其用于在大数据集内产生数据值(包括出现在数据集中的值和每个值的计数)的普查,用于剖析数据集。数据剖析操作可以包括对数据(在执行数据剖析过程中来处理该数据)执行的任意操作,诸如普查操作。还可以对在其他环境中(诸如在随着时间追踪数据特性的数据质量系统中)处理的数据执行普查操作。可以应用该技术的其他数据操作包括允许合并不完整结果的数据操作、以及在存储器中的数据结构内可以就地处理至少一些情形的数据操作,如下更详细描述的。技术以被用于处理诸如本文描述的标准化记录的数据单元、或者表示数据流内单独数据部分的任何其它数据单元。
通过以下说明书和权利要求书,本发明的其它特征和优点将变得显而易见。
附图说明
图1是数据处理系统的方框图。
图2是数据剖析过程的示意图。
图3和图5是普查产生过程的示意图。
图4A-图4C和图6是普查产生过程的流程图。
具体实现方式
图1示出数据处理系统100的示例,其中可以使用管理工作存储器和溢出存储空间的技术。数据处理系统100包括数据源102,数据源102可以包括数据的一个或多个来源,诸如存储设备或到在线数据流的连接,每个这样的来源可以存储或提供任意各种格式的数据(例如,数据库表、电子表格文件、平面文本文件或主机使用的本机格式)。数据处理系统100包括计算系统104,计算系统104包括至少一个处理器106、耦合至处理器106的至少一个存储器设备108(例如易失性存储器,诸如动态随机存取存储器)以及耦合至处理器106的至少一个存储设备110(例如非易失性存储,诸如磁硬盘驱动器)。在计算系统100处理数据源102的数据之后,可以在用户界面(UI)112中提供该处理的结果,包括向用户自动地提供关于普遍存在于数据源102中的条件、或者关于将普遍存在于待接收和处理数据源102的数据的目的地中的条件的可见指示。
数据处理系统100的不同组件的多种配置是可能的。处理器106可以被配置为托管例如由合适的操作系统(诸如,UNIX操作系统版本)控制的执行环境。在一些实现方式中,计算系统104可以是多节点并行计算环境的一部分,包括多个中央处理器(CPU)或处理器内核的配置,这些CPU或处理器内核可以是本地(例如多处理器系统,诸如对称多处理(symmetric multi-processing,SMP)计算机),或本地分布式(例如多个处理器耦合为集群或大规模并行处理(MPP)系统),或者远程或远程分布式(例如通过局域网(LAN)和/或广域网(WAN)来耦合的多个处理器),或者上述的任意组合。提供数据源102的存储设备可能是计算系统104本地的存储设备,例如,存储在被连接到计算系统104(包括存储设备110)的存储介质上;或者可能是计算系统104远程的存储设备,例如,被托管在通过远程连接(例如,由云计算基础架构提供)与计算系统104进行通讯的远程系统(例如,主机)上。
在一些实现方式中,计算系统104被配置为执行作为数据流图的应用程序,数据流图包括由节点之间的直接链路(表示工作元素的流,即,数据)连接的节点(表示处理组件或数据集)。例如,在美国公开号2007/0011668、标题为“Managing Parameters for Graph-Based Applications(管理基于图形应用程序的参数)”中将更详细地描述这种环境,其通过引用合并于此。美国专利5,966,072、标题为“EXECUTING COMPUTATIONS EXPRESSED ASGRAPHS(执行被表示为图表的计算)”中描述一种用于执行这种基于图表计算的系统,其通过引用合并于此。根据这个系统制成的数据流图提供用于将信息带入和带出由图表组件表示的各个进程、用于移动进程之间的信息、并且用于限定进程的运行顺序的方法。这个系统包括从任何可得方法中选择进程间通信方法的算法(例如,通信路径视图表链路可以使用TCP/IP或UNIX域套接字(domain sockets),或者使用共享的存储器以在进程之间传递数据)。
计算系统104可以从可实施数据源102的各种类型系统接收数据,包括不同形式的数据库系统。数据可以被组织为表示一些记录的数据集,该记录具有各个字段的值(也称为“属性”或“列”),可能包括空值。当第一次从数据源读取数据时,计算系统104通常从关于该数据源的记录的一些初始格式信息开始。在一些情况下,数据源的记录结构最初可能是未知的,代替地,可以在分析数据源或数据之后确定。关于记录的初始信息可以包括,例如,表示独特值的位的数目、记录内字段的顺序、以及位所表示的值的类型(例如,字符串、有符号/无符号整数)。
数据处理系统100能够对数据源102内的数据执行的一类处理的一个示例是数据剖析(data profiling)。存储的数据集可以包括其各种特性预先未知的数据。例如,数据集的值或典型值的范围、数据集内不同字段之间的关系、或者不同字段中值之间的函数依赖可能是未知的。数据剖析可以涉及检查许多潜在相关数据集以便确定这种特性。计算系统104还可以执行各种任务,诸如清洗数据源102中的数据或者管理存储在数据源102中数据集的元数据。在计算系统104被配置为执行作为数据流图的应用程序的实现方式中,可以由例如数据流图中的剖析器组件节点来执行数据剖析,该剖析器组件节点具有由数据流链路连接至输入数据集的输入端口和由数据流链路连接至下游组件(其被配置为使用数据剖析的结果来执行任务)的输出端口。
当执行数据剖析时,计算系统104从数据源102读取数据并且存储剖析概要信息,剖析概要信息可以被用于执行各种类型的分析以描绘不同数据集和不同数据集内不同字段的特性。在一些实现方式中,剖析概要信息包括在特定字段(例如,选定数据集的选定字段、或者所有数据集的所有字段)内出现的值的普查(census)。该普查列出了字段内的所有独特值并且量化了每个独特值出现的次数。在一些实现方式中,普查数据被存储在可选地通过字段来索引的单个数据结构中,而在其他实现方式中,普查数据被存储在多个数据结构中,例如,每个字段被存储在一个数据结构中。
被剖析的特定字段的普查数据可以被组织为条目的列表,每个条目包括:字段的标识符、出现在字段内的值、以及该值在该字段中出现的记录数目的计数。每个独特值具有一个条目,所以条目中的每个值与其他条目中的值不同,并且条目的数目等于字段内出现的独特值的数目。字段的标识符可以是唯一地识别被剖析字段的任意值。例如,通过为每个字段分配范围为从1到被剖析字段的数目的整数索引,可以来枚举被剖析的字段。这种索引可以被紧凑地存储在普查数据结构内。即使不同字段的普查数据被存储在单独的数据结构中,将该字段的特定字段标识符包括在数据结构的每个条目内可能仍然是有用的(例如,以区分条目和流入处理模块的不同数据结构)。可替代地,在一些实现方式中,如果不同字段的普查数据被存储在单独的数据结构中,则字段仅需要被该数据结构存储一次,并且每个条目与该字段隐性相关联并且仅包括值和计数。
图2示出基于普查的数据剖析过程的示例,该数据剖析过程由在计算系统104上运行的程序来执行,该计算系统104包括:标准化模块200,用于产生标准化记录的流208;普查产生模块202,用于将标准化记录的流208处理成普查文件210;以及普查处理模块204,用于分析普查文件210来计算剖析结果。标准化模块200读取待剖析的一个或多个数据集,诸如表206。表206具有三个字段,被命名为字段1、字段2和字段3,并且表206中的前几个数据记录(前三行)示出了三个字段中每个的各个值。标准化模块200通过将特定数据记录分割为每个包括字段索引和数据值的一系列标准化记录来产生标准化记录。字段索引是被分配给特定字段以唯一地(且有效地)标识该字段的索引值(例如,1=字段1、2=字段2、3=字段3),数据值是被包含在该字段的数据记录中的对应值。在这个示例中,表206中的第一数据记录将分别在三个标准化记录内产生如下(字段索引,数据值)对:(1,A)、(2,M)和(3,X)。普查产生模块202将流208中标准化记录的数据值聚合,以制作普查文件210。(在图2中,普查文件210的条目中示出的值对应于表206中的前三个数据记录,其随着来自表206中额外数据记录的标准化记录被普查产生模块202处理而进行更新。)
对于特定数据集,标准化记录可以以任意顺序被插入到流208。在这个示例中,随着数据记录出现在表206中,流208包括特定数据记录的所有标准化记录,随后是下一个数据记录的所有标准化记录。可替代地,表206可以被字段处理,使得,随着数据记录出现在表206中,该流包括特定字段的所有标准化记录,随后是下一个字段的所有标准化记录。还可以以这种方式来标准化更高维数的数据集合,例如基于对于读取数据集或者根据生成的流来产生普查文件将是最有效的顺序将标准化记录添加至输出流。在产生所有的标准化记录之后,标准化记录的流208可以被写入将由下游普查产生模块202处理的文件,或者当产生标准化记录的流208时,可以将其提供给下游普查产生模块202(例如,以利用生成的流水线并行(pipeline parallelism))。
普查产生模块202处理标准化记录,直到到达流208的结尾(例如,由结尾流记录所示的)。模块202对标准化记录执行一类普查操作(被称为“普查匹配操作”),以确定标准化记录中的数据值是否与之前处理的标准化记录的之前数据值相匹配。模块202为流208内的每个标准化记录执行至少一次普查匹配操作。模块202将与普查匹配操作的结果相关联的信息存储在至少一个数据结构中,该数据结构被存储在存储器设备108的工作存储器空间中。数据结构所使用的工作存储器空间包括用于数据结构任意开销(overhead)的存储器和数据结构中所有信息的存储器,包括指针所引用的数据的任意存储器。如果普查匹配操作发现与之前数据值的匹配,则增加与该数据值相关联的被存储计数。否则,如果普查匹配操作没有发现与之前数据值的匹配,则将新的条目存储在数据结构中。
例如,数据结构可以是能够存储键值(key-value)对的关联阵列,键值对具有用于查找阵列内关联值的唯一键。在这个示例中,键是来自标准化记录的数据值,并且该值是将会被增加至普查数据总计数的计数。当为具有特定数据值的标准化记录创建键值对时,由于其键不与存在于关联阵列中的任意键相匹配,计数从1开始,并且每次另一个标准化记录具有与现存键相匹配的数据值时,计数增加1。模块202为不同关联阵列内的不同字段(由每个标准化记录内的字段索引所确定)查找标准化记录的数据值,为被剖析的每个字段分配一个关联阵列。在一些实现方式中,预先已知被剖析字段的数目,并且在剖析过程开始时为每个字段分配空关联阵列(其仅仅使用最小量的存储空间)。
例如使用哈希表或其他数据结构(其提供有效的键查找和关联值修改)可以实施关联阵列。用作键值对的键的数据值可以存储数据值本身的副本或者存储指向被存储在工作存储器中不同位置(例如,被存储在标准化记录的副本中)的数据值的指针。关联阵列与被存储的标准化记录的数据值的副本、或者甚至与整个标准化记录本身一起可以被共同地看作存储普查匹配结果的数据结构。在标准化记录中数据值的指针被存储在关联阵列的实现方式中,仅仅包含特定键的第一标准化记录需要被存储在工作存储器中,而在普查匹配操作之后,可以将包含该特定键的后续标准化记录从工作存储器移除。
在以下示例中,被剖析的字段的这些关联阵列被称为“普查阵列”并且键值对被称为普查阵列内的“普查条目”。在数据剖析过程结束时,由普查产生模块202产生的普查阵列将存储在单独普查条目内表206中出现的所有独特数据值,以及在表206行内出现的数据值的次数的总计数,该普查阵列表示正在被剖析的数据记录。
对执行数据剖析过程的程序或该程序的一部分(例如,普查产生模块202)可以给予存储器限制,该存储器限制设定了在允许使用该程序的存储器设备108内工作存储器空间的最大量。程序可以使用工作存储器空间用于存储普查阵列,这可能需要大部分的容许工作存储器空间,以及用于存储其他临时值,这可能需要明显少于普查阵列的空间。当模块202确定可能存在不足的可用工作存储器空间以将额外条目添加至普查阵列时,或者当不再具有任何可用工作存储器空间来添加额外条目时(例如,由于添加的最后一个条目),工作存储器的溢出条件满足。模块202可以通过测量普查阵列的存储器大小来做这个决定。存储器大小表示普查阵列所使用的工作存储器空间的量,其包括表示普查阵列的数据结构和这些数据结构中所有信息所使用的任何系统开销所占用的存储器总量(包括由普查阵列内的指针所引用的任何数据值或标准化记录)。然后模块202将这个存储器大小与存储器限制(或其他阈值)相比较。
在一些实现方式中,程序设置溢出阈值来检测普查阵列的存储器大小何时接近存储器限制。例如,通过计算各个普查阵列的大小的总和可以直接地测量普查阵列的存储器大小,其中单个普查阵列的大小被测量为该普查阵列所占用的工作存储器空间内的位数目。可替代地,例如,通过计算工作存储器内剩下的可用空间的量而不直接测量普查阵列的存储器大小(例如,存储器地址的分配块所遗留的存储器地址的范围),可以间接地测量普查阵列的存储器大小。在一些实现方式中,程序设置刚好低于存储器限制的溢出阈值,以为其他值保留一些空间。在一些实现方式中,溢出阈值可以等于存储器限制,例如,如果其他值所需的空间是可以忽略的和/或计算系统104没有强加严格的存储器限制,则允许在相对短的时间内少量地超过存储器限制。
在溢出条件被触发之后,程序使用溢出处理过程来将产生完整普查阵列所需的一些数据存储在存储设备110内的溢出存储空间中。溢出存储空间中存储什么样的数据完全取决于所使用的溢出处理过程的类型。在以下描述的溢出处理过程的示例中,程序继续为在溢出条件被触发之后处理的每个标准化记录执行普查匹配操作,并且将与普查匹配操作的结果相关联的信息(即,普查条目中增加的计数、或者新的普查条目)存储在工作存储器中相同的普查阵列集合中或者存储在工作存储器中新的普查阵列集合中,如下详细所述。如果在处理流208中标准化记录过程中的某个时刻触发溢出条件,则一些数据将被存储在工作存储器空间中,并且一些数据将被存储在溢出存储空间中。在以下描述的溢出处理过程的示例中,以一些方式来结合两个位置中的数据以产生完整的普查阵列。在每个普查阵列自身的普查文件210内输出每个普查阵列,用于普查处理模块204的处理。此外,所使用的结合过程完全取决于所使用的溢出处理过程的类型。在当普查阵列或普查阵列条目的集合是完整的以被发送至输出端口的阶段,普查文件210可以可选地从普查产生模块202输出。
以下描述的溢出处理过程的两个示例可以被相同的普查产生模块202使用。在一种模式中,可以使用一个过程,在另一个模式中,可以使用另一个过程。可以由用户例如通过一些初始分析(例如,对被剖析的数据集的子集执行的初始分析、或者对相同或相似数据集的历史剖析信息执行的初始分析)来确定模式,以估计哪一个过程将是最有效的。这些溢出处理过程除了被应用于普查匹配操作,还可以被应用于其他数据操作。允许合并不完整结果的数据操作将与存储在工作存储器空间中的结果和存储在溢出存储空间中的结果的结合是兼容的,如在下述溢出处理过程中所执行的。至少一些情形可以就地处理的数据操作将与存储器中数据结构内数据结构的就地更新是兼容的,如下述溢出处理过程中所执行的。在允许用户观察该处理的结果或者执行取决于该处理的额外交互之前,通过避免将一些数据存储在溢出存储空间所花费的时间,溢出处理过程的效率对于数据操作(诸如普查操作、或者用于处理潜在的大量输入数据的其他数据剖析操作)是尤其有用的。
图3示出在普查产生模块202产生普查阵列的环境下所使用的具有第一溢出处理过程的普查产生。图4A-图4C对应于具有第一溢出处理过程的普查产生的流程图。参照图3和图4A,普查产生模块202接收标准化记录的流300,并且对于被剖析的每个字段,到溢出处理过程结束时产生完整的普查阵列302。当模块202对流300中的每个标准化记录循环迭代时(开始于第一次迭代的第一标准化记录),模块202读取(400)下一个标准化记录。模块202检查(402)在工作存储器空间306中产生的普查阵列304的存储器大小,以确定是否达到溢出阈值。
如果没有达到溢出阈值,则模块202执行关于该标准化记录的普查匹配操作404。普查匹配操作404包括搜索(406)一个适当普查阵列304(对于标准化记录中字段索引的普查阵列)的键来匹配标准化记录中的数据值。如果存在对键的匹配(其是来自之前标准化记录的数据值),则增加(408)对应于该键的计数。如果不存在对键的匹配,则将新的条目添加(409)至该适当普查阵列304,其中键被设置为数据值且计数被设置为1。
如果已经达到溢出阈值,则模块202对普查阵列304和存储于溢出存储空间310中的之前部分普查阵列308(在之前迭代中)执行合并操作412。合并操作412(以下进行更详细的描述)的结果是部分普查阵列308的新集合,对于连同每个键的计数总和的给定字段,每个包含对应于被合并普查阵列中键(即,数据值)的并集的条目。因此,工作存储器空间306中部分普查阵列304中的信息被安全地存储在溢出存储空间310中,并且部分普查阵列304此时可以被从工作存储器空间306移除(414),释放更多的工作存储器空间306,以对下一个标准化记录执行普查匹配操作404。
在迭代结束时,模块202确定(416)是否已经达到流300的结尾(其结束流中每个记录的循环迭代)。如果未到达结尾,则通过读取(400)下一个标准化记录来开始另一次迭代。如果已到达结尾,则模块202确定(418)在任何迭代过程中是否发生溢出。如果没有发生过溢出,则模块202将工作存储器空间306中此时每个完整的普查阵列304发送(419)到输出端口。如果曾经发生溢出,则模块202对存储在工作存储器空间306中的部分普查阵列304和存储在溢出存储空间310中的部分普查阵列308执行修改版本的合并操作412',以将得到的合并普查阵列发送至输出端口。参照图4B更详细地描述合并操作412,并且参照图4C更详细地描述合并操作412'。
参照图4B,其示出合并操作412的示例,合并操作412用于将工作存储器空间306(被称为“存储器阵列”)中的部分普查阵列的集合和溢出储存空间310(被称为“被存储阵列”)中的部分普查阵列的集合合并。合并操作412包括外循环和内循环,其中外循环在字段上进行迭代(即,利用参引“当前字段”的从1至字段数目的循环计数器),内循环为当前字段迭代的字段对被存储阵列中的条目进行迭代(即,利用参引“当前条目”的从1至条目数目的循环计数器)。对于当前字段迭代的字段,通过在存储器阵列内的被存储阵列中搜索(420)当前条目的数据值,内循环开始。如果发现匹配,则内循环将被存储阵列中当前条目的计数和存储器阵列中匹配条目的计数求和(422),并且将得到的总计数存储在存储器阵列中的匹配条目中(覆盖之前的计数)。因为这个新的总计数无需工作存储器中的任何额外空间,所以这个操作将不会引起所用工作存储器空间量的增长。在不同的实现方式中,可以搜索存储器阵列或被存储阵列二者之一并且其可以被用于累积总计数,但是通过迭代被存储阵列和搜索存储器阵列,可以更有效地执行搜索(因为相对于存储设备110,存储器设备108可以被更高效地访问)。如果未发现匹配,则内循环将被存储阵列中的当前条目添加(424)至溢出存储空间310中的新普查阵列中(其是在合并操作412之后将替代之前被存储阵列的新普查阵列集合的一部分),并且通过在存储器阵列内的被存储阵列中搜索(420)下一个条目的数据值来开始新的内循环迭代。在到达被存储阵列中的最后一个条目之后,内循环结束(426)。外循环包括将更新后的存储器阵列附加(428)至新的普查阵列,使得新普查阵列的全部集合将表示合并操作412的匹配条目和不匹配条目。在到达最后一个字段之后,外循环结束(430)。
图4C示出修改版本的合并操作412'的示例,其被执行为将存储器阵列的最后集合与被存储阵列合并。在这个示例中,唯一的区别如下。代替将被存储阵列中的当前条目添加(424)至溢出存储空间310中的新普查阵列,操作412'将被存储阵列中的当前条目输出(424')至模块202的输出端口(例如,通过写入至输出普查文件,其也可以被存储在溢出存储空间310中)。代替将更新后的存储器阵列附加(428)至被存储的阵列,操作412'将更新后的存储器阵列发送(428')至模块202的输出端口(例如,通过写入至输出普查文件,其也可以被存储在溢出存储空间310中)。
简而言之,第一溢出处理过程通过将部分普查阵列移动至溢出存储并且继续处理所有的新记录(在将与被移动至溢出存储的部分普查阵列合并的工作存储器中的新部分普查阵列)来处理工作存储器的溢出条件。第一溢出处理过程有效地管理部分普查阵列到溢出存储的溢出。第二溢出处理过程将类似地处理溢出条件,同时继续处理所有的新记录,但是第二溢出处理过程将被配置为有效地管理不匹配记录而不是部分普查阵列到溢出存储的溢出。
图5示出在普查产生模块202产生普查阵列的环境下所使用的具有第二溢出处理过程的普查产生。图6对应于具有第二溢出处理过程的普查产生的流程图。参照图5和图6,普查产生模块202接收标准化记录的流500,并且对于被剖析的每个字段,到溢出处理过程结束时产生完整的普查阵列502。当模块202在第一通路中对流500中的每个标准化记录迭代循环时,或者当模块202在一个或多个额外通路中对标准化记录(其被临时地存储在溢出存储空间504的临时记录存储503中)的每个集合循环迭代时,模块202读取(600)下一个标准化记录。以下更详细地描述在一个或多个通路中执行的步骤,但是基本上,每个通路涉及填补工作存储器空间306直到阈值条件满足,以及在阈值条件满足之后就地处理所有的匹配记录以及溢出所有的不匹配记录。模块202对该标准化记录执行普查匹配操作602。
普查匹配操作602包括搜索(604)在工作存储器空间508中产生的一个适当普查阵列506(对于标准化记录中字段索引的普查阵列)的键来匹配(605)标准化记录中的数据值。如果存在对键的匹配(其是来自之前标准化记录的数据值),则增加(606)对应于该键的计数。该增加(606)可以发生而不使用更多的工作存储器空间508(例如,使用就地操作来增加匹配条目的计数),并且因此不取决于是否已经达到溢出阈值。如果不存在对键的匹配,则下一个动作取决于检查(607)普查阵列506的存储器大小的结果,以确定是否已经达到溢出阈值。如果未达到溢出阈值,则将新的条目添加(608)至该适当普查阵列506,其中键被设置为数据值且计数被设置为1。如果已经达到溢出阈值,则模块202将标准化记录存储(609)于溢出存储空间504的新临时记录存储503中。临时记录存储503可以是存储标准化记录的单个文件(或其他数据结构),或者可以是提供字段索引(或其他特性)对标准化记录访问的多个文件(或其他数据结构)。存在不同的临时记录存储503,对于不同的通路其具有不同的标准化记录的集合。
模块202确定(610)是否已经到达流500的第一通路的结尾(其结束流中每个记录的循环迭代),或者确定是否已经到达一个临时记录存储503的通路的结尾。如果还未到达通路的结尾,通过读取(600)下一个标准化记录来开始另一次迭代。如果已经到达通路的结尾,则模块202确定(611)在当前通路的任意之前迭代中是否发生溢出。如果没有发生过溢出,则模块202将工作存储器空间508中此时每个完整的普查阵列506发送(613)至输出端口。如果曾经发生溢出,则模块202检查(612)以确定是否保留有任何临时记录存储503。
如果保留有至少一个临时记录存储503,则通过在字段上进行迭代(即,利用参引“当前字段”的从1至字段数目的循环计数器),并且将一个适当部分普查阵列506附加(614)至存储在溢出存储空间504(在之前迭代中)中任意部分普查阵列510的对应一个(具有相同的字段索引),模块202开始释放工作存储器中的空间,以处理该存储503中的标准化记录。在已经到达最后的字段之后,循环结束(615)。因此,工作存储器空间508中部分普查阵列506中的信息被安全地存储在溢出存储空间504中,并且部分普查阵列506可以被从工作存储器空间508移除(616),释放更多的工作存储器空间508,以从剩余临时记录存储503中读取(600)下一个标准化记录并且对该标准化记录执行普查匹配操作602。
因为当在工作存储器空间508中产生这些普查阵列510时,将处理带有数据值(该数据值将匹配普查阵列510中的键)的任意标准化记录,所以部分普查阵列506和部分普查阵列510可以被简单地附加,而无需执行合并操作,并且因此这些数据值都不存在于工作存储器空间508的任意一个当前普查阵列506中。如果是有帮助的(例如,为了访问这些条目的效率),则部分普查阵列506和部分普查阵列510中的条目可以可选地被分类或重新排列为一个或多个其他数据结构,但是无需结合各个条目以巩固特定数据值的信息。
在模块202如何通过流500的进程记录的示例中,在已经处理流500的标准化记录的第一子集512而使普查阵列506的存储器大小扩大至溢出阈值之后,处理标准化记录的第二子集514以对于匹配键的数据值(来自示出为无阴影方框的记录)继续增加普查阵列506的计数,或者处理标准化记录的第二子集514以将标准化记录的第三子集516(被示出为带阴影方框)存储为临时记录存储503。注意到第三子集516还是第二子集514的子集。这个进程继续,由临时记录存储503代替流500,产生潜在的新(更小的)临时记录存储503',同时对当前临时记录存储503迭代。
如果在检查(612)之后,不存在保留的临时记录存储503,则模块202在字段上迭代(即,从1到字段的数目),将一个适当普查阵列506从工作存储器空间508发送(618)至输出端口,并且将该适当普查阵列510从溢出存储空间504发送(620)至输出端口。在到达最后一个字段之后,循环结束(622)。这部分普查产生中将普查阵列506和510发送至输出端口,这使得以字段索引顺序来输出普查阵列(与一旦不同字段的部分普查阵列准备好就将其输出的情况相反)。例如,如果在普查处理模块204之后还存在下游计算需要以字段索引顺序提供普查阵列,这可能是有用的。可替代地,无需有序输出的普查产生的其他实现方式可以避免将工作存储器空间508中的部分普查阵列506存储在溢出存储空间504中,并且代替地可以简单地将部分普查阵列506从工作存储器空间508直接输出至输出端口(与当附加普查阵列506和510时无需执行合并操作的原因相同)。
简而言之,第二溢出处理过程通过将不匹配记录移动至溢出存储并且继续处理所有的新记录(对于任何匹配记录更新工作存储器中的普查阵列)来处理工作存储器的溢出条件。第二溢出处理过程有效地管理不匹配记录到溢出存储的溢出。
在第一溢出处理过程和第二溢出处理过程之间存在一些差异,这可能使得在一些情形下其中一个或另一个溢出处理过程更适当(即,更有效)。第一溢出处理过程无需将记录溢出至溢出存储,而第二溢出处理过程需要将记录溢出至溢出存储。但是,第二溢出处理过程无需合并普查阵列,而第一溢出处理过程需要合并普查阵列。另外,因为第二溢出处理过程持有工作存储器中的相同普查阵列,在溢出条件之后,直到读取输入流中记录的所有通路,值的初始分布确定哪个稍后值将是匹配的或不匹配的。因此,对于给定字段中重复值(如果有)的分布在输入流的所有记录上相对均匀的情形,第二溢出处理过程可能具有有效的溢出。每次普查阵列被溢出至溢出存储时,第一溢出处理进程使得能够匹配完全新的值的集合。所以,对于重复值的分布在输入流的所有记录的一个或多个字段中具有明显变化的情形,第一溢出处理过程可能具有有效的溢出。
其他溢出处理过程也是可能的。例如,上述第一过程和第二过程之间的混合可以通过存储不匹配溢出存储空间中普查阵列的标准化记录(即,根据第二过程)来开始处理溢出条件。然后,如果不匹配的被存储标准化记录的小部分变得大于特定阈值,则该过程可将工作存储器空间中的部分普查阵列移动至溢出存储空间(与任意之前被存储部分普查阵列合并),并且继续处理当前通路中的标准化记录(即,根据第一过程)。在第一过程的通路完成之后,通过处理存储在溢出存储空间中的标准化记录,使用相同的混合进程,过程将继续(即,当到达溢出条件时,开始存储不匹配标准化记录,直到达到阈值)。
上述技术可以使用执行适当软件的计算系统来实施。例如,软件可以包括在一个或多个已编程或可编程计算机系统(可以具有各种架构,诸如分布式、客户端/服务器、或网格式)上执行的一个或多个计算机程序中的程序,每个计算机系统包括至少一个处理器、至少一个数据存储系统(包括易失性和/或非易失性存储器和/或存储元件)、以及至少一个用户接口(用于使用至少一个输入设备或端口来接收输入,以及用于使用至少一个输出设备或端口来提供输出)。该软件可以包括大型程序的一个或多个模块,例如,该大型程序提供与数据流图的设计、配置和执行相关的服务。该程序的模块(例如,数据流图的元件)可以被实施为数据结构或者符合在数据库中存储的数据模型的其它经过组织的数据。程序的模块可以存储任意各种数据结构的阵列数据,诸如哈希表或平面文件,其可以被可选地索引和/或压缩。
该软件可以被提供在诸如CD-ROM或其他计算机可读介质之类的有形永久存储介质(例如,其可以被通用或专用计算机系统或设备读取)上,或者通过网络的通信介质递送(例如,被编码成传播信号)到执行该软件的计算机系统的有形永久介质。一些或全部处理可以在专用计算机上执行,或者使用诸如协处理器或现场可编程门阵列(FPGA)或专用集成电路(ASIC)之类的专用硬件来执行。该处理可以以分布方式实施,在该分布方式中,由该软件指定的不同的计算部分由不同的计算元件执行。每个这样的计算机程序被优选地存储在或下载到可由通用或专用可编程计算机读取的存储设备的计算机可读存储介质(例如,固态存储器或介质、或者磁或光介质),用于在计算机读取该存储介质或设备时配置和操作该计算机,以执行此处所描述的处理。也可以考虑将本发明的系统实施为有形永久存储介质,其配置有计算机程序,其中,如此配置的存储介质使得计算机以特定和预定义的方式操作以执行此处所描述的一个或多个处理步骤。
已经对本发明的多个实施例进行了描述。然而,应当理解,前面的描述旨在说明而非限制本发明的范围,本发明的范围由以下权利要求书的范围来限定。因此,其它实施例也落在以下权利要求书的范围内。例如,在不脱离本发明的范围的情况下可进行各种修改。此外,上述的一些步骤可以是顺序独立的,因此可以以不同于所述的顺序来执行。

Claims (17)

1.一种计算系统,包括:
存储器设备,用于提供工作存储器空间;
存储设备,用于提供溢出存储空间;以及
至少一个处理器,被配置为处理多个数据单元以产生结果信息,所述处理包括:
为多个数据单元的数据单元第一子集的每个数据单元执行数据操作,该数据操作包括在所述工作存储器空间中存储的一个或多个数据结构的第一集合的至少一个数据结构内的数据单元中搜索一值,并且如果找到该值,则修改所述第一集合的该至少一个数据结构中的信息,而如果未找到该值,则将信息添加至所述第一集合的至少一个数据结构;
在所述工作存储器空间的溢出条件满足之后,将信息存储在所述溢出存储空间中并且释放至少一些所述工作存储器空间,并且对于所述多个数据单元的数据单元第二子集的每个数据单元执行数据操作,该数据操作包括在所述工作存储器空间中存储的一个或多个数据结构的第二集合的至少一个数据结构内的数据单元中搜索一值,并且如果找到该值,则修改所述第二集合的该至少一个数据结构中的信息,以及
将一个或多个数据结构的多个集合结合,包括所述第一集合和第二集合,以产生所述结果信息。
2.根据权利要求1所述的计算系统,其中如果一个或多个数据结构的所述第一集合所使用的所述工作存储器空间的量大于等于预定阈值,则所述工作存储器空间的所述溢出条件满足。
3.根据权利要求1所述的计算系统,其中所述处理还包括,在所述溢出条件满足之后并且在为所述数据单元第二子集的每个数据单元执行所述搜索之前,将一个或多个数据结构的所述第一集合存储在所述溢出存储空间中,并且从所述工作存储器空间移除一个或多个数据结构的所述第一集合。
4.根据权利要求1所述的计算系统,其中将一个或多个数据结构的多个集合结合包括将所述第一集合的至少一个数据结构与所述第二集合的至少一个数据结构合并。
5.根据权利要求4所述的计算系统,其中将所述第一集合的至少一个数据结构与所述第二集合的至少一个数据结构合并包括将一个或多个数据结构的所述第一集合的该数据结构中的第一键与一个或多个数据结构的所述第二集合的该数据结构中的第二键相匹配,并且对与所述第一键相关联的值和与所述第二键相关联的值执行聚合操作。
6.根据权利要求1所述的计算系统,其中所述处理还包括,在所述溢出条件满足之后并且在为所述数据单元第二子集的每个数据单元执行所述搜索之前,对于所述多个数据单元的数据单元第三子集的每个数据单元,在所述工作存储器空间中存储的一个或多个数据结构的所述第一集合的至少一个数据结构内的数据单元中搜索一值,并且如果找到该值,则修改所述第一集合的该至少一个数据结构中的信息。
7.根据权利要求6所述的计算系统,其中所述数据单元第二子集是所述数据单元第三子集的数据单元的子集。
8.根据权利要求1所述的计算系统,其中修改所述信息包括执行就地存储器操作,所述就地存储器操作将所述工作存储器空间内一位置处存储的值覆写为不同值存储在所述工作存储器空间内相同位置处。
9.根据权利要求1所述的计算系统,其中所述处理还包括根据数据源产生所述多个数据单元,每个数据单元包括数据源的字段的标识符以及在所述数据源的记录内的该字段中出现的值。
10.根据权利要求9所述的计算系统,其中一个或多个数据结构的所述第一集合包括键值配对条目的多个关联阵列。
11.根据权利要求10所述的计算系统,其中在所述工作存储器空间中存储的一个或多个数据结构的第一集合的至少一个数据结构内的所述数据单元搜索所述值包括在选定的其中一个键值配对条目关联阵列内搜索作为一条目的键的所述值。
12.根据权利要求11所述的计算系统,其中所述选定的其中一个键值配对条目关联阵列对应于所述数据单元中的所述标识符。
13.根据权利要求11所述的计算系统,其中修改所述第一集合的至少一个数据结构中的信息包括增加找到的键值配对条目的所述值。
14.根据权利要求11所述的计算系统,其中添加信息至所述第一集合的至少一个数据结构包括添加新的键值配对条目至所述选定的阵列,使得该条目的键为所述数据单元中的所述值且该条目的值为计数1。
15.根据权利要求1所述的计算系统,其中所述存储器设备包括易失性存储器设备,所述存储设备包括非易失性存储设备。
16.一种用于处理多个数据单元以产生结果信息的方法,包括:
为多个数据单元的数据单元第一子集的每个数据单元执行数据操作,该数据操作包括在存储器设备的工作存储器空间中存储的一个或多个数据结构的第一集合的至少一个数据结构内的数据单元中搜索一值,并且如果找到该值,则修改所述第一集合的该至少一个数据结构中的信息,而如果未找到该值,则将信息添加至所述第一集合的至少一个数据结构;
在所述工作存储器空间的溢出条件满足之后,将信息存储在存储设备的溢出存储空间中并且释放至少一些所述工作存储器空间,并且对于所述多个数据单元的数据单元第二子集的每个数据单元执行数据操作,该数据操作包括在所述工作存储器空间中存储的一个或多个数据结构的第二集合的至少一个数据结构内的数据单元中搜索一值,并且如果找到该值,则修改所述第二集合的该至少一个数据结构中的信息,以及
将一个或多个数据结构的多个集合结合,包括所述第一集合和第二集合,以产生所述结果信息。
17.一种计算机可读介质,存储有用于处理多个数据单元以产生结果信息的软件,所述软件包括指令用于使得计算系统执行:
为多个数据单元的数据单元第一子集的每个数据单元执行数据操作,该数据操作包括在存储器设备的工作存储器空间中存储的一个或多个数据结构的第一集合的至少一个数据结构内的数据单元中搜索一值,并且如果找到该值,则修改所述第一集合的该至少一个数据结构中的信息,而如果未找到该值,则将信息添加至所述第一集合的至少一个数据结构;
在所述工作存储器空间的溢出条件满足之后,将信息存储在存储设备的溢出存储空间中并且释放至少一些所述工作存储器空间,并且对于所述多个数据单元的数据单元第二子集的每个数据单元执行数据操作,该数据操作包括在所述工作存储器空间中存储的一个或多个数据结构的第二集合的至少一个数据结构内的数据单元中搜索一值,并且如果找到该值,则修改所述第二集合的至少一个数据结构中的信息,以及
将一个或多个数据结构的多个集合结合,包括所述第一集合和第二集合,以产生所述结果信息。
CN201480040788.7A 2013-05-17 2014-05-16 管理数据操作的存储器和存储空间 Active CN105556474B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361824686P 2013-05-17 2013-05-17
US61/824,686 2013-05-17
PCT/US2014/038345 WO2014186673A2 (en) 2013-05-17 2014-05-16 Managing memory and storage space for a data operation

Publications (2)

Publication Number Publication Date
CN105556474A CN105556474A (zh) 2016-05-04
CN105556474B true CN105556474B (zh) 2019-04-30

Family

ID=50977109

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480040788.7A Active CN105556474B (zh) 2013-05-17 2014-05-16 管理数据操作的存储器和存储空间

Country Status (9)

Country Link
US (2) US9235505B2 (zh)
EP (2) EP2997472B1 (zh)
JP (1) JP6387399B2 (zh)
KR (1) KR102201510B1 (zh)
CN (1) CN105556474B (zh)
AU (2) AU2014265246B2 (zh)
CA (1) CA2912420C (zh)
HK (1) HK1224050A1 (zh)
WO (1) WO2014186673A2 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9230371B2 (en) * 2013-09-19 2016-01-05 GM Global Technology Operations LLC Fuel control diagnostic systems and methods
CN106062751B (zh) 2014-03-07 2020-08-11 起元科技有限公司 对与数据类型有关的数据剖析操作的管理
US9805079B2 (en) * 2014-08-22 2017-10-31 Xcalar, Inc. Executing constant time relational queries against structured and semi-structured data
US9361937B2 (en) * 2014-08-26 2016-06-07 Seagate Technology Llc Shingled magnetic recording data store
CN106468560B (zh) * 2016-09-13 2019-05-28 Oppo广东移动通信有限公司 基于计步器消息的数据输出方法及装置
US10209913B2 (en) 2017-01-31 2019-02-19 International Business Machines Corporation System, method and computer program product for accelerating iterative graph algorithms by memory layout optimization
WO2019089606A1 (en) * 2017-10-31 2019-05-09 Ab Initio Technology Llc Managing a computing cluster based on consistency of state updates
US11210018B2 (en) * 2019-05-20 2021-12-28 Honeywell International Inc. Holistic linking of data across data sources
KR20230034695A (ko) * 2021-09-03 2023-03-10 삼성전자주식회사 전자장치 및 그 제어방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473083A (zh) * 2009-07-08 2012-05-23 伊姆西公司 用于读取优化的批数据存储的设备和方法
WO2013051129A1 (ja) * 2011-10-06 2013-04-11 株式会社 日立製作所 格納データの重複排除方法、格納データの重複排除装置、及び重複排除プログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
JPH1063576A (ja) * 1996-08-27 1998-03-06 Hitachi Ltd 階層ディスク装置およびその制御方法
EP1676217B1 (en) 2003-09-15 2011-07-06 Ab Initio Technology LLC Data profiling
US7716630B2 (en) * 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US8229902B2 (en) * 2006-11-01 2012-07-24 Ab Initio Technology Llc Managing storage of individually accessible data units
CN102893265B (zh) * 2010-03-10 2018-06-08 起元技术有限责任公司 管理可独立访问的数据单元的存储
JP4966418B1 (ja) * 2011-01-26 2012-07-04 株式会社東芝 情報処理装置及び書き込み制御方法
US9785470B2 (en) * 2011-06-20 2017-10-10 Microsoft Technology Licensing, Llc Memory management model and interface for unmodified applications
CN106062751B (zh) * 2014-03-07 2020-08-11 起元科技有限公司 对与数据类型有关的数据剖析操作的管理

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473083A (zh) * 2009-07-08 2012-05-23 伊姆西公司 用于读取优化的批数据存储的设备和方法
WO2013051129A1 (ja) * 2011-10-06 2013-04-11 株式会社 日立製作所 格納データの重複排除方法、格納データの重複排除装置、及び重複排除プログラム

Also Published As

Publication number Publication date
KR102201510B1 (ko) 2021-01-11
JP2016530584A (ja) 2016-09-29
AU2014265246A1 (en) 2015-11-26
US20140344508A1 (en) 2014-11-20
AU2018211280B2 (en) 2018-11-29
WO2014186673A2 (en) 2014-11-20
KR20160011212A (ko) 2016-01-29
EP2997472B1 (en) 2018-07-11
US20160092139A1 (en) 2016-03-31
AU2014265246B2 (en) 2018-05-17
US9235505B2 (en) 2016-01-12
HK1224050A1 (zh) 2017-08-11
AU2018211280A1 (en) 2018-08-23
CA2912420A1 (en) 2014-11-20
CA2912420C (en) 2020-09-15
US9411531B2 (en) 2016-08-09
JP6387399B2 (ja) 2018-09-05
CN105556474A (zh) 2016-05-04
EP3379415A1 (en) 2018-09-26
EP3379415B1 (en) 2019-11-06
EP2997472A2 (en) 2016-03-23

Similar Documents

Publication Publication Date Title
CN105556474B (zh) 管理数据操作的存储器和存储空间
US11269834B2 (en) Detecting quasi-identifiers in datasets
EP2674875B1 (en) Method, controller, program and data storage system for performing reconciliation processing
US8825581B2 (en) Simplifying a graph of correlation rules while preserving semantic coverage
CN104756107B (zh) 采用位置信息剖析数据
CN109416694A (zh) 包括资源有效索引的键值存储系统
CN104050223B (zh) 用于文本挖掘和搜索的数据透视面
CN104090962B (zh) 面向海量分布式数据库的嵌套查询方法
JP2017515183A (ja) データ型に関連するデータプロファイリング操作の管理
CN109325062B (zh) 一种基于分布式计算的数据依赖挖掘方法及系统
US11100087B2 (en) Data tokenization system maintaining data integrity
US20160161263A1 (en) Shortest path engine for warehouse management
Andreis et al. A large‐deviations principle for all the cluster sizes of a sparse Erdős–Rényi graph
CN104641373B (zh) 有效地寻找空间得分最佳的实体
CN105447032A (zh) 用于处理消息与订阅信息方法和系统
CN106503260A (zh) 一种提高数据库的有效存储空间的方法和装置
Knauer et al. Better approximation algorithms for the maximum internal spanning tree problem
US20240104136A1 (en) Method and system for efficient partitioning and construction of graphs for scalable high-performance search applications
US20220131915A1 (en) Management and implementation of applications in cloud-based fpgas
Marussy et al. Getting the priorities right: saturation for prioritised Petri Nets
Abraham Least Cost Path Discovery over graphs defined for large volumes of data satisfying node and link constraints

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1224050

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant