CN101479697A - 用于数据存储和检索的系统和方法 - Google Patents
用于数据存储和检索的系统和方法 Download PDFInfo
- Publication number
- CN101479697A CN101479697A CNA2007800243853A CN200780024385A CN101479697A CN 101479697 A CN101479697 A CN 101479697A CN A2007800243853 A CNA2007800243853 A CN A2007800243853A CN 200780024385 A CN200780024385 A CN 200780024385A CN 101479697 A CN101479697 A CN 101479697A
- Authority
- CN
- China
- Prior art keywords
- data set
- data
- algebraic
- algebraic relation
- relation
- 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.)
- Granted
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/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24547—Optimisations to support specific applications; Extensibility of optimisers
Abstract
用于存储和访问数据的系统和方法。查询语言语句可以引用多个数据集,并且可以由查询语言语句组成数据集之间的多个代数关系。代数关系可以用来定义新的数据集和优化对数据集的访问。可以随时间积累代数关系的存储库。可以生成并且评估代数关系的备选汇集以确定在计算和提供所请求的数据集时使用的代数关系的优化汇集。可以使用代数关系而不是从储存器检索底层数据集来执行优化。结果可以按处理器速度执行优化以使为了从更慢储存器检索数据而需要的时间量最少。
Description
交叉引用
本申请与以下共同未决专利申请有关:于2006年5月15日提交的美国专利申请第11/383,476号;于2006年5月15日提交的美国专利申请第11/383,477号;于2006年5月15日提交的美国专利申请第11/383,478号;于2006年5月15日提交的美国专利申请第11/383,479号;于2006年5月15日提交的美国专利申请第11/383,480号;以及于2006年5月15日提交的美国专利申请第11/383,482号,通过援引将各申请整体结合于此。
技术领域
本发明的领域涉及用于存储和访问数据的系统和方法,并且具体涉及数据存储、数据库查询和数据检索。
背景技术
许多数据库和数据存储系统具有在接收数据时对数据施加结构的预定方案。方案可以不捕获与在数据被原始提供时的数据结构有关的信息。此外,可能围绕并未针对实际提供或者查询数据的方式而优化的预定义关系来设计方案。在方案中固有的逻辑关系也可能得出并未针对实际存储数据的方式而优化的数据库结构。另外,在方案中固有的逻辑关系和/或它们的关联数据库结构可能约束在数据查询中可以指定的逻辑关系的种类。单个查询可能需要多次访问储存器,这造成明显的低效率,特别是如果在处理速度与储存器访问速度之间的差距增大则更是如此。尽管已经投入大量努力以改进用于关系数据库和其它常规数据库的访问方法,但是它们仍固有地受到对数据施加的预定义关系和所得结构的限制。在许多数据库的这些关系和结构之间的紧密耦合也使得难以高效地捕获、转译和处理按照比如展开文件、逗号分隔值(CSV)文件这样的各种不同格式提供的数据和使用可扩展标记语言(XML)而定义的数据。
发明内容
本发明的诸多方面提供用于存储和访问数据的系统和方法。示例性实施例可以包括用于存储数据集的数据存储库、用于存储关于数据集的信息的数据集信息存储库、用于存储数据集之间代数关系的代数关系存储库、用于使用代数关系来优化对来自数据存储库的数据集的存储和访问的优化器和用于计算代数关系以提供数据集的集合处理器。在示例性实施例中,模块可以通过硬件、固件和/或软件的组合来提供并且可以在一些示例性实施例中使用并行处理和分布式存储。
本发明的一个方面提供一种用于由查询语言数据组成数据集之间代数关系的方法。另一方面提供一种用于提供所请求的数据集的方法。查询语言语句可以呈现给系统。例如,查询语言语句可以是使用关系数据模型的结构化查询语言(SQL)格式的或者是使用标记语言格式的XQuery格式的。多个代数关系然后由查询语言语句组成并且存储于代数关系存储库中。以这一方式,在语句呈现给系统时可以随时间在关系存储库中积累数据集之间的代数关系。在一些示例性实施例中,查询语言语句可以不请求所请求的数据集、但是仍然可以用来组成将在提供所请求的数据集时有用的代数关系。可以从关系存储库检索这些代数关系中的至少一些代数关系并且使用它们来提供所请求的数据集。
在又一方面中,在语句呈现给系统时可以随时间在关系存储库中积累数据集之间的代数关系。可以生成和评估代数关系的备选汇集以确定在计算和提供所请求的数据集时使用的代数关系的优化汇集。可以使用代数关系而不是从储存器检索底层数据集来执行优化。结果可以按处理器速度执行优化以使为了从更慢储存器检索数据而需要的时间量最少。
在另一方面中,查询语言语句请求提供数据集,而关系存储库包括非由查询语言语句组成的用于数据集的其它代数关系。在一些例子中,由查询语言语句组成的代数关系和在关系存储库中的其它代数关系均可以用来提供所请求的数据集。在又一方面中,优化器可以用来生成定义与所请求的数据集相等的结果的代数关系的多个汇集,而优化标准可以用来选择在提供所请求的数据集时使用的代数关系的汇集之一。在示例性实施例中,优化标准可以基于对需要从储存器传送的数据量和/或为了计算代数关系的汇集而从储存器传送数据集所需要的时间量的估计。在另一例子中,优化标准可以区别在数据存储库中按照不同物理格式或者在不同位置包含相同逻辑数据的等价数据集。
另一方面提供一种用于提供所请求的数据集的方法,其中可以组成各自定义与所请求的数据集相等的结果的至少两个备选代数关系。数据集可以包含在数据存储库中按照不同物理格式和/或在不同位置存储的相同逻辑数据。例如,数据集可以按照逗号分隔值(CSV)格式、二进制串编码(BSTR)格式、固定偏移(FIXED)格式、类型编码数据(TED)格式和/或XML或者其它标记语言格式存储于存储介质上。类型编码数据(TED)是包含数据和如下关联值的文件格式,该关联值表明这样的数据的格式。这些仅为举例,并且可以在其它实施例中使用其它物理格式。数据集也可以在数据存储库中存储于不同位置、比如在分布式存储系统中存储于不同盘驱动器,并且可以通过具有不同数据传送速度和/或不同可用带宽的不同数据通道来访问。可以至少部分地基于在代数关系中引用的数据集的物理格式和/或位置来选择代数关系之一用于在提供所请求的数据集时使用。在其它例子中,可以至少部分地基于用来检索在代数关系中引用的数据集的一个或者多个通道的速度和可用带宽来选择代数关系。
另一方面提供一种用于使用按照不同物理格式对运算数进行运算的函数来提供所请求的数据集的方法。数据集可以按照多个物理格式如逗号分隔值(CSV)格式、二进制串编码(BSTR)格式、固定偏移(FIXED)格式、类型编码数据(TED)格式和/或XML或者其它标记语言格式进行存储。可以针对可以用于运算数的物理格式的不同组合来定义逻辑等价函数。为了提供所请求的数据集,可以组成定义与所请求的数据集相等的结果的代数关系。代数关系可以引用储存器中的数据集。为了根据代数关系来计算所请求的数据集,从储存器检索所引用的数据集,并且将函数应用于数据集以执行在代数关系中指定的运算。用来计算代数关系的函数可以选择为对应于检索数据集的物理格式。以这一方式,可以使用对于检索数据集的物理格式而言最优的函数而无需单独格式转换。
在又一方面中,组成定义与所请求的数据集相等的结果的多个代数关系。一些代数关系可以按照不同物理格式来引用相同逻辑数据。将数据集的物理格式、可用以按照那些格式对数据集进行运算的函数和/或计算可能需要的任何格式转换纳入考虑之中的优化标准可以应用于代数关系。代数关系可以基于优化标准来选择并且用来提供所请求的数据集。格式特定的函数然后用来计算所选代数关系。基于在代数关系中引用的数据集的物理格式来选择至少一些函数。
在另一方面中,代数关系可以用来定义新的数据集。在一个示例性实施例中,可以提供用于存储关于数据集的信息的数据集信息存储库。可以通过将数据集标识符与数据集关联并且在数据信息存储库中存储数据集标识符来创建新的数据集。在一些例子中,新的数据集可以是作为查询语言语句的部分呈现给系统的显式数据集。
在另一方面中,查询语言语句可以指定在接收查询语言语句时尚未存储于数据存储库中的一个或者多个数据集。在一些实施例中,可以通过代数关系来定义数据集而无需在储存器中实现数据集。
在另一方面中,在数据集信息存储库中存储表明数据集创建时间的时间信息。在又一方面中,可以通过从数据集信息存储库去除与在指定时间之前的时间信息关联的数据集来临时重新定义数据集信息存储库。如果未实现的数据集引用具有在指定时间之前的时间信息的数据集,则可以在去除所引用的数据集之前在数据存储库中实现和存储该数据集。
另一方面提供一种用于使用方案之间的映射来提供所请求数据集的方法。可以提供基于不同数据模型的多个方案之间的映射。语句可以基于不同方案和数据模型呈现给系统。例如,语句可以按照基于关系数据模型的结构化查询语言(SQL)格式和/或基于可扩展标记(XML)数据模型的XQuery格式作为查询语句呈现给系统。这些语句和数据模型仅为举例,并且可以在其它例子中支持其它语句和数据模型。可以由基于不同方案和数据模型呈现给系统的语句组成数据集之间的代数关系。当基于特定方案和数据模型来请求数据集时,该映射允许在提供所请求的数据时使用基于其它方案和数据模型的代数关系。
在又一方面中,可以组成定义与所请求的数据集相等的结果的多个代数关系。优化标准可以用来选择代数关系之一以计算所请求的数据集。可以由基于不同方案和数据模型的语句组成代数关系。可以提供在基于不同数据模型的方案之间的映射。结果可以跨更广的可能代数关系集执行优化以提供所请求的数据集。即使代数关系是由基于使用不同数据模型的不同方案的语句组成的,仍可考虑这些代数关系。例如,可以由按照基于关系数据模型的结构化查询语言(SQL)格式和基于可扩展标记语言(XML)模型的XQuery格式呈现给系统的查询语句组成代数关系。这些代数关系然后可以用于在对向系统呈现的后续查询语句做出响应时的优化。例如,可以在对XQuery语句做出响应时使用由SQL语句组成的代数关系。类似地,可以在对SQL语句做出响应时使用由XQuery语句组成的代数关系。这些仅为举例,并且可以在其它例子中使用其它类型的语句和数据模型。
另一方面提供一种用于使用虚拟化来存储数据集的方法。可以从数据存储库去除数据集并且通过关系存储库中的代数关系来定义数据集。数据集信息可以包括指定在数据存储库中是否实现各相应数据集的信息。可以建立用于确定应当何时虚拟化数据集的标准。例如,该标准可以基于数据集的大小、已经引用它的次数和/或在数据存储库中已经访问数据集的频率。可以考虑从数据存储库去除在数据存储库中已经实现的并且满足标准的数据集。在示例性实施例中,如果在关系存储库中有基于在数据存储库中实现的其它数据集(无论是直接地还是间接地通过引用如下其它代数关系,这些代数关系又直接地或者间接地基于所实现的数据集)来定义数据集的代数关系,则可以去除这些数据集。在去除数据集之后,可以改变数据集信息存储库中关于该数据集的信息以表明在数据存储库中未实现所标识的数据集。
在又一方面中,可以选择数据集以用于通过将该数据集分成子集来对其进行优化,然后通过从数据存储库去除该数据集来虚拟化该数据集。例如,作为所选数据集的子集的数据集可以添加到数据存储库。在一些例子中,子集可以是所选数据集的具有相等基数的分集或者可以基于用于所选数据集中的数据项的标量值的范围来定义。这些例子仅为举例,并且可以在其它例子中定义其它子集。可以组成基于向数据存储库添加的子集的并集来定义所选数据集的代数关系。然后可以从数据存储库去除所选数据集,并且可以改变数据集信息存储库中的信息以表明在数据存储库中未实现所选数据集。
在又一方面中,可以使用引用虚拟数据集的代数关系从系统检索所请求的数据集。例如,可以从数据存储库去除所选数据集并且用定义所选数据集的代数关系来取代所选数据集。即使在数据存储库中不再实现所选数据集,仍然可以使代数关系在关系存储库中可用以在提供所请求的其它数据集时使用。例如,可以组成定义所请求的数据集的代数关系的多个汇集。可以通过使用定义所选数据集的代数关系来组成这些代数关系中的一些代数关系以替换对(虚拟的)所选数据集的引用。例如,可以用对在数据存储库中实现的一个或者多个子集进行引用的表达式来取代引用所选数据集的表达式。优化标准然后可以用来选择代数关系的汇集之一以计算所请求的数据集。
在另一方面中,提供一种具有编程用以执行本发明的上述方面中一个或者多个方面的一个或者多个处理器的计算机系统。该计算机系统可以包括用以提供数据集存储库的易失性和/或非易失性储存器。在另一方面中,一个或者多个硬件加速器或者其它电路被配置用以执行本发明的上述方面中的一个或者多个方面。在另一方面中,提供一种具有用于执行本发明的上述方面中一个或者多个方面的可执行指令的计算机可读介质。
应当理解,本发明的上述方面可以单独地加以运用或者与在上文中或者在以下描述中描述的本发明其它方面组合运用。
通过援引将在本说明书中提到的所有出版物和专利申请结合于此,就如同具体地和单独地指明援引结合各单独出版物或者专利申请一样。
附图说明
在所附权利要求中具体地阐述本发明的新颖特征。将通过参考对示例实施例进行阐述的以下具体描述来获得对本发明的特征和优点的更好理解,其中在这些示例实施例中利用了本发明的原理并且在这些示例实施例的附图中:
图1是示出了可以与本发明的示例性实施例一起使用的计算机系统的第一例子架构的框图。
图2是示出了可以与本发明的示例性实施例一起使用的计算机网络的框图。
图3是示出了可以与本发明的示例性实施例一起使用的计算机系统的第二例子架构的框图。
图4A是图示了本发明一个示例性实施例的逻辑架构的框图。
图4B是图示了在本发明一个示例性实施例的集合管理器模块中存储的信息的框图。
图5是根据本发明的一个示例性实施例的用于提交数据集的方法的流程图。
图6是根据本发明的一个示例性实施例的用于提交语句的方法的流程图。
图7图示了用于图6的方法的例子语句和XSN树。
图8是根据本发明的一个示例性实施例的用于实现数据集的方法的流程图。
图9A是根据本发明的一个示例性实施例的用于代数和运算优化的方法的流程图。
图9B是根据本发明的一个备选示例性实施例用于代数和运算优化的方法的流程图。
图9C、图9D、图9E、图9F、图9G和图9H图示了根据本发明示例性实施例用于综合优化的方法。
图10A图示了例子运算节点(OptoNode)结构的字段。
图10B是根据本发明一个示例性实施例的例子运算节点结构的框图。
图11是根据本发明的一个示例性实施例的用于根据代数关系来计算数据集的方法的流程图。
图12A和图12B是根据本发明一个示例性实施例的例子XSN树的框图。
图13A、图13B、图13C和图13D是图示了可以在存储管理器的示例性实施例中使用的缓存器链接的一个例子实施的框图。
图14A是根据一个示例性实施例的关系数据到XML变换的框图。
图14B是根据一个示例性实施例的关系数据到有向图变换的框图。
具体实施方式
尽管本发明对各种修改和备选构造是开放的,但是这里将具体描述附图中所示实施例。然而将理解并无将本发明限于公开的特定形式的意图。反之,本意在于覆盖落入如在所附权利要求中表达的本发明实质和范围内的所有修改、等效含义和备选构造。
本发明的示例性实施例提供了使用扩展集合处理和代数优化的用于数据存储和处理的系统和方法。在一个例子中,基于扩展集合理论的通用数据模型可以用来根据以种类广泛的各种不同形式提供的数据来捕获标量、结构和时间信息。例如,可以在无信息损失的情况下捕获并且高效地处理固定格式、逗号分隔值(CSV)格式、可扩展标记语言(XML)和其它格式的数据。这些编码称为物理格式。可以按照任何数目的不同物理格式存储相同的逻辑数据。示例性实施例可以在保存相同的逻辑数据同时在这些格式之间无缝地转译。
通过使用严格的数学数据模型,示例性实施例可以维护数据的代数完整性和它们的相互关系、提供时间不变性并且实现自适应数据重建。
代数完整性使得可以用对代数关系的操控替换对它所建模的信息的操控。例如,可以通过按处理器速度来评估代数表达式而无需通过按缓慢得多的速度从储存器检索和检查各种数据集来处理查询。
可以通过维护信息的恒定值、结构和位置,直至从系统丢弃它来提供时间不变性。比如“插入”、“更新”和“删除”功能这样的标准数据库运算创建被定义为代数表达式的新的数据,这些新的数据可以部分地包含对在系统中已经标识的数据的引用。由于这样的运算并未更改原始数据,所以示例性实施例提供用以如系统中包含的信息在任何时间存在于它的记录历史中一样检验该信息的能力。
与代数完整性组合的自适应数据重建允许在维护信息的逻辑结构与物理结构之间的严格数学映射的同时更改逻辑结构和物理结构。自适应数据重建可以在示例性实施例中用来加速查询处理并且使在持久储存器和易失性储存器之间的数据传送最少。
示例性实施例可以使用这些特征以提供在访问、整合和处理无论是按照XML格式、关系格式还是其它数据格式提供的动态变化数据时的显著效率。除了其它优点之外,示例性实施例还可以提供:
·独立于信息结构,这实现利用等同的设施并且无需大量编程用数学方式对所有类型的企业信息进行建模和处理。
·消除数据预构造以及数据提取、变换和加载操作以及多数数据库索引结构和它们的关联储存器。
·经由自适应优化的更快查询处理,这些优化通过自适应地重建工作数据集来消除多余操作并且减少跨持久/易失性储存器-边界性能障碍的数据传送。
·高度异步和并行的内部操作,这些操作是可缩放的并且完全地利用大规模并行的计算和存储系统。
·由于无状态的实体记录而提高性能和增加容错性并且因而使串行可重用资源最少。
·能够如数据库在先前时间存在于它们的记录历史中一样查询这些数据库
数学数据模型允许在种类广泛的计算机架构和系统中使用示例性实施例并且自然地在大规模并行的计算和存储系统中有用武之地。现在将描述可以与示例性实施例一起使用的一些例子计算机架构和系统。
图1是示出了可以与本发明的示例性实施例一起使用的计算机系统100的第一例子架构的框图。如图1中所示,例子计算机系统可以包括用于处理指令的处理器102,比如Intel XeonTM处理器、AMD OpteronTM处理器或者其它处理器。多个执行线程可以用于并行处理。在一些实施例中,无论是在单个计算机系统中、在群集系统还是经过网络的分布式跨越系统中也可以使用多个处理器或者具有多个芯的处理器。
如图1中所示,高速缓存104可以连接到处理器102中或者结合于处理器102中以便为处理器102最近已经使用或者正在频繁使用的指令或者数据提供高速存储器。处理器102通过处理器总线108连接到北桥106。北桥106通过存储器总线112连接到随机存取存储器(RAM)110并且通过处理器102来管理对RAM 110的访问。北桥106也通过芯片组总线116连接到南桥114。南桥114又连接到外设总线118。外设总线可以例如是PCI、PCI-X、PCI Express或者其它外设总线。北桥和南桥常常称为处理器芯片组并且管理在处理器、RAM与外设总线118上的外设部件之间的数据传送。在一些备选架构中,北桥的功能可以结合到处理器中而不是使用分离的北桥芯片。
在一些实施例中,系统100可以包括附接到外设总线118的加速器卡122。该加速器可以包括现场可编程门阵列(FPGA)或者用于加速某些处理的其它硬件。例如,加速器可以用于自适应的数据重建或者评估在扩展集合处理中使用的代数表达式。
软件和数据存储于外部储存器124中并且可以加载到RAM 110和/或高速缓存104中以供处理器使用。系统100包括用于管理系统资源的操作系统如Linux或者其它处理系统以及用于根据本发明的示例性实施例来管理数据存储和优化的在操作系统之上运行的应用软件。
在这一例子中,系统100也包括连接到外设总线的网络接口卡(NIC)120和121,这些NIC用于提供通向外部储存器如网络附接储存器(NAS)和可以用于分布式并行处理的其它计算机系统的网络接口。
图2是示出了具有多个计算机系统202a、202b、202c和网络附接储存器(NAS)204a、204b和204c的网络200的框图。在示例性实施例中,计算机系统202a、202b和202c可以管理数据存储并且优化对存储于网络附接储存器(NAS)204a、204b和204c中的数据的数据访问。数学模型可以用于数据并且使用跨计算机系统202a、b、c的分布式并行处理来评估。计算机系统202a、202b和202c还可以提供用于网络附接储存器(NAS)204a、204b和204c中所存储数据的自适应数据重建的并行处理。这仅为举例并且可以使用种类广泛的其他计算机架构和系统。例如,可以使用刀片(blade)服务器来提供并行处理。可以经过背板连接处理器刀片用以提供并行处理。储存器也可以连接到背板或者经过分离的网络接口作为网络附接储存器(NAS)。
在示例性实施例中,处理器可以维护分离的存储器空间并且经过网络结构、背板或者其它连接器发送数据以供其它处理器并行处理。在其它实施例中,一些或者所有处理器可以使用共享式虚拟地址存储器空间。
图3是根据一个示例性实施例的使用共享式虚拟地址存储器空间的多处理器计算机系统300的框图。该系统包括可以访问共享式存储器子系统304的多个处理器302a-f。该系统在存储器子系统304中结合多个可编程硬件存储器算法处理器(MAP)306a-f。各MAP306a-f可以包括存储器308a-f和一个或者多个现场可编程门阵列(FPGA)310a-f。MAP提供可配置的功能单元,而特定算法或者算法部分可以提供给FPGA 310a-f用于与相应处理器密切配合进行处理。例如,MAP可以用来在示例性实施例中评估关于数据模型的代数表达式并且执行自适应数据重建。在这一例子中,所有处理器出于这些目的可全局访问各MAP。在一个配置中,各MAP可以使用直接存储器存取(DMA)来访问关联存储器308a-f,这允许它独立于相应微处理器302a-f并且与相应微处理器302a-f异步地执行任务。在这一配置中,一个MAP可以将结果直接馈送到另一MAP用于算法的流水线和并行执行。
上述计算机架构和系统仅为举例,并且可以与示例性实施例一起使用包括如下系统在内的种类广泛的各种其它计算机结构和系统,这些系统使用通用处理器、协同处理器、FPGA和其它可编程逻辑器件、片上系统(SOC)、专用集成电路(ASIC)以及其它处理和逻辑单元的任何组合。应当理解,可以用软件或者硬件实施该数据管理和优化系统的全部或者部分并且可以与示例性实施例一起使用任何各种数据存储介质,这些介质包括随机存取存储器、硬驱动、闪存、带驱动、盘阵列、网络附接存放器(NAS)以及其它本地或者分布式数据存储服务和系统。
在示例性实施例中,可以使用在任何上述或者其它计算机架构和系统上执行的软件模块来实施该数据管理和优化系统。在其它实施例中,可以部分地或者完全地用固件、可编程逻辑器件如图3中引用的现场可编程门阵列(FPGA)、片上系统(SOC)、专用集成电路(ASIC)或者其它处理和逻辑单元来实施该系统的功能。例如,可以通过使用硬件加速器卡如图1中所示加速器卡122、利用硬件加速来实施集合处理器和优化器。
图4A是示出了例子软件模块400的逻辑架构的框图。该软件以部件为基础并且如图4A中所示组织成封装具体功能的模块。这仅为举例并且也可以使用其它软件架构。
在这一示例性实施例中,原本按照一个或者多个各种物理格式存储的数据可以呈现给系统。该系统基于扩展集合理论来创建数据的数学表示并且可以将用于在系统内唯一标识的全局唯一标识符(GUID)赋予给该数学表示。在这一示例性实施例中,在内部利用适用于一个或者多个数据集的代数表达式形式来表示数据,其中可以或者可以不在创建代数表达式之时定义数据。数据集包括数据单元的集合,这些数据单元称为数据集的成员。在一个示例性实施例中,单元可以是由运算符、值和/或其它数据集形成的数据值或者代数表达式。在这一例子中,数据集是代数表达式的运算数。定义各种数据集之间关系的代数关系由集合管理器402的软件模块存储和管理。由于所有数据集通过具体代数关系来相关,所以在这一实施例中维护代数完整性。特定数据集可以或者可以不存储于系统中。一些数据集可以通过与其它数据集的代数关系来唯一地定义并且可能需要加以计算以便从系统检索数据集。一些数据集甚至可以通过对尚未提供给系统的数据集进行引用的代数关系来定义并且在某一将来时间提供那些数据之前无法加以计算。
在一个示例性实施例中,代数关系和用于那些代数关系中引用的数据集的GUID一旦在集合管理器402中已经创建和存储它们就不加以更改。这提供如下时间不变性,该时间不变性使得能够管理数据而无需关注锁定或者其它并发管理设备和有关开销。代数关系和用于对应数据集的GUID仅在集合管理器402中加以追加而不会由于新的操作而加以去除或者修改。这造成不断扩张的运算数和代数关系全域(universe),并且可以重现它的被记录历史中在任何时间的信息状态。在这一实施例中,分离的外部标识符可以用来在相同逻辑数据随时间而改变时引用该逻辑数据,但是唯一GUID用来引用数据集在它于特定时间存在时的各实例。集合管理器402可以将GUID与外部标识符和时间戳关联以表明GUID添加到系统的时间。集合管理器402也可以将GUID与关于特定数据集的其它信息关联。此信息可以按列表、表或者其它数据结构存储于设置管理器402(在这一示例性实施例中称为集合全域)中。数据集之间的代数关系也可以按列表、表或者其它数据结构存储于设置管理器402(在这一示例性实施例中称为代数高速缓存)中。
在一些实施例中,可以从集合管理器402清除不必要或者冗余信息,并且可以临时重新定义集合管理器402以限制它的被记录历史的时间范围。例如,可以自动地清除不必要或者冗余信息,并且可以基于用户设置或者命令定期地压缩(collapse)时间信息。这可以通过从集合管理器402去除具有在指定时间之前的时间戳的所有GUID来实现。也从集合管理器402去除引用那些GUID的所有代数关系。如果引用那些GUID的代数关系定义了其它数据集,则需要在从集合管理器402去除该代数关系之前计算和存储那些数据集。
在一个示例性实施例中,可以从储存器清除数据集,并且系统可能依赖于代数关系以按照需要在以后时间重建数据集。这一过程称为虚拟化。一旦清除实际数据集,可以释放与这样的数据集有关的储存器,但是系统维护用以基于系统中存储的代数关系来标识数据集的能力。在一个示例性实施例中,可以自动地虚拟化大的数据集或者被引用次数少于某一阈值次数的数据集。其它实施例可以使用其它虚拟化标准,这些标准包括虚拟化最近很少或者没有使用的数据集、虚拟化用以释放更快存储器或储存器的数据集或者虚拟化用以增强安全性的数据集(因为在数据集已经虚拟化之后没有另外具备对代数关系的访问权就更难以访问数据集)。这些设置可以是用户可配置的或者系统可配置的。例如,如果集合管理器402包含数据集A以及A等于数据集B和C的交集这一代数关系,则系统可以被配置用以从集合管理器402清除数据集A并且依赖于数据集B和C以及该代数关系以在必要时标识数据集A。在另一示例性实施例中,如果两个或者更多数据集彼此相等,则可以从集合管理器402删除除了一个数据集之外的所有数据集。如果多个集合在逻辑上相等但是有不同的物理格式则可能发生这种情况。在这样的情况下,可以去除除了一个数据集之外的所有数据集以节约物理存储空间。
当系统需要计算或者提供数据集的值时,优化器418可以从集合管理器402检索定义数据集的代数关系。优化器418也可以使用来自集合管理器402的代数关系来生成定义数据集的附加等价代数关系。然后可以选择最高效的代数关系用于计算数据集。
集合处理器404的软件模块提供如下引擎,该引擎用于执行算术运算和逻辑运算以及为了计算代数表达式表示的数据集的值和评估代数关系而需要的函数。集合处理器404还支持自适应数据重建。当通过集合处理器404的运算和函数来操控数据集时,在物理上和逻辑上对其进行处理以加速后续运算和函数。集合处理器404的运算和函数在一个示例性实施例中实施为软件例程。然而,也可以部分地或者完全地用固件、可编程逻辑器件如图3中引用的现场可编程门阵列(FPGA)、片上系统(SOC)、专用集成电路(ASIC)或者其它硬件或者其组合来实施这样的运算和功能。
现在将更具体地描述图4A中所示软件模块。如图4A中所示,软件包括集合管理器402和集合处理器404以及SQL连接器406、SQL转译器408、XSN连接器410、XML连接器412、XML转译器414、XSN接口416、优化器418、存储管理器420、执行程序422和管理员接口424。
在图4A的示例性实施例中,通过三个连接器之一、SQL连接器406、SQL转译器408或者XSN连接器410提供关于数据集的查询和其它语句。各连接器接收和提供特定格式的语句。在一个例子中,SQO连接器406提供通向用户应用以及遵从ODBC的第三方关系数据库系统的、标准的遵从SQL92的ODBC连接器,而XML连接器412提供通向用户应用、遵从规定的第三方XML系统以及软件400在同一或者其它系统上的其它实例的、遵从Web ServicesW3C XQuery的连接器。SQL和XQuery是用于向系统提供查询语言语句的例子,但是也可以使用其它格式。按照这些格式提供的查询语言语句由SQL转译器408和XML转译器414翻译成系统使用的扩展集合符号表示(XSN)格式。XSN连接器410提供用于直接接收XSN格式的语句的连接器。在本说明书下文结束时描述了例子扩展集合符号表示。该例子扩展集合符号表示包括其中关于扩展数据集的语句可以呈现给系统的语法。例子扩展集合符号表示仅为举例并且可以在其它实施例中使用其它符号表示。其它实施例也可以使用不同类型和格式的数据集和代数关系以根据向系统提供的语句来捕获信息。
XSN接口416为来自连接器的所有语句提供单个入口点。按照XSN格式从SQL转译器408、XML转译器414或者XSN连接器410提供语句。使用扩展集合符号表示基于文本的描述来提供语句。XSN接口416提供将文本描述转换成系统使用的内部表示的解析器。如下文进一步所述,在一个例子中该内部表示使用XSN树形数据结构。当解析XSN语句时,XSN接口416可以调用集合管理器402以将GUID赋予给在语句中引用的数据集。也可以将表示XSN语句的整个代数关系解析成本身为代数关系的组成。在一个示例性实施例中,这些组成可以是引用从一个到三个数据集的具有由单个运算组成的表达式的代数关系。各代数关系可以在集合管理器402中存储于代数高速缓存中。可以针对每个新的代数表达式向集合全域添加表示了该代数表达式定义的数据集的GUID。XSN接口416由此组成对在向系统呈现的语句中指定的数据集以及可能在解析语句时创建的新的数据集进行引用的多个代数关系。XSN接口416和集合管理器402以这一方式根据向系统呈现的语句来捕获信息。这些数据集和代数关系然后可以在系统需要计算数据集时用于代数优化。
集合管理器402提供用于存储与系统已知的数据集有关的信息的数据集信息存储库,在此例子中将其称为集合全域。集合管理器402还提供用于存储与系统已知的数据集之间关系的关系存储库,在此例子中将其称为代数高速缓存。图4B图示了根据一个示例性实施例在集合全域450和代数高速缓存452中维护的信息。其它实施例可以使用用以存储与数据集有关的信息的不同数据集信息存储库或者用以存储与系统已知的代数关系有关的信息的不同关系存储库。
如图4B中所示,集合全域450可以维护系统已知的数据集的GUID列表。各GUID是用于系统中各数据集的唯一标识符。集合全域450还可以将关于特定数据集的信息与各GUID关联。此信息可以例如包括用来引用在通过连接器提供的语句中的数据集)的外部标识符(可以是或者可以不是特定数据集特有的)、用以表明数据集变得为系统所知的时间的日期/时间指示符、用以表明数据集格式的格式字段和具有用以表明数据集类型的标记的集合类型。格式字段可以表明用于系统中数据集的逻辑到物理翻译模型。例如,相同逻辑数据能够按照不同物理格式存储于系统中的存储介质上。如这里使用的那样,物理格式指代用于在存储介质上存储逻辑数据时对逻辑数据进行编码的格式而不是使用的特定物理存储介质类型(例如盘、RAM、闪存等)。格式字段表明逻辑数据如何映射到存储介质上的物理格式。例如,数据集可以按照逗号分隔值(CSV格式、二进制串编码(BSTR)格式、固定偏移(FIXED)格式、类型编码数据(TED)格式和/或标记语言格式存储于存储介质上。类型编码数据(TED)是包含数据和如下关联值的文件格式,该关联值表明这样的数据的格式。这些仅为举例,并且可以在其它实施例中使用其它物理格式。尽管集合全域存储关于数据集的信息,但是底层数据可以在这一示例性实施例中存储于别处、比如图1中的储存器124、图2中的网络附接储存器204a、204b和204c、图3中的存储器308a-f或者其它储存器。一些数据集可以不存在于物理储存器中而是可以根据系统已知的代数关系来计算。在一些情况下,甚至可以通过对尚未提供给系统的数据集进行引用的代数关系来定义数据集,但是无法计算该数据集,直到在某一将来时间提供了那些数据。集合类型可以表明数据集在储存器中是否可用(称为被实现)或者它是否通过与其它数据集的代数关系来定义(称为虚拟)。在一些实施例中也可以支持其它类型,比如过渡类型,该类型用以表明处于正在创建或者从系统去除的过程中的数据集。这些仅为举例,并且关于数据集的其它信息在其它实施例中也可以存储于数据集信息存储库中。
如图4B中所示,代数高速缓存452可以维护将一个数据集与另一数据集相关的代数关系列表。在图4B所示例子中,代数关系可以指定数据集等于对一个到三个其它数据集执行的运算或者函数(在图4B中表示为“guid OP guid guid guid”)。例子运算和函数包括投影函数、求逆函数、基数(cardinality)函数、联合(join)函数和约束函数。在本说明书结束时描述了附加例子作为例子扩展集合符号表示的一部分。代数关系也可以指定一个数据集具有与另一数据集的特定关系(在图4B中表示为“guid REL guid”)。例子关系运算符包括等于、子集和不相交以及它们的取非。这些仅为举例,并且可以在其它实施例中使用其它运算、函数和关系运算符,其中包括对多于三个的数据集进行运算的函数。
集合管理器402可以由其它模块访问以添加用于数据集的新GUID以及检索数据集之间的已知关系以供在优化和评估其它代数关系时使用。例如,系统可以接收如下查询语言语句,该语句指定作为第一数据集A与第二数据集B的交集的数据集。所得数据集C可以加以确定并且可以由系统返回。在这一例子中,处理这一请求的模块可以调用集合管理器402以从代数高速缓存获得可以用于评估数据集A与B的交集的、用于数据集A和B的已知关系。有可能使用已知关系来确定结果而无需实际地从存储系统检索用于数据集A和B的底层数据。集合管理器402也可以创建用于数据集C的新GUID并且在代数高速缓存中存储这一关系(即数据集C等于数据集A与B的交集)。只要该关系添加到代数高速缓存,它就可用于在将来的优化和计算中使用。所有数据集合代数关系可以维护于集合管理器402中以提供时间不变性。在新的语句由系统接收时并不删除或者更改现有数据集和代数关系。代之以在接收新的语句时组成新的数据集和代数关系并且将它们添加到集合管理器402。例如,如果请求从数据集去除数据,则新的GUID可以添加到集合全域并且在代数高速缓存中定义为原始数据集与待去除数据之差。
优化器418从XSN接口416接收代数表达式并且优化它们用于计算。当需要计算数据集时(例如出于在存储系统中实现它或者响应于来自用户的请求而返回它的目的),优化器418可以从代数高速缓存中检索定义该数据集的代数关系。优化器418然后可以生成定义等价数据集的其它代数关系的多个汇集。可以使用来自代数高速缓存的其它代数关系来进行代数替换,而代数运算可以用来生成代数等价关系。在一个示例性实施例中,根据代数高速缓存中的信息来生成对与指定数据集相等的数据集进行定义的代数关系的所有可能汇集。
优化器418然后可以确定根据各代数关系的汇集来计算数据集的估计成本。可以通过将成本计算函数应用于各代数关系的汇集来确定成本,而成本最低的代数关系的汇集可以用来计算所指定的数据集。在一个示例性实施例中,成本计算函数确定对为了从储存器检索计算各代数关系的汇集所需要的数据集以及将结果存储到储存器而需要的时间的估计。如果在代数关系的汇集内多次引用同一数据集,则可以仅分配一次用于检索该数据集的成本,因为它在第一次检索它之后将在存储器中可用。在这一例子中,选择需要最少数据传送时间的代数关系的汇集用于计算所请求的数据集。
优化器418可以生成对在不同数据通道上的不同物理位置和/或按照不同物理格式存储的相同逻辑数据进行引用的代数关系的不同汇集。尽管数据在逻辑上可能是相同的,但是具有不同GUID的不同数据集可以用来区别位置或者格式不同的相同逻辑数据。代数关系的不同汇集可以具有不同成本,因为检索来自不同位置和/或格式不同的数据集可能需要不同数量的时间。例如,相同逻辑数据可以在同一数据通道上、但是按照不同格式可用。例子格式可以包括逗号分隔值(CSV)格式、二进制串编码(BSTR)格式、固定偏移(FIXED)格式、类型编码数据(TED)格式和标记语言格式。也可以使用其它格式。如果数据通道相同,则可以选择大小最小(因此从储存器传送的字节数目最少)的物理格式。例如,逗号分隔值(CSV)格式常常小于固定偏移(FIXED)格式。然而,如果更大格式在更高速度的数据通道上可用,则可以优先于更小格式来选择它。具体而言,一般将优先于在更低速度的非易失性储存器如盘驱动或者闪存上可用的更小格式来选择在高速度非易失性存储器如DRAM上可用的更大格式。
以此方式,优化器418利用高处理器速度来优化代数关系而无需访问来自数据储存器的用于数据集的底层数据。用于执行指令的处理器速度常常高于来自储存器的数据访问速度。通过在计算代数关系之前对其进行优化,可以避免来自储存器的不必要数据访问。优化器418可以按处理器速度考虑大量等价代数关系和优化技术并且将为了实际地评估表达式而会需要的数据访问的效率纳入考虑之中。例如,系统可以接收请求如下数据的查询,该数据是数据集A、B与D的交集。优化器418可以从集合管理器402获得与这些数据集有关的已知关系并且在评估表达式之前对其进行优化。例如,它可以从代数高速缓存获得如下现有关系,该关系表明数据集C等于数据集A与B的交集。优化器418可以确定计算数据集C与D的交集而不是计算数据集A、B与D的交集以获得等价结果将是更为有效的。在进行这一确定时,优化器418可以考虑数据集C小于数据集A和B并且将更快地从储存器获得或者可以考虑数据集C在最近运算中已被使用并且已经加载到更高速度的存储器或者高速缓存中。
优化器418也可以通过经由提交通过分析集合和代数高速缓存而发现的附加关系和集合来持续地丰富集合管理器402中的信息。例如,优化器418可以利用未使用的处理器周期来分析关系和数据集以将新的关系添加到代数高速缓存而将有望在优化将来请求的评估时有用的新集合提交到集合全域。一旦关系已经输入到代数高速缓存中,即使集合处理器404正在执行的计算未完成,优化器418仍可在处理后续语句时利用它们。有许多可能有用的用于综合优化的算法。这些算法可以基于对有限数目的集合的如下反复计算的发现,这些反复计算表明在最近时间段出现的使用模式或者趋势。
集合处理器404实际上计算在优化之后的所选代数关系的汇集。集合处理器404提供为了实现在代数扩展集合表达式中指定的数据集而需要的算术处理和逻辑处理。在一个示例性实施例中,集合处理器404提供可以用来计算在代数关系中引用的运算和函数的函数汇集。函数汇集可以包括被配置用以按照特定物理格式接收数据集的函数。在这一例子中,集合处理器404可以提供对数据集进行运算的多个不同的代数等价函数,并且可以按照不同物理格式提供结果。被选择用于计算代数关系的函数对应于在(优化器418可以在优化过程选择的的)那些代数关系中引用的数据集的格式。在示例性实施例中,集合处理器404能够并行处理多个同时运算并且经由存储管理器420允许将数据输入和输出流水线化以使为了穿越持久/易失性储存器边界而需要的总数据量最小。具体而言,可以将来自所选汇集的代数关系分配给各种处理资源以供并行处理。这些处理资源可以包括图1中所示处理器102和加速器122、如图2中所示分布式计算机系统、如图3中所示多个处理器302和MAP 306或者在前述任一个上执行的多个线程。这些仅为举例,并且可以在其它实施例中使用其它处理资源。
执行程序422执行对执行、管理和分配计算资源的整体调度以及恰当的启动和关机。
管理员接口424提供用于管理系统的接口。在示例性实施例中,这可以包括用于导入或者导出数据集的接口。尽管可以通过连接器添加数据集,但是管理员接口424提供用于导入大量数据集或者大小很大的数据的备选机制。可以通过接口指定数据集的位置来导入数据集。集合管理器402然后可以将GUID赋予给数据集。然而,在接收需要处理访问数据的请求之前无需访问底层数据。这允许对系统的很快初始化而无需导入数据以及将数据重新格式化成特定结构。相反,在实际地查询数据时在集合管理器402中定义数据集之间的关系并且将这些关系添加到代数高速缓存。结果,优化是基于使用数据的使用方式(与将预定义关系构建成表或者其它预定义数据结构的集合对比)。
示例性实施例可以用来管理庞大数量的数据。例如,数据存储库可以包括多于一万亿字节、一百万亿字节或者一千万亿字节的数据或者更多数据。可以通过具有大存储容量的存储阵列或者分布式存储系统来提供数据存储库。数据集信息存储库又可以定义大量数据集。在一些情况下,可以有在数据信息存储库中定义的多于一百万个、一千万个或者更多数据集。在一个示例性实施例中,软件可以升级至264个数据集,不过其它实施例可以管理更小或者更大的数据集全域。这些数据集内的许多数据集可以是虚拟的而其它数据集可以在数据存储库中实现。可以时常扫描数据集信息存储库中的实体以确定是否应当虚拟化附加数据集或者是否去除数据集以临时重新定义在数据集信息存储库中捕获的数据集。关系存储库还可以包括数据集之间的大量代数关系。在一些情况下,可以有在关系存储库中包括的一百万个、一千万个或者更多代数关系。在一些情况下,代数关系的数目可以大于数据集的数目。大量数据集和代数关系表示与数据存储库中的数据集有关的可以捕获的海量信息并且允许使用扩展集合处理和代数优化来高效地管理数量极大的数据。上文仅为举例,并且其它实施例可以管理不同数目的数据集和代数关系。
图5是示出了实施以促进将信息导入系统中的软件模块的一个示例性实施例的框图。与传统数据系统不同,该系统未对呈现的数据集直接进行运算。实际上,该系统在数据集信息存储库中记录对新的数据集的引用。在一个示例性实施例中,这通过将新的GUID添加到集合全域来实现。一旦数据集为集合全域所知,系统就可以使用它们。
如先前提到的那样,可以通过在管理接口424内包含的并且下文进一步具体描述的功能向系统添加信息。一种这样的向系统添加信息的方法是通过向导入功能502发出用以导入信息集506的命令501来进行的。在一个示例性实施例中,该命令包括待导入数据集的物理位置、外部标识符和如下值,该值表明数据集用来对数据进行编码以供存储的逻辑到物理映射。可以支持各种物理格式,这些物理格式包括逗号分隔值(CSV)文件、可扩展标记语言(XML)文件、固定长度的文件(FIXED)、XSN格式化文件和其它文件。此外,信息集可以位于各种持久或者易失性存储介质上并且可以本地地附加或者经由网络或者其它通信方法远程地加以访问。信息集也可以分布于多个不同物理存储介质上,或者可以从比如经过网络接收的或者从用户输入(例如将由终端用户实时输入)的数据分组这样的实时数据流提供信息集。在发出命令之后,导入功能502解析命令并且使集合管理器503创建具有关联外部标识符和物理格式值的数据集。集合管理器503然后创建用于关联数据集的GUID并且将各种信息输入到集合全域中,这些信息包括物理格式类型值、外部标识符、关联GUID以及实现了GUID这一事实。导入功能502然后调用存储管理器504以创建在数据集的物理位置标识符与集合管理器503赋予的GUID之间的关联。具体而言,存储管理器504向存储映射505添加如下索引记录,该索引记录包含数据的物理路径和关联GUID。现在将数据集506导入系统中而将控制返回到调用方。即使在储存器上尚未实现数据集(即它是虚拟的),系统也可以捕获关于数据集的信息。例如,数据集C可以定义为数据集A与B的并集。可以在储存器中实现数据集A和B,但是可以在代数高速缓存中仅通过关系“C=A与B的并集”来定义数据集C,而在向集合全域添加用于数据集C的GUID之时在储存器中可以不实现数据集C。
语句提交是用于向系统提供赋予或者关系的过程。语句可以通过各种接口提交到系统。在一个示例性实施例中提供三个接口:用于提交标准的遵从SQL92的语句的SQL连接器;用于提交使用XSN的语句的XSN连接器;以及用于提交遵从Web Services W3C XQuery和其它基于XML的语句的XML连接器。
图6是示出了可以如何实施软件模块以有助于向系统提交语句的一个示例性实施例的框图。在这一例子中,通过SQL连接器601向系统提交标准SQL命令。SQL命令可以包含遵从SQL92的一个或者多个标准SQL语句。SQL连接器601先捕获提交时间以便为在提交的语句内包含的所有集合建立时间值。然后解析命令以便验证SQL语句的语法是正确的。如果有任何语法或者遵从性错误,则将错误消息返回到调用方并且中断提交。如果无错,则SQL连接器601然后构造向SQL转译器602输出的SQL命令的内部可导航表示。SQL转译器602然后将SQL命令的内部可导航表示转换成适当的等价XSN语句。在转译之后,将所得XSN语句传递到XSN接口603以供进一步处理。各语句然后从它的文本XSN表示转换成称为XSN树的内部结构。XSN树提供一种用于有计划地检验对XSN语句的成员的手段以及一种用于对语句的元素进行导航的手段。
然后检验XSN树以确定语句是表示赋值还是关系。如果语句是赋值,则集合管理器402将GUID赋给在语句中指定的代数表达式。然后检验XSN树以将GUID赋给在表达式内的所有数据集和运算并且确定表达式是否包括显式集合或者任何冗余赋值。显式集合是作为语句的部分而输入到系统中的集合,这种情况比如可能在标准SQL“插入”语句的上下文中出现。冗余赋值是包含代数高速缓存中已有的运算和变元的赋值。在显式集合情况下,集合管理器402将新的GUID赋给这些集合,而集合处理器404立即实现这些集合。在通过在代数高速缓存中搜寻包含同一运算和右值(rvalue)的表达式而发现的冗余赋值情况下,从集合管理器402检索代数高速缓存中现有赋值条目的左值(lvalue)的GUID,并且将该GUID赋给表达式内冗余赋值的lvalue。如果赋值并不冗余,则从集合管理器402为该赋值提供新的GUID并且将该GUID赋给表达式内该赋值的lvalue。由语句指定的复杂代数关系也可以分解成本原(primitive)(原子)关系和赋值的汇集。GUID可以提供给这些关系和赋值,而对应代数关系可以添加到代数高速缓存。
只要将GUID赋给了所有显式集合和赋值左值,则将控制返回到SQL连接器601。如有必要,则然后进行对XSN接口603的二次调用以实现有望返回到调用方的任何集合。实现的集合然后返回到调用方。
图7示出了就图6的方法而言可以向系统提交的语句的例子。在这一例子中,用户在向数据库查询与标准商业事务处理有关的某些信息。该查询由标准SQL语句701表示。在这一情况下请求的ORDERKEY为“12345”。具体而言,在这一例子中用户在为编号为“12345”的特定客户订单中的项目请求折扣、运送日期和注释。从LINEITEM和ORDERS这两个表获得信息。将基于与O_ORDERKEY字段相等的L_ORDERKEY字段来合并这两个表。用户将SQL语句701传达到SQL连接器601。SQL转译器602将SQL语句的内部可导航表示转换成适当的等价XSN语句702。注意已经将LINETEM和ORDERS的列或者字段转换成并非关系数据库特有的表示。具体而言LINETEM表的列或者字段现在由域“1”至“16”表示,而ORDERS表的列或者字段现在由域“17”及其以上的域表示。从方程中的最内部函数开始,已经将SQL语句701的合并运算转换成rdmJoin运算,其中LINEITEM、ORDERS和NULL作为三个参数来传递。rdmJoin的结果然后传递到rdmRest运算,该运算将合并运算获得的数据约束为如下数据,其中:域“1”即LINEITEM数据集的L_ORDERKEY域等于常数“12345”,而域“1”即来自IINEITEM数据集的L_ORDERKEY字段也等于域“17”即来自ORDERS数据集的O_ORDERKEY域。XSN语句702然后传递到XSN接口以供进一步处理。
XSN接口603记录提交时间,以便为在提交的语句内包含的集合建立时间值。语句然后从XSN语句702转换成XSN树703。下文结合图12A和图12B进一步描述XSN树的结构。作为转换过程的部分,创建或者从集合管理器402检索GUID并且将这些GUID插入用于对应集合的XSN树703中。然后将控制返回到SQL连接器601。
由于在这一情况下示例性实施例请求结果集合,所以将进行对XSN接口603的二次调用以实现有望反馈到调用方的任何集合。XSN树703然后传递到优化器604,在该优化器中优化XSN树703以求效率从而实现优化的XSN树704(仅出于说明的目的,这里按照与树格式对比的表达式格式来图示)。注意在该示例情况下,优化器将rdmRest并入rdmJoin中以求效率。优化的XSN树704然后传递到集合处理器605,在该集合处理器中计算XSN树中代数关系的汇集。实现的集合然后返回到调用方。
图8是示出了实施用以有助于集合实现的软件模块的一个示例性实施例的框图。集合实现是计算集合的成员资格并且实现这样的集合在储存器中的物理表示的过程。可以从系统支持实现的外部接口如SQL连接器或者XML连接器或者从作为集合导出程序一部分的执行软件启动集合实现。在这一示例性实施例中,向执行软件801发出导出命令。该命令可以标识外部标识符或者待导出GUID以及存储路径。执行程序801然后将外部标识符或者GUID传递到XSN接口802。如果在命令中标识了外部标识符,则XSN接口802将外部标识符传递到集合管理器803。集合管理器803确定与外部标识符关联的GUID并且将GUID返回到XSN接口802。这一查找是相对于与GUID关联的时间值而执行的。除非用户另有指定,示例性实施例使用与外部标识符关联的最新GUID。一旦确定关联GUID,用关联GUID取代外部标识符。无论是在命令中直接指定的还是从外部标识符获得的待实现GUID然后都传递到集合管理器803以确定是否实现它。如果已经实现与GUID关联的数据集,则将控制返回到执行程序801。如果未实现与GUID关联的数据集,则然后将GUID提交到优化器804以便加以实现。优化器804然后确定表示了与GUID关联的数据集的代数关系的最优汇集。代数关系的汇集然后传递到集合处理器805,在该集合处理器中计算该汇集。一旦代数关系的汇集提交到集合处理器805,将控制返回到执行程序801。执行程序801然后请求存储管理器将来自数据集的数据提供给执行程序801,该执行程序然后使用在导出命令中指定的路径名将数据保存到储存器。
图9A是示出了代数和运算优化器软件模块的示例性实施例的框图。优化器操控代数关系的汇集,以便在提交到集合处理器909之前在代数上和运算上对其进行优化。有许多方法可以用来基于系统环境和与之有关的各种限制或者性能弱点来确定哪些代数关系的汇集最为高效。
在图9A中的示例性实施例中,优化器关于两个基本原则进行运算。首先,没有一个用以实现数据集的备选计划具有比简单地重用先前已经实现的数据集更低的成本。其次,应当使跨储存器-边界性能障碍检索的数据量最少。尤其是随着技术水平的改变,其它原则也可以在其它示例性实施例中适用。在示例性实施例中通过备选运算发现(findAltOps)例程904、元Guid发现(findMetaGuids)例程905和备选Guid发现例程(findAltGuids)906这三个优化例程来实现前述基本原则。重要的是注意可以使用其它优化例程并且在系统中可以有更多或者更少优化例程。在示例性实施例中,按设计为尝试如下优化的具体顺序来执行优化例程,这些优化更有可能尽可能快地实现成本充分低的代数关系的汇集。
如下文进一步所述,在执行优化例程之前以及执行各优化例程之后执行最低成本发现(findLeastCost)例程903。通过估计系统从储存器检索为了计算代数关系的汇集而需要的数据集将要花费的时间,来确定与特定代数关系的汇集的执行有关的成本。可以基于可以跨越每个相应I/O储存器障碍来检索信息的速度和需要跨越这样的储存器障碍而检索的信息的估计数量来计算所估计的检索时间。成本确定也可以将其它因素纳入考虑之中,这些其它因素比如是将跨同一I/O通道还是不同I/O通道读取信息以及是否在表达式的多个子部分中使用某信息,这二者均可能影响性能。这些优化技术可以根据系统在执行优化例程时的状态实现不同优化。例如,具有相同逻辑数据的不同数据集可以按照具有不同大小的不同数据格式可用。如果它们在同一I/O通道上可用,则可以选择具有更小格式的数据集。然而,如果更大格式最近已经被访问并且在高速存储器或者高速缓存中已经可用,则选择更大格式。
在示例性实施例中,XSN接口901调用优化器软件模块以便实现与代数关系的汇集关联的集合。XSN接口901将待实现集合的GUID传递到优化器软件模块内的构建表达式(buildExpressions)例程902。构建表达式例程902从代数高速缓存检索对GUID标识的一个或者多个集合进行定义的一个或者多个原始代数关系。这些代数关系可以称为起源(genesis)表达式。构建表达式例程902然后构建这样的起源表达式的运算节点树表示。运算节点树在下文进一步具体加以描述并且可以用来表示作为更多本原代数关系汇集的代数关系。优化器软件模块然后执行最低成本发现例程903以确定成本最低的起源表达式。如果最低成本发现例程903确定被发现为成本最低的起源表达式执行起来成本充分低,则放弃进一步的优化而将用于这样的起源表达式的代数关系提交到如下所述的节点实现(realizeNode)例程908。
如果最低成本发现例程903确定:被发现为成本最低的起源表达式执行起来成本并非足够低,则执行备选运算发现例程904以发现备选运算。这一例程使用扩展集合理论代数来合成起源表达式的备选版本。合成的备选表达式被构造为潜在地执行起来成本更低以及在代数高速缓存中易于标识。表达式合成是基于表达式“形式”的识别和如下其它形式的替换来完成的,这些其它形式在代数上等价、但是计算起来成本更低和/或更有可能在代数高速缓存中被识别。一个简单例子是对两个合并集合的约束。使用某一符号表示简化,这可以表达为SETA=R(J(a,b,c),d)。然而,合并运算也能够进行约束,而等价表达式为SETA=J(a,b,CP(c,d))。这两个形式均需要相同数量的输入数据进行计算,然而第二形式将生成更少的输出数据。这意味着第二形式将需要更少的计算资源和I/O资源。第二形式是否优选于第一形式将依赖于从代数高速缓存可获得什么和在持久储存器中已经实现哪些集合。然而,在优化器418中探查两个形式使得发现更高效备选表达式的概率更大。
如果备选运算发现例程904表明发现了备选表达式,则再次执行最低成本发现例程903以基于成本最低的起源表达式和备选表达式来发现成本最低的表达式。同样,如果最低成本发现例程903确定:被发现为成本最低的表达式执行起来成本足够低,则放弃进一步优化而将这样的表达式提交到如下所述节点实现例程908。可以基于处理资源和数据通道的相对速度和/或其它系统特征来确定用于中断优化的阈值。在一个例子中,阈值设置为数据传送10MB。在这一例子,通常可以在约十分之一秒内传送10MB数据,因而放弃进一步优化并且根据表达式来简单地计算集合。
如果起源表达式和它们由备选运算发现例程904标识的备选表达式都不是如通过执行最低成本发现例程903而确定的那样执行起来成本足够低,则执行下一优化例程。在示例性实施例中,下一优化例程是元Guid发现例程905。元Guid发现例程905对具有成本越来越低的所有表达式进行定位并且将它们提交到集合处理器以供执行。成本越来越低的表达式常常仅包含元数据。低成本的运算的例子包括判定交叉乘积(CP运算)、输出范围变换(OST运算)以及用于左和右的关系数据模型排序域(rdmSFL和rdmSFR运算)。这些运算通常对用户数据模型中的元数据进行运算并且产生附加元数据。物理集合的大小通常在约500字节以下,这使它们成为远在优化器418的执行阈值以下的用于快速计算的主要候选。因此,可以简单地从优化器418立即执行这些运算而不是测试它们是否满足最小阈值。然后再次调用成本最低发现例程903以在根据对成本最低发现例程903的先前调用而确定的成本最低的表达式与从元Guid发现例程905获得的表达式之间选择成本最低的表达式。同样,如果成本最低发现例程903确定被发现为成本最低的表达式执行起来成本充分低,则放弃进一步优化而将这样的表达式提交到如下所述节点实现例程908。
如果成本最低发现例程903标识的成本最低的表达式仍然执行起来成本并不充分低,则执行备选Guid发现例程906。备选Guid发现例程906确定是否可以通过对先前实现的集合进行描述的备选表示达式来取代一个或者多个子表达式。由于重用所实现的集合的成本总是低于执行为了实现这样的集合而需要的表达式的成本,所以这一例程可以用来提供成本的进一步减少。可以使用关系数据模型来描述子集替换的一个例子。假设表(称为框(BOXES))中的特定字段(称为大小(SIZE)并且为表的第三字段)具有范围从0到100的值。用户然后发出寻求大小小于50的所有框的查询(Q1)。这在XSN中表达为Q1=rdmREST(BOXES,{{{“LT”.<”3”,”CONST”.”50”>}}})。在一段时间以后,用户寻求大小小于25的所有框。这作为Q2=rdmREST(BOXES,{{{“LT”.<”3”,”CONST”.”25”>}}})来提交。在这两个查询中,如果如提交的那样来执行,则必须读取整个BOXES数据集以确定结果Q1和Q2。然而,对元数据集合{{{“LT”.<”3”,”CONST”.”50”>}}}和{{{“LT”.<”3”,”CONST”.”25”>}}}的数学检查表明受第二元数据集合约束的任何集合都是第一元数据集合的子集。因此,可以进行算术替换并且产生如下表达式:Q2=rdmREST(Q1,{{{“LT”.<”3”,”CONST”.”25”>}}})。如果在持久储存器中已经实现Q1,则可以表明Q1的大小必须小于BOXES的大小,因此需要更少I/O传送成本。如果已经实现Q1,则这于是就评估Q2而言提供与原始的提交表达式相比整体成本更低的手段。
在任何适当备选表达式已经取代子表达式之后,再次执行最低成本发现例程以在根据对最低成本发现例程903的先前执行而确定的成本最低的表达式与从备选Guid发现例程906获得的表达式之间选择成本最低的表达式。如果最低成本发现例程903确定被发现为成本最低的表达式执行起来成本充分低,则放弃进一步优化而将这样的表达式提交到如下所述节点实现例程908。
在上述优化工作完成之后,优化器调用节点实现例程908。节点实现例程908将运算节点树转换成XSN树、调用X树sp处理例程以将XSN树提交到集合处理器909以供执行、删除XSN树并且将控制返回到优化器软件模块,该软件模块然后返回到XSN接口901。
图9B是图示了代数和运算优化器软件模块的另一示例性实施例的框图。与图9A中呈现的示例性实施例不同,这一示例性实施例中的优化例程适用于从叶继续到根的各运算节点树。这一方式将各优化例程的结果作为变元提供给表达式,这实现进一步优化可能,但是以增加执行时间为代价。在可以进行明显附加优化的条件之下,这一方式可以是优选的。
示例性实施例中的实施使用了运算发现(findOperational)例程913和代数发现(findAlgebraic)例程914这仅两个优化例程。与先前示例性实施例不同,仅在已经执行运算发现例程913和代数发现例程914之后才执行最低成本发现例程903。最低成本发现例程903的功能与在先前示例性实施例中描述的相同。
与在先前实施例中一样,XSN接口901调用优化器软件模块并且将待实现集合的GUID传递到表达式构建例程902。在表达式构建例程902已经构建用于表达式的运算节点树之后,执行运算发现例程913以发现备选运算。这一例程执行与在先前示例性实施例中描述的备选运算发现例程904相同的功能。
在运算发现例程913完成之后,将修改的运算节点树传递到代数发现例程914以发现附加备选表达式。代数发现例程914从表达式到左表达式和从最内表达式到最外表达式对运算节点树进行迭代。这一迭代顺序实现了发现附加备选表达式的可能性最大。由于各表达式包含一个运算和一个到三个变元,所以各变元组合和运算一次一个地呈现给表达式发现(findExpressions)例程915。表达式发现例程915然后执行表达式的运算特有的代码以便发现或者合成备选表达式。运算特有的代码可以执行来自代数高速缓存的变元的代数替换、执行对在表达式内包含的低成本函数的计算、计算表达式本身并且合成表达式或者表达式任一变元的备选形式。然后通过运算特有的代码在适当位置将任何备选表达式添加到运算节点树。
在上述优化工作已经完成之后,优化器调用与在先前示例性实施例中的节点实现例程相同的节点实现例程908。控制然后返回到XSN接口901。
系统也可以执行综合优化。综合优化对关系和数据集进行分析以将新的关系添加到代数高速缓存而将有望在优化将来请求的评估时有用的新集合提交到集合全域。这可以基于向系统的既往请求的模式来执行,该模式可以在预期将来有相似请求时用来执行优化。可以通过使用空余的处理器周期在背景中执行这一综合优化。图9C、图9D、图9E、图9F、图9G和图9H图示了综合优化的例子方法。然而,各种其它综合优化是可能的,而这些示例性实施例仅为本发明内的少数例子。
图9C图示了如下例子,在该例子中单独标量值或者标量值的开放范围标识子集的隶属关系。这一性质的查询可以得益于创建如下子集,这些子集将数据分成相等基数的集合,其中每个子集包含具体范围的值。例如,数据集可以具有如图9C中950所示数据分布。这一数据集可以分成相等基数的多个数据集,比如图9C中950所示子集1-6。这种情况的一个例子将是寻求在某一日期之后或者之前出现的所有交易。该优化具有减少集合处理器为了计算相似性质的将来子集而必须检验的数据量的优点。综合优化例程将通过检查代数高速缓存使用标量值范围针对具体集合检测大量关系约束来标识这一情形。根据这些条目,优化器将确定所查询的最大和最小标量值以建立待划分的标量值范围。优化器然后将划分子集的数目确定为等于可用I/O通道的平均数目。最后,优化器将适当关系插入代数高速缓存中而将适当集合插入用于各划分子集的集合全域中。优化器也可以插入表明子集的并集等于集合的关系,并且调用集合处理器以计算各划分子集。
图9D图示了与图9C中的优化相似的示例综合优化,不同在于划分子集内隶属关系的标准是基于落入具体范围内的标量值。这种情况的一个例子将是确定所需子集针对给定的客户年龄范围。例如,数据集内的数据可以如图9D中954所示落入具体范围中。这一数据集可以划如图9D中956所示分成包含这些范围中相应范围的子集1-5。与利用其它例子综合优化一样,这一类划分允许集合处理器检验更少数据,这通过减少所需计算时间和资源实现了改进。
图9E图示了另一形式的综合优化,但是这一例子优化是基于集合的成员域而不是标量值。在这一例子中,优化器确定:为了产生有用子集只需要某些域而不需要其它域。例如,图9E中的数据集958具有列1-5,但是优化器可以确定许多请求只需要使用列1、3和4。优化器然后将在设置管理器中进行输入以生成仅包含感兴趣域的具有成员的子集并且调用集合处理器以生成该子集。例如,可以如图9E中960所示仅用列1、3和4来创建数据集。
图9F图示了如下例子,在该例子中确定感兴趣域的标量值具有相对低的基数。一个例子将是如图962中所示具有标量值真(TRUE)和假(FALSE)的二元域。优化器然后将在从结果子集消除该域的同时为如下子集创建关系,在这些子集内这一个域对于在该域中出现的各值而言是单调的。例如,如在964所示,可以针对原始数据集内该域的值为假的所有成员创建子集,并且可以针对该域的值为真的所有成员创建分离的子集。该优化可以具有显著的性能益处,因为即使二元字段也赋予百分之一百的平均性能改进。
图9G图示了如下例子,在该例子中集合包括两个集合的关系合并。在该合并实现成本与原始两个集合相等或者更低的数据集情况下,优化器将执行合并。这种情况的一个例子将是关系内部合并,其中存在着在关系集合之间不对应的主键和外来键。例如,第一数据集966可以包括三列(在图9G中表示为数据集966的列1、2和3),而第二数据集968可以包括四列(在图9G中表示为数据集968的列1、2、3和4)。可以合并这两个数据集以创建具有七列(在图9G中表示为数据集970的列1、2、3、4、5、6和7)的第三数据集970。
图9H图示了向量化的多页化的例子。如果用户常常通过特定方式来访问信息(例如使用电话号码来查找关于个人的姓名和地址信息),则优化器可以自动地定义新的数据集并且将新的关系添加到代数高速缓存,以通过创建向量化的多页使这些请求更高效(例如定义仅包括电话号码、姓名和地址的数据集)。例如,优化器可以确定电话号码的三位数区号、三位数前缀和四位数后缀这些组成将用于向量化的多页化。优化器然后将创建包含用于1,000个可能区号(000-999)中相应区号的1,000个子集974的集合972。这些子集各自将包含对用于相应可能前缀值(000-999)的子集进行引用的1,000个GUID,而这些子集就各四位数后缀而言各自将包含具有关于个人的姓名和地址信息的10,000个成员。这在完全填充后可以基于区号和电话号码前缀来创建100,000个子集。然而,由于许多区号和前缀组合不会投入使用,所以这些条目将简单地引用空(NULL)集合。一旦创建这些集合,集合处理器可以利用它们以通过简单地使用区号作为区号集合中的偏移(向量)、检索表示了适当前缀子集的GUID、然后使用前缀作为偏移以确定适当前缀子集的GUID来基于它们的电话号码对单独个人快速地进行定位。最后,将使用电话号码前缀作为偏移以对用于单独个人的数据进行定位。
图10A是运算节点树结构的图示。运算节点树用来跟踪优化器在操控的关系、表达式和变元。在树的根部是运算节点1001,该运算节点1001是多个运算表达式1002的列表。列表中的各运算表达式1002包含与同一列表中其它表达式的在数学上等价的变形有关的信息。具体而言,在示例性实施例中,各运算表达式1002包含运算类型、标识表达式的GUID、各种标志(这些布尔标志表明运算表达式是否具有GUID、它所表示的表达式是否在代数高速缓存中以及是否使用运算表达式作为用于GUID的备选表达式)、成本信息(表明将在评估这一运算表达式的成本时使用的成本的值以及如果独立于包含成本信息的表达式的其余部分来实现它时则表明表达式的成本的值)以及多达三个运算节点变元。优化器创建一个或者多个运算表达式1002以便确定用于评估所需表达式的最高效方法。如上所述,优化器分析各运算表达式1002并且确定与评估该表达式关联的成本。优化器然后可以确定使用哪个运算表达式1002以求效率。
图10B图示了例子运算节点树。在树的根部是运算节点1004,该运算节点1004是表示在数学上等价的表达式的运算表达式的列表。各运算表达式包括用于该表达式的变元的列表。例如,运算表达式1006包括三个变元Arg[0]、Arg[1]和Arg[2]。各变元又可以引用如下运算节点,该运算节点列举可以用于特定变元的备选表达式。例如,运算节点1008引用可以用于运算表达式1008的Arg[2]的表达式的列表(List[0]、List[1]、List[2]、...)。这些表达式又由运算表达式1010、1012和1014表示。当用于运算节点1006表示的表达式的变元Arg[2]时,这些表达式各自提供在数学上等价的结果。该运算节点树结构允许在树的各级列举多个等价表达式。例如,优化器中的代数发现例程914(图9B中所示)可以对运算节点树进行迭代以发现附加备选表达式并且将它们添加到运算节点树。最低成本发现例程915然后可以遍历运算节点树以标识可以用来以最低成本计算整个结果的表达式的特定汇集。所选表达式的汇集然后可以转换成XSN树并且发送到集合处理器以供计算。
集合处理器负责系统对数据集执行的所有计算和逻辑值比较。在一个示例性实施例中,它可以是设计用以利用如下系统的多线程、可重入的(reentrant)软件体,这些系统包含在系统存储器与持久储存器之间的多个处理器和多个独立无竞争I/O通道。集合处理器也可以被设计用以在运算之间利用数据流水线。也就是说,一个运算的结果可以作为下一运算的输入来直接续传而无需将这样的结果立即写入到持久储存器。数据流水线可以通过减少越过I/O性能障碍的数据量以及减少负责重持久储存器获得数据的存储管理器上的负担来极大地提高集合处理器的效率。
各种运算的执行由称为线程池的对象监视。线程池负责按照运算处理例程的请求来启动用于各运算的执行线程、监视它们的执行并且报告它们的成功或者失败。线程池还与执行程序一起工作用以限制为了管理系统资源而需要在引擎内执行的线程的当前数目。可以利用多个不同硬件和软件平台来实施线程。例如,传统的单芯处理器如图1中的处理器102可以与模拟多处理的操作系统如Microsoft 一起使用。在一个备选实施例中,多个处理器或者多芯处理器可以与赋予给各处理器的一个或者多个线程一起使用。在另一实施例中,如图3中所示多处理器系统可以与赋予给各MAP 306a-f的执行线程一起使用。无论系统的物理实施如何,在一个示例性实施例中集合处理器都可以使用列表、树或者其它结构将运算链结在一起,使得来自一个线程的输出变为另一线程的输入以便提高性能。
集合处理器内的运算是设计用以对一个或者多个输入数据集执行运算并且产生输出数据集的单独例程。这些运算等价于被发现为在数据处理中有用的扩展集合运算和函数。集合处理器也可以具有用于各运算的算法的多个实施以便支持种类广泛的各种物理到逻辑格式映射。通过按照物理数据格式来定制操作例程,与将所有数据转换成单个物理表示以供处理相比可以实现更高效率和性能。一个示例性实施例支持在不同格式之间的逻辑到物理映射,使得例如数据可以在逗号分隔值(CSV)格式、二进制串编码(BSTR)格式、固定偏移(FIXED)格式、类型编码数据(TED)格式和/或标记语言格式之间映射。这允许系统处理数据而无需将所有数据转换成共用格式。例如,如果系统需要计算在CSV格式的第一数据集与XML格式的第二数据集之间的合并结果,则系统可以使用它的映射来计算结果并且按照CSV格式、XML格式或者另一所选格式返回这样的结果而无需将数据转换成另一格式。此外,一个示例性实施例包含用于原子值以及比如串、32位整数、64位整数、浮点数、货币、布尔值、日期时间值和间隔值的多个逻辑到物理映射。系统可以包含用于受支持的各种数据格式和原子格式的所有潜在映射,或者可以仅包括所选映射。例如,如果示例性实施例支持五个数据格式,则存在用于每个映射例程的五个输入和五个输出,这导致软件例程的125个潜在版本。在示例性实施例中,仅当资料效率有提高时才包括用于在各映射之间映射的软件例程。如果不会实现资料效率,则示例性实施例将数据转换成共用格式而不是使用映射函数。
集合处理器的另一功能在于提供在整个程序中使用的共用集合方案的面向对象数据模型的实例。这包括满足某些定义并且在程序执行的代数和计算处理内为有用构造的判定集、域集合、基数集和其它集合。
图11图示了集合处理器软件模块的一个示例性实施例。在该例中,优化器将XSN树提供给集合处理器,以便通过Xsn树sp处理(spProcessXsnTree)例程1102进行评估。Xsn树sp处理例程1102检验XSN树并且确定XSN树是否表示赋值或者关系语句或者XSN树是否表示显式集合。
在赋值语句的情况下,Xsn赋值处理(ProcessXsnAssignment)例程1105检验语句以确定语句的左值(lvalue)是否被确认为XSN集合。如果lvalue不是集合,则例程返回失败代码。然后检验右值(rvalue)以确定它是运算还是显式集合。如果rvalue是显式集合,则与lvalue关联的外部标识符域rvalue的GUID关联。如果rvalue既不是运算也不是显式集合,则例程返回失败代码。如果rvalue是运算,则调用XSN处理(ProcessXSN)例程1107继续处理。
在关系语句的情况下,XSN关系处理(ProcessXSNRelation)例程1106核对验证lvalue和rvalue为运算。如果任一个或者二者为运算,则调用XSN处理例程1106以继续用于任一个或者二者的处理。如果lvalue或者rvalue不是运算,则简单地忽略它们。这样做的目的在于实现在关系语句中引用的任何集合,使得可以评估通常但不限于支持优化器的关系。
在请求实现显式集合的情况下,Xsn树sp处理例程1102立即在例程1103中实现集合并且返回标识所实现的集合的GUID。
XSN处理例程1107从在XSN树的根部的当前运算开始检验XSN树的所有成员并且针对所有运算递归地调用自身。待执行的各运算以在低级运算之前启动XSN树的根运算的顺序传递到运算处理(ProcessOp)例程1108,以保证建立恰当的数据流水线。
运算处理例程1108获取各运算并且将它插入到线程池1109中,其中该线程池具有用于与待执行运算关联的所有集合的适当GUID。线程池1109然后针对提供给XSN处理例程1107的语句内的每个运算加载单独的执行线程。这些执行线程然后通过调用适当运算1110来独立地运行,直至运算完成。在完成这些线程中的各线程时,线程池1109被通知线程完成并且提供适当的清理和错误处理,这包括从活跃线程列表去除线程。
集合处理器还包含设计用以对集合执行逻辑运算的函数,其被称为sp逻辑(spLogical)例程。这些逻辑运算在根本上不同于集合处理器的Xsn树sp处理例程1102执行的计算运算。包括sp逻辑相等、sp逻辑判定相等和sp逻辑判定子集在内的sp逻辑例程被设计用以比较通常按照二元XSN符号表示而存储的两个数据集并且确定它们的相互逻辑关系。这些关系包括相等、子集、超集和不相交。这些函数由优化器用于确定备选表达式。
图12A是可以用来在系统中表示例子XSN表达式的XSN树结构的图示。XSN树提供一种用于在系统中处理XSN表达式的便利格式。图12A图示了表达式A REL OP(B、C、D)的XSN树。这一表达式通过关系(REL)将数据集A与对数据集B、C和D执行的运算(OP)相关。XSN树是包括关系节点1201、运算节点1205、多个成员节点1202、1203、1206、1207和1208以及多个数据集1204、1209、1210和1211的双链接列表。关系节点1201指定表达式的关系、比如等于、小于、大于等。关系节点1201链接到成员节点1202,该成员节点以指向数据集A 1204(为语句的左值)的链接为它的左子节点而以指向成员节点1203的链接为它的右子节点。成员节点1023链接到作为它的左子节点的运算节点1205。运算节点1205标识待执行的运算,比如投影、约束、合并等。运算节点1205链接到成员节点1206,该成员节点以指向数据集B 1209的链接为它的左子节点而以指向另一成员节点1207的链接为它的右子节点。成员节点1207以指向数据集C 1210的链接为它的左子节点而以指向成员节点1208的链接作为它的右子节点。成员节点1208链接到数据集D1211。
图12B是可以用来在系统中表示例子XSN赋值语句的XSN树结构的图示。图12B示出了用于赋值语句SQL1=rdmPROJ(rdmREST(A,C1),C2)的XSN树。这一语句将字母数字标识符SQL1赋给表达式rdmPROJ(rdmREST(A,C1),C2)。XSN树是包括赋值节点1251、字母数字标识符1254、多个成员节点1252、1253、1256、1257、1260和1261、运算节点1255和1258以及多个数据集1259、1262和1263的双链接列表。赋值节点1251链接到成员节点1252,该成员节点以指向字母数字标识符SQL1 1254的链接为它的左子节点而以指向成员节点1253的链接为它的右子节点。成员节点1253链接到作为它的左子节点的运算节点1255(rdmPROJ)。运算节点1255标识待执行的运算(在这一情况下为投影)。运算节点1255链接到成员节点1256,该成员节点以指向运算节点1258(在这情况下为约束运算rdmREST)的链接为它的左子节点而以指向另一成员节点1257的链接为它的右子节点。成员节点1257以指向数据集C2 125的链接为它的左子节点。运算节点1258链接到成员节点1260,该成员节点以指向数据集A 1262的链接为它的左子节点而以指向另一成员节点1261的链接为它的右子节点。成员节点1261链接到数据集D 1263。在示例性实施例中,这些XSN树可以在系统中内部存储为阵列。
存储管理器420维护包括各集合的实际数据并且提供在持久储存器与易失性储存器之间的高效传送。
图13A、图13B、图13C和图13D图示了可以如何在存储管理器420中使用缓存器链结以允许数据的流水线传送以及通过这些缓存器链来共享数据。应当注意,这仅为一个示例性实施例并且有存储管理器420可以与缓存器链结或者不与缓存器链结一起实施的各种方式。存储管理器420提供经由形式为集合读取器和集合写入器(简称为读取器和写入器)类的简单机制对集合数据的访问,其中这些类是称为集合基的内的分离子类。读取器从储存器读取数据而写入器将数据写入到储存器,并且它们一起封装存储管理器420的更复杂功能。
该封装允许存储管理器420可以因不同平台或者存储系统而不同的灵活实施。此外,它允许底层存储管理器420在运算之间提供流水线以使必须从物理储存器传送的数据量最少。在这一意义上,无论是写入还是读取数据,流水线都是底层数据缓存器的共享。作为一个例子,考虑运算A(OpA)和运算B(OpB),其中OpA产生(并且因此存储)数据而OpB需要读取该数据。非流水线方式将以分离的方式让OpA简单地写入数据而让OpB从储存器读取该数据。存储管理器420的设计代之以允许OpA写入数据而OpB在数据被产生时并且事实上在许多情况下甚至在数据实际地写入到储存器之前获得对数据的访问。由于OpB仅知道集合读取器接口,所以它无需知道数据实际上得自于OpA的输出而不是储存器。作为第二例子,考虑均需要从同一集合读取数据的运算OpC和OpD。,流水线存储管理器420针对两个运算将读取数据仅一次。
在图13A、图B、图C和图D中示出了该机制。通过集合处理器的运算来生成数据集或者经由存储管理器从盘检索数据集。在任一情况下,写入器用来将数据串行放入称为缓存器链的RAM缓存器链接表中。当集合处理器的运算需要来自数据集的数据时,读取器用来从RAM缓存器链接表串行检索数据以供运算使用。在一个示例性实施例中,数据集可以仅有一个写入器、但是有任意多个读取器。在图13中图示了这一点,该图示出了包含四个串联缓存器Dbuf 1、2、3和4的缓存器链。写入器1304用来指向缓存器以将数据写入到缓存器链1302中。写入器1304沿着缓存器链串行继续,而在写入器将附加数据追加到缓存器链时创建新的缓存器。读取器1306和1308用于指向缓冲器从而可以从缓冲器链1302读取数据。
由于集合管理器内的运算性质,可能的是由多个读取器读取的数据集将让读取器按照不同步调对数据继续下去。例如,如图13A中所示,慢读取器1308读取Dbuf 1,而另一读取器1306已经完成读取Dbuf 3。当写入器和读取器沿着缓存器链继续时,写入器创建附加缓存器而读取器被释放以按照集合处理器中的运算需要的任何节奏对数据继续下去。图13B图示了如图13A中所示读取器和写入器的同一组合,然而写入器1304已经进展到Dbuf 7,读取器1306已经进展到Dbuf 6,而慢读取器1308保持于Dbuf 1。
随着集合处理器的运算继续,有可能的是可以如图13C中所示在慢读取器1308与写入器1304及其之前的读取器1306之间创建长串缓存器。随着缓存器链1302增长,消耗越来越多的空闲RAM以将数据维护于存储器中。在某一点,由于对要求附加RAM的其它例程的需要,所以使用中的RAM数量变得过大,而必须释放一些RAM以允许它供这些其它例程使用。当检测到这一情形时,启动缓存器链间断(break)。
通过创建与数据集关联的附加缓存器链来实现缓存器链间断。在图13D中所示例子中,现在已经进展到Dbuf 2的慢读取器1308被复制到新的缓存器链1310。这一新的缓存器链1310也将被赋予新的写入器1312,以从盘提供串行数据。现在包含Dbuf 3至Dbuf 12的现有缓存器链1302仅包含写入器1304。由于在写入器1304之后不再有读取器,所以Dbuf 3至Dbuf 11将由清理执行例程去除,该例程是释放存储器管理器不再使用的RAM缓存器的分离异步例程。由于缓存器的数目可以非常之大,所以这提供了可以由需要附加RAM的其它例程使用的大量RAM。
除了提供优化的数据储存和检索之外,示例性实施例还可以用来在使用不同数据模型的不同方案之间转译和映射请求和语句。例如,系统可以包括在使用不同数据模型的方案之间的映射,这些数据模型比如是SQL数据模型、XML数据模型、XSN数据模型或者其它数据模型。可以基于使用不同数据模型的方案来提供语句。例如,可以按照第一格式如SQL格式来提供基于第一方案的多个查询语言语句。如上所述,这些语句可以转换成XSN格式,并且可以在集合管理器402中由这些语句组成数据集和代数关系并且存储它们。以后可以按照第二格式如XQuery格式来接收语句。这也可以转换成XSN格式,并且可以在集合管理器402中由这一语句组成数据集和代数关系并且存储它们。具体而言,这一语句可以基于使用第二数据模型的方案来请求提供数据集。由于所有语句转换成统一的XSN数据模型,所以由按照第一格式接收的语句组成的数据集和代数关系可以由优化器418用来确定用于对按照第二格式而请求的数据集进行计算的代数关系的优化汇集。存储于代数高速缓存中的代数关系和在方案之间的映射允许使用从第一格式的语句中捕获的数据集和关系来优化和计算按照第二格式请求的数据集。这允许在单个系统中支持多个不同数据模型。由于来自语句的所有信息由集合管理器捕获为数据集和代数关系,所以系统可以在一个模型与另一模型之间进行转译。另外,此信息可以用来优化被用于针对其它数据模型计算数据集的代数关系,这些代数关系包括子表达式替换和如上所述由优化器使用的其它优化技术。数据模型可以是关系数据模型、标记语言数据模型、集合符号表示数据模型或者其它数据模型。向系统提交的语句的格式可以包括标准查询语言语句、XQuery语句、集合符号表示语句或者其它格式。
举例而言,考虑图14中给出的关系表和XML文档。关系表可以在数学上表示为扩展集合。表示关系表的扩展集合的成员惯称为关系表内的行。关系表内的行也可以在数学上表示为扩展集合。表示关系表内的行的扩展集合的成员惯称为字段。行的共用字段称为列。因此,可以通过形式为<<f11,f12,f13,...,f1c>>,...,<fr1,fr2,fr3,...,frc>的扩展集合来表示关系表,其中f表示字段的值,而下标r和c表示唯一行和列的枚举。
XML文档也可以在数学上表示为扩展集合。表示XML文档的扩展集合的成员惯称为XML片段,这些片段包含用以表示数据的值和标记。这些XML片段的值可以是字符串或者另一XML片段。因此,可以通过形式为<t1.{v1},...,tn.{vn}>的扩展集合来表示XML文档,其中t表示标记,而v表示XML片段的值。
使用恰当定义的扩展集合变换函数gRX(),表示关系表的扩展集合的成员可以映射到表示XML文档的扩展集合的成员,这允许按照关系或者XML格式对数据的透明表示。提供了在关系表中的字段与XML文档中的片段之间结构关系的变换函数对关系表的扩展集合表示进行运算。这一变换的结果在于提供在相同数据的关系表示的值和结构与XML表示的值和结构之间的函数映射。
变换函数可以在代数高速缓存内存储为关系表与XML片段汇集之间关系的汇集。为了从XML文档映射到关系表,使用图14A中表示为gRX()的函数fXR()的补(compliment)函数。为使这些函数提供适当的映射,关于项和项之间关系的约束必须是有效的。这些约束在图14A中列举为“其中”条款。a必须等于s.{x}的约束随同x和z在B中而B和D在C中的隶属关系约束一起表明XML片段必须包含一个值并且仅一个值。另外,b必须等于s.x的约束随同x和y在A中的隶属关系约束一起表明特定行中的关系字段必须具有一个并且仅一个值。经组合之后,这些约束保证从XML片段到关系表中的字段的唯一映射。
另一例子将是有向图的向量表示到关系数据表的映射。图14B中所示有向图包括路径和结点。在各结点,一个或者多个路径通达和背离结点,其中仅有背离路径的有向图起点和仅有通达路径的有向图终点除外。有向图的各结点以及通达和背离它的路径可以表达成形式为{从.{p1,p2,...,pm},到.{pm+1,pm+2,...,pn}}的扩展集合,其中值p1至pm唯一地标识来自结点的路径,而值pm+1至pn唯一地标识去往结点的路径。因此,有向图可以通过如下扩展集合来表示:{j1.{从.{p11,p12,...,p1m},到.{p1m+1,p1m+2,...,p1n}},{j2.{从.{p21,p22,...,p2m},到.{p2m+1,p2m+2,...,p2n}},...,{jk.{从.{pk1,pk2,...,pkm},到.{pkm+1,pkm+2,...,pkn}}。在这一情况下,变换函数为fNR()。如图14B中呈现的那样显式定义将有向图完全地映射到关系表的变换函数。与在关系到XML映射的情况下一样,需要约束以实行各模型的规则以及提供值和结构在模型之间的映射。有向图完全由扩展集合N表示。扩展集合就该图的所有k个结点而言是表示路径的nk.JK这些项的并集。各结点按照来自路径f.Fk和去往路径t.Tk来定义路径nk.Jk。关系表由扩展集合R表示。扩展集合R是如下项Rijk的并集,这些项表示了包含来自、去往和路径这些字段的关系表的各行。其余约束定义了项之间的关系和对项本身的限制。这包括如下约束:f、t和p必须存在并且不能彼此相等、Fk必须等于{xi}而Tk必须等于{yj}以定义在关系表字段与有向图路径之间的关系、表示路径的成对Fk和Tk必须唯一、以及就Jk表示的各路径而言有一个唯一的范围值f和范围值t。
将理解上述格式、方案和映射仅为举例并且可以在其它实施例中使用其它格式、方案和映射。
如上所述,可以在示例性实施例中使用扩展集合符号表示(XSN)。下文描述可以使用的扩展集合符号表示(XSN)的一个例子。这只是扩展集合符号表示的一个可能实施例,并且其它实施例可以使用与下文不同的术语、集合类型、语法、参数、运算和函数。扩展集合符号表示的例子提供一种用以在现代计算系统的环境内基于扩展集合数学来指定和操控表达式的简明易用语法。按照标准ASCII字符可表达的这一符号表示提供一种用于以适合于基于计算机的操控和处理的方式来表示值、集合、运算、关系和表达式的标准语法。这一符号表示提供了用于标准ASCII字符以机器可读形式指定代数扩展集合表达式的能力。
在以下表格1中定义用来描述和标识XSN的主要组成的术语。
表格1
值 | 值在具体数字系统域中表示唯一标量数量。可以通过使用表示具体唯一值的符号汇集来显式指定值或者通过字母数字标识符来隐式指定值。 |
字母数字标识符 | 字母数字标识符表示暗示值或者集合并且可以通过任何串组合的数字0至9、小写字母字符a至z和大写字母字符A至Z来指定。 |
范围和构成 | 范围和构成是表示扩展集合所需两个隶属关系条件的元素或者成员的两个不同部分。范围和构成可以由值、字母数字标识符、元素或者集合表示。 |
元素 | 元素是具有需要至少一个范围和一个构成的复合结构的范围或者构成。必须显式声明构成;然而对于未显式声明的范围则暗示NULL值。 |
成员 | 成员是在集合的背景内指定的元素 |
集合 | 集合是成员汇集。集合包括空集——没有成员的集合。可以通过枚举隶属关系来显式指定比如值这样的集合或者经由字母数字标识符隐式指定该集合。 |
函数和运算 | 函数和运算被显式指定并且定义如下集合,其中函数或者运算结合向该函数或者运算提供变元的一个到三个集合来指定该集合。运算在扩展集合数学中为原子性并且被指定。函数是一个或者多个运算的组合并且是用于频繁执行的运算组合的简便表示。 |
表达式 | 表达式是用于指定集合的符号手段。表示集合的字母数字标识符是表达式的最简单形式。表达式也可以包括表达集合的许多函数、运算和集合。 |
关系运算符 | 关系运算符是用于指定两个表达式之间关系的符号手段。关系运算符包括相等、子集和不相交以及它们的取非。 |
赋值 | 复原是将字母数字标识符赋给表达式的语句。 |
关系 | 关系是通过关系运算符使两个表达式相关的语句 |
语句 | 语句是赋值或者关系。 |
语法。XSN语法包括用于指定集合的符号手段以及用于陈述表达式和语句的文法。在以下描述中,在括号([])中括入的项表明可选语法。例如,在无需范围的情况下,元素表达为[范围].构成。圆弧(...)表示任意长度的序列的重复。例如,<”1”,”2”,”3”>。
符号。语法利用如以下表格2中阐述的标点符号。可选空格可以在需要之处插入于标点之间以有助于辨认。换行符可以在语句、表达式或者集合内的任何地方出现以求清楚。
表格2
描述 | 符号 | 用途 | 举例 |
双引号 | " | 双引号界定显式值 | "Curly","Moe" |
句号 | 句号用来在同一元素内将范围与构成分隔。 | "Curly"."Moe" | |
逗号 | , | 逗号用来在显式定义的集合内分隔成员 | {"Curly","Moe","Larry"} |
大括号 | {} | 大括号括入显式集合的成员 | {"Curly","Moe","Larry"} |
尖括号 | <> | 尖括号括入显式有序集的成员 | <"Curly","Moe","Larry"> |
圆括号 | () | 圆括号在指定元素时括入范围、构成和表达式的组合以使句号分隔的范围区别于构成。圆括号还用于对运算和函数的指定中 | ("Curly"."Moe")."Larry"CRD(SETA) |
等号 | = | 等号将字母数字标识符赋给集合 | 名称={"Curly","Moe","Larry"} |
值。值是通过在双引号内显式声明值来指定的。值的例子包括"Curly"、"123"和"$2,343.76"。如果值包括双引号字符("),则可以通过在它之前插入双引号来界定它。例如,"约翰在他看见驼鹿时说"射击""。通过两个连续双引号如""来指定空值。
字母数字标识符。通过赋值语句来指定字母数字标识符所要标识的集合。一旦指定,字母数字标识符可以与它被赋予到的标识符互换使用。例如,如果向集合赋予字母数字标识符NDCENSUS1960,则NDCENSUS1960可以在任何表达式中用来引用NDCENSUS1960被赋予到的集合。
范围、构成和元素。范围和构成可以由值、字母数字标识符、元素或者集合表示。用于元素的语法为[scope.]构成。通过使用句号将范围与构成分隔,其中在句号左边的项表示范围而在句号右边的项表示构成。例如,范围的值为"1"而构成的值为"Bob"的元素将在恰当的符号表示中表达为"1"."Bob"。
元素是具有需要至少一个范围和一个构成的复合结构的范围或者构成。必须显式声明构成;然而对于未显式声明的范围则暗示NULL值。在上例中,元素"1"."Bob"具有范围"1"和构成"Bob"。然而,范围和构成也可以是字母数字标识符、元素和集合从而实现潜在复杂的表达式。
这些潜在复杂表达式引起的一个问题在于关于范围和构成的优先级。例如,给定元素"整数"."求和"."5",出现范围和构成的界定问题:范围为"整数"还是"整数"."求和"?构成为"5"还是"求和"."5"?按照惯例在这一例子XSN中,在第一句号左边的项为范围,而在右边的项为构成。这然后将推断"整数"为范围而"求和"."5"为构成。然而如果希望"整数"."求和"为范围而"5"为构成,则可以通过使用圆括号来指定这一点,如元素("整数"."求和")."5"。
成员和集合。成员是在集合内包含的元素、集合或者表达式。通过表达式或者通过枚举它们的如下单独成员来指定集合,一些或者所有这些成员可以是元素、集合或者表达式。包含按任何顺序枚举的相同成员的任何集合都是同一集合。
在许多情况下,集合的成员包含属于自然数集合的范围。在一些情况下,这些范围是连续的、唯一的并且包括值一。在这些情况下,集合可以称为有序集。不满足这些标准的所有集合都可以称为无序集。
集合表达为{成员[,成员[,...]]}。如在{"a","x","b","g"}或者{"Groucho","Harpo","Gummo"}中一样,在波形括号中括入无序集的成员。与在<"a","b","x","g">中一样,在尖括号中括入有序集的成员。有序集的成员具有在它的指定中列举成员的隐式顺序。有序集的各后继成员的范围是自然数集合中的对应数字。因此,<"a","b","x","g">等价于{"1"."a","2"."b","3"."x","4"."g"}。
例如,有序集可以表示具有任何数目的数据字段的数据记录,其中集合的成员表示该记录的字段,而成员的范围是对应字段在记录中的顺序位置。可以指定以下表格的第一行中由逗号分隔的值作为用于处理的集合。数据可以用许多不同方式分组成分级。以下表格3图示了数种可能性。
表格3
逗号分隔的原始值包括各自具有三个值的四个值序列。
集合1被指定为四个成员的无序集,其中各成员包含三个成员的无序集。
集合2被指定为四个成员的有序集,其中各成员包含三个成员的无序集。
集合3被指定为四个成员的无序集,其中各成员包含三个成员的有序集。
集合4被指定为无序的。它使用范围来表明集合的各成员相对于集合的其它成员而言的定位。
特别是当使用集合作为函数和运算中的变元时,集合的内容和结构有时按照它们的用途来规定。当使用例子XSN来描述关系数据运算时,这些规定的结构中的数个结构频繁地出现。这些共用集合中的一些集合通常称为判定、映射、变换或者合计集合并且在下文中更具体地加以探讨。
判定集。判定集提供在一个集合的成员与另一集合的成员之间的映射指定。判定集描述了用以确定真值的嵌套条件表达式。在比如RDMREST函数中所用条件表达式这样的条件表达式情况下,基本条件表达为"条件".<元素1,元素2>
元素可被指定为"列值"或者"常数"."标量值"。条件被指定为相等("EQ")、不相等("NEQ")、小于("LT")、小于或者等于("LE")、大于("GT")、大于或者等于("GE")、相似("LK")或者不相似("NLK")。在RDMREST函数的情况下,各元素将指定与条件或者由范围"const"指明的恒定标量值做比较的列。
例如,条件为EQ、第一元素对列进行命名而第二元素提供恒定值的条件短语"EQ".<"2","const"."MI">表明在输出集合中将包括第二列等于值"MI"的所有成员(行)。
在下例中,为RDMREST函数的判定集指定单个条件。所得集合将仅包含集合zipcitystate中在第三列中包含值“IN”的成员(行)。注意附加两组括号。
RDMREST(zipcityslate,{{{"EQ".<"3","const"."IN">}}})
这些是支持以下涵盖的AND和OR条件构造所必需的。
AND语句。条件集是AND语句;列表中的所有条件一起AND。如果它们都为真,则整个条件为真。这里是AND结构的一个例子:
{{"EQ".<"2","const"MI">},{"GE".<"5","const"."49000">},{"LT".<"5","const"."51000">}}
在成组波形括号中括入三个条件短语以界定AND语句。
OR语句。通过组合两个或者更多AND语句来创建OR语句。如果任何AND语句的结果为真,则整个语句为真。这里是一个例子:
{{{"GE".<"1","const"."10000">}},{{"GT".<"3"."const"."AK">},{"LT".<"3","const"."CA">}},{{"EQ".<"2","const"."Pasadcna">}}})
在这一例子中有三个OR语句。第一个包含一个条件短语,第二个包含两个进行AND的条件短语,而最后一个包含单个条件短语。以这一方式可以构建复杂的条件表达式以定义运算。
映射集。对于一些运算和函数,需要用以提供映射的集合。在多数情况下,范围和构成用来提供在输入集合与输出集合之间的关系。例如在RDMPROJ运算中,集合提供在输入集合的列与输出集合的列之间的映射。范围值表明输出集合的列,构成表明输入集合的列。例如
<"3","5","{">
这一判定集表明输入集合的第三列、第五列和第一列应当映射到输出集合的第一列、第二列和第三列。
变换集合。变换表达式用来将来自集合的一个或者多个输入值变换成输出集合中的值。变换包括运算如减法(“SUB”)、加法(“AND”)、除法(“DIV”)和乘法(“MUL”)。附加变换运算是恒定的(“CONST”)。变换表达式通常与关系运算如RDMMATH一起用来定义输出集合的成员。例如,如果输出集合的第一列被指明为输入集合的第一列与第二列之和,则如下变换几何将用来指定这一点:
<"ADD",<"1","2">>
这表明输入集合的第一列和第二列应当用作加法变换的第一变元和第二变元以产生用于该输出的第一列的值。如果希望(COL1+COL2)/(COL3-1)这一计算表示输出集合中的第一列而输入集合的第五列和第六列将映射到第二列和第三列,则可以深度嵌套变换以提供规定,变换集合将为:
<"DIV".<"ADD".<"1","2">,"SUB".<"3","CONST"."1">>,"5","6">
变换集合也可以包括具体标量域限定符。例如,如果将在整数域中进行数学运算,则例子<"ADD"<"1","2">>将表达如下:
<(“int64"."ADD").<"1","2">>
这将表明第1列和第2列的标量值将如同它们为整数值一样相加在一起。也将在整数标量域中产生结果。与函数名和运算名相似,标量域标识符不是大小写敏感的。
合计集合。集合也在RDMGROUP函数中用来提供合计。合计运算包括求和(“SUM”)、平均(“AVG”)、计数(“CNT”)、最小值(“MIN”)和最大值(“MAX”)。这些函数指定将对RDMGROUP函数创建的各组中的集合成员执行的运算。例如:
<"1","3","COUNT","1","AVG","]">
这将表明输入的第一列和第三列提供该组的基础并且被包括作为输出的第一列和第二列。输出的第三列将是来自该组中第一列的成员计数,而第四列将是该组的第一列中成员的平均。
与变换集合相似,合计集合可以指定其中将执行运算的标量域。例如,如果将在串域中执行上述运算,则指定的集合将如下:
<"1","3","(“STRING","COUNT"),"1",(“STRING"."AVG")."1″>
函数和运算。函数和运算被显式指定并且定义如下集合,其中函数或者运算结合向该函数或者运算提供变元的一个到三个集合来指定该集合。其它实施例可以允许不同数目的变元。运算为原子的并且在扩展集合数学中被指定。函数是一个或者多个运算的组合并且是用于频繁执行的运算组合的简便表示。
经由预定义的字母数字标识符、括号和一个到三个变元来表达函数和运算。一个例子将是表示如下集合的CRD({“1”,“2”,“3”}),该集合是集合{“1”,“2”,“3”}的基数集。
一般而言,指定函数如下:函数(表达式1[,表达式2[,表达式3[,...]]),其中变元的数目视函数而定。具体而言,一元函数需要一个变元,二元函数需要两个变元,而三元函数需要三个变元。在一些函数中,最后变元是用来指定映射和变换的集合。与用于集合的字母数字标识符不同,函数名和运算名不是大小写敏感的。
下文是函数的一些例子:
RDMPROJ(ASet,<"7","1","2","3">)--RDMPROJ是关系数据模型(RDM)投影函数。命名为ASet的集合是表示关系表的运算的变元。第二集合是指定如下映射的集合,该映射将来自ASet的成员(列)映射为用作所得集合中的列。
INV(OldSet)--INV是取反函数,这就集合的成员而言实现范围和构成的交换。命名为OldSet的集合是用于运算的变元;将它取反以产生输出。
CRD(MySet)-CRD是基数函数,这就输入变元集而言获得基数集。命名为MySet的集合是用来产生输出集合的输入。
RDMJOIN(citics_and_states,states_and_zips,{{{"EQ"<"2","3">}}})-RDMJOIN是关系数据模型(RDM)合并函数。命名为cities_and_states和states_and_zips的前两个集合将通过运算来合并。为第三集合提供的显式判定集指定用来为合并的所得集合选择成员的条件。在这一情况下,判定集指定如果第一集合的第二列等于第二集合的第一列(states这一列),则行应当在输出集合中合并。
RDMREST(zips,{{{”GE".<"1","const"."10000">},{"LE".<"1","const"."14999">}},{{"GT"<"3"."const",AK">},{LT".<"3"."const"."CA">}}}--RDMREST是关系数据模型(RDM)约束函数。命名为zips的第一集合是用于表示关系表的运算的变元。第二变元是判定集,该集合指定在约束的输出集合中应当包括哪些成员(行)。
在这一例子中,为了将关系数据作为集合来操控而专门设计名称以RDM(关系数据模型)作为开头的函数。例如,RDMSORT是如下二元函数,该函数使用第二变元的集合中表明排序顺序和优先级的成员对第一变元的集合进行排序。
表达式。表达式是用于指定集合的符号手段。表示集合的字母数字标识符是表达式的最简单形式。表达式也可以包括许多函数、运算和集合。表达式的一些例子包括:
CRD(SetA)
rdmPROJ(SetA,<“1”,”5”,23”>)
CRD(rdmPROJ(SetA,<”1”,”5”,”23”>))
关系和关系运算符。关系运算符是用于指定两个表达式之间关系的符号手段。关系运算符包括相等、子集和不相交以及它们的取非。这些是利用“EQ”、“SUB”、“DIS”和“NEQ”、“NSB”和“NDS”这些值来指定的,使用关系运算符的一些例子语句包括:
SetA EQC RD(SetB)
SctC SUB SctB
赋值。赋值是将字母数字标识符赋给表达式的语句。在语法上,赋值被指定如下:字母数字标识符=表达式。例如:
NewSet=<"1","2","12","4">
SetA=SS(SETB)
SetC=<"b","c","a","x">
SetD={"Larry","Moe","Curly"}
SetG=NULL
关系数据模型。关系数据模型(RDM)是可以用XSN描述的扩展集合数据模型的子集。关系表视为有序集的集合,其中表的行由这些有序集表示。表示行的集合的数目是这些行内的列(字段)值。将通过具有如下结构的集合来表示具有三行的关系表,其中各行包含四列:
<<a1,b1,c1,d1>,<a2,b2,c2,d2>,<a3,b3,c3,d3>>
表和单独行表示为有序集,但是也有可能将关系表表达为包含无序成员的集合,比如:
{<a1,b1,c1,d1>,<a2,b2,c2,d2>,<a3,b3,c3,d3>>}
基数集。在将集合呈现为有序的情况下,必须呈现用以表明该集合的排序的信息。为了保存关系数据模型的一些附加特征以及为了提供对优化XSN表达式的处理有用的基数信息,通常为代表关系表的集合指定基数集。用于上述无序集的基数集如下:
<"3",<"4",<Ca,Cb,Cc,Cd>>>
基数集是嵌套集合。最外面的集合包含集合的基数(在这一例子中为3,因为表包含三行),继而是用于代表行的成员的基数集。Ca至Cd是代表如下值的基数的值,这些值组成代表行的集合的成员。Cn的各值代表用于该特定成员的最大基数。经由如下基数函来生成基数集:
CardinalityOfSetA=CRD(SetA)
RDM函数。标准关系数据模型包括八个运算。然而,可以说明只需五个运算来实施整个关系模型而仅四个运算通常用于实际实施。XSN提供这些函数在扩展集合数学框架内的符号表示。
这些函数是关系数据模型UNION(RDMUNION)、PROJECT(RDMPROJ)、RESTRICT(RDMREST)、JOIN(RDMJOIN)、DIFFERRENCE(RDMDIFF)和DIVIDE(RDMDIV)的扩展集合版本。除了这些函数之外,三个附加函数在XSN之下可用。这些函数包括RDMSORT、RDMPIVOT和RDMGROUP。
RDMDIFF函数。RDMDIFF定义与关系A-B这一运算等价的无序集。所得集合包括在B中没有的A的所有成员。下文是一个例子格式和对这一函数的描述:
RDMDIFF(A,B)=={}
变元如下:
A-无序集。
B-其成员将从A中排除以产生结果的无序集。
结果:无序集,该无序集如差函数的条件指定的那样包含A中不是B的成员的那些成员。
注释:作为对差这一标准关系(它要求列成员的所有值等价)的扩展,XSN版本允许对判定集的规定以定义等价关系。如果针对条件判定集提供NUL(空),则执行标准RDM函数。如果A EQ B,则结果为NUL集。如果A与B的交集为NUL集,则获得A。
要求:集合A必须是RDM集。当不满足这些条件时的结果为NUL集。A和B必须具有同一成员列基数。
举例:
A={<"a","b","c">,<"d","b","r">}
B={<"3","c","8">}
RDMDIFF(A,B)=={<"a","b"."c">}
RDMGROUP函数:RDMGROUP定义无序集,其中基于由一个或者多个列的成员标识的指定分组来合计列。这一函数结合合计判定集来提供用以生成求和、基数、平均、最小值和最大值(SCAMM)值的能力。下文是一个例子格式和对这一函数的描述:
RDMGROUP(A,Z)
变元:A-无序集或者有序集。
结果:无序集,该无序集包含已经基于集合A的列成员的合计函数和指定的合计判定集Z而生成的成员。
注释:RDMGROUP将为如在判定集中指定的成员列值的各唯一组合来产生一个成员行。用以在其上进行合计的成员列是通过在没有范围的判定集中枚举它们来指定的。输出集合中将包括的其它成员应当表明应当执行哪些合计SCAMM值以产生输出集合。
要求:集合A必须是RDM集。集合Z必须是合计判定集。当不满足这些条件时的结果为NUL集。
举例:
A=<<"3","Tom","a">,
<"2","Sam","c">,
<"6","Harry","a">,
<"7","Harry","a">>
Z=<"3",
"COUNT"."2",
"SUM"."1″>
RDMGROUP(A,Z)->{<"a","3","16">,<"c","1","2">}
RDMJOIN函数。RDMJOIN函数定义如下无序集,该无序集的成员行在按照来自集合A的一个成员行与来自集合B的一个成员行之间对条件判定集Z的满足来确定时是两个成员行的级联。下文是一个例子格式和对这一函数的描述:
RDMJOIN(A,B,Z)=={}
变元如下:
A-将作为所得成员行的左侧来合并的无序集。
B-将作为所得成员行的右侧来合并的无序集。
Z-包含用于确定待合并成员的条件集的判定集。
结果:无序集,该无序集的成员是由与在条件判定集Z中指定的条件匹配的、来自集合A的一个成员行和来自集合B的一个成员行创建的。当发现满足判定集Z中指定的条件的、来自集合A的成员行和来自集合B的成员行时,产生结果集合的成员。所得成员行是如下有序成员,该有序成员包含来自集合A的成员行的成员列、继而是来自集合B的成员行的成员列。
注释:条件判定集Z指定在集合A的成员行与集合B的成员行之间必须成立的条件。
要求:集合A和B必须是RDM集。集合Z必须是条件判定集。当不满足这些条件时的结果为NUL集。判定集Z必须具有针对条件而定义的方案。判定集中成员的范围指定集合A的成员列;判定集中成员的构成指定来自集合B的成员列。
举例:
A={<"sales","Tom">,
<"salcs","Sam">,
<"shipping","Bill">,
<"shipping","Sally">}
B={<"Bldg 1","sales">,
<"Bldg 2","shipping">}
Z={{{"EQ".<"1","2">}}}
RDMJOIN(A,B,Z)->{
<"sales",″Tom","Bldg 1","sales">、
<"sales","Sam","Bldg 1","sales">,
<"shipping","Bill","Bldg 2","shipping">,
<"shipping","Sally","Bldg 2","shipping">}
RDMPIVOT函数。RDMPIVOT定义对指定集合的成员列和成员行进行交换的有序集。下文是一个例子格式和对这一函数的描述:
RDMPIVOT(A)==<>
变元如下:
A-有序集
结果:所得集合包含如下成员行,这些成员行包括集合A的成员列。该集合按照集合A中成员列的顺序来排序。
注释:旋转(pivot)极大的集合可能成本高并且耗时,而且应当只有在无法发现处理集合的其它手段时才实现这些集合。
要求:集合A必须是RDM集。当不满足这些条件时的结果为NUL集。
举例:
A={<"3","Tom","a">,
<"2","Sam","c">,
<"6","Harry","a">,
<"7","Harry","a">}
RDMPIVOT(A)-><
<"3","2","6","7">,
<"Tom","Sam","Harry","Harry">,
<"a","c","a","a">>
RDMPROJ函数。RDMPROJ函数限定如下无序集,该无序集包括来自变元集的所有成员行中除了通过变换判定集指定的成员列值之外的成员。下文是一个例子格式和对这一函数的描述:
RDMPROJ(A,Z)=={}
变元如下:
A-待投影的无序集。
Z-用于投影的变换判定集。
结果:所得集合包含A的各成员行中除了通过变换判定集指定的成员列之外的成员行。
注释:关于与如何恰当指定集合Z有关的信息,参见针对变换判定集的规定。
要求:集合A必须是RDM集。集合Z必须是变换判定集。当不满足这些条件时的结果为NUL集。
举例:
A={<"3","Tom","a","b","s">,
<"2","Sam","c","b","s">,
<"6","Harry","a","z","s">}
Z=<"3","2">
RDMPROJ(A,Z)->{<"a","Tom">,
<"c","Sam">,
<"a","Harry">}
RDMREST函数。RDMREST函数定义如下无序集,该无序集的成员行被约束为满足在条件判定集内指定的条件的成员行。下文是一个例子格式和对这一函数的描述:
RDMREST(A,Z)=={}
变元如下:
A-待约束的无序集。
Z-用于指定约束条件的条件判定集。
结果:所得集合仅包含来自集合A的满足条件判定集Z指定的条件的那些成员行。
注释:关于与如何指定集合Z有关的信息,参见针对条件判定集的规定。
要求:集合A必须满足对RDM集的要求。集合Z必须是条件判定集。如果不满足这些条件,则结果为NUL集。
举例:
A={<"3","Tom","a","b","s">,
<"2","Sam","c","f","s">,
<"6","Harry","a","z","s">}
Z={{{"EQ",<"2","const"."Tom">}},
{{"EQ".<"2","const"."Harry">},{"EQ"<"4","const"."1″>}}}
RDMREST(A,Z)->{<"3","Tom","a","b","s">}
RDMSORT函数。RDMSORT函数基于无序集A和由判定集Z指定的排序来定义有序集。下文是一个例子格式和对这一函数的描述:
RDMSORT(A,Z)==<>
变元如下:
A-无序集。
Z-对所得集合的排序顺序进行描述的映射集。
结果:有序集,该有序集包含按照映射集Z中指定的排序来排序的集合A的所有成员行。
注释:Z是如下映射集,该映射集包含指定最高有效成员至最低有效成员的成员列的范围,其中有效成员确定升序排序顺序。
要求:判定集Z必须是如下有序集,该有序集的元素是各自比集合A的基数更小的NAT成员。集合A必须是RDM集。如果不满足这些条件,则结果为NUL集。
举例:
A={"3","Tom","a","b","s">,
<"2","Sam","c","b","s">,
<"6","Harry","a","z","s">}
Z=<"3","2">
RDMSORT(A,Z)-><<"6","Harry","a","z","s">,
<"3","Tom","a","b","s">,
<"2","Sam","c","b","s">>
RDMUNION函数。RDMUNION定义如下无序集,该无序集包含用于集合A和B的所有成员行。下文是一个例子格式和对这一函数的描述:
RDMUNION(A,B)=={}
变元如下:
A-无序集。
B-无序集。
结果:无序集,该无序集包含集合A和B的成员行。
注释:无。
要求:A和B必须是RDM集并且必须具有相同的成员列基数。如果不满足这些条件,则结果为NUL集。
举例:
A={<"a","b","c">}
B-{<"3","c","8">}
RDMUNION(A,B)->{<"a","b","c">,
<"3","c","8">}
上述函数、格式和变元仅为举例并且可以在其它实施例中有所不同。例如,可以在其它实施例中使用不同或者附加函数。
尽管这里已经示出和描述本发明的优选实施例,但是本领域技术人员将清楚仅通过举例来提供这样的实施例。在不脱离本发明的情况下本领域技术人员现在将想到许多变化、改变和替换。应当理解可以在实施本发明时运用这里描述的本发明实施例的各种备选实施例。本意在于所附权利要求限定本发明的范围并且由此涵盖在这些权利要求及其等效含义的范围内的方法和结构。
Claims (145)
1.一种用于由查询语言语句来建立代数关系的方法,包括:
提供用于存储数据集之间代数关系的关系存储库;
接收引用多个数据集的查询语言语句;
组成对所述查询语言语句中指定的所述数据集进行引用的多个代数关系;以及
在所述关系存储库中存储所述多个代数关系。
2.根据权利要求1所述的方法,还包括:
通过组成对所述查询语言语句中指定的所述数据集中的至少一个数据集进行引用的代数关系来定义至少一个新的数据集;以及
在所述关系存储库中存储用于所述新的数据集的所述代数关系。
3.根据权利要求1所述的方法,其中所述查询语言语句中指定的所述数据集包括至少一个显式数据集,所述方法还包括:
提供用于存储关于所述数据集的信息的数据集信息存储库;
将数据集标识符与所述显式数据集关联;以及
在所述数据集信息存储库中存储所述数据集标识符。
4.根据权利要求1所述的方法,还包括用于存储所述数据集中的至少一些数据集的数据存储库,其中所述查询语言语句中指定的所述数据集中的至少一个数据集在接收所述查询语言语句时尚未存储于所述数据存储库中。
5.根据权利要求1所述的方法,还包括提供用于存储关于所述数据集的信息的数据集信息存储库,其中时间信息与所述数据集信息存储库中的所述数据集中的每个数据集关联,以表明关于所述数据集的信息添加到所述数据集信息存储库的时间。
6.根据权利要求1所述的方法,还包括提供用于存储关于所述数据集的信息的数据集信息存储库,其中所述数据集信息存储库包括与所述数据信息存储库中的每个数据集关联的唯一标识符和外部标识符,以及其中所述外部标识符对于所述数据集中的至少一些数据集是相同的。
7.根据权利要求5所述的方法,其中所述数据集信息存储库包括与所述数据信息存储库中的每个数据集关联的唯一标识符和外部标识符,以及其中所述外部标识符对于所述数据集中的至少一些数据集是相同的。
8.根据权利要求5所述的方法,还包括通过从所述数据集信息存储库去除与在指定时间之前的时间信息关联的数据集来临时重新定义所述数据集信息存储库。
9.根据权利要求8所述的方法,还包括从所述关系存储库去除对从所述数据集信息存储库去除的所述数据集进行引用的代数关系。
10.根据权利要求1所述的方法,还包括用于存储所述数据集中的至少一些数据集的数据存储库,其中所述数据集信息存储库包括与通过所述关系存储库中的代数关系来定义的、并且未存储于所述数据存储库中的至少一个数据集有关的信息。
11.根据权利要求9所述的方法,还包括用于存储所述数据集中的至少一些数据集的数据存储库,其中所述数据集信息存储库包括与未存储于所述数据集存储库中的、并且通过所述关系存储库中对具有在所述指定时间之前的时间信息的数据集进行引用的代数关系来定义的至少一个未实现数据集有关的信息,其中所述临时重新定义所述数据集信息存储库的步骤还包括在从所述数据集信息存储库去除具有在所述指定时间之前的时间信息的所述数据集之前在所述数据集存储库中存储所述未实现数据集。
12.根据权利要求1所述的方法,其中由所述查询语言语句组成的所述多个代数关系具有单个运算符和范围从一个到三个的多个运算数。
13.根据权利要求2所述的方法,其中用于所述新的数据集的所述代数关系具有单个运算符和范围从一个到三个的多个运算数。
14.根据权利要求1所述的方法,其中所述查询语言语句基于关系数据模型。
15.根据权利要求1所述的方法,其中按照结构化查询语言(SQL)格式接收所述查询语言语句。
16.根据权利要求1所述的方法,其中所述查询语言语句基于标记语言模型。
17.根据权利要求1所述的方法,其中按照XQuery格式接收所述查询语言语句。
18.根据权利要求1所述的方法,其中所述查询语言语句请求提供数据集,所述方法还包括使用由所述查询语言语句组成的所述多个代数关系中的至少一些代数关系来提供所请求的数据集。
19.根据权利要求1所述的方法,其中所述查询语言语句请求提供数据集,而所述关系存储库包括非由所述查询语言语句组成的用于数据集的其它代数关系,所述方法还包括使用所述其它代数关系中的至少一些代数关系来提供所请求的数据集。
20.根据权利要求18所述的方法,其中所述查询语言语句请求提供数据集,而所述关系存储库包括非由所述查询语言语句组成的用于数据集的其它代数关系,所述方法还包括使用所述其它代数关系中的至少一些代数关系来提供所请求的数据集。
21.根据权利要求1所述的方法,其中所述查询语言语句请求提供数据集,所述方法包括:
提供定义与所请求的数据集相等的结果的代数关系的多个汇集;
应用优化标准来选择所述代数关系的汇集之一;以及
使用所选代数关系的汇集来提供所请求的数据集。
22.根据权利要求20所述的方法,还包括:
提供定义与所请求的数据集相等的结果的代数关系的多个汇集;
应用优化标准来选择所述代数关系的汇集之一;以及
使用所选代数关系的汇集来提供所请求的数据集。
23.根据权利要求21所述的方法,还包括在树形数据结构中存储代数关系的每个汇集。
24.根据权利要求21所述的方法,还包括将来自所选汇集的所述代数关系分配给处理资源以供并行处理。
25.根据权利要求21所述的方法,其中所述优化标准包括成本计算算法。
26.根据权利要求22所述的方法,其中所述优化标准包括成本计算算法,而所选代数关系的汇集根据所述成本计算算法具有最低成本。
27.根据权利要求21所述的方法,其中所述优化标准至少部分地基于对从储存器检索如下数据集所需的时间的估计,所述数据集是计算所述代数关系的汇集中的每个代数关系汇集所需的。
28.根据权利要求21所述的方法,其中所述优化标准至少部分地基于为了计算所述代数关系的汇集中的每个代数关系汇集而将从储存器检索的数据量。
29.根据权利要求22所述的方法,其中所述优化标准至少部分地基于对如下数据通道的传送速度的估计,所述数据通道用于检索计算所述代数关系的汇集中的每个代数关系汇集所需的数据集。
30.根据权利要求21所述的方法,其中:
所述优化标准至少部分地基于用于从储存器检索为了计算所述代数关系的汇集中的每个代数关系汇集而需要的数据集的成本;以及
如果在代数关系的汇集中多次引用相应数据集,则所述优化标准仅对所述用于从储存器检索所述相应数据集的成本进行一次分配。
31.根据权利要求21所述的方法,其中所述提供代数关系的多个汇集的步骤包括:
从所述关系存储库检索定义所请求的数据集的代数关系;以及
生成与所述检索的代数关系在代数上等价的代数关系的多个汇集。
32.根据权利要求21所述的方法,其中所述代数关系的多个汇集还包括并不在代数上相互等价、但是均将提供与所请求的数据集相等的结果的代数关系的至少两个汇集。
33.根据权利要求21所述的方法,其中所述提供代数关系的多个汇集的步骤包括生成在按照不同物理格式包含相同逻辑数据的等价数据集之间进行区分的代数关系的汇集。
34.根据权利要求33所述的方法,其中所述不同物理格式选自于逗号分隔值格式、制表符分界值格式、二进制串格式、固定偏移格式和标记语言格式。
35.根据权利要求21所述的方法,其中所述提供代数关系的多个汇集的步骤包括生成在不同存储位置包含相同逻辑数据的等价数据集之间进行区分的代数关系的汇集。
36.根据权利要求35所述的方法,其中所述等价数据集中的至少一些等价数据集通过不同数据通道可用。
37.根据权利要求21所述的方法,其中:
所述代数关系的汇集引用按照不同物理格式包含相同逻辑数据的至少两个等价数据集;以及
所述应用优化标准的步骤还包括估计为了从储存器获得所述等价数据集而需要的传送时间以及选择所述等价数据集中具有最少估计传送时间的一个等价数据集。
38.根据权利要求21所述的方法,其中:
所述代数关系的汇集引用在不同存储位置包含相同逻辑数据的至少两个等价数据集;以及
所述应用所述优化标准的步骤还包括估计为了从储存器获得所述等价数据集而需要的传送时间以及选择所述等价数据集中具有最少估计传送时间的一个等价数据集。
39.根据权利要求21所述的方法,还包括:
提供用于计算代数关系的多个函数,其中所述多个函数包括按照不同物理格式对数据集进行运算的至少两个代数等价函数;以及
使用所述函数中的至少一些函数来提供所请求的数据集。
40.根据权利要求37所述的方法,还包括:
提供用于计算代数关系的多个函数,其中所述多个函数包括按照不同物理格式对数据集进行运算的至少两个代数等价函数;
基于将从储存器检索的所选等价数据集的格式来选择所述代数等价函数之一;以及
使用所述函数中的至少一些函数来实现所请求的数据集、包括所述代数等价函数中的所选代数等价函数。
41.一种提供所请求的数据集的方法,包括:
接收没有对所请求的数据集进行请求的多个查询语言语句;
基于所述查询语言语句来组成数据集之间的多个代数关系;以及
至少部分地基于由所述查询语言语句组成的所述多个代数关系来提供所请求的数据集。
42.根据权利要求41所述的方法,其中所述查询语言语句指定至少一个显式数据集,所述方法还包括:
提供用于存储关于所述数据集的信息的数据集信息存储库;
将数据集标识符与所述显式数据集关联;以及
在所述数据集信息存储库中存储所述数据集标识符。
43.根据权利要求41所述的方法,还包括提供用于存储所述数据集中的至少一些数据集的数据存储库,其中所述查询语言语句指定在接收对所请求的数据集的请求时尚未存储于所述数据存储库中的至少一个数据集。
44.根据权利要求43所述的方法,其中所述使用由所述查询语言语句组成的所述代数关系中的至少一些代数关系来计算所请求的数据集的步骤还包括使用在接收对所请求的数据集的请求时尚未存储于所述数据存储库中的所述至少一个数据集。
45.根据权利要求41所述的方法,其中所述代数关系各自具有单个运算符和范围从一个到三个的多个运算数。
46.根据权利要求41所述的方法,其中所述查询语言语句基于关系数据模型。
47.根据权利要求41所述的方法,其中所述查询语言语句基于标记语言模型。
48.根据权利要求41所述的方法,其中所述查询语言语句中的至少一个查询语言语句基于关系数据模型,而所述查询语言语句中的至少一个查询语言语句基于标记语言模型。
49.一种提供所请求的数据集的方法,包括:
提供包含由多个查询语言语句组成的多个代数关系的关系存储库;
使用来自所述关系存储库的所述代数关系中的至少一些代数关系来组成定义与所请求的数据集相等的结果的代数关系的汇集;以及
根据所述代数关系的汇集来计算所请求的数据集。
50.根据权利要求49所述的方法,还包括:
接收请求所请求的数据集的查询语言语句;
基于请求所请求的数据集的所述查询语言语句来组成多个附加代数关系;以及
使用所述附加代数关系中的至少一些附加代数关系来组成所述代数关系的汇集。
51.根据权利要求50所述的方法,还包括:通过基于所述查询语言语句中引用的所述数据集的一部分组成代数关系来定义至少一个新的数据集;以及在所述关系存储库中存储用于所述新的数据集的所述代数关系。
52.一种提供所请求的数据集的方法,包括:
提供包含由多个查询语言语句组成的多个代数关系的关系存储库;
使用来自所述关系存储库的所述代数关系中的至少一些代数关系来组成定义与所请求的数据集相等的结果的代数关系的多个汇集;
应用优化标准来选择所述代数关系的汇集之一;以及
使用所选代数关系的汇集来计算所请求的数据集。
53.根据权利要求52所述的方法,还包括在树形数据结构中存储代数关系的每个汇集。
54.根据权利要求52所述的方法,其中所述优化标准至少部分地基于对从储存器检索如下数据集所需时间的估计,所述数据集是计算所述代数关系的汇集中的每个代数关系汇集所需的。
55.根据权利要求52所述的方法,其中:
所述优化标准至少部分地基于用于从储存器检索为了计算所述代数关系的汇集中的每个代数关系汇集而需要的数据集的成本;以及
如果在代数关系的汇集中多次引用相应数据集,则所述优化标准仅对所述用于从储存器检索所述相应数据集的成本进行一次分配。
56.根据权利要求52所述的方法,还包括将来自所选汇集的所述代数关系分配给处理资源以供并行处理。
57.根据权利要求52所述的方法,其中所述提供代数关系的多个汇集的步骤包括生成在按照不同物理格式包含相同逻辑数据的等价数据集之间进行区分的代数关系的汇集。
58.根据权利要求52所述的方法,其中所述代数关系的汇集引用按照不同物理格式包含相同逻辑数据的至少两个等价数据集;以及
所述应用所述优化标准的步骤还包括估计为了从储存器获得所述等价数据集而需要的传送时间并且以及选择所述等价数据集中具有最少估计传送时间的一个等价数据集。
59.根据权利要求56所述的方法,还包括:
提供多个函数,其中所述多个函数包括按照不同物理格式对数据集进行运算的至少两个代数等价函数;以及
使用所述函数中的至少一些函数来提供所请求的数据集。
60.根据权利要求58所述的方法,还包括:
提供多个函数,其中所述多个函数包括按照不同物理格式对数据集进行运算的至少两个代数等价函数;
基于所述等价数据集中的所选数据集的格式来选择所述代数等价函数之一;以及
使用所述函数中的至少一些函数来实现所请求的数据集、包括所述代数等价函数中的所选代数等价函数。
61.一种用于提供所请求的数据集的方法,包括:
提供定义多个数据集之间关系的多个代数关系;
使用所述多个代数关系中的至少一些代数关系来组成定义与所请求的数据集相等的结果的代数关系的多个汇集;
确定用于所述代数关系的多个汇集中的每个代数关系汇集的成本,其中所述成本至少部分地基于对检索如下数据集所需传送时间的估计,所述数据集是根据所述代数关系的汇集来计算所请求的数据集所需的;
选择具有最低成本的所述代数关系的汇集;以及
使用所选代数关系的汇集来提供所请求的数据集。
62.根据权利要求61所述的方法,其中组成所述代数关系的多个汇集还包括使用所述代数关系中的至少一些代数关系来生成在首次请求所请求的数据集时先前不可用的新的代数关系。
63.根据权利要求61所述的方法,其中组成所述代数关系的多个汇集还包括组成定义所请求的数据集的至少一个代数关系以及生成与定义所请求的数据集的所述至少一个代数关系在代数上等价的代数关系的多个汇集。
64.根据权利要求61所述的方法,其中所述代数关系的多个汇集还包括并不在代数上相互等价、但是均将提供与所请求的数据集相等的结果的代数关系的至少两个汇集。
65.根据权利要求61所述的方法,还包括在树形数据结构中存储代数关系的每个汇集。
66.根据权利要求61所述的方法,还包括将来自所选汇集的代数关系分配给处理资源以供并行处理。
67.根据权利要求61所述的方法,其中所述确定成本的步骤还包括如果在代数关系的汇集中多次引用相应数据集、则仅对用于检索所述相应数据集的成本进行一次分配。
68.根据权利要求61所述的方法,其中组成所述代数关系的多个汇集还包括生成在按照不同物理格式包含相同逻辑数据的等价数据集之间进行区分的代数关系的汇集。
69.根据权利要求68所述的方法,其中所述不同物理格式选自于逗号分隔值格式、制表符分界值格式、二进制串格式、固定偏移格式和标记语言格式。
70.根据权利要求61所述的方法,其中组成所述代数关系的多个汇集还包括生成在不同存储位置包含相同逻辑数据的等价数据集之间进行区分的代数关系的汇集。
71.根据权利要求70所述的方法,其中所述等价数据集中的至少一些等价数据集通过不同数据通道可用。
72.根据权利要求61所述的方法,其中:
所述代数关系的汇集引用按照不同物理格式包含相同逻辑数据的至少两个等价数据集;
所述确定成本的步骤还包括估计为了从储存器获得所述等价数据集而需要的传送时间;以及
所述选择具有最低成本的所述代数关系的汇集的步骤还包括选择对具有最少估计传送时间的所述等价数据集进行引用的所述代数关系的汇集。
73.根据权利要求61所述的方法,其中:
所述代数关系的汇集引用在不同存储位置包含相同逻辑数据的至少两个等价数据集;
所述确定成本的步骤还包括估计为了从储存器获得所述等价数据集而需要的传送时间;以及
所述选择具有最低成本的所述代数关系的汇集的步骤还包括选择对具有最少估计传送时间的所述等价数据集进行引用的所述代数关系的汇集。
74.根据权利要求61所述的方法,还包括:
提供用于计算代数关系的多个函数,其中所述多个函数包括按照不同物理格式对数据集进行运算的至少两个代数等价函数;以及
使用所述函数中的至少一些函数来提供所请求的数据集。
75.根据权利要求68所述的方法,还包括:
提供用于计算代数关系的多个函数,其中所述多个函数包括按照不同物理格式对数据集进行运算的至少两个代数等价函数;
至少部分地基于所选代数关系的汇集中引用的所述数据集的格式来选择所述代数等价函数之一;以及
使用所述函数中的至少一些函数来实现所请求的数据集、包括所述代数等价函数中的所选代数等价函数。
76.根据权利要求68所述的方法,其中所述等价数据集包括第一格式的第一数据集和第二格式的第二数据集,所述第二格式大于所述第一格式,其中所述选择具有最低成本的所述代数关系的汇集的步骤还包括如果所述第二数据集以高于所述第一数据集的传送速度通过数据通道可用、则选择引用所述第二数据集的所述数据汇集。
77.根据权利要求68所述的方法,其中所述等价数据集包括第一格式的在非易失性储存器中可用的第一数据集和第二格式的在易失性存储器中可用的第二数据集,所述第二格式大于所述第一格式,其中所述选择具有最低成本的所述代数关系的汇集的步骤还包括选择引用所述第二数据集的所述代数关系的汇集。
78.一种用于存储指定数据集的方法,包括:
提供定义多个数据集之间关系的多个代数关系;
使用所述多个代数关系中的至少一些代数关系来组成定义与指定的数据集相等的结果的代数关系的多个汇集;
确定用于所述代数关系的多个汇集中的每个代数关系汇集的成本,其中所述成本至少部分地基于对检索如下数据集所需的传送时间的估计,所述数据集是根据所述代数关系的汇集来计算所请求的数据集所需的;
选择具有最低成本的所述代数关系的汇集;以及
使用所选代数关系的汇集来计算所述指定的数据集;以及
存储已经根据所选代数关系的汇集而计算的所述指定的数据集。
79.根据权利要求78所述的方法,其中组成所述代数关系的多个汇集还包括生成在首次指定所述指定的数据集时先前不可用的新的代数关系。
80.根据权利要求78所述的方法,其中组成所述代数关系的多个汇集还包括组成定义所述指定的数据集的至少一个代数关系以及生成与定义所述指定的数据集的所述至少一个代数关系在代数上等价的代数关系的多个汇集。
81.一种用于提供所请求的数据集的方法:
提供用于存储数据集的存储系统;
组成各自定义与所请求的数据集相等的结果的至少两个备选代数关系,所述至少两个备选代数关系包括基于所述存储系统中存储的第一数据集汇集的第一代数关系和基于所述存储系统中存储的第二数据集汇集的第二代数关系;
至少部分地基于对为了使用所述第一代数关系来计算所请求的数据集而从所述存储系统检索所述第一数据集汇集所需要的传送时间的估计和对为了使用所述第二代数关系来计算所请求的数据集而从所述存储系统检索所述第二数据集汇集所需要的传送时间的估计,在所述第一代数关系与所述第二代数关系之间进行选择;以及
使用所选代数关系来计算所请求的数据集。
82.一种用于提供所请求的数据集的方法:
提供用于存储数据集的存储系统;
组成各自定义与所请求的数据集相等的结果的至少两个备选代数关系,所述至少两个备选代数关系包括基于所述存储系统中存储的至少第一数据集的第一代数关系和基于所述存储系统中存储的至少第二数据集的第二代数关系;
其中所述第一数据集和所述第二数据集包含按照不同物理格式存储的相同逻辑数据;
至少部分地基于所述第一数据集的物理格式和所述第二数据集的物理格式在所述第一代数关系与所述第二代数关系之间进行选择;以及
使用所选代数关系来计算所请求的数据集。
83.根据权利要求82所述的方法,其中所述第一数据集的物理格式选自于逗号分隔值格式、制表符分界值格式、二进制串格式、固定偏移格式和标记语言格式。
84.根据权利要求83所述的方法,其中所述第二数据集的物理格式选自于逗号分隔值格式、制表符分界值格式、二进制串格式、固定偏移格式和标记语言格式。
85.根据权利要求82所述的方法,还包括提供用于计算代数关系的多个函数,其中所述多个函数包括按照所述第一数据集的物理格式对数据集进行运算的第一函数和按照所述第二数据集的物理格式对数据集进行运算的第二函数,其中所述第一函数和所述第二函数在代数上等价;
其中所述使用所选代数关系来计算所请求的数据集的步骤还包括如果选择所述第一代数关系则使用所述第一函数而如果选择第二代数关系则使用所述第二函数。
86.根据权利要求82所述的方法,其中所述存储系统包括多个数据通道,而所述第一数据集和所述第二数据集通过不同数据通道可用。
87.根据权利要求86所述的方法,其中所述第一物理格式的所述第一数据集具有第一大小并且通过具有第一数据传送速率的第一数据通道可用,而所述第二物理格式的所述第二数据集具有第二大小并且通过具有第二数据传送速率的第二数据通道可用,所述方法还包括:
至少部分地基于所述第一大小和所述第一数据传送速率来确定第一成本;
至少部分地基于所述第二大小和所述第二数据传送速率来确定第二成本;以及
如果所述第一成本低于所述第二成本则选择所述第一代数关系来计算所请求的数据集。
88.一种用于提供所请求的数据集的方法:
提供用于存储数据集的存储系统,其中所述存储系统包括易失性存储器和非易失性存储介质;
组成各自定义与所请求的数据集相等的结果的至少两个备选代数关系,所述至少两个备选代数关系包括基于所述存储系统中存储的至少第一数据集的第一代数关系和基于所述存储系统中存储的至少第二数据集的第二代数关系;
其中所述第一数据集和所述第二数据集包含按照不同物理格式存储的相同逻辑数据,所述第一数据集按照具有第一大小的第一物理格式来存储,而所述第二数据集按照具有小于所述第一大小的第二大小的第二物理格式来存储;
确定所述第一数据集在所述易失性存储器中可用;以及
选择所述第一代数关系以计算所请求的数据集。
89.一种用于提供所请求的数据集的方法:
提供用于按照多个物理格式存储数据集的存储系统;
提供用于按照所述多个物理格式对所述数据集进行运算的多个函数,其中每个函数被配置用以按照所述物理格式中的相应物理格式对至少一个运算数进行运算;
提供定义与所请求的数据集相等的结果的代数关系,其中所述代数关系引用所述存储系统中存储的至少第一数据集;
按照所述物理格式中的相应物理格式来检索所述第一数据集;
选择所述多个函数中配置用以按照所述第一数据集的所述相应物理格式对运算数进行运算的函数;以及
使用所选函数根据所述代数关系来计算所请求的数据集。
90.根据权利要求89所述的方法,其中所述代数关系指定至少一个运算,而所选函数对应于所述指定的运算。
91.根据权利要求89所述的方法,其中所述多个函数包括配置用以按照不同物理格式对运算数进行运算的代数等价函数。
92.根据权利要求89所述的方法,其中所述提供所述代数关系的步骤还包括从各自定义与所请求的数据集相等的结果的多个代数关系选择所述代数关系。
93.根据权利要求91所述的方法,其中所述提供所述代数关系的步骤还包括从各自定义与所请求的数据集相等的结果的多个代数关系选择所述代数关系。
94.根据权利要求93所述的方法,其中所述选择所述代数关系的步骤还包括至少部分地基于对为了从所述存储系统检索所述第一数据集而需要的时间的估计来选择所述代数关系。
95.根据权利要求89所述的方法,其中所述代数关系引用所述存储系统中存储的至少第二数据集,所述方法还包括按照所述物理格式中的相应物理格式来检索所述第二数据集。
96.根据权利要求95所述的方法,其中所选函数被配置用以按照所述第二数据集的所述相应物理格式对至少第二运算数进行运算。
97.根据权利要求95所述的方法,其中所述代数关系指定至少一个运算,而所选函数对应于所述指定的运算。
98.根据权利要求95所述的方法,其中所述多个函数包括配置用以按照不同物理格式对运算数进行运算的代数等价函数。
99.根据权利要求95所述的方法,其中所述提供所述代数关系的步骤还包括从各自定义与所请求的数据集相等的结果的多个代数关系选择所述代数关系。
100.根据权利要求99所述的方法,其中所述选择所述代数关系的步骤还包括至少部分地基于对为了从所述存储系统检索所述第二数据集而需要的时间的估计来选择所述代数关系。
101.根据权利要求98所述的方法,其中所述提供所述代数关系的步骤还包括从各自定义与所请求的数据集相等的结果的多个代数关系选择所述代数关系。
102.一种用于提供所请求的数据集的方法:
提供在基于第一数据模型的第一方案与基于第二数据模型的第二方案之间的映射;
基于所述第一方案接收第一语句;
基于所述第一语句来组成数据集之间的多个代数关系;
基于所述第二方案接收对所请求的数据集进行请求的第二语句;以及
使用由所述第一语句组成的所述代数关系中的至少一个代数关系和在所述第一方案与所述第二方案之间的所述映射来提供所请求的数据集。
103.根据权利要求102所述的方法,其中所述第一数据模型是关系数据模型。
104.根据权利要求103所述的方法,其中所述第二数据模型是标记语言数据模型。
105.根据权利要求102所述的方法,其中所述第一数据模型是标记语言数据模型。
106.根据权利要求105所述的方法,其中所述第二数据模型是关系数据模型。
107.根据权利要求102所述的方法,其中所述第一语句是结构化查询语言(SQL)格式的查询语句。
108.根据权利要求107所述的方法,其中所述第二语句是XQuery格式的查询语言语句。
109.根据权利要求102所述的方法,其中所述第一语句是XQuery格式的查询语言语句。
110.根据权利要求109所述的方法,其中所述第二语句是结构化查询语言(SQL)格式的查询语言语句。
111.根据权利要求102所述的方法,其中所述第一语句是集合符号语句。
112.根据权利要求111所述的方法,其中所述第二语句是结构化查询语言(SQL)格式的查询语句。
113.根据权利要求107所述的方法,其中所述第二语句是集合符号语句。
114.根据权利要求111所述的方法,其中所述第二语句是XQuery格式的查询语言语句。
115.根据权利要求109所述的方法,其中所述第二语句是集合符号语句。
116.一种用于基于第一方案来提供所请求的数据集的方法:
提供在基于第一数据模型的所述第一方案与基于第二数据模型的第二方案之间的映射;
基于所述第二方案来提供数据集之间的第一组多个代数关系;
至少部分地基于所述第一组多个代数关系来组成定义与所请求的数据集相等的结果的代数关系;以及
使用定义与所请求的数据集相等的结果的所述代数关系和在所述第一方案与所述第二方案之间的所述映射来提供所请求的数据集。
117.根据权利要求116所述的方法,其中所述第一组多个代数关系基于所述第二方案由第一组多个语句组成。
118.根据权利要求116所述的方法,还包括基于所述第一方案来提供数据集之间的第二组多个代数关系,其中定义与所请求的数据集相等的结果的所述代数关系也至少部分地基于所述第二组多个代数关系。
119.根据权利要求118所述的方法,其中所述第一组多个代数关系基于所述第二方案由第一组多个语句组成。
120.根据权利要求118所述的方法,其中所述第二组多个代数关系基于所述第一方案由第二组多个语句组成。
121.根据权利要求119所述的方法,其中所述第二组多个代数关系基于所述第一方案由第二组多个语句组成。
122.根据权利要求116所述的方法,其中所述第一数据模型是关系数据模型。
123.根据权利要求122所述的方法,其中所述第二数据模型是标记语言数据模型。
124.根据权利要求116所述的方法,其中所述第一数据模型是标记语言数据模型。
125.根据权利要求124所述的方法,其中所述第二数据模型是关系数据模型。
126.一种用于存储数据集的方法,包括:
提供数据存储库;
提供用于存储关于多个数据集的信息的数据集信息存储库,所述信息包括指定是否在所述数据存储库中实现各相应数据集的信息;
提供用于存储所述数据集之间多个代数关系的关系存储库;
建立用于将数据集在所述数据集信息存储库中虚拟化的标准;
标识在所述数据存储库中实现的并且满足所述用于虚拟化的标准的至少一个数据集;
基于在所述数据存储库中实现的至少一个其它数据集来确定所述关系存储库包括定义所述标识的数据集的至少一个代数关系;
从所述数据存储库去除所述标识的数据集;以及
改变所述数据集信息存储库中关于所述标识的数据集的信息以表明在所述数据存储库中未实现所述标识的数据集。
127.根据权利要求126所述的方法,其中所述用于虚拟化的标准包括所述相应数据集的大小。
128.根据权利要求126所述的方法,其中所述用于虚拟化的标准包括已经引用所述数据集的次数。
129.根据权利要求126所述的方法,其中所述用于虚拟化的标准包括在所述数据存储库中已经访问所述相应数据集的频率。
130.根据权利要求126所述的方法,其中定义所述标识的数据集的所述代数关系引用在所述数据存储库中实现的至少两个其它数据集。
131.根据权利要求126所述的方法,其中用来定义所述标识的数据集的所述至少一个其它数据集按照不同物理格式包含相同逻辑数据。
132.根据权利要求131所述的方法,其中存储所述标识的数据集的物理格式大于所述至少一个其它数据集的物理格式。
133.根据权利要求132所述的方法,其中存储所述标识的数据集的物理格式选自于逗号分隔值格式、制表符分界值格式、二进制串格式、固定偏移格式和标记语言格式。
134.根据权利要求132所述的方法,其中存储所述至少一个其它数据集的物理格式选自于逗号分隔值格式、制表符分界值格式、二进制串格式、固定偏移格式和标记语言格式。
135.根据权利要求126所述的方法,还包括使用定义所述标识的数据集的所述代数关系来提供所请求的数据集而无需实现所述标识的数据集。
136.根据权利要求135所述的方法,其中所述使用定义所述标识的数据集的所述代数关系来提供所请求的数据集的步骤还包括:
组成定义所请求的数据集的代数关系的多个汇集,其中定义所述标识的数据的所述代数关系用来组成所述代数关系的汇集中的至少一个代数关系的汇集;
应用优化标准来选择所述代数关系的汇集之一,用以计算所请求的数据集;
使用所选代数关系的汇集来计算所请求的数据集。
137.根据权利要求136所述的方法,其中定义所述标识的数据的所述代数关系用来替换所述代数关系的汇集中的至少一个代数关系的汇集中对所述标识的数据集的引用。
138.一种用于存储数据集的方法,包括:
提供数据存储库;
提供用于存储关于多个数据集的信息的数据集信息存储库,所述信息包括指定是否在所述数据存储库中实现每个相应数据集的信息;
提供用于存储所述数据集之间多个代数关系的关系存储库;
从所述数据集信息存储库选择在所述数据存储库中实现的至少一个数据集;
将作为所选数据集的子集的数据集添加到所述数据集信息存储库并且在所述数据存储库中实现所述添加的数据集;
将基于所述添加的数据集来定义所选数据集的代数关系添加到所述关系存储库;
从所述数据存储库去除所选数据集;以及
改变所述数据集信息存储库中关于所选数据集的信息以表明在所述数据存储库中未实现所选数据集。
139.根据权利要求138所述的方法,还包括:
接收请求所请求的数据集的语句,其中所述语句包括引用所选数据集的表达式;
组成具有与所请求的数据集相等的结果的代数关系,其中所述代数关系包括对引用所选数据集的所述表达式进行替换的、对所述添加的子集中的至少一个子集进行引用的表达式;
使用所述代数关系来计算所请求的数据集。
140.根据权利要求138所述的方法,其中所述添加的数据集是所选数据集的具有相等基数的分集。
141.根据权利要求138所述的方法,其中所述添加的数据集是通过用于所选数据集中包括的数据项的标量值的范围来定义的子集。
142.一种用于存储数据集的方法,包括:
提供用于存储数据集之间代数关系的关系存储库;
提供用于存储至少包括第一数据集、第二数据集和第三数据集的数据集的数据存储库;
至少使用所述第二数据集和所述第三数据集来组成定义所述第一数据集的代数关系;
将所述代数关系添加到所述关系存储库;以及
在所述代数关系已经添加到所述关系存储库之后从所述数据存储库去除所述第一数据集。
143.根据权利要求142所述的方法,其中所述第二数据集和所述第三数据集中的至少一个按照与所述第一数据集存储于所述数据存储库的物理格式不同的物理格式存储于所述数据存储库中。
144.根据权利要求143所述的方法,其中存储所述第一数据集的格式选自于逗号分隔值格式、制表符分界值格式、二进制串格式、固定偏移格式和标记语言格式。
145.根据权利要求142所述的方法,还包括:
提供用于存储关于多个数据集的信息的数据集信息存储库,所述信息包括表明在所述数据存储库中实现所述第一数据集、所述第二数据集和所述第三数据集的信息;以及
改变所述数据集信息存储库中关于所述第一数据集的信息以表明在所述数据存储库中未实现所述第一数据集。
Applications Claiming Priority (13)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/383,477 | 2006-05-15 | ||
US11/383,476 US7877370B2 (en) | 2006-05-15 | 2006-05-15 | Systems and methods for data storage and retrieval using algebraic relations composed from query language statements |
US11/383,478 | 2006-05-15 | ||
US11/383,478 US7769754B2 (en) | 2006-05-15 | 2006-05-15 | Systems and methods for data storage and retrieval using algebraic optimization |
US11/383,476 | 2006-05-15 | ||
US11/383,482 US7865503B2 (en) | 2006-05-15 | 2006-05-15 | Systems and methods for data storage and retrieval using virtual data sets |
US11/383,479 | 2006-05-15 | ||
US11/383,480 | 2006-05-15 | ||
US11/383,480 US7797319B2 (en) | 2006-05-15 | 2006-05-15 | Systems and methods for data model mapping |
US11/383,482 | 2006-05-15 | ||
US11/383,477 US7613734B2 (en) | 2006-05-15 | 2006-05-15 | Systems and methods for providing data sets using a store of albegraic relations |
US11/383,479 US7720806B2 (en) | 2006-05-15 | 2006-05-15 | Systems and methods for data manipulation using multiple storage formats |
PCT/US2007/068856 WO2007134278A2 (en) | 2006-05-15 | 2007-05-14 | Systems and methods for data storage and retrieval |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101479697A true CN101479697A (zh) | 2009-07-08 |
CN101479697B CN101479697B (zh) | 2011-05-25 |
Family
ID=38750704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800243853A Active CN101479697B (zh) | 2006-05-15 | 2007-05-14 | 用于数据存储和检索的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7797319B2 (zh) |
CN (1) | CN101479697B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104221017A (zh) * | 2012-04-10 | 2014-12-17 | 微软公司 | 使用示例来查找连接语料库中的数据 |
CN104714999A (zh) * | 2013-12-16 | 2015-06-17 | 国际商业机器公司 | 整合来自多个源的时间感知的数据的系统和方法 |
CN108664635A (zh) * | 2018-05-15 | 2018-10-16 | 上海达梦数据库有限公司 | 数据库统计信息的获取方法、装置、设备和存储介质 |
CN110637291A (zh) * | 2017-03-15 | 2019-12-31 | 森塞尔公司 | 在数据库中对trie数据结构的有效使用 |
CN110651264A (zh) * | 2017-04-25 | 2020-01-03 | 米雷克斯简易股份公司 | 具有时态关系数据库的关系数据库管理系统中的查询计划生成和执行 |
US11556827B2 (en) | 2020-05-15 | 2023-01-17 | International Business Machines Corporation | Transferring large datasets by using data generalization |
Families Citing this family (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7877370B2 (en) * | 2006-05-15 | 2011-01-25 | Algebraix Data Corporation | Systems and methods for data storage and retrieval using algebraic relations composed from query language statements |
US7769754B2 (en) * | 2006-05-15 | 2010-08-03 | Algebraix Data Corporation | Systems and methods for data storage and retrieval using algebraic optimization |
US7865503B2 (en) * | 2006-05-15 | 2011-01-04 | Algebraix Data Corporation | Systems and methods for data storage and retrieval using virtual data sets |
US7797319B2 (en) | 2006-05-15 | 2010-09-14 | Algebraix Data Corporation | Systems and methods for data model mapping |
US7613734B2 (en) * | 2006-05-15 | 2009-11-03 | Xsprada Corporation | Systems and methods for providing data sets using a store of albegraic relations |
US7720806B2 (en) * | 2006-05-15 | 2010-05-18 | Algebraix Data Corporation | Systems and methods for data manipulation using multiple storage formats |
US20080033968A1 (en) * | 2006-08-07 | 2008-02-07 | Quan Dennis A | Methods and apparatus for input specialization |
US7539663B2 (en) * | 2006-11-15 | 2009-05-26 | Microsoft Corporation | Mapping composition using algebraic operators |
US8458129B2 (en) * | 2008-06-23 | 2013-06-04 | Teradata Us, Inc. | Methods and systems for real-time continuous updates |
US7933916B2 (en) * | 2008-02-28 | 2011-04-26 | Microsoft Corporation | Querying nonSQL data stores with a SQL-style language |
US8321438B1 (en) * | 2008-06-18 | 2012-11-27 | Bank Of America Corporation | Integration layer for a data repository |
KR20150042866A (ko) * | 2008-12-02 | 2015-04-21 | 아브 이니티오 테크놀로지 엘엘시 | 데이터 관리 시스템 내의 데이터 집합의 맵핑 인스턴스 |
EP2478433A4 (en) * | 2009-09-16 | 2016-09-21 | Ab Initio Technology Llc | MAPPING DATA SET ELEMENTS |
US8595213B2 (en) * | 2010-07-15 | 2013-11-26 | Semmle Limited | Type inference for datalog with complex type hierarchies |
US9330115B2 (en) * | 2010-08-06 | 2016-05-03 | International Business Machines Corporation | Automatically reviewing information mappings across different information models |
AU2011323773B2 (en) | 2010-10-25 | 2015-07-23 | Ab Initio Technology Llc | Managing data set objects in a dataflow graph that represents a computer program |
US9418095B2 (en) | 2011-01-14 | 2016-08-16 | Ab Initio Technology Llc | Managing changes to collections of data |
US8892844B2 (en) | 2011-03-07 | 2014-11-18 | Micron Technology, Inc. | Methods of accessing memory cells, methods of distributing memory requests, systems, and memory controllers |
US10838886B2 (en) | 2011-04-19 | 2020-11-17 | Micron Technology, Inc. | Channel depth adjustment in memory systems |
US8799269B2 (en) | 2012-01-03 | 2014-08-05 | International Business Machines Corporation | Optimizing map/reduce searches by using synthetic events |
US8583687B1 (en) * | 2012-05-15 | 2013-11-12 | Algebraix Data Corporation | Systems and methods for indirect algebraic partitioning |
US8898165B2 (en) | 2012-07-02 | 2014-11-25 | International Business Machines Corporation | Identification of null sets in a context-based electronic document search |
US9460200B2 (en) | 2012-07-02 | 2016-10-04 | International Business Machines Corporation | Activity recommendation based on a context-based electronic files search |
US8903813B2 (en) | 2012-07-02 | 2014-12-02 | International Business Machines Corporation | Context-based electronic document search using a synthetic event |
US9262499B2 (en) | 2012-08-08 | 2016-02-16 | International Business Machines Corporation | Context-based graphical database |
US8676857B1 (en) | 2012-08-23 | 2014-03-18 | International Business Machines Corporation | Context-based search for a data store related to a graph node |
US8959119B2 (en) | 2012-08-27 | 2015-02-17 | International Business Machines Corporation | Context-based graph-relational intersect derived database |
US9251237B2 (en) | 2012-09-11 | 2016-02-02 | International Business Machines Corporation | User-specific synthetic context object matching |
US8620958B1 (en) | 2012-09-11 | 2013-12-31 | International Business Machines Corporation | Dimensionally constrained synthetic context objects database |
US9619580B2 (en) | 2012-09-11 | 2017-04-11 | International Business Machines Corporation | Generation of synthetic context objects |
US9223846B2 (en) | 2012-09-18 | 2015-12-29 | International Business Machines Corporation | Context-based navigation through a database |
US8782777B2 (en) | 2012-09-27 | 2014-07-15 | International Business Machines Corporation | Use of synthetic context-based objects to secure data stores |
US9741138B2 (en) | 2012-10-10 | 2017-08-22 | International Business Machines Corporation | Node cluster relationships in a graph database |
US10489360B2 (en) | 2012-10-17 | 2019-11-26 | Ab Initio Technology Llc | Specifying and applying rules to data |
US9177067B2 (en) | 2012-11-04 | 2015-11-03 | Walter J. Kawecki, III | Systems and methods for enhancing user data derived from digital communications |
US8931109B2 (en) | 2012-11-19 | 2015-01-06 | International Business Machines Corporation | Context-based security screening for accessing data |
US8983981B2 (en) | 2013-01-02 | 2015-03-17 | International Business Machines Corporation | Conformed dimensional and context-based data gravity wells |
US8914413B2 (en) | 2013-01-02 | 2014-12-16 | International Business Machines Corporation | Context-based data gravity wells |
US9229932B2 (en) | 2013-01-02 | 2016-01-05 | International Business Machines Corporation | Conformed dimensional data gravity wells |
US9053102B2 (en) | 2013-01-31 | 2015-06-09 | International Business Machines Corporation | Generation of synthetic context frameworks for dimensionally constrained hierarchical synthetic context-based objects |
US9069752B2 (en) | 2013-01-31 | 2015-06-30 | International Business Machines Corporation | Measuring and displaying facets in context-based conformed dimensional data gravity wells |
US8856946B2 (en) | 2013-01-31 | 2014-10-07 | International Business Machines Corporation | Security filter for context-based data gravity wells |
US9110722B2 (en) | 2013-02-28 | 2015-08-18 | International Business Machines Corporation | Data processing work allocation |
US9292506B2 (en) | 2013-02-28 | 2016-03-22 | International Business Machines Corporation | Dynamic generation of demonstrative aids for a meeting |
US10152526B2 (en) | 2013-04-11 | 2018-12-11 | International Business Machines Corporation | Generation of synthetic context objects using bounded context objects |
US9348794B2 (en) | 2013-05-17 | 2016-05-24 | International Business Machines Corporation | Population of context-based data gravity wells |
US9195608B2 (en) | 2013-05-17 | 2015-11-24 | International Business Machines Corporation | Stored data analysis |
EP3742284A1 (en) | 2014-07-18 | 2020-11-25 | AB Initio Technology LLC | Managing lineage information |
US9626393B2 (en) | 2014-09-10 | 2017-04-18 | Ab Initio Technology Llc | Conditional validation rules |
US9971838B2 (en) | 2015-02-20 | 2018-05-15 | International Business Machines Corporation | Mitigating subjectively disturbing content through the use of context-based data gravity wells |
US9633078B1 (en) | 2016-09-30 | 2017-04-25 | Semmle Limited | Generating identifiers for tuples of recursively defined relations |
EP3805956A1 (en) * | 2019-10-07 | 2021-04-14 | Dynactionize N.V. | Computer implemented and computer controlled method, computer program product and platform for arranging data for processing and storage at a data storage engine |
US11907179B2 (en) | 2021-09-23 | 2024-02-20 | Bank Of America Corporation | System for intelligent database modelling |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1588827A (en) | 1978-05-31 | 1981-04-29 | System Dev Corp | Data processor method and means for determining degree of match between two data arrays |
US4945471A (en) | 1981-04-01 | 1990-07-31 | Teradata Corporation | Message transmission system for selectively transmitting one of two colliding messages based on contents thereof |
US4814979A (en) | 1981-04-01 | 1989-03-21 | Teradata Corporation | Network to transmit prioritized subtask pockets to dedicated processors |
US4925311A (en) | 1986-02-10 | 1990-05-15 | Teradata Corporation | Dynamically partitionable parallel processors |
US5303244A (en) | 1991-03-01 | 1994-04-12 | Teradata | Fault tolerant disk drive matrix |
US5321813A (en) | 1991-05-01 | 1994-06-14 | Teradata Corporation | Reconfigurable, fault tolerant, multistage interconnect network and protocol |
US5588129A (en) | 1994-02-09 | 1996-12-24 | Ballard; Clinton L. | Cache for optical storage device and method for implementing same |
US5511190A (en) | 1995-01-20 | 1996-04-23 | Tandem Computers, Inc. | Hash-based database grouping system and method |
CA2167790A1 (en) | 1995-01-23 | 1996-07-24 | Donald S. Maier | Relational database system and method with high data availability during table data restructuring |
JPH11500548A (ja) | 1995-01-23 | 1999-01-12 | タンデム コンピューターズ インコーポレイテッド | データベース完全性の保守用システム |
US5717911A (en) | 1995-01-23 | 1998-02-10 | Tandem Computers, Inc. | Relational database system and method with high availability compliation of SQL programs |
US5794252A (en) | 1995-01-24 | 1998-08-11 | Tandem Computers, Inc. | Remote duplicate database facility featuring safe master audit trail (safeMAT) checkpointing |
US5745753A (en) | 1995-01-24 | 1998-04-28 | Tandem Computers, Inc. | Remote duplicate database facility with database replication support for online DDL operations |
US5835915A (en) | 1995-01-24 | 1998-11-10 | Tandem Computer | Remote duplicate database facility with improved throughput and fault tolerance |
US5799322A (en) | 1995-01-24 | 1998-08-25 | Tandem Computer, Inc. | System and method for stopping updates at a specified timestamp in a remote duplicate database facility |
US5740433A (en) | 1995-01-24 | 1998-04-14 | Tandem Computers, Inc. | Remote duplicate database facility with improved throughput and fault tolerance |
US5778354A (en) | 1995-06-07 | 1998-07-07 | Tandem Computers Incorporated | Database management system with improved indexed accessing |
US6061676A (en) | 1996-05-29 | 2000-05-09 | Lucent Technologies Inc. | Effecting constraint magic rewriting on a query with the multiset version of the relational algebric theta-semijoin operator |
US6032144A (en) * | 1996-05-29 | 2000-02-29 | Lucent Technologies Inc. | Optimization of queries using relational algebraic theta-semijoin operator |
US6021405A (en) | 1996-08-23 | 2000-02-01 | Tandem Computers, Inc. | System and method for optimizing database queries with improved performance enhancements |
US5822747A (en) | 1996-08-23 | 1998-10-13 | Tandem Computers, Inc. | System and method for optimizing database queries |
US5819255A (en) | 1996-08-23 | 1998-10-06 | Tandem Computers, Inc. | System and method for database query optimization |
US5987453A (en) | 1997-04-07 | 1999-11-16 | Informix Software, Inc. | Method and apparatus for performing a join query in a database system |
US5884328A (en) | 1997-08-29 | 1999-03-16 | Tandem Computers, Inc. | System and method for sychronizing a large database and its replica |
US6076152A (en) | 1997-12-17 | 2000-06-13 | Src Computers, Inc. | Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem |
US6230142B1 (en) | 1997-12-24 | 2001-05-08 | Homeopt, Llc | Health care data manipulation and analysis system |
US6105033A (en) | 1997-12-29 | 2000-08-15 | Bull Hn Information Systems Inc. | Method and apparatus for detecting and removing obsolete cache entries for enhancing cache system operation |
US6161103A (en) * | 1998-05-06 | 2000-12-12 | Epiphany, Inc. | Method and apparatus for creating aggregates for use in a datamart |
US6012405A (en) * | 1998-05-08 | 2000-01-11 | Mcet, Llc | Method and apparatus for automatic adjustment of thread tension |
US6484247B1 (en) | 1998-06-25 | 2002-11-19 | Intellution, Inc. | System and method for storing and retrieving objects |
US6460027B1 (en) | 1998-09-14 | 2002-10-01 | International Business Machines Corporation | Automatic recognition and rerouting of queries for optimal performance |
US6327587B1 (en) | 1998-10-05 | 2001-12-04 | Digital Archaeology, Inc. | Caching optimization with disk and/or memory cache management |
US6601058B2 (en) | 1998-10-05 | 2003-07-29 | Michael Forster | Data exploration system and method |
US6449605B1 (en) | 1998-12-28 | 2002-09-10 | Oracle Corporation | Using a materialized view to process a related query containing a one to many lossless join |
US6678681B1 (en) | 1999-03-10 | 2004-01-13 | Google Inc. | Information extraction from a database |
US6516310B2 (en) | 1999-12-07 | 2003-02-04 | Sybase, Inc. | System and methodology for join enumeration in a memory-constrained environment |
US6615209B1 (en) | 2000-02-22 | 2003-09-02 | Google, Inc. | Detecting query-specific duplicate documents |
US6529903B2 (en) | 2000-07-06 | 2003-03-04 | Google, Inc. | Methods and apparatus for using a modified index to provide search results in response to an ambiguous search query |
US6865575B1 (en) | 2000-07-06 | 2005-03-08 | Google, Inc. | Methods and apparatus for using a modified index to provide search results in response to an ambiguous search query |
US6658423B1 (en) | 2001-01-24 | 2003-12-02 | Google, Inc. | Detecting duplicate and near-duplicate files |
US6621612B2 (en) | 2001-03-19 | 2003-09-16 | Teradata Technologies Limited | Full spectrum optical communication system and methods thereof |
US7131575B1 (en) | 2001-03-26 | 2006-11-07 | Usa Technologies, Inc. | MDB transaction string effectuated cashless vending |
JP2003228534A (ja) | 2001-11-30 | 2003-08-15 | Ntt Docomo Inc | 情報配信システム、記述データ配信装置、コンテンツ位置管理装置、データ変換装置、受信端末装置、情報配信方法 |
US7254810B2 (en) | 2002-04-18 | 2007-08-07 | International Business Machines Corporation | Apparatus and method for using database knowledge to optimize a computer program |
JP4124331B2 (ja) | 2002-09-17 | 2008-07-23 | 株式会社日立製作所 | Dbms向け仮想ボリューム作成・管理方法 |
US7240078B2 (en) | 2003-11-25 | 2007-07-03 | International Business Machines Corporation | Method, system, and program for query optimization with algebraic rules |
US7630956B2 (en) * | 2005-03-07 | 2009-12-08 | Skytide, Inc. | System and method for analyzing and reporting extensible data from multiple sources in multiple formats |
US7797319B2 (en) | 2006-05-15 | 2010-09-14 | Algebraix Data Corporation | Systems and methods for data model mapping |
US7865503B2 (en) | 2006-05-15 | 2011-01-04 | Algebraix Data Corporation | Systems and methods for data storage and retrieval using virtual data sets |
US7720806B2 (en) | 2006-05-15 | 2010-05-18 | Algebraix Data Corporation | Systems and methods for data manipulation using multiple storage formats |
AU2007249268A1 (en) | 2006-05-15 | 2007-11-22 | Algebraix Data Corporation | Systems and methods for data storage and retrieval |
US7613734B2 (en) | 2006-05-15 | 2009-11-03 | Xsprada Corporation | Systems and methods for providing data sets using a store of albegraic relations |
US7877370B2 (en) | 2006-05-15 | 2011-01-25 | Algebraix Data Corporation | Systems and methods for data storage and retrieval using algebraic relations composed from query language statements |
US7769754B2 (en) | 2006-05-15 | 2010-08-03 | Algebraix Data Corporation | Systems and methods for data storage and retrieval using algebraic optimization |
-
2006
- 2006-05-15 US US11/383,480 patent/US7797319B2/en active Active
-
2007
- 2007-05-14 CN CN2007800243853A patent/CN101479697B/zh active Active
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104221017A (zh) * | 2012-04-10 | 2014-12-17 | 微软公司 | 使用示例来查找连接语料库中的数据 |
CN104221017B (zh) * | 2012-04-10 | 2018-05-22 | 微软技术许可有限责任公司 | 使用示例来查找连接语料库中的数据 |
US10140366B2 (en) | 2012-04-10 | 2018-11-27 | Microsoft Technology Licensing, Llc | Finding data in connected corpuses using examples |
CN104714999A (zh) * | 2013-12-16 | 2015-06-17 | 国际商业机器公司 | 整合来自多个源的时间感知的数据的系统和方法 |
CN104714999B (zh) * | 2013-12-16 | 2018-04-27 | 国际商业机器公司 | 整合来自多个源的时间感知的数据的系统和方法 |
CN110637291A (zh) * | 2017-03-15 | 2019-12-31 | 森塞尔公司 | 在数据库中对trie数据结构的有效使用 |
CN110651264A (zh) * | 2017-04-25 | 2020-01-03 | 米雷克斯简易股份公司 | 具有时态关系数据库的关系数据库管理系统中的查询计划生成和执行 |
CN110651264B (zh) * | 2017-04-25 | 2023-08-08 | 米雷克斯简易股份公司 | 具有时态关系数据库的关系数据库管理系统中的查询计划生成和执行 |
CN108664635A (zh) * | 2018-05-15 | 2018-10-16 | 上海达梦数据库有限公司 | 数据库统计信息的获取方法、装置、设备和存储介质 |
US11556827B2 (en) | 2020-05-15 | 2023-01-17 | International Business Machines Corporation | Transferring large datasets by using data generalization |
Also Published As
Publication number | Publication date |
---|---|
US7797319B2 (en) | 2010-09-14 |
CN101479697B (zh) | 2011-05-25 |
US20070276787A1 (en) | 2007-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101479697B (zh) | 用于数据存储和检索的系统和方法 | |
US8380695B2 (en) | Systems and methods for data storage and retrieval using algebraic relations composed from query language statements | |
US7720806B2 (en) | Systems and methods for data manipulation using multiple storage formats | |
US7865503B2 (en) | Systems and methods for data storage and retrieval using virtual data sets | |
US7613734B2 (en) | Systems and methods for providing data sets using a store of albegraic relations | |
US9116955B2 (en) | Managing data queries | |
JP5113157B2 (ja) | データの記憶及び検索を行うためのシステム及び方法 | |
US7769754B2 (en) | Systems and methods for data storage and retrieval using algebraic optimization | |
Rheinländer et al. | Optimization of complex dataflows with user-defined functions | |
US20050108209A1 (en) | Context quantifier transformation in XML query rewrite | |
CN101506804A (zh) | 用于在大数据集分析期间维持一致性的方法和装置 | |
CN102918494A (zh) | 基于数据库模型不可知论、纲要不可知论且工作负载不可知论的数据存储和存取模型的数据存储和/或检索 | |
US20090125500A1 (en) | Optimization of abstract rule processing | |
Stadler et al. | Sparklify: A scalable software component for efficient evaluation of sparql queries over distributed rdf datasets | |
Makrynioti et al. | Declarative data analytics: A survey | |
Voigt | Structural graph-based metamodel matching | |
Szárnyas et al. | Evaluation of optimization strategies for incremental graph queries | |
Luján-Mora et al. | Physical modeling of data warehouses using UML component and deployment diagrams: design and implementation issues | |
Kvet et al. | Enhancing Analytical Select Statements Using Reference Aliases | |
Oelsner et al. | IQM4HD concepts | |
Dong et al. | An SQL Frontend on top of OCaml for Data Analysis | |
Gu et al. | Coral: federated query join order optimization based on deep reinforcement learning | |
Bellomarini | Logic-based Approaches to Reasoning | |
Ordonez et al. | Migration of data mining preprocessing into the DBMS | |
Liu | The XFM view adaptation mechanism: An essential component for XML data warehouses |
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 | ||
C56 | Change in the name or address of the patentee |
Owner name: ALGA BREX DATA CORPORATION Free format text: FORMER NAME: XSPRADA CORP. |
|
CP01 | Change in the name or title of a patent holder |
Address after: American Texas Patentee after: Juiblex Aergeshan data company Address before: American Texas Patentee before: Xsprada Corp. |