CN101635001B - 从数据库提取信息的方法和设备 - Google Patents
从数据库提取信息的方法和设备 Download PDFInfo
- Publication number
- CN101635001B CN101635001B CN2009101613238A CN200910161323A CN101635001B CN 101635001 B CN101635001 B CN 101635001B CN 2009101613238 A CN2009101613238 A CN 2009101613238A CN 200910161323 A CN200910161323 A CN 200910161323A CN 101635001 B CN101635001 B CN 101635001B
- Authority
- CN
- China
- Prior art keywords
- result
- identifier value
- data structure
- options
- function
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
-
- 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/2228—Indexing structures
- G06F16/2255—Hash tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种从数据库提取信息的方法和设备。使用计算机实现的方法从数据库提取信息,该方法包括一系列主计算,在该一系列主计算中,第一主计算对数据集运行第一选择项以产生第一结果,第二主计算对第一结果运行第二选择项以产生第二结果。将第一结果和第二结果高速缓存在计算机存储器中以在方法的后续迭代中重新使用,由此减少执行用于提取信息的第一主计算和/或第二主计算的需要。该高速缓存过程包括:计算作为至少第一选择项的函数的第一选择标识符值,并且计算作为至少第二选择项和第一结果的函数的第二选择标识符值;以及将第一选择标识符值和第一结果以及第二选择标识符值和第二结果分别作为关联对象存储在数据结构中。
Description
技术领域
本发明涉及从数据库提取信息的技术,尤其涉及与包括第一主计算和第二主计算的一系列主计算有关的技术,其中第一主计算对表示数据库的数据集运行第一选择项以产生第一结果,并且第二主计算对该第一结果运行第二选择项以产生第二结果。
背景技术
经常期望从数据库提取特定信息,并且具体地,汇总数据库中的大量数据并以易懂的方式将汇总后的数据呈现给用户。这种数据处理通常由计算机来执行,并且可能要求计算机的极大的存储性能和处理能力。该数据处理可以旨在例如通过以数据透视表或以2D和3D图表图形地可视化所选择的数据来创建通常已知为多维立方体的大型数据结构,反过来用户可以访问该数据结构从而研究该数据库的数据。根据美国申请7058621已知用于创建这种多维立方体的高效算法的例子,在此通过引用而包含该申请。
与对数据库中的数据运行的多数其它算法相同,该现有技术算法涉及一系列主计算,其中,一个主计算的结果被后续的主计算用作输入数据。例如,在美国申请7058621的内容中,将数据库中的数据记录读取至主存储器,因而用户可以选择一个或多个变量,并且可选地选择各个这种变量的值或值的范围,从而使该算法提取数据库中的数据记录的相应子集。所提取出的子集形成了中间结果。然后,通过对所提取出的子集计算所选择的数学函数的值来计算该多维立方体,其中,基于所选择的计算变量的集合进行数学函数的求值,并且由所选择的分类变量的集合给出该立方体的维度。
尽管现有技术算法是高效的,然而特别地如果要分析大量数据,则可能仍需要执行大量运算以创建该多维立方体。在这种情况下,该算法可能对处理硬件设置不期望的高要求,并且/或者造成不期望的长的计算时间。
发明内容
本发明的目的是至少部分克服现有技术的上述限制中的一个或多个限制。
通过根据独立权利要求的方法、计算机可读介质和设备至少部分实现了将从以下说明得知的目的和其它目的,其中,由从属权利要求限定本发明的实施例。
本发明的第一方面是一种计算机实现的方法,用于从数据库提取信息,所述方法包括一系列主计算,所述一系列主计算包括第一主计算和第二主计算,所述第一主计算对表示所述数据库的数据集运行第一选择项以产生第一结果,并且所述第二主计算对所述第一结果运行第二选择项以产生第二结果,所述方法还包括通过以下步骤高速缓存所述第一结果和所述第二结果:计算步骤,用于计算作为至少所述第一选择项的函数的第一选择标识符值,并且计算作为至少所述第二选择项和所述第一结果的函数的第二选择标识符值;以及存储步骤,用于将所述第一选择标识符值和所述第一结果以及所述第二选择标识符值和所述第二结果分别作为关联对象存储在数据结构中。所提取出的信息可以包括数据库中的数据的分组、排序或聚合。
因而,在根据第一方面的方法中,第一结果和第二结果被高速缓存在计算机存储器中并且在所述方法的后续迭代中可重新使用,从而减少了执行用于提取信息的第一主计算和/或第二主计算的需要。该重新使用可以包括在后续迭代期间计算第一选择标识符值和/或第二选择标识符值,并且访问数据结构从而可能检索到第一结果和/或第二结果。
在一个实施例中,所述方法还包括使用步骤,所述使用步骤用于使用所述数据结构以基于所述第一选择项和所述第二选择项寻找所述第二结果,其中,所述使用步骤包括以下子步骤:(a)计算作为至少所述第一选择项的函数的所述第一选择标识符值;(b)基于所述第一选择标识符值搜索所述数据结构的对象以定位所述第一结果;(c)如果在子步骤(b)中找到了所述第一结果,则计算作为所述第一结果和所述第二选择项的函数的所述第二选择标识符值,并且基于所述第二选择标识符值搜索所述数据结构的对象以定位所述第二结果;(d)如果在子步骤(b)中未找到所述第一结果,则执行所述第一主计算以产生所述第一结果,计算作为所述第一结果和所述第二选择项的函数的所述第二选择标识符值,并且基于所述第二选择标识符值搜索所述数据结构的对象以定位所述第二结果;以及(e)如果在子步骤(c)或(d)中未找到所述第二结果,则执行所述第二主计算以产生所述第二结果。
在一个实施例中,所述方法还包括计算作为所述第一结果的函数的第一结果标识符值的步骤,其中,所述存储步骤还包括以下步骤:将所述第一选择标识符值和所述第一结果标识符值作为关联对象存储在所述数据结构中;以及将所述第一结果标识符值和所述第一结果作为关联对象存储在所述数据结构中。
在一个实施例中,所述方法还包括使用步骤,所述使用步骤用于使用所述数据结构以基于所述第一选择项和所述第二选择项寻找所述第二结果,其中,所述使用步骤包括以下子步骤:(a)计算作为至少所述第一选择项的函数的所述第一选择标识符值;(b)基于所述第一选择标识符值搜索所述数据结构的对象以定位所述第一结果标识符值,并且基于所述第一结果标识符值搜索所述数据结构的对象以定位所述第一结果;(c)如果在子步骤(b)中找到了所述第一结果,则计算作为所述第一结果和所述第二选择项的函数的所述第二选择标识符值,并且基于所述第二选择标识符值搜索所述数据结构的对象以定位所述第二结果;(d)如果在子步骤(b)中未找到所述第一结果标识符值或所述第一结果,则执行所述第一主计算以产生所述第一结果,计算作为所述第一结果和所述第二选择项的函数的所述第二选择标识符值,并且基于所述第二选择标识符值搜索所述数据结构的对象以定位所述第二结果;以及(e)如果在子步骤(c)或(d)中未找到所述第二结果,则执行所述第二主计算以产生所述第二结果。
在一个实施例中,在计算所述第二选择标识符值时,由所述第一结果标识符值来表示所述第一结果。
在一个实施例中,所述方法还包括使用步骤,所述使用步骤用于使用所述数据结构以基于所述第一选择项和所述第二选择项寻找所述第二结果,其中,所述使用步骤包括以下子步骤:(a)计算作为至少所述第一选择项的函数的所述第一选择标识符值;(b)基于所述第一选择标识符值搜索所述数据结构的对象以定位所述第一结果标识符值;(c)如果在子步骤(b)中找到了所述第一结果标识符值,则计算作为所述第一结果标识符值和所述第二选择项的函数的所述第二选择标识符值,并且基于所述第二选择标识符值搜索所述数据结构的对象以定位所述第二结果;(d)如果在子步骤(b)中未找到所述第一结果标识符值,则执行所述第一主计算以产生所述第一结果,计算作为所述第一结果的函数的所述第一结果标识符值,计算作为所述第一结果标识符值和所述第二选择项的函数的所述第二选择标识符值,并且基于所述第二选择标识符值搜索所述数据结构的对象以定位所述第二结果;(e)如果在子步骤(c)中未找到所述第二结果,则基于所述第一结果标识符值搜索所述数据结构的对象以定位所述第一结果,并且执行所述第二主计算以产生所述第二结果;(f)如果在子步骤(e)中未找到所述第一结果,则执行所述第一主计算以产生所述第一结果,并且执行所述第二主计算以产生所述第二结果;以及(g)如果在子步骤(d)中未找到所述第二结果,则执行所述第二主计算以产生所述第二结果。
在一个实施例中,所述方法还包括计算作为所述第二结果的函数的所述第二结果标识符值的步骤,其中,所述存储步骤还包括以下步骤:将所述第二选择标识符值和所述第二结果标识符值作为关联对象存储在所述数据结构中;以及将所述第二结果标识符值和所述第二结果作为关联对象存储在所述数据结构中。
在一个实施例中,各个标识符值在统计上是唯一的。
在一个实施例中,各个标识符值是通过哈希函数生成的数字指纹。例如,所述数字指纹可以包括至少256位。
在一个实施例中,所述方法还包括选择性删除步骤,所述选择性删除步骤用于至少基于包含所述关联对象的数据记录的大小,在所述数据结构中选择性地删除所述数据记录。所述选择性删除步骤可以用于促进删除包含所述第一结果的数据记录。在一个这种实施例中,所述方法包括将各数据记录与权重值相关联的步骤,其中,作为各数据记录的使用率参数、各数据记录的计算时间参数和各数据记录的大小参数的函数而计算出所述权重值。可以通过计算由W=U*T/M给出的权重函数的值来计算所述权重值,其中,U是所述使用率参数,T是所述计算时间参数,并且M是所述大小参数。所述使用率参数的值在每当访问数据记录时递增,同时作为时间的函数指数递减。所述选择性删除步骤可以基于所述数据结构中的数据记录的所述权重值。此外,所述选择性删除步骤可以基于所述数据结构的当前大小和阈值之间的比较而触发。
在一个实施例中,所述数据库是动态数据库,并且作为至少所述第一选择项和所述数据集的函数而计算出所述第一选择标识符值。
在一个实施例中,所述第一选择项定义所述数据集中的字段和各个字段的条件的集合,所述第一结果表示所述数据集的子集,所述第二选择项定义数学函数、所述第一结果中所包括的一个或多个计算变量以及所述第一结果中所包括的一个或多个分类变量,所述第二结果是多维立方体数据结构,所述多维立方体数据结构包含针对各分类变量的每个唯一值对所述一个或多个计算变量运行所述数学函数的结果。
本发明的第二方面是一种存储有计算机程序的计算机可读介质,所述计算机程序用于在由计算机执行时执行根据第一方面所述的方法。
本发明的第三方面是一种用于从数据库提取信息的设备,所述设备包括用于执行一系列主计算的部件,所述一系列主计算包括第一主计算和第二主计算,所述第一主计算对表示所述数据库的数据集运行第一选择项以产生第一结果,并且所述第二主计算对所述第一结果运行第二选择项以产生第二结果,所述设备还包括通过以下操作来高速缓存所述第一结果和所述第二结果的部件:计算作为至少所述第一选择项的函数的第一选择标识符值,并且计算作为至少所述第二选择项和所述第一结果的函数的第二选择标识符值;以及将所述第一选择标识符值和所述第一结果以及所述第二选择标识符值和所述第二结果分别作为关联对象存储在数据结构中。
第三方面的设备同样具有第一方面的方法的优点,并且可以进一步包括与以上针对第一方面所述的任意实施例相对应的其它特征。
通过以下根据所附权利要求书和附图的详细说明,本发明的其它目的、特征、方面和优点将变得明显。
附图说明
现在将参考所附示意图更详细地说明本发明的实施例,其中,使用相同的附图标记来标识相应的元件。
图1示出包括从数据库提取信息的一系列计算的处理,其中,将标识符和结果选择性地存储在计算机存储器中并且从该计算机存储器选择性地检索标识符和结果。
图2示出图1中的处理的一个实施例。
图3示出图1中的处理的另一实施例。
图4示出图1中的处理的又一实施例。
图5示出图1中的处理的又一实施例。
图6是图5中的处理的典型流程图。
图7是以具体背景实现的图5中的处理的概述。
图8是用于实现本发明实施例的基于计算机的环境的框图。
具体实施方式
本发明涉及从数据库提取信息的技术。为了便于理解,首先将针对一般例来说明一些基本原理。然后,将针对具体实现说明不同的方面、特征和优点。
一般例
图1示出用于从数据库DB提取信息的计算机实现的处理的示例,其中可以将该信息存储在实现该处理的计算机外部,也可以不将该信息存储在实现该处理的计算机外部。提取处理包括例如通过将原始数据集或范围R0读取至计算机的主存储器(例如,RAM)来从数据库DB提取该原始数据集R0。该原始数据集R0可以包括数据库DB的全体内容或其子集。
图1的处理包括进行运算以基于原始数据集R0生成最终结果R2的主计算过程P1、P2的序列。具体地,第一过程P1对原始数据集R0进行运算以产生中间结果R1,并且第二过程P2对该中间结果进行运算以产生最终结果R2。
由第一选择项S1控制第一过程P1,该第一选择项S1可以从用户输入产生,也可以不从用户输入产生。类似地,由第二选择项S2控制第二过程P2,该第二选择项S2可以从用户输入产生,也可以不从用户输入产生。各选择项S1、S2可以包括变量和/或数学函数的任意组合,其中数学函数分别定义了对各个过程的输入数据即数据集R0和中间结果R1的细化。
图1还示出提取处理通过运行第一过程P1和第二过程P2以将数据项存储在存储器10中并从存储器10检索数据项而与计算机存储器10(一般为RAM或高速缓冲存储器)进行交互。在所示的例子中,第一过程P1运行,以存储并检索通常由ID表示的标识符和中间结果R1,并且第二过程P2运行,以存储并检索通常由ID表示的标识符、中间结果R1和最终结果R2。在下面,将标识符和结果存储在计算机存储器10中的过程还被称为“高速缓存”。
一般由过程P1、P2作为其它标识符和/或选择项S1、S2和/或结果R1、R2等的一个或多个处理参数的函数来生成不同的标识符。不同的函数不一定用于生成不同的识别符。用于生成标识符的函数可以是生成相关处理参数的数字指纹的哈希算法(hashing algorithm)。适当地配置该/这些函数,以使得参数值的各唯一组合产生在针对处理内的全部不同的标识符所生成的全部标识符值中唯一的标识符值。在上下文中,“唯一”不仅包括理论上的唯一标识符值而且包括统计上的唯一标识符值。这种函数的一个非限制性的例子是生成至少256位的数字指纹的哈希算法。
在图2中进一步所示的一个实施例中,第一过程P1用于计算作为第一选择项S1的函数的第一选择标识符值ID1,即ID1=f(S1),并且第二过程P2用于计算作为第二选择项S2和中间结果R1的函数的第二选择标识符值ID3,即ID3=f(S2,R1)。第一过程P1还用于将ID1和中间结果R1作为关联对象存储在计算机存储器中的数据结构12中,并且第二过程P2用于将ID3和R2作为关联对象存储在数据结构12中。因而,计算机存储器10中的数据结构12用于存储不同种类的对象集合,即不同类型的对象。
本实施例使得能够通过减少执行用于分别计算中间结果R1和最终结果R2的主计算过程P1、P2的必要性,减少提取处理的应答时间并且/或者减少实现该提取处理的计算机的处理要求。例如,该提取处理可被配置为只要有可能就使用数据结构12,以基于第一选择项S1和第二选择项S2来寻找最终结果R2。因而,当处理发现需要计算最终结果R2时,基于S1和S2,它可以生成ID1=f(S1),并基于ID1访问数据结构12。如果以前在第一过程P1中使用过同一第一选择项S1,则所生成的ID1的值可能在数据结构12中找到,并与相应的中间结果R1相关联。因而,代替利用过程P1进行计算,可以从数据结构12中检索中间结果R1。如果在数据结构12中未找到中间结果R1,则处理可以使第一过程P1计算中间结果R1。此外,在获得了中间结果R1之后,处理可以生成ID3=f(R1,S2),并基于ID3访问数据结构12。而且,如果以前利用过程P2执行过相同的运算,则所生成的ID3的值可能在数据结构12中找到,并与相应的最终结果R2相关联。由此,代替利用过程P2进行计算,可以从数据结构12中检索最终结果R2。
在图3中进一步所示一个实施例中,第一过程P1还用于计算作为中间结果R1的函数的第一结果标识符值ID2。第一过程P1还用于将ID1和ID2作为关联对象存储在数据结构12中,并将ID2和中间结果R1作为关联对象存储在数据结构12中。
即使两个或更多个第一选择项S1产生相同的中间结果R1,由于仅将各中间结果R1存储在数据结构12中1次,因此本实施例使得能够减小处理所需要的计算机存储器的大小。当中间结果R1大时本实施例尤其适合,其中在对来自数据库的信息进行处理时经常是这种情况。
第一结果标识符值ID2的该计算还使得能够执行图4所示的又一实施例,其中,在计算第二选择标识符值ID3时,由第一结果标识符值ID2来表示中间结果R1,即ID3=f(ID2,S2)。
由于可以根据基于ID2而不是中间结果R1所生成的ID3从数据结构12检索最终结果R2,因此本实施例导致将中间结果R1存储在数据结构12中的需要减少。这使得即使已从数据结构12清除了中间结果R1,也能够高效地计算最终结果R2。例如,该处理可被配置为只要有可能就使用数据结构12,以基于第一选择项S1和第二选择项S2寻找最终结果R2。因而,当处理发现需要计算最终结果R2时,基于S1和S2,如果以前在第一过程P1中使用过同一第一选择项S1,则可以生成ID1=f(S1),并基于ID1访问数据结构12从而检索与ID1相关联的ID2。然后,如果以前第二过程P2对同一中间结果R1和同一第二选择项S2进行过运算,则处理可以生成ID3=f(ID2,S2),并基于ID3访问数据结构12从而检索与ID3相关联的最终结果R2。在该例子中,即使已经删除了中间结果R1,也可以从数据结构12中检索最终结果R2。
在图5所示的一个实施例中,第二过程P2还用于计算作为最终结果R2的函数的第二结果标识符值ID4。第二过程P2还用于将ID3和ID4作为关联对象存储在数据结构12中,并将ID4和最终结果R2作为关联对象存储在数据结构12中。
即使两个或更多个第二选择项S2产生相同的最终结果R2,由于仅将各最终结果R2存储在数据结构12中1次,因此本实施例使得能够减小处理所需要的计算机存储器的大小。当最终结果R2大时,本实施例尤其适合。
迄今为止,假定数据库DB以及数据集R0是静态的。如果该数据库是动态的,则可以适当地生成作为第一选择项S1和数据集R0的函数的第一选择标识符ID1,即ID1=f(S1,R0)。利用这种变形,针对图1~5所述的全部实施例等同地可应用于动态数据库,即随时可能变化的数据库。
图6是示出用于对动态数据库运行的图5中的实施例的一个典型实现的流程图。处理以输入数据集R0(步骤600)、第一选择项S1(步骤602)和第二选择项S2(步骤604)而开始。然后,作为S1和R0的函数生成第一选择标识符ID1的值(步骤606)。基于ID1在数据结构中进行查找(步骤608)。如果在该数据结构中找到了ID1的值,即在先前迭代中已高速缓存了ID1的值,则处理检索与ID1的值相关联的第一结果标识符ID2的值(步骤610),并且进入步骤612。
如果在步骤608中在数据结构中未找到ID1的值,则处理通过对R0运行S1使第一过程P1计算R1(步骤614)。然后,作为R1的函数生成ID2的值(步骤616),并且将ID1、ID2和R1的值以关联对ID1:ID2和ID2:R1存储在数据结构中(步骤618)。然后,处理进入步骤612。
在步骤612中,作为S2和ID2的函数生成第二选择标识符ID3的值。然后,基于ID3在数据结构中进行查找(步骤620)。如果在数据结构中找到了ID3的值,即在先前迭代中已高速缓存了ID3的值,则处理检索与ID3的值相关联的第二结果标识符ID4的值(步骤622)。基于ID4在数据结构中进行进一步的查找(步骤624)。如果在数据结构中找到了ID4的值,即在先前迭代中已高速缓存了ID4的值,则处理检索与ID4的值相关联的最终结果R2(步骤626)。
如果在步骤620中在数据结构中未找到ID3的值,则基于在步骤610或步骤616中确定出的ID2的值在数据结构中进行进一步的查找(步骤628)。如果在数据结构中找到了ID2的值,即在先前迭代中已高速缓存了ID2的值,则处理检索与ID2的值相关联的中间结果R1(步骤630)。然后,处理通过对R1运行S2使第二过程P2计算R2(步骤632)。为了更新该数据结构,该处理还生成作为R2的函数的ID4的值(步骤634),并将ID3、ID4和R2的值以关联对ID3:ID4和ID4:R2存储在数据结构中(步骤636)。
如果在步骤628中在数据结构中未找到ID2的值,则处理通过对R0运行S1使第一过程P1计算R1(步骤638),并将ID2和R1的值以关联对ID2:R1存储在数据结构中(步骤640)。然后,处理进入步骤632。然而,应当认识到,如果在步骤614中已计算出了中间结果R1,则不必进行步骤628、630、638和640。在这种情况下,如果在步骤620中未找到ID3,则处理可以直接进入步骤632,在步骤632中,通过对R1运行S2使第二过程P2计算R2。
如果在步骤624中在数据结构中未找到ID4的值,则处理通过对R1运行S2使第二过程P2计算R2(步骤642)。为了更新该数据结构,处理还生成作为R2的函数的ID4的值(步骤644),并将ID4和R2的值以关联对ID4:R2存储在数据结构中(步骤646)。
技术人员容易理解,尽管图2~4中的实施例使用了标识符的不同组合,但产生了相应的存储和检索处理。为了表现简洁,在流程图中没有示出这些处理,而仅将这些处理作为前述概要部分中的典型实施例而给出。
可以理解,可以使用线性或非线性的任何数据结构12来存储标识符和结果。然而,为了处理速度,可以优选使用排序列表、哈希表或AVL树等的二值树等具有高效索引系统的数据结构12。
具体实施例、实现和示例
在以下,将更详细地说明和举例示出本发明的实施例。
在本发明的实施例中,在针对新数据和新计算的后续请求的处理中使用了先前的计算和结果。为此,提取处理被设计成在处理数据请求期间对结果进行高速缓存。当处理后续请求时,该提取处理判断是否已生成并高速缓存了适当的先前结果。如果是,则在处理后续请求时使用先前的结果。由于不需要重新生成先前的计算,因此可以显著减少后续请求的处理时间。
在本发明的实施例中,数字标识符(数字指纹)用于识别高速缓存的信息,并且以这种方式,在与先前计算相比以不同的方式得到时,也可以重新使用高速缓存的结果。
在本发明的实施例中,将数字标识符自身存储在高速缓冲存储器中。具体地,将计算过程的输入的标识符连同该计算过程的输出的标识符一起存储。因而,当已从高速缓冲存储器清除了所需要的复杂中间结果时,也可以得到多级运算的最终结果。仅需要中间结果的数字标识符。
在本发明的实施例中,通过可以存储表、数据子集、数组和数字标识符等不同种类的对象的数据结构来实现该高速缓冲存储器。
因而,本发明的实施例可以用于最小化或至少减少用户的应答时间,其中该用户使用最近由同一或其它用户已执行的查询来查询数据存储。
本发明的实施例还可以用于在两个查询或计算恰好产生相同的结果的情况下,通过针对几个不同的查询或计算重新使用相同高速缓存条目,来最小化或至少减少高速缓冲存储器的存储器使用。
本发明的实施例可应用于从关系型数据库、后关系型数据库、面向对象数据库和分级数据库等任意类型的已知数据库提取任意类型的信息。还可以将因特网看作为在本发明的情况下的数据库。
图7公开了作为包括数据库查询的提取处理或信息搜索的本发明的具体实施例,其中基于查询结果执行后续的图表计算。表示为“图表结果(Chart Result)”的图表计算的结果一般是例如以如在背景技术部分中说明的多维立方体的形式按一维、二维或多维而聚合、排序或分组的数据。
在第一步骤中,定义信息搜索的范围(Scope)。在数据库查询的情况下,利用SELECT(选择)语句(或等同物)中所包括的表以及它们是如何连接的来定义该范围。对于因特网搜索,该范围可以是通常还以一个或多个表的形式组织的所找到的网页的索引。因而,第一步骤的输出是数据集(参见图1~6中的R0)。
在第二步骤中,用户在数据集中进行选择,从而使推理机(Inference Engine)计算数据集上的多个过滤器的值。该推理机可以是例如数据库引擎、查询工具或商务智能工具。例如,在对保持放置定单的数据的数据库进行查询时,该查询可以要求定单年份是“2007”并且产品组是“乳制品”。因而,可以由所包括的字段的列表以及针对各个字段所选择的值或者,更广泛地说,条件的列表来唯一地定义该选择。
基于该选择(参见图1~6中的S1),推理机执行计算过程(参见图1~6中的P1),以生成表示范围(参见图1~6中的R0)的一部分的数据子集(参见图1~6中的R1)。因而,该数据子集可以包含来自该范围的一组相关数据记录,或者对这些相关数据记录的参考(例如,索引、指针或二值编号)的列表。在以上例子中,相关数据记录将仅是与年份“2007”和产品组“乳制品”有关的数据记录。
如果以前从未进行选择,则运行图7中的推理机以计算数据子集。然而,如果以前进行过计算,则作为替代,运行推理机以通过访问特定的数据结构:“高速缓冲存储器”而重新使用先前的结果。
下一步骤经常是基于数据子集进行例如聚合和/或排序和/或分组等的进一步计算。在图7的例子中,通过基于数据子集和所选择的图表属性的集合(参见图1~6中的S2)计算图表结果的图表引擎来进行后续计算。由此,图表引擎执行图表计算过程(参见图1~6中的P2)以生成图表结果(参见图1~6中的R2)。如果以前从未进行这些计算,则运行图7中的图表引擎以生成图表结果。然而,如果以前进行过这些计算,则作为替代,运行图表引擎以通过访问前述高速缓冲存储器来重新使用先前的结果。然后,可以以数据透视表或以2D和3D图表图形地对用户可视化该图表结果。
图7还示出使用高速缓冲存储器的处理,其中f表示运行以生成数字标识符的哈希算法,ID1~ID4表示由此生成的数字标识符,并且实线箭头表示用于生成标识符ID1~ID4的数据流。此外在图7中,虚线箭头表示高速缓冲存储器查找。
在图7中,当用户进行新的选择时,推理机计算数据子集。此外,基于范围和选择中的过滤器生成选择和范围的标识符ID1。随后,基于数据子集定义,一般为定义数据子集的内容的位序列,生成该数据子集的标识符ID2。最终,使用ID1作为查找标识符将ID2置于高速缓冲存储器中。同样,使用ID2作为查找标识符将数据子集定义置于高速缓冲存储器中。
在图7中,图表计算以类似的方式发生。这里,存在两个信息集:数据子集和相关图表属性。后者一般是但不限于数学函数、计算变量以及分类变量(维度)。这两个信息集均用于计算图表结果,并且这两个信息集还用于生成向图表计算的输入的标识符ID3。在前述步骤中已生成了ID2,并且作为图表计算过程中的第一步骤,生成ID3。
根据ID2和相关图表属性形成标识符ID3。可以将ID3看作包括计算具体图表结果所需要的全部信息的具体图表生成实例的标识符。另外,根据图表结果定义,一般为定义图表结果的位序列,创建图表结果标识符ID4。最终,使用ID3作为查找标识符将ID4置于高速缓冲存储器中。同样,使用ID4作为查找标识符将图表结果定义置于高速缓冲存储器中。
在该具体例子中,在推理过程和图表计算过程两者中进行了结果的两级高速缓存。在该推理过程中,ID1和ID2分别表示不同的事物:选择和数据子集定义。如果两个不同的选择产生相同的数据子集(这是极有可能的),则两级高速缓存(ID1:ID2;ID2:数据子集)使得仅对数据子集高速缓存一次。在以下将此表示为对象叠合(Object Folding),即高速缓冲存储器中的几个数据对象共享同一高速缓冲存储器条目。类似地,在图表计算过程中,ID3和ID4分别表示不同的事物:图表生成实例和图表结果定义。如果两个不同的图表生成实例产生相同的图表结果(这是极有可能的),则两级高速缓存(ID3:ID4;ID4:图表结果)使得仅对该图表结果高速缓存一次。
此外,通过高速缓存ID3,如果已从高速缓冲存储器清除该数据子集定义,则也可以重新创建图表结果。由于数据子集定义可以非常大因而如果实现了高速缓冲存储器清除机制则该数据子集定义趋于被从高速缓冲存储器清除,这是适当的优势。以下将进一步说明这种机制的非限制性例子。
在提取处理期间,如图7中的虚线箭头所示,根据选择、相关图表属性等计算出标识符,并且这些标识符用于查找可能高速缓存的计算结果。如果找到标识符,则将重新使用相应的高速缓存的结果。如果没有找到,则提取处理将生成新的标识符,并且与各自的结果一起对它们进行高速缓存。
为了进一步举例说明提取处理,考虑定单年份“2007”和产品组“乳制品”的上述选择。第一步骤是生成作为该选择的函数的数字标识符ID1(例如,以十六进制计数法编写的):
′31dca7ad013964891df428095ad9b78ad7a69eaaa1ca3886bcf05d8f8184e84a′。
为了简洁,在以下例子中由每个标识符的最初的4个字符来表示各标识符。因此,作为替代,ID1变为“31dc”。此外,为了清楚,以下的图解表在数字标识符之前包括标识符标记,例如“ID1:”。在实际方案中,这是不需要的。
后续的提取处理如下:当已生成ID1时,在高速缓冲存储器中查找该ID1。第一次进行选择时,在高速缓冲存储器中将不会找到该标识符,因此必须以普通方式计算由此得到的数据子集。一旦进行了该操作,则可以根据该数据子集生成ID2为例如“d2b8”。然后,高速缓存ID1,指向ID2;并且高速缓存ID2,指向定义由此得到的数据子集的位序列。该位序列在大小可能相当大。以下在表1中示出了高速缓冲存储器的内容。
表1:
下次进行相同的选择时,处理将不同:现在在高速缓冲存储器中找到了ID1,指向“ID2:d2b8”,反过来该“ID2:d2b8”用于第二次查找,从而代替耗时间的计算,寻找、取出并使用由此得到的数据子集的位序列。
现在考虑进行了不同的选择但是产生了相同的由此得到的数据子集的情况。例如,可能发生用户准确地选择了在未明确要求“奶制品”的情况下已购买了“奶制品”的客户以及除了“奶制品”以外什么也没买的客户。现在将ID1生成为例如“f142”,并且在高速缓冲存储器中将未找到ID1。因而,必须以普通方式计算由此得到的数据子集。一旦进行了该操作,则可以从数据子集生成ID2,并且该ID2是已存储在高速缓冲存储器中的“d2b8”。因此,该算法仅需要向高速缓冲存储器添加一个条目,即“ID1:f142”指向“ID2:d2b8”的一个条目。以下在表2中示出了高速缓冲存储器的内容。
表2:
此时没有节省计算时间,但是重新使用了高速缓存条目以防止高速缓冲存储器不必要地增长。现在,“ID1:f142”和“ID1:31dc”两者都指向包含相同的由此得到的数据集“ID2:d2b8”的高速缓存条目,并且可以在稍后的查找中使用这两者。因而,这是前述“对象叠合”的例子。
当进行后续的图表计算时,高速缓存数字标识符的又一优点将变得清楚。因此,假定已经进行了上述选择,并且已经进行了后续的图表计算。已经分别将ID3和ID4生成为“e40A”和“7505”,并将它们存储在高速缓冲存储器中。以下在表3中示出了高速缓冲存储器的内容。
表3:
在表3中的5个条目中,一个条目极有可能比全部其它的条目大得多:包含定义了可能大的数据子集的全体位序列的“ID2:d2b8”。如以下将进一步说明,当维护高速缓存时/如果维护高速缓存,则其大小使得“ID2:d2b8”成为要被清除的候选。因此,稍后高速缓冲存储器的内容可能如以下的表4所示。
表4:
然而,由于对数字标识符进行了高速缓存,因此仍可以在无需重新计算中间数据子集的情况下获得图表结果。替代地,当进行选择时,计算ID1。接着,在高速缓冲存储器中进行对ID1的查找,结果检索到了ID2。随后,根据相关图表属性和ID2的组合生成了ID3。在高速缓冲存储器中进行对ID3的查找,并且检索到了ID4。最终,在高速缓冲存储器中进行对ID4的查找,并且再生图表结果。因此,在无需任何大量计算的情况下,仅基于可以通过快速且高效处理的操作所生成的数字标识符,找到了图表结果。
根据以上可以理解,数字标识符应当是唯一的,以使得高速缓冲存储器中各个标识符的含义是明确的。在一个实施例中,使用哈希算法或函数生成数字标识符。哈希算法是接受任意大小的输入(消息)并返回被称为哈希值(消息摘要)的固定大小的串的变换。该算法一般切断并混合,例如替换或调换该输入以创建其数字指纹。最简单和最古老的哈希算法是通过质数运算的简要模块。哈希算法用于包括加密技术的各种计算目的。一般而言,哈希算法应当在仍实际为确定性的同时通过以等同的“可能性”生成任意可能的固定大小的串,尽可能地表现为随机函数。
存在几种已知的并且经常使用的可以用于生成上述数字标识符的哈希算法。不同的哈希算法针对不同的目的是最优的,其中一些哈希算法针对高效且快速地计算哈希值的目的是最优的,而另一些哈希算法设计用于高加密安全性的目的。具有高加密安全性的算法被设计成使得难以在合理的时间内计算出与给定的哈希值相匹配的消息,并且难以找到生成与第一给定消息相同的哈希值的消息的第二消息。这种哈希算法包括SHA(安全哈希算法)和MD5(Message-Digest algorithm 5,消息摘要算法5)。高效处理的哈希算法一般展现了较低的加密安全性。这种哈希算法包括被设计成在通常维持非常低的冲突率(collisionrate)的同时快速的FNV算法(Fowler/Noll/Vo)。FNV算法一般以偏移基开始,该偏移基原则上可以是任意随机串的值,但传统上一般总是为贯穿原始的FNV-0算法的以十六进制码的发明者签名。为了生成256位FNV哈希值,通常使用以下的偏移基:
′0xdd268dbcaac550362d98c384c4e576ccc8b1536847b6bbb31023b4c8caee0535′。
对于向哈希算法的输入中的各字节,首先将偏移乘以大的质数,然后与来自输入的字节相比较,并最终计算出按位对称差(XOR),以形成下一循环的哈希值。在公开文献中可以找到适当的质数。任意大的质数都可以,但其中一些比另一些更加抗冲突。
可以使用合理地抗冲突的任何哈希算法来生成数字标识符。在一个实施例中,使用具有高抗冲突性和低加密安全性的快速哈希算法来生成标识符。
在一个具体实施例中,可以通过连结各自使用不同的质数乘数而生成的4个64位FNV哈希来创建256位标识符。通过使用4个较短的哈希并连结这些哈希,可以更快速地生成标识符。为了进一步加速标识符的生成,可以对算法进行修改,从而不在每次循环时仅使用输入的一个字节,而是替代地使用4个字节。这可能导致加密安全性的丢失,但抗冲突性保持大致相同。
长度为至少256位的标识符可以产生有益的抗冲突性。256位哈希值表示存在约1E+77个可能的标识符值。可以将该数量与已估计为1E+80的宇宙中的原子的数量进行比较。这意味着冲突的风险,即两个不同的选择/数据子集/图表属性/图表结果产生相同的标识符的风险不仅非常小,而且可忽略的。因此,我们可以确定地说冲突的风险小到可以接受。这意味着,尽管哈希算法理论上未生成唯一标识符,然而统计上生成了唯一标识符。然而,可以理解,对于特定用途,64位或128位等的位长度较短的标识符可以在统计上充分唯一。
如上所述,可以实现清除机制以清除高速缓冲存储器中的旧的或未使用的条目。一个策略可以是消除高速缓冲存储器中的低使用率的条目。然而,可以实现更高级的清除机制以支持处理器使用率和存储器使用率这两者的最优化。这种高级清除机制的一个实施例对使用率、计算时间和存储器需求这三个参数进行运算。
使用率参数是可以考虑是否“最近但不经常”访问条目和是否“经常但最近没有”访问条目两者的数值。可以通过将各个条目与使用率参数U相关联来实现该操作,其中该使用率参数U在每次访问该条目时增加例如一个单位,但是该使用率参数U的值随着时间的过去以指数方式或者按照任何其它函数减小。在一个实现中,周期性地将高速缓冲存储器中的U的所有值减少固定量。因而,与放射性衰变类似,使用率参数具有半衰期。现在U的值将反映已访问了该条目多少次以及在多近的时间访问了该条目。
如果计算条目所需要的处理器时间相当长,则在高速缓冲存储器中应当将该条目保持较久。相反,如果计算所需要的处理器时间短,则重新计算的成本小,并且将该条目保持在高速缓冲存储器中的好处也小。因而,将各个条目与表示所估计出的计算时间的时间参数T相关联。
如果存储条目所需要的存储器空间相当大,则需要大量的高速缓冲存储器资源以保持该条目,并且与需要较少的存储器空间的条目相比较,应当更快将该条目从高速缓冲存储器清除。相反,需要小的存储器空间的条目可以在高速缓冲存储器中保持较长时间。因此,将各个条目与表示所估计出的存储器需求的存储器参数M相关联。
对于高速缓冲存储器中的各个条目,通过由W=U*T/M给出的权重函数W来评价U、T和M参数的值。
对于条目的W的大的值表示存在好的理由将该条目保持在高速缓冲存储器中。因而,应当将具有大的W值的条目保持在高速缓冲存储器中,并且应该清除具有小的W值的条目。
高效的清除机制可以包括根据W值对高速缓冲存储器进行排序,并从一端即具有最小W值的条目开始清除排序后的高速缓冲存储器。保持排序后的高速缓冲存储器的一个可能的但非必需的方法是将标识符、结果和U、T、M和W值作为AVL(Adelson-Velsky和Landis)树即自平衡二值搜索树而存储。
清除机制可以间歇地清除W值落在预定阈值以下的全部的条目。
可选地,可以由计算机上可用存储器的量或可用存储器相对总存储器的比来控制清除机制。因而,每当高速缓冲存储器的大小达到存储器阈值时,清除机制基于各自的W值从高速缓冲存储器条目去除条目。通过设置存储器阈值,可以使高速缓冲存储器大小适合本地硬件状况,例如,用处理能力换取存储器。例如,可以通过为计算机添加更多的主存储器并增加存储器阈值来补偿计算机中的较低的处理器。由此,更多的结果将被保留在高速缓冲存储器中,并且将减少处理的需求。
本发明的实施例还涉及用于进行前述的算法、方法、处理和过程中任一个的设备。可以针对所需要的目的专门构造该设备,或者该设备可以包括由计算机中所存储的计算机程序选择性地启动或重新配置的通用计算机。
图8是用于实现本发明实施例中的任意实施例的基于计算机的环境的框图。用户1与包括处理器3的数据处理系统2交互,其中处理器3执行操作系统软件以及实现本发明实施例的一个或多个应用程序。用户通过使用鼠标、键盘和触摸垫等的一个或多个众所周知的输入装置4向数据处理系统2输入信息。可选地,可以通过卡读取器、光学读取器或其它计算机系统等的其它类型的输入装置在需要或无需用户干涉的情况下输入信息。可以通过在显示器5上显示字符、图形符号、窗口和按钮等向用户给出视觉反馈。数据处理系统进一步包括前述存储器10。由处理器3执行的软件将与其运行有关的信息存储在存储器10中,并且从存储器10检索适当的信息。存储器10一般包括主存储器(RAM、高速缓冲存储器等)和非易失性从存储器(硬盘、闪速存储器和可移除介质)。可以将数据库存储在数据处理系统的存储器10中,或者可以经由数据处理系统2中的通信接口6在外部存储装置上访问该数据库。
参考一些实施例已经在上面主要说明了本发明。然而,如本领域的技术人员容易理解,在仅由所附的专利权利要求书定义和限定的本发明的范围和精神内,除以上公开的实施例以外的其它实施例也是可以的。
例如,本发明不仅可应用于计算多维立方体,而且还可用于使用一系列计算从数据库提取信息的任意情况。
此外,创造性的提取处理可应用于包括多于两个的连续计算的一系列计算。例如,与前面所述的中间结果类似,可以高速缓存该一系列计算中的两个或更多个中间结果中的每一个中间结果,并且随后进行检索。
此外,创造性的提取处理无需高速缓存和随后检索最终结果,但替代地可以运行以在一系列计算中仅高速缓存并检索一个或多个中间结果。
此外,应当注意,可以省略从数据库提取初始数据集或范围的初始步骤,并且替代地可以对数据库直接运行该提取处理。
相关申请交叉引用
本申请要求2008年7月18日提交的瑞典专利申请0801708-9以及2008年7月18日提交的美国临时申请61/081,761的优先权,在此通过引用包含其全部内容。
Claims (40)
1.一种用于从数据库提取信息的方法,该方法能够由计算机实现,所述方法包括一系列主计算,所述一系列主计算包括第一主计算(P1)和第二主计算(P2),所述第一主计算(P1)对表示所述数据库的数据集(R0)运行第一选择项(S1)以产生第一结果(R1),并且所述第二主计算(P2)对所述第一结果(R1)运行第二选择项(S2)以产生第二结果(R2),所述方法还包括通过以下步骤高速缓存所述第一结果(R1)和所述第二结果(R2):
计算步骤,用于计算作为至少所述第一选择项(S1)的函数的第一选择标识符值(ID1),并且计算作为至少所述第二选择项(S2)和所述第一结果(R1)的函数的第二选择标识符值(ID3);以及
存储步骤,用于将所述第一选择标识符值(ID1)和所述第一结果(R1)以及所述第二选择标识符值(ID3)和所述第二结果(R2)分别作为关联对象存储在计算机存储器的数据结构中,该数据结构用于存储不同种类的对象集合。
2.根据权利要求1所述的方法,其特征在于,还包括使用步骤,所述使用步骤用于使用所述数据结构以基于所述第一选择项(S1)和所述第二选择项(S2)寻找所述第二结果(R2),其中,所述使用步骤包括以下子步骤:
(a)计算作为至少所述第一选择项(S1)的函数的所述第一选择标识符值(ID1);
(b)基于所述第一选择标识符值(ID1)搜索所述数据结构的对象以定位所述第一结果(R1);
(c)如果在子步骤(b)中找到了所述第一结果(R1),则计算作为所述第一结果(R1)和所述第二选择项(S2)的函数的所述第二选择标识符值(ID3),并且基于所述第二选择标识符值(ID3)搜索所述数据结构的对象以定位所述第二结果(R2);
(d)如果在子步骤(b)中未找到所述第一结果(R1),则执行所述第一主计算(P1)以产生所述第一结果(R1),计算作为所述第一结果(R1)和所述第二选择项(S2)的函数的所述第二选择标识符值(ID3),并且基于所述第二选择标识符值(ID3)搜索所述数据结构的对象以定位所述第二结果(R2);以及
(e)如果在子步骤(c)或(d)中未找到所述第二结果(R2),则执行所述第二主计算(P2)以产生所述第二结果(R2)。
3.根据权利要求1所述的方法,其特征在于,还包括计算作为所述第一结果(R1)的函数的第一结果标识符值(ID2)的步骤,其中,所述存储步骤还包括以下步骤:将所述第一选择标识符值(ID1)和所述第一结果标识符值(ID2)作为关联对象存储在所述数据结构中;以及将所述第一结果标识符值(ID2)和所述第一结果(R1)作为关联对象存储在所述数据结构中。
4.根据权利要求3所述的方法,其特征在于,还包括使用步骤,所述使用步骤用于使用所述数据结构以基于所述第一选择项(S1)和所述第二选择项(S2)寻找所述第二结果(R2),其中,所述使用步骤包括以下子步骤:
(a)计算作为至少所述第一选择项(S1)的函数的所述第一选择标识符值(ID1);
(b)基于所述第一选择标识符值(ID1)搜索所述数据结构的对象以定位所述第一结果标识符值(ID2),并且基于所述第一结果标识符值(ID2)搜索所述数据结构的对象以定位所述第一结果(R1);
(c)如果在子步骤(b)中找到了所述第一结果(R1),则计算作为所述第一结果(R1)和所述第二选择项(S2)的函数的所述第二选择标识符值(ID3),并且基于所述第二选择标识符值(ID3)搜索所述数据结构的对象以定位所述第二结果(R2);
(d)如果在子步骤(b)中未找到所述第一结果标识符值(ID2)或所述第一结果(R1),则执行所述第一主计算(P1)以产生所述第一结果(R1),计算作为所述第一结果(R1)和所述第二选择项(S2)的函数的所述第二选择标识符值(ID3),并且基于所述第二选择标识符值(ID3)搜索所述数据结构的对象以定位所述第二结果(R2);以及
(e)如果在子步骤(c)或(d)中未找到所述第二结果(R2),则执行所述第二主计算(P2)以产生所述第二结果(R2)。
5.根据权利要求3所述的方法,其特征在于,在计算所述第二选择标识符值(ID3)时,由所述第一结果标识符值(ID2)来表示所述第一结果(R1)。
6.根据权利要求5所述的方法,其特征在于,还包括使用步骤,所述使用步骤用于使用所述数据结构以基于所述第一选择项(S1)和所述第二选择项(S2)寻找所述第二结果(R2),其中,所述使用步骤包括以下子步骤:
(a)计算作为至少所述第一选择项(S1)的函数的所述第一选择标识符值(ID1);
(b)基于所述第一选择标识符值(ID1)搜索所述数据结构的对象以定位所述第一结果标识符值(ID2);
(c)如果在子步骤(b)中找到了所述第一结果标识符值(ID2),则计算作为所述第一结果标识符值(ID2)和所述第二选择项(S2)的函数的所述第二选择标识符值(ID3),并且基于所述第二选择标识符值(ID3)搜索所述数据结构的对象以定位所述第二结果(R2);
(d)如果在子步骤(b)中未找到所述第一结果标识符值(ID2),则执行所述第一主计算(P1)以产生所述第一结果(R1),计算作为所述第一结果(R1)的函数的所述第一结果标识符值(ID2),计算作为所述第一结果标识符值(ID2)和所述第二选择项(S2)的函数的所述第二选择标识符值(ID3),并且基于所述第二选择标识符值(ID3)搜索所述数据结构的对象以定位所述第二结果(R2);
(e)如果在子步骤(c)中未找到所述第二结果(R2),则基于所述第一结果标识符值(ID2)搜索所述数据结构的对象以定位所述第一结果(R1),并且执行所述第二主计算(P2)以产生所述第二结果(R2);
(f)如果在子步骤(e)中未找到所述第一结果(R1),则执行所述第一主计算(P 1)以产生所述第一结果(R1),并且执行所述第二主计算(P2)以产生所述第二结果(R2);以及
(g)如果在子步骤(d)中未找到所述第二结果(R2),则执行所述第二主计算(P2)以产生所述第二结果(R2)。
7.根据权利要求1、3或5所述的方法,其特征在于,还包括计算作为所述第二结果(R2)的函数的所述第二结果标识符值(ID4)的步骤,其中,所述存储步骤还包括以下步骤:将所述第二选择标识符值(ID3)和所述第二结果标识符值(ID4)作为关联对象存储在所述数据结构中;以及将所述第二结果标识符值(ID4)和所述第二结果(R2)作为关联对象存储在所述数据结构中。
8.根据权利要求1至6中任一权利要求所述的方法,其特征在于,各个标识符值在统计上是唯一的。
9.根据权利要求1至6中任一权利要求所述的方法,其特征在于,各个标识符值是由哈希函数生成的数字指纹。
10.根据权利要求9所述的方法,其特征在于,所述数字指纹包括至少256位。
11.根据权利要求1至6中任一权利要求所述的方法,其特征在于,还包括选择性删除步骤,所述选择性删除步骤用于至少基于包含所述关联对象的数据记录的大小,在所述数据结构中选择性地删除所述数据记录。
12.根据权利要求11所述的方法,其特征在于,所述选择性删除步骤用于促进删除包含所述第一结果(R1)的数据记录。
13.根据权利要求11所述的方法,其特征在于,还包括将各数据记录与权重值相关联的步骤,其中,所述权重值作为各数据记录的使用率参数、各数据记录的计算时间参数和各数据记录的大小参数的函数而被计算出。
14.根据权利要求13所述的方法,其特征在于,通过计算由W=U*T/M给出的权重函数的值来计算所述权重值,其中,U是所述使用率参数,T是所述计算时间参数,并且M是所述大小参数,W是所述权重值。
15.根据权利要求13所述的方法,其特征在于,所述使用率参数的值在每当访问数据记录时递增,同时作为时间的函数指数递减。
16.根据权利要求13所述的方法,其特征在于,所述选择性删除步骤是基于所述数据结构中的数据记录的所述权重值的。
17.根据权利要求11所述的方法,其特征在于,所述选择性删除步骤基于所述数据结构的当前大小和存储器阈值之间的比较而触发。
18.根据权利要求1至6中任一权利要求所述的方法,其特征在于,所述数据库是动态数据库,并且作为至少所述第一选择项(S1)和所述数据集(R0)的函数而计算出所述第一选择标识符值(ID1)。
19.根据权利要求1至6中任一权利要求所述的方法,其特征在于,所述信息包括所述数据库中的数据的分组、排序或聚合。
20.根据权利要求1至6中任一权利要求所述的方法,其特征在于,所述第一选择项(S1)定义所述数据集(R0)中的字段和各个字段的条件的集合,所述第一结果(R1)表示所述数据集(R0)的子集,所述第二选择项(S2)定义数学函数、所述第一结果(R1)中所包括的一个或多个计算变量以及所述第一结果(R1)中所包括的一个或多个分类变量,所述第二结果(R2)是多维立方体数据结构,所述多维立方体数据结构包含针对各分类变量的每个唯一值对所述一个或多个计算变量运行所述数学函数的结果。
21.一种用于从数据库提取信息的设备,所述设备包括用于执行一系列主计算的部件,所述一系列主计算包括第一主计算(P1)和第二主计算(P2),所述第一主计算(P1)对表示所述数据库的数据集(R0)运行第一选择项(S1)以产生第一结果(R1),并且所述第二主计算(P2)对所述第一结果(R1)运行第二选择项(S2)以产生第二结果(R2),所述设备还包括通过以下操作来高速缓存所述第一结果(R1)和所述第二结果(R2)的部件:
计算作为至少所述第一选择项(S1)的函数的第一选择标识符值(ID1),并且计算作为至少所述第二选择项(S2)和所述第一结果(R1)的函数的第二选择标识符值(ID3);以及
将所述第一选择标识符值(ID1)和所述第一结果(R1)以及所述第二选择标识符值(ID3)和所述第二结果(R2)分别作为关联对象存储在计算机存储器的数据结构中,该数据结构用于存储不同种类的对象集合。
22.根据权利要求21所述的设备,其特征在于,还包括用于使用所述数据结构以基于所述第一选择项(S1)和所述第二选择项(S2)寻找所述第二结果(R2)的部件,其中,所述用于使用所述数据结构的部件包括以下子部件:
第一子部件(a),用于计算作为至少所述第一选择项(S1)的函数的所述第一选择标识符值(ID1);
第二子部件(b),用于基于所述第一选择标识符值(ID1)搜索所述数据结构的对象以定位所述第一结果(R1);
第三子部件(c),用于如果第二子部件(b)找到了所述第一结果(R1),则计算作为所述第一结果(R1)和所述第二选择项(S2)的函数的所述第二选择标识符值(ID3),并且基于所述第二选择标识符值(ID3)搜索所述数据结构的对象以定位所述第二结果(R2);
第四子部件(d),用于如果第二子部件(b)未找到所述第一结果(R1),则执行所述第一主计算(P1)以产生所述第一结果(R1),计算作为所述第一结果(R1)和所述第二选择项(S2)的函数的所述第二选择标识符值(ID3),并且基于所述第二选择标识符值(ID3)搜索所述数据结构的对象以定位所述第二结果(R2);以及
第五子部件(e),用于如果第三子部件(c)或第四子部件(d)未找到所述第二结果(R2),则执行所述第二主计算(P2)以产生所述第二结果(R2)。
23.根据权利要求21所述的设备,其特征在于,还包括用于计算作为所述第一结果(R1)的函数的第一结果标识符值(ID2)的部件,其中,所述存储操作还包括以下操作:将所述第一选择标识符值(ID1)和所述第一结果标识符值(ID2)作为关联对象存储在所述数据结构中;以及将所述第一结果标识符值(ID2)和所述第一结果(R1)作为关联对象存储在所述数据结构中。
24.根据权利要求23所述的设备,其特征在于,还包括用于使用所述数据结构以基于所述第一选择项(S1)和所述第二选择项(S2)寻找所述第二结果(R2)的部件,其中,所述用于使用所述数据结构的部件包括以下子部件:
第一子部件(a),用于计算作为至少所述第一选择项(S1)的函数的所述第一选择标识符值(ID1);
第二子部件(b),用于基于所述第一选择标识符值(ID1)搜索所述数据结构的对象以定位所述第一结果标识符值(ID2),并且基于所述第一结果标识符值(ID2)搜索所述数据结构的对象以定位所述第一结果(R1);
第三子部件(c),用于如果第二子部件(b)找到了所述第一结果(R1),则计算作为所述第一结果(R1)和所述第二选择项(S2)的函数的所述第二选择标识符值(ID3),并且基于所述第二选择标识符值(ID3)搜索所述数据结构的对象以定位所述第二结果(R2);
第四子部件(d),用于如果第二子部件(b)未找到所述第一结果标识符值(ID2)或所述第一结果(R1),则执行所述第一主计算(P1)以产生所述第一结果(R1),计算作为所述第一结果(R1)和所述第二选择项(S2)的函数的所述第二选择标识符值(ID3),并且基于所述第二选择标识符值(ID3)搜索所述数据结构的对象以定位所述第二结果(R2);以及
第五子部件(e),用于如果第三子部件(c)或第四子部件(d)未找到所述第二结果(R2),则执行所述第二主计算(P2)以产生所述第二结果(R2)。
25.根据权利要求23所述的设备,其特征在于,在计算所述第二选择标识符值(ID3)时,由所述第一结果标识符值(ID2)来表示所述第一结果(R1)。
26.根据权利要求25所述的设备,其特征在于,还包括用于使用所述数据结构以基于所述第一选择项(S1)和所述第二选择项(S2)寻找所述第二结果(R2)的部件,其中,所述用于使用所述数据结构的部件包括以下子部件:
第一子部件(a),用于计算作为至少所述第一选择项(S1)的函数的所述第一选择标识符值(ID1);
第二子部件(b),用于基于所述第一选择标识符值(ID1)搜索所述数据结构的对象以定位所述第一结果标识符值(ID2);
第三子部件(c),用于如果第二子部件(b)找到了所述第一结果标识符值(ID2),则计算作为所述第一结果标识符值(ID2)和所述第二选择项(S2)的函数的所述第二选择标识符值(ID3),并且基于所述第二选择标识符值(ID3)搜索所述数据结构的对象以定位所述第二结果(R2);
第四子部件(d),用于如果第二子部件(b)未找到所述第一结果标识符值(ID2),则执行所述第一主计算(P1)以产生所述第一结果(R1),计算作为所述第一结果(R1)的函数的所述第一结果标识符值(ID2),计算作为所述第一结果标识符值(ID2)和所述第二选择项(S2)的函数的所述第二选择标识符值(ID3),并且基于所述第二选择标识符值(ID3)搜索所述数据结构的对象以定位所述第二结果(R2);
第五子部件(e),用于如果第三子部件(c)未找到所述第二结果(R2),则基于所述第一结果标识符值(ID2)搜索所述数据结构的对象以定位所述第一结果(R1),并且执行所述第二主计算(P2)以产生所述第二结果(R2);
第六子部件(f),用于如果第五子部件(e)未找到所述第一结果(R1),则执行所述第一主计算(P1)以产生所述第一结果(R1),并且执行所述第二主计算(P2)以产生所述第二结果(R2);以及
第七子部件(g),用于如果第四子部件(d)未找到所述第二结果(R2),则执行所述第二主计算(P2)以产生所述第二结果(R2)。
27.根据权利要求21、23或25所述的设备,其特征在于,还包括用于计算作为所述第二结果(R2)的函数的所述第二结果标识符值(ID4)的部件,其中,所述存储操作还包括以下操作:将所述第二选择标识符值(ID3)和所述第二结果标识符值(ID4)作为关联对象存储在所述数据结构中;以及将所述第二结果标识符值(ID4)和所述第二结果(R2)作为关联对象存储在所述数据结构中。
28.根据权利要求21至26中任一权利要求所述的设备,其特征在于,各个标识符值在统计上是唯一的。
29.根据权利要求21至26中任一权利要求所述的设备,其特征在于,各个标识符值是由哈希函数生成的数字指纹。
30.根据权利要求29所述的设备,其特征在于,所述数字指纹包括至少256位。
31.根据权利要求21至26中任一权利要求所述的设备,其特征在于,还包括用于至少基于包含所述关联对象的数据记录的大小,在所述数据结构中选择性地删除所述数据记录的部件。
32.根据权利要求31所述的设备,其特征在于,所述选择性删除的部件用于促进删除包含所述第一结果(R1)的数据记录。
33.根据权利要求31所述的设备,其特征在于,还包括将各数据记录与权重值相关联的部件,其中,所述权重值作为各数据记录的使用率参数、各数据记录的计算时间参数和各数据记录的大小参数的函数而被计算出。
34.根据权利要求33所述的设备,其特征在于,还包括用于通过计算由W=U*T/M给出的权重函数的值来计算所述权重值的部件,其中,U是所述使用率参数,T是所述计算时间参数,并且M是所述大小参数,W是所述权重值。
35.根据权利要求33所述的设备,其特征在于,所述使用率参数的值在每当访问数据记录时递增,同时作为时间的函数指数递减。
36.根据权利要求33所述的设备,其特征在于,所述选择性删除的部件是基于所述数据结构中的数据记录的所述权重值的。
37.根据权利要求31所述的设备,其特征在于,所述选择性删除的部件基于所述数据结构的当前大小和存储器阈值之间的比较而触发。
38.根据权利要求21至26中任一权利要求所述的设备,其特征在于,所述数据库是动态数据库,并且作为至少所述第一选择项(S1)和所述数据集(R0)的函数而计算出所述第一选择标识符值(ID1)。
39.根据权利要求21至26中任一权利要求所述的设备,其特征在于,所述信息包括所述数据库中的数据的分组、排序或聚合。
40.根据权利要求21至26中任一权利要求所述的设备,其特征在于,所述第一选择项(S1)定义所述数据集(R0)中的字段和各个字段的条件的集合,所述第一结果(R1)表示所述数据集(R0)的子集,所述第二选择项(S2)定义数学函数、所述第一结果(R1)中所包括的一个或多个计算变量以及所述第一结果(R1)中所包括的一个或多个分类变量,所述第二结果(R2)是多维立方体数据结构,所述多维立方体数据结构包含针对各分类变量的每个唯一值对所述一个或多个计算变量运行所述数学函数的结果。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8176108P | 2008-07-18 | 2008-07-18 | |
SE0801708-9 | 2008-07-18 | ||
SE08017089 | 2008-07-18 | ||
SE0801708A SE532252C2 (sv) | 2008-07-18 | 2008-07-18 | Förfarande och apparat för extrahering av information från en databas |
US61/081,761 | 2008-07-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101635001A CN101635001A (zh) | 2010-01-27 |
CN101635001B true CN101635001B (zh) | 2013-09-11 |
Family
ID=41327598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101613238A Active CN101635001B (zh) | 2008-07-18 | 2009-07-20 | 从数据库提取信息的方法和设备 |
Country Status (4)
Country | Link |
---|---|
CN (1) | CN101635001B (zh) |
DK (1) | DK2146292T3 (zh) |
ES (1) | ES2713097T3 (zh) |
SE (1) | SE532252C2 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101840430B (zh) * | 2010-04-28 | 2012-02-29 | 北京握奇数据系统有限公司 | 智能卡数据库多表操作方法及装置 |
US9563658B2 (en) * | 2012-08-20 | 2017-02-07 | Oracle International Corporation | Hardware implementation of the aggregation/group by operation: hash-table method |
CN104268136A (zh) * | 2013-07-30 | 2015-01-07 | 深圳市华傲数据技术有限公司 | 一种记录分组方法和装置 |
CN107239484A (zh) * | 2017-04-17 | 2017-10-10 | 腾讯科技(深圳)有限公司 | 数据库操作方法、装置和计算机设备 |
CN109117435B (zh) * | 2017-06-22 | 2021-07-27 | 索意互动(北京)信息技术有限公司 | 一种客户端、服务器、检索方法及其系统 |
CN112015758B (zh) * | 2020-08-27 | 2023-07-28 | 中国平安财产保险股份有限公司 | 产品取码方法、装置、计算机设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1537290A (zh) * | 2001-07-30 | 2004-10-13 | ���ִ�ѧ | 数据处理系统和方法 |
-
2008
- 2008-07-18 SE SE0801708A patent/SE532252C2/sv unknown
-
2009
- 2009-07-03 ES ES09164490T patent/ES2713097T3/es active Active
- 2009-07-03 DK DK09164490.6T patent/DK2146292T3/da active
- 2009-07-20 CN CN2009101613238A patent/CN101635001B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1537290A (zh) * | 2001-07-30 | 2004-10-13 | ���ִ�ѧ | 数据处理系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
ES2713097T3 (es) | 2019-05-17 |
CN101635001A (zh) | 2010-01-27 |
SE0801708L (sv) | 2009-11-24 |
DK2146292T3 (da) | 2019-05-06 |
SE532252C2 (sv) | 2009-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5288129B2 (ja) | コンピュータによって実現される方法、コンピュータ読取可能媒体およびデータベースから情報を抽出するための装置 | |
EP2924594B1 (en) | Data encoding and corresponding data structure in a column-store database | |
CN105320719B (zh) | 一种基于项目标签和图形关系的众筹网站项目推荐方法 | |
CN101635001B (zh) | 从数据库提取信息的方法和设备 | |
CN110472004B (zh) | 一种科技情报数据多级缓存管理的方法及系统 | |
US20110131208A1 (en) | Systems and methods for large-scale link analysis | |
CN105224532A (zh) | 数据处理方法及装置 | |
Salah et al. | A highly scalable parallel algorithm for maximally informative k-itemset mining | |
CN109542612A (zh) | 一种热点关键字获取方法、装置及服务器 | |
CN113918807A (zh) | 数据推荐方法、装置、计算设备及计算机可读存储介质 | |
Mohamed et al. | A proposed hybrid algorithm for mining frequent patterns on Spark | |
CN110532284B (zh) | 海量数据存储和检索方法、装置、计算机设备及存储介质 | |
Kumar et al. | Recombinant sort: N-dimensional cartesian spaced algorithm designed from synergetic combination of hashing, bucket, counting and radix sort | |
Luo et al. | Autosmart: An efficient and automatic machine learning framework for temporal relational data | |
Nguyen et al. | Investigation of sequential pattern mining techniques for web recommendation | |
JP5555238B2 (ja) | ベイジアンネットワーク構造学習のための情報処理装置及びプログラム | |
Li et al. | On mining webclick streams for path traversal patterns | |
CN109213972B (zh) | 确定文档相似度的方法、装置、设备和计算机存储介质 | |
CN115292737A (zh) | 一种多关键词模糊搜索加密方法、系统及电子设备 | |
Alrahwan et al. | ASCF: Optimization of the Apriori Algorithm Using Spark‐Based Cuckoo Filter Structure | |
Lee et al. | K2vTune: A workload-aware configuration tuning for RocksDB | |
CN109412883A (zh) | 推荐路径追踪方法、装置和系统 | |
Tseng et al. | A minimal perfect hashing scheme to mining association rules from frequently updated data | |
CN113836087B (zh) | 一种基于文件模式的大数据层存储方法 | |
Salah et al. | Fast parallel mining of maximally informative k-itemsets in big data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |