CN101506804B - 用于在大数据集分析期间维持一致性的方法和装置 - Google Patents
用于在大数据集分析期间维持一致性的方法和装置 Download PDFInfo
- Publication number
- CN101506804B CN101506804B CN2006800298283A CN200680029828A CN101506804B CN 101506804 B CN101506804 B CN 101506804B CN 2006800298283 A CN2006800298283 A CN 2006800298283A CN 200680029828 A CN200680029828 A CN 200680029828A CN 101506804 B CN101506804 B CN 101506804B
- Authority
- CN
- China
- Prior art keywords
- data
- change
- subclauses
- clauses
- data block
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
通过使用多维数据模型来更新数据库的方法和装置,其中将对应于所述数据库的数据组织成多维数据块。每个数据块具有与之相关联的概要信息,该概要信息对应于相关联数据块的当前演变状态。在数据模型中保存标识数据块内和数据块之间的数据相关性的相关性信息。改变条目列表标识对数据块作出的改变并且标识作出改变的时间。将改变条目应用到数据块的请求被接收。改变条目被应用到数据块,包括生成如下的数据块的相关性列表,即其数据直接或间接地与更新的数据块相关的数据块。根据相关性更新算法处理相关性列表中的数据块以更新相关性列表中的数据块。
Description
技术领域
本发明涉及用于分析大数据集的技术,更具体地,涉及用于对多维大数据集有效地运行“假设”情境(“what if”scenario)的方法和装置。
背景技术
术语“数据管理软件”包括用于处理商业数据的大批方案,所述商业数据处理可粗略地归为三类:联机事务处理(OLTP)、数据仓库和联机分析处理(OLAP)。这些类的每个都具有某些优点和缺点,这在上述引用的申请中已讨论。
简言之,OLTP涉及帮助并管理面向事务的应用的一类方案,通常用于许多行业中的数据条目和检索事务,所述行业例如包括银行业、航空、邮购、超市和制造业。将数据存储在系统中的OLTP系统的一个重要目标是可容易地访问以确保高响应度。提供锁定机制也很重要,所述锁定机制用以确保例如当个人预定了资源(例如航班座位)时,所述资源对于系统中的其他人不再可用。因此,在OLTP系统中,将数据存储在不止一个地方是不可取的,而是强调对不同表格进行联合处理以组合数据的高依赖性。OLTP系统对实时事务处理十分有效,然而并不是特别适用于采用聚集查询的报告功能,例如示出在特定航班上每月飞行多于两次的所有人。
数据仓库采用不同的数据模式,其更好地适用于支持相对复杂的报告功能。然而,可能存在大量的数据复制。在OLTP环境中,这种复制不可接受,因为对一份数据的修改将需要在数据仓库表中的多个地方而非仅在单个位置对其进行复制。另一方面,从报告的角度来看数据仓库的优势在于它允许创建并保存概要表,所述概要表聚集与可能对特定事务感兴趣的查询相对应的信息,例如财务季度中特定路线的乘客量。虽然数据仓库系统很完善地生成静态报告,但是它们不能有效地支持其中预先不知道问题的数据分析。例如,销售经理可以查看静态报告并看到在特定月份中特定产品的全国销量比预期低。然而,因为报告的静态本质,所以导致不足量的原因可能是不明显的。在这样的情况下,销售经理希望能够深入数据以判断例如是否存在可以用作解释的任何可确认差异(例如地域、时间等)。这些类型的能力落入OLAP的范畴。
OLAP系统组织数据以允许自组织(ad hoc)类的分析,其将使得销售经理能够集中关注可能解释在静态报告中识别出的差异的数据。这与十分适用于检索细节数据而通常很难提供概要的OLTP方案形成了对照。OLAP方法还与被需要用于维护极大量的概要表来复制这样的功能的数据仓库方案形成了对照。OLAP方案的一个严重问题涉及它们通常仅适用于批处理(与以近乎实时更新为特征的事务处理相对)的事实。因OLAP系统的下层数据中存在大量高度互相相关的概要信息,对任一份细节数据进行更新都往往有很大的计算量,因为在分级结构的许多不同级上的许多不同概要通常需要被无效并重算。因此,大部分OLAP系统通常采用批重算,而不支持数据的交互式更新。存在试图找到各种折衷以至少给出交互式更新的外观的OLAP方案。例如,某些方案限制其上的数据集或索引,从而使得其适合主存储器,然后在检索之后交互地重算所有的数据值。其他方案采用脚本技术以在批处理之间隔离并更新数据的子集。然而,这些方法只是部分地减轻了与更新多维数据集相关联的低效率。因此,虽然OLAP系统在进行自组织数据查询以帮助识别并定位问题方面有效,但是它们在理解作出改变所设计的东西以解决识别出的问题所需的自组织更新或“假设”情境分析方面相对效率较低。
以上引用的专利申请描述了多种技术,通过使用这些技术,复杂的大数据集可以被更高效地无效并重算以反映改变。在对大数据集的概要信息进行维护时,与在这样的数据集中的分级数据的不同级数据块之间的相关性校验相结合地采用改变日志(change logging)。因此,更新或重算下层数据所需的时间更接近于是作出改变的次数的函数,而不是如大多数OLAP方案那样是数据集的大小或维数的函数。此外,所描述的技术还允许基本同时地利用同一下层数据集来运行多个“假设”情境。不同使用者可以并行运行这些多个对等的情境。可替代地,单个使用者可具有多级情境,也就是说基于父情境的结果的子情境,所述父情境和子情境在传统OLAP域中目前均不可行。随着使用者“假设”情境的复杂性增大,存在增长的如下需求:与传统OLAP系统能够实现的功能相比,能够执行改变和更新的并且支持丰富分析的结构良好的系统。
发明内容
概言之,在一个方面中,本发明提供如下的方法和装置,其包括计算机程序产品,实现并使用用于提供改变相关应用程序(on-changeapplicator)的技术,该改变相关应用程序用于通过使用多维数据模型对数据库中的多维数据块应用改变。每个数据块包括若干个数据元素。该改变相关应用程序包括用于执行如下操作的计算机程序代码:接收更新数据块中的一个或多个数据元素的请求;从改变信息条目列表中得到改变信息条目;并且根据基于受更新影响的数据元素而选择的一个或多个规则更新数据块中的数据元素,该更新仅使用得到的改变信息条目和已经存在于数据块中的数据元素,藉此该改变相关应用程序确保在该更新中使用的所有数据在一致的时间点处。
各种实现方式可以包括如下的特征中的一个或多个。所述规则可以包括一个或多个数学公式,所述数学公式定义用于更新数据块中的每种类型的数据元素的表达式。所述改变信息条目至少可以包括以下元素:描述改变条目何时被创建的改变信息条目编号,受改变信息条目影响的一个或多个数据元素的位置,所述数据元素的旧值,以及所述数据元素的新值。所述改变信息条目可以包括用于数据元素的新值的向量,并且用于更新数据元素的所述计算机程序代码包括通过使用所述向量以单次运算更新数据块的若干个数据元素的计算机程序代码。所述改变相关应用程序可以包括用于参考由其他改变相关应用程序执行的更新来确定何时将改变信息条目应用到数据块的计算机程序代码,其中关于数据模型中的相关性结构作出所述确定,该相关性结构标识数据块内的以及数据块之间的数据元素间数据相关性。所述改变相关应用程序可以包括用于在两个分离的改变相关应用程序的应用之间确定何时计算数据块中的数据值的计算机程序代码,其中关于数据模型中的相关性结构作出所述确定,该相关性结构标识在数据块内的数据元素与改变信息条目之间的数据相关性。所述改变相关应用程序可以包括用于从数据库中的其他数据块和非多维数据结构中检索数据的计算机程序代码。所述改变相关应用程序可以包括如下的计算机程序代码,其用于通过对一个或多个未改变的操作数使用反向运算来重新定义数学公式,基于改变的操作数和结果生成一个或多个改变相关应用程序规则。所述改变相关应用程序可以包括用于确定待存储到改变信息条目中的数据值的计算机程序代码,其中关于数据模型中的相关性结构作出所述确定,该相关性结构针对具体类型的改变信息条目标识每个改变相关应用程序所需的操作数。
概言之,在一个方面中,本发明提供如下的方法和装置,其包括计算机程序产品,实现并使用用于通过使用多维数据模型更新数据库的技术,在所述多维数据模型中以多维数据块的形式组织对应于数据库的数据。每个数据块具有与之相关联的概要信息,该概要信息对应于相关联数据块的当前演变状态。在数据模型中维护标识数据块内和数据块之间的数据相关性的相关性信息。维护改变条目列表,该改变条目列表标识对数据块中特定数据块作出的改变并且标识作出改变的时间。将改变条目应用到数据块的请求被接收。将改变条目应用到数据块,包括生成如下的数据块的相关性列表,即其数据直接或间接地与更新的数据块相关的数据块。根据相关性更新算法处理相关性列表中的数据块以更新相关性列表中的数据块。
各种实现方式可以包括以下特征中的一个或多个。如果对数据块进行的处理将生成新的改变条目,那么处理可以包括对相关性列表中的数据块进行处理。每个数据块可以包括一个或多个数据元素,并且其中如果对数据块进行的处理可能生成作为稀疏概要(sparse summarize)的特定数据元素的表达式的结果的新的改变条目,那么处理可以包括对相关性列表中的数据块的处理。每个数据块可以包括一个或多个数据元素,并且如果对改变条目的应用可能导致如下的新的改变条目,该新的改变条目落在任一稀疏概要量度(sparse summarizing measure)的任一表达式的估计范围之外,那么处理可以包括对相关性列表中的数据块进行处理。处理可以包括对相关性列表中的每个数据块进行处理。处理可以包括仅将非瞬时(non-transient)改变存储到改变条目列表中。
维护改变信息条目可以包括维护计算改变列表编号,该计算改变列表编号标识所有改变条目已经被处理的时间点,藉此计算改变列表定义对相关性列表中的数据块的最早开始点处理。若干个计算改变列表编号可以被维护以用于数据库的子集,其中子集的集合在数据模型中形成分隔(partition)。所述应用步骤和所述处理步骤可以是相同运算的一部分。处理可以包括推迟处理直到相关性列表中的数据块被查询为止,或者直到改变列表条目被应用到相关性列表中的数据块为止。处理可以包括根据通过数据库内的使用者权力定义的范围划分关系(scoping relationship),处理相关性列表中的数据块。应用改变条目可以包括应用复合改变条目,该复合改变条目定义在多个时间周期上重复的改变。处理可以包括应用复合改变条目,该复合改变条目定义在沿对块进行定义的一个或多个密集(dense)维度的多个数据元素上重复的改变。应用改变条目可以包括通过使用改变相关应用程序来应用改变条目。处理可以包括通过使用改变相关应用程序来应用改变条目。
接收请求可以包括将使用者输入值接收到被指定为包含导出值的数据块的单元中,并且监视因使用者输入值导致的任何约束破坏(constraintviolation),直到约束破坏已经被解决为止。处理可以包括判断具有所述使用者输入值的单元是否在一个或多个其他块中具有相关值,并且当具有所述使用者输入值的单元在其他块中具有相关值时,创建调节在一个或多个其他块中的相关值的补偿导出改变列表条目。处理可以包括判断具有所述使用者输入值的单元是否在一个或多个被使用者输入并且被导出的其他块中具有相关值,并且当数据值被修改并且与这两个使用者输入导出值都相关时,仅对最内部的(innermost)使用者输入导出值指定补偿导出改变列表条目。处理可以包括判断与具有所述使用者输入值的单元相关的所有值是否在相同块中,当判断与具有所述使用者输入值的单元相关的所有值在相同块中时,保留附加的磁盘空间来指示导出数据值已经被使用者输入修改,并且确保使用者输入值不被导出值覆盖。
可以在行源(row source)中的一个或多个数据元素与数据块中的一个或多个数据元素之间创建映射,以访问按行源格式存储的数据元素并对所述数据元素应用计算规则。所述映射可以定义以下内容的一个或多个:范围划分(scoping)、维度映射规范(dimension map specification)和时间变换。所述映射可以将用于行源的改变列表条目变换为用于与行源相关的目标方体(cube)的一个或多个改变列表条目,藉此对行源进行的改变可以被传播到目标方体。所述映射可以将行源中的数据值的相关关系变换为方体中的相关关系。可以在第一方体中的一个或多个数据元素与第二方体中的一个或多个数据元素之间创建映射。所述映射可以定义以下内容的一个或多个:分配运算、变换运算和聚集运算。所述映射可以定义以下内容的一个或多个:范围划分、维度映射规范和时间变换。所述映射可以将第一方体的改变列表条目变换为第二方体的一个或多个改变列表条目,藉此对第一方体中的数据元素进行的改变可以被传播到第二方体中的数据元素。所述映射可以将方体中的数据值的相关关系变换为跨越方体的数据值的相关关系。
概言之,在一个方面中,本发明提供如下的方法和装置,其包括计算机程序产品,实现并使用用于通过使用来自下层数据库(underlyingdatabase)的数据运行多个情境的技术。根据多维数据模型组织数据,在所述多维数据模型中将数据组织成多维块。每个块具有与之相关联的概要信息,该概要信息对应于相关联块的当前演变状态。该数据模型包括标识块内以及块之间的数据相关性的相关性信息。第一情境处理被运行。该第一情境处理维护第一改变信息,该第一改变信息标识对所述块中的第一组块的副本作出的第一改变和作出第一改变的时间。该第一情境处理帮助重算第一组块的副本以及第一组相关块(first dependent blocks)的副本以结合第一改变。与第一情境处理基本同时运行第二情境处理。该第二情境处理维护第二改变信息,该第二改变信息标识对所述块中的第二组块的副本作出的第二改变和作出第二改变的时间。该第二情境处理帮助重算第二组块的副本以及第二组相关块的副本以结合第二改变。在被提交(commit)到下层数据库之前,该第一改变不可用于该第二情境处理,并且在被提交到下层数据库之前,该第二改变不可用于该第一情境处理。参考相关性信息、概要信息和第一改变信息更新下层数据库,从而使该第一改变可用于该第二情境处理。该更新包括第二改变信息与第一改变信息的调和(reconciliation),确保该第二情境看到数据如同所有该第一情境的改变信息在任何该第二情境的改变信息之前被应用到数据块一般,从而保持数据一致性。
各种实现方式可以包括以下特征中的一个或多个。更新可以包括确定以何种顺序将第一改变和第二改变提交到下层数据库,按照所确定的顺序,对数据库应用改变信息,包括生成其数据直接或间接地与先前改变的数据改变相关的数据改变相关性列表,并且根据相关性更新算法处理相关性列表中的数据改变以更新相关性列表中的数据改变。所述第一和第二情境处理可以按分级结构关系组织,并且当一个或多个以下情况发生时,可以回收与情境处理有关的垃圾块:当子情境处理被废弃或者被提交到所述数据库时、当改变被提交到情境处理时、或者当发生两个情境处理的调和时。仅当不需要与父情境处理的调和时,子情境处理才可以被提交到数据库,并且更新可以包括将父情境处理中的块替换为来自子情境处理的对应块。针对每个情境处理,只要情境处理所涉及的块发生改变,就可以将不受改变影响的块也演变到当前状态。每个块可以被分段为头部部分和数据部分,并且演变可以包括判断块的数据部分在演变后是否将仍与演变前相同,并且当判断所述数据部分将仍相同时,仅将所述块的头部信息演变到当前状态。在附图和以下的描述中阐释本发明的一个或多个实施例的细节。根据该描述和附图以及权利要求书,本发明的其他特征和优点将变得明白。
附图说明
图1示出根据本发明的沙盒(sandbox)分层结构的示意图。
图2示出根据本发明如何执行沙盒的垃圾回收(garbage collection)的示意图。
各附图中类似标号指示类似元件。
具体实施方式
现将详细参考本发明的具体实施例,所述实施例包括用于执行本发明的发明人预期的最佳模型。在附图中示出这些具体实施例的示例。虽然结合这些具体实施例来描述本发明,然而应理解所述描述并非意欲将本发明限制为所描述的实施例。相反,所述描述意欲覆盖由随附权利要求定义的可以被包括在本发明的精神和范围内的替代、修改和等价物。在以下的描述中,为了提供对本发明的全面理解而提出具体细节。可以实践本发明而无需这些具体细节的某些或全部。此外,可以不描述众所周知的特征以避免不必要地遮掩本发明。
基本概念和系统运算
上述引用的专利申请描述了如下的系统和方法,其在对大数据集的概要信息进行维护时,与在这样的数据集中的分级数据的不同级数据块之间的相关性校验相结合地采用改变日志。该方法导致如下的数据库管理系统(DBMS)方案,其中更新或重算下层数据所需的时间更接近于是作出改变的次数的函数,而不是像大多数OLAP方案那样是数据集的大小或维数的函数。无论下层数据集是对应于关系数据模型还是对应于多维数据模型,均可以应用该技术。本发明的实施例提供用于执行改变和更新的结构良好的格式,其使得能够执行更复杂的运算。因此,本发明的系统和方法使得若干个使用者能够运行比先前可能的“假设”情境复杂得多的“假设”情境。以下部分描述系统的一些一般特性和一些基本概念。可以在上述引用的专利申请中找到对这些特征的更详细描述。
根据本发明的具体实施例,为了帮助理解在此描述的各种技术,采用在多维方体(multi-dimensional cube)中组织数据的多维数据模型。方体是多维数据集。方体中的每个数据元素是具有维度的元素。可被稀疏地或稠密地填充的维度定义了用于查阅数据元素的索引的数目。所述包含n个维数的方体使用n个索引来定义具有维度的元素的位置。
方体中元素的数目是方体中每个维度的笛卡尔积的基数(cardinality)。方体具有与定义方体的维数数目相等的维数。每个维度包含成员,并且维度自身也是成员。维度中成员的数目(包括维度自身)定义维度的基数。方体中数据元素的数目是方体中每个维度的基数的积。稀疏填充的或“键”(key)维度被用作对稠密填充的或“块”(block)维度中的值集进行索引的键。在此将这样的方体子集称作“块”。在本发明的一个实施例中,块形成系统的计算单位,即一起被计算的多维数据集的最小子集。块还形成输入/输出(I/O)单位。如在下文中将讨论的,因为块中的所有数据被一起计算,所以这使得能够在块内执行复杂运算,例如计算中值。将块用作计算单位的另一有趣的结果是:如果块内的数据值可以从位于该块内的其他数据值得到,那么不用存储该数据值并且因此系统可以更高效地运算。
如之前记载的,本发明中采用的多维数据模型可以直接地或间接地对应于下层数据集。也就是说,下层数据集可以存储在对应于上述数据模型的多维数据库中。可替代地,下层数据集可以存储在对应于不同多维模型的多维数据库中,或甚至可以存储在对应于多个模型的任一模型的关系数据库中。在这样的情况下,下层数据库被映射到适用于在此描述的技术的多维数据模型。在下文的独立部分中将进一步详细描述这些映射。
在此描述的系统和方法使用改变列表(change list)来跟踪对数据单元作出的修改。对数据单元作出的每个修改创建改变列表条目(CLE)。因此,从“开始时间”对块应用CLE将导致该块的当前版本。盘上的实例化块(instantiated block)具有相关联的CLE,该CLE本质上表示块的时间点。为了获得块的当前版本,在该时间点与目前时间点之间的所有CLE被应用。
在进一步讨论改变列表的概念及其运算之前,再提出“沙盒”的概念是有用的。沙盒也称作情境,其中使用者执行“假设”分析。沙盒的概念形成对块的更新以及在有时并行运行不同情境中的相同块的更新的支持。通常,存在基础情境或基沙盒以及从基沙盒分支的子沙盒的分级结构。对特定沙盒进行的更新可以或可以不被反映在其他沙盒中,这取决于分级结构中它们的关系。用于更新块和沙盒的一般规则已经在上述引用的专利申请中详尽讨论,因此在此不再讨论。然而,下文中将讨论与“沙盒隔离”相关的某些特定情况。通常,沙盒隔离是指如下的概念:提供使用者可以对其作出与其他使用者并行作出的改变隔离的改变的沙盒,从而使得每个使用者能够在其自己的“世界”中工作并研究他们自己的改变如何影响下层数据集,即使其他使用者可能在他们的独立“世界”中同时改变下层数据集。
现返回改变列表条目的概念,根据本发明的具体实施例,CLE包括受影响单元的坐标、沙盒标识符(ID)、改变编号、父沙盒ID、父沙盒改变编号、新值以及相对于之前的计算值的变化量。当前改变列表编号(CLN)与每个沙盒一起存储。CLN是单调升的编号,并且在每次对沙盒中的块中的单元作出改变时被增大。每个块包含被计算的沙盒的ID以及那时的CLN。在沙盒内,改变列表条目编号方式是利用序号的简单递增的编号方式。原始下层数据库被指定为沙盒0。
当创建CLE时,当前沙盒CLN被递增,用于该编号的新条目被创建,并且当前父沙盒CLN被与该CLE相关联。关联父CLN帮助遍历任何祖先(ancestor),并针对每个父沙盒确定需对当前沙盒应用何种改变。可替代地,每个沙盒CLN可以被存储在块自身中。在一个实施例中,所有的沙盒改变列表被排列在“主改变列表”中,该主改变列表是在系统内发生的所有行为的列表。
当创建CLE时,新的数据值总是被存储。当其是和或聚集路径值时,与前一数据值的差值(也称作变化量值)被存储。这发生在数据值是沿块维度的叶级(leaf-level)值并且具有作为沿键维度的聚集算子的和或计数时(然而应注意聚集算子并不局限于和或计数)。在创建CLE之后,针对所有相关CLE调整变化量值。这可以通过针对如下的改变列表条目进行过滤来完成:所述改变列表条目具有变化量数据集,是用于相应沙盒或其后代(descendant)的,并且其中成员以该成员为相关成员。
本发明的实施例允许在相同方体内的成员之间以及在不同方体的成员之间定义相关性(dependency)。因此,当从存储器中检索块时,通过参考数据模型中固有的相关性结构并通过参考改变列表,可以判断在另一方体中值的改变是否影响该块中的任何值。此外,相关性结构和改变列表提供帮助改变信息从一个方体变换到另一方体从而使得可以根据相关性应用改变所必需的信息。将在下文中的独立部分中进一步详细讨论改变信息的变换和应用,并且无论下层数据源(一个或多个)是关系的还是多维的都可以完成所述变换和应用。
以上讨论的大部分概念和运算已经在上述引用的专利申请中公开。然而,这些概念最适用于这样的环境,其中块之间的分析运算是诸如求和或计数之类的聚集运算。这样的运算不需要关注复杂元素,例如应用的顺序,在被改变的块之外的或目标块中的其他数据值,或数据相关的条件运算。熟悉此技术的读者应认识到,在复杂的数据分析中会遇到这样的元素,并且将这样的分析扩展为跨越块边界的运算是有价值的。在这样的情形中需要特别注意确保改变前后数据的一致性。
这样的情形之一是当涉及多个变量时,例如在加权和的情况下。例如,通过研究生产线中每种类型的单元,并将特定类型的单元数目乘以该类型单元的单价,然后当完成所有乘法时将各结果相加,可以计算以美元表示的生产线成本。只要任一特定单元类型的单元数目改变,或者只要一个或多个单元类型的单位成本改变,这都将引起生产线成本的改变。因此,系统必须具备处理这样的改变的能力。在本发明的一个实施例中,由称作改变相关应用程序(on-change applicator)的多段程序代码来管理这种能力,现将进一步详细描述所述改变相关应用程序。
改变相关应用程序
在本发明的一个实施例中,由改变相关应用程序对块应用改变,所述改变相关应用程序可表征为指定用于规定应该如何将特定改变应用到块的公式的多段程序代码。正如数据值可以作为操作数出现在用于计算其他数据值的多个不同公式中那样,可以存在与特定类型CLE相关联的多个改变相关应用程序。可见,将包含在CLE中的数据与用于应用改变的程序代码分离可以显著地减少CLE的数目和类型。
通常,改变相关应用程序的目的是在使用包括在块自身以及正处理的CLE中的数据(而非来自其他块的数据)时执行对块的更新。通过这样做,改变相关应用程序确保所有被利用的数据是在最初作出改变的时间点的,而不是更早或更迟的时间点。这使得能够利用连续的改变应用执行一系列计算,其中保持应用的顺序并导致好像整个系统作为替代地已经根据每个改变被无效并重算一样的相同数据值。如果改变相关应用程序作为替代地直接参考其他块中的数据,那么那些块可能在与该块被修改的时间点不同的其他时间点,从而导致顺序的不一致。
现将讨论涉及改变相关属性的多个示例性情境。第一情境涉及如下的简单情况:其中量度x沿维度s1求和(也就是,x=sum(children(x)))。如下的改变相关表达式定义当x改变时如何处理:<OnChange measure=″x″formula=″x=target(x)+source(delta(x))″/>
此示例提出用于解除数据源和目标的参照并且用于到达日志条目的部分的宏代码。可见,由上述示例示出的改变相关应用程序可以用于支持诸如求和或计数之类的聚集运算(aggregating operation)。
第二情境提出之前描述的加权和的情况。在此,需求方体包括沿生产线聚集的并作为单元需求与单元成本的积来计算的产品成本。熟悉此技术的读者应认识到:单元需求和单元成本都有可能随时间变化,改变应用的顺序必须被保持,并且当每个改变被处理时,在对改变的操作数应用改变时,未改变的操作数的值必须可用。公式上,这可以被表示为如下表1所示:
表1
cost=units * unitCost<OnChange measure=″units″formula=″cost=target(cost)+(source(unitCost)*source(delta(units)))″/><OnChange measure=″unit cost″formula=″cost=target(cost)+(source(units)*source(delta(unitCost)))″/> |
可以看出,一般而言,每个操作数需要一个改变相关表达式。
在上述情境中,CLE必须不仅包含被改变的数据的旧值和新值,而且包含在改变时其他操作数的值。这是通过在系统初始化时为成员检测所有改变相关应用程序,并且将所有其他“源”操作数添加到将与被改变的值本身一起存储在CLE中的值列表而完成的。这还意味着,如果系统随后应该被修改以调整公式或改变相关应用程序,那么必须首先整个地处理改变列表,或者利用批计算机制计算系统。通过上述应用程序,直接或间接地与被修改的产品块相关的任一产品分组块可以仅基于其先前值以及改变而直接演变,而不需要参考任何其他数据。
在上述示例中,假定单元成本和单元数量存储在相同的方体中。然而,在一个实施例中,改变相关应用程序还支持针对位于不同的方体或其他非多维结构中的数据的数据检索和操控。在这种情况下,系统确保在CLE的生成及其应用之间不修改远程数据。
第三情境是使用外部数据的更为复杂的分配情境。在此,需求方体包括制成品的总计划需求(pd)。在制造进度方体中的制造场所之间分配该计划需求。从被称为行源(rs)的第三计算单元中抽取分配百分比,在所述行源中将数据建模为关系元组,而非在多维交点处的值。公式上,这可以被表示为如下表2所示:
表2
schedule.pd=demand.pd * rs.allocPct<OnChange measure=″demand.pd″formula=″schedule.pd=schedule.pd/old(demand.pd)* new(demand.pd)/><OnChange measure=″rs.allocPct″formula=″schedule.pd=schedule.pd/old(rs.allocPct)* new(rs.allocPct)/> |
在本文的后面部分中将描述所需要的映射逻辑。上述情境的一个有趣的方面在于,可以利用在块和CLE中已经可用的其他操作数来重算在处理改变相关应用程序过程中使用的第二自变量。该重算减少必须收集并存储在CLE中的内容,并且可以通过标识特定程序逻辑的反向运算而自动进行。在上述情境中,例如可以通过除法将乘法反向。通过这些为程序逻辑段指定的反向运算,可以在结果和其他操作数方面将操作数重写,并且从而利用熟悉此技术的从业者熟知的窥孔优化技术在改变相关应用程序中替换所述操作数。此外,在所有用于量度定义的运算均具有已知或指定的反向运算的情况下,可以通过应用窥孔优化重写原始量度定义公式来生成改变相关应用程序本身。
在一个实施例中,通过日志条目变量管理对改变相关应用程序的调用,并且应用程序存储在通过源量度键接的映射中。应注意,在源量度和应用程序之间存在一对多的关系。在下表3中示出改变应用程序调用的伪码。
表3
Given data block,b,and a list of entriesIf b depends on entry,e,Map entryCall Program.execute(entry e,block b)The execute()method will do thisFind applicator program(s)for delta in entry eSetup execution context //this binds variables in the//program to the entry and//the blockFor all applicator programs,p,Execute p |
应用程序由目标量度分段,这使得能够支持若干个作为单个源量度函数的目标量度。因为程序查找键必须为源量度,所以对于单个日志条目,可以有若干个应用程序。
第四情境涉及对相关的改变相关变量进行排序,其中存在用于单个日志条目的若干个应用程序。考虑日志变量x和a,其中x是a和q的函数,即x=f(a,q),并且a是q(q是改变相关变量)的函数,即a=f(q)。在这种情况下,必须以适当的顺序应用改变相关应用程序。在一个实施例中,通过参考相关性结构来保持改变相关应用程序的应用顺序。具体地,在x之前需要估计a,因为x不仅是q的函数而且也是a的函数。可以在系统初始化时,通过利用基于它们的定义的递归遍历的部分排序来枚举改变相关应用程序,从而建立这样的排序。
相关情境如下:x=f(z,q),其中z是在块计算时计算的公式量度,并且q是改变相关量度。这带来一个问题,因为z值在块计算程序被调用之前是未知的。因此,为了支持这种类型的情境,需要将块计算拼接到日志应用的处理中。
上述情境示出,如何可以通过访问块内数据、通过访问其他块中的数据,并且将数据映射到正在被更新的量度,或者通过访问来自外部源(例如关系数据库中的行源)的数据,将改变相关应用程序用于在对块作出更新时计算块中的量度。改变列表是用于互相相关的数据值的通信机制,所述互相相关的数据值可位于在不同的块、方体或行源中。
在一些跨方体计算中,量度定义包括指定求和表达式的改变相关属性。这使得方体的分层聚集结构可以不同,其中仅需将两个方体的子集彼此映射。在这种情况下,基本公式标识用于聚集的数据源,而操作数公式定义当操作数被改变时所采取的动作。下表4示出具有改变相关表达式的量度的可能显示,并示出用于进度方体的计划需求(PD)量度定义。
表4
<Measure name=″pd″type=″derived″displayName=″Projected Demand Units″><Formula><!--dense calculation formula -->schedule.pd=rs.allocation * demand.pd</Formula><OnChange measure=demand.pd><Formula>schedule.pd=old(schedule.pd)/old(demand.pd)* new(demand.pd) |
</Formula><Dimension name=″Product″/><Dimension name=″InventoryLocation″/></OnChange><OnChange measure=rs.allocation><Formula>Schedule.pd=old(schedule.pd)/old(rs.allocation)* new(rs.allocation)</Formula><Dimension name=″Product″/><Dimension name=″InventoryLocation″/></OnChange><!-- on-change expressions for summarizing along manufacturingdimension --></Measure> |
从表4可以看出,改变相关属性可以指定一个或多个维度。在多维情况下,这意味着在沿每个维度上将以相同方式估计概要。此外,因为可以从改变相关表达式推断出数据源信息,所以不一定要在成员定义中指定相关结构。在这种情况下,初始使用者改变条目必须增加系统生成的改变条目,以进一步沿概要维度传播改变。
这样做的一个副作用是单个改变的应用可能导致改变生成及应用的级联。因为改变日志是DBMS中数据一致性的基础,所以根据可能被查询的改变的级联,该级联必须先于任何值之前发生。接触列表(TouchList)是增强该一致性的数据结构,以下将进一步详细讨论。
接触列表及相关概念
如以上所讨论的,存在改变可以导致改变的整体级联的情况。例如,假定部件的库存随时间周期性地改变。在时间T处的开始库存等于在时间T-1处的结束库存。其还等于在时间T-1处的开始库存加上接收量减去需求量的差。类似地,在时间T+1处的开始库存等于在时间T处的结束库存,或者换种方式表达,在时间T的开始库存加上接收量减去需求量的差。现在,例如,如果需求量在时间T-1处改变,那么这将影响在时间T、T+1、T+2等所有将来的开始和结束库存值。如果库存不允许被表示为负数(因为那将不能满足服务需求),那么为了确定在时间T+17的可用库存,必须在T-1上至T+16之间应用所有的改变,不可以跳过任何步骤。如果每个时间T的值保存在不同的计算单元或块中,那么必须使用改变列表来在这些块之间传送改变,并且这些改变必须以相关性的顺序级联。在一个实施例中,通过接触列表机制的方式来确保这一点。
当生成CLE时,如果该改变记录的应用将导致生成附加的改变条目,那么将该条目的块键添加到接触列表。当初始列表上的条目被“接触”时,通过改变列表应用和块计算将所述条目计算到当前的时间点,并且所述条目生成它们自己的改变条目,这些新生成的改变条目接下来可能需要将块键添加到接触列表。该过程递归地继续直到不再生成更多的条目。
该接触算法可以产生具有不同程度的效率的一致性结果。在范围的一端是“大锤算法”(sledge hammer algorithm)方法,其访问沿所有相关性路径的每个块;在另一端,是基于关于如果应用特定改变那么将如何改变的知识访问较小块集的算法。该分级的四个示例性实现方式如下(按从最不保守的方法到最保守的方法排序)。第一实现方式涉及如果改变条目的应用将导致新的改变条目,那么接触块。第二实现方式涉及如果改变条目的应用可以导致如下的新的改变条目,那么接触块,所述新的改变条目落在稀疏概要的特定量度的表达式的估计范围之外。第三实现方式涉及如果改变条目的应用可以导致如下的新的改变条目,那么进行接触,所述新的改变条目落在任一稀疏概要的量度的任一表达式的估计范围之外。第四实现方式涉及接触沿相关性路径的每个块。
已经在上述引用的专利申请中描述了接触一个块的概念。简单地说,其思想是检查块CLN是否小于沙盒CLN。如果小于,则可能存在需要应用到块的CLE。然后在数据库中搜索可应用的列表CLE,然后将这些CLE应用到块。块CLN然后增大到沙盒CLN。
熟悉此技术的读者应意识到,对于大数据集,可以存在大量的接触列表条目。因为根据本发明的DBMS的运行时间正比于改变的次数,所以期望减少系统改变的次数。已经在上文中关于选择适当的接触算法描述了减少系统改变的一种方法。减少改变次数的另一种技术与瞬时改变的概念相关联。如果使用者请求块改变,并且DBMS接触所有受该请求影响(直接地或间接地)的块,那么不需要存储这些改变,因为将会受到该特定请求影响的所有变量都已经被改变。
减少改变次数的另一种方法涉及计算改变列表编号(Calc CLN)如何增大。如在上述引用的申请中所述,特定方体的Calc CLN反映在任何时间,被确保已经应用到该沙盒中的所有块的改变列表编号。换言之,该沙盒中的所有块至少直到该沙盒的Calc CLN是“当前的”。还可以将特定于沙盒的Calc CLN分段为分析模型内的每个方体专门的CLN集。当已经对块作出了后续改变并且系统已经确认不再针对特定方体的沙盒中的任何块产生改变时,然后该方体的该沙盒的Calc CLN被增大。具有越多的当前Calc CLN导致越快的接触处理,因为在接触期间需要被应用的CLE更少。
增大系统效率的另一种方法是推迟改变生成。数据一致性需要所有的改变在可能与它们相关的值查询改变列表之前被生成。可以通过如下的方式强有力地约束该查询,即确保所有相关改变作为使用者操作的一部分被生成,所述使用者操作通过作为相同的使用者操作的一部分的排空接触列表来生成初始改变集。在这种情况下,在使用者操作之后,在确保已经生成所有条目的情况下可以查询任一个块。也可以通过如下的方式较弱地约束该查询,即作为替代地确保在特定块被计算之前生成该块所直接地或间接地相关的所有相关改变。这可以通过在查询块时的改变列表应用之前查询接触列表,并且处理列表上的条目直到在接触列表上的条目与被查询的块之间不存在相关关系而完成。当仅是部分受影响的块可能作为进一步分析的一部分被查询时,该较弱的约束可以比强有力的约束更为有效。可以适当地使用强约束和弱约束之间的任何条件。
在某些实施例中,通过范围划分可以实现附加的时间节约。例如,假设使用者执行库存分析,并且使用者仅能够看到与库存相关的数据。在这种情况下,使用者将不能够访问(或关心)例如财务数据。因此,因为系统内使用者权力的外部边界预先已知,所以为了节约处理时间,对下层数据的更新可以被限制到这些外部边界以内。在一个实施例中,通过用于如下分析的相关联沙盒来产生这种划分范围的关系,所述分析具有定义分析数据范围的“分析类型”。
本发明的一个实施例支持复合条目的概念。参考如上所述的变化的库存的示例,对复合条目进行最佳的说明。如所讨论的,在特定时间改变的需求量的变化将影响在后来时间的所有将来的开始和结束库存值。此外,需求量的改变可以导致其他块的级联的改变,例如,例如使用该部件的组件或产品、递送时间等等可能改变。所有这些级联的改变可以作为单独的改变被生成。然而,因为处理时间正比于改变的次数,所以通常不建议如此。作为替代地,本发明的系统支持复合改变的使用,这类似于向量数学。也就是说,仅存在与一个部件的相关性,然而改变被重复多个时间周期。因此,不必添加若干个改变列表条目,也不必针对它们的每个执行相关性分析,仅添加一个必需进行相关性分析的条目。在一个实施例中,改变相关应用程序能够支持向量,从而使得在单个运算中可以在块之间传输多个值并且可以将所述多个值应用到目标量度。这产生如下两个方面的更高效率:用于与改变不相关的多个块的改变列表的更高效处理,以及对与改变相关的块的更高效应用。
上级输入(Upper level input)
在一个实施例中,库存系统使得使用者能够将值输入通常包含导出值的单元(例如上级单元)中。因此,使用者可以将计算值的值设定为除其相关值的计算结果外的值。这使得可以通过允许在用于计算该导出值的输入值改变之前设定目标导出值,从而支持诸如从上到下的分配之类的运算。在一个实施例中,通过为如下的单元保留额外的磁盘空间来实现该特征,该单元被正常地导出然而可能被使用者输入值覆盖。
该系统还监控响应于使用者改变导出值而发生的任何约束破坏(constraint violation)。例如,假设一个公司预期在一月生产10个单位的产品,在二月生产10个单位并在三月生产10个单位。然后第一季度的总产量通常是一个导出值,其等于各个月份生产的单位的和,即30个单位。如果使用者将第一季度的总产量改变为50个单位,那么存在20个单位的差值,这引入约束破坏,在此操作数并非相加。该改变需要与约束破坏一起被保存。当使用者改变操作数的值之一时,例如将一月的值变为15并且将二月的值变为15,从而使第一季度的实际的和为40单位,那么差值导致约束破坏变为10个单位而非20个单位。随后,如果三月的值被改变为20,差值现在是零,那么约束破坏已经被处理。如熟悉此技术的读者注意到的,在该整个时间段中,年度值的值应该已经被调整了对第一季度值的改变所指定的20个单位,但在满足约束破坏之前,并未在后续运算中对一月、二月或者三月作出改变而附加地调整。
本发明的一个实施例支持针对这样的使用者指定导出值的CLE导出类别,所述使用者指定导出值额外地包括“净改变”,或者在使用者指定目标值与操作数中的值之间的残差。随着随后的CLE被创建,这些CLE被测试以判断该导出条目是否与它们相关。如果相关,则创建补偿导出CLE,该补偿导出CLE利用以上讨论的改变相关机制,通过受下层计算影响的量来调节该净改变,并将变化量减小类似的量,从而其他相关值不被影响。
还有可能已经作出多个导出值改变,其中一个改变与下一个改变相关。例如,如果使用者除了修改第一季度外还修改了年度值,那么可能出现这种情况。在这种情况下,对一月的值作出的改变应该通过改变第一季度来补偿,而并不影响年度值,因为季度数量的误差将吸收该补偿。然而,对四月数量作出的改变将直接影响年度值。在本发明的一个实施例中,将主动导出的CLE保存在相关性分级结构中。当随后的CLE被创建,并相对于导出CLE被测试时,首先相对于分级结构的根来对它们进行测试。如果找到相关性,就相对于导出CLE(父导出CLE所依赖的CLE)对它们进行进一步的递归测试。相对于分级结构中最低的元素(不存在被依赖的子导出CLE)来执行补偿。
以前提到,当根据存在于相同块中的其他数据值来整个地计算块内的数据值时,不需要保存该数据值。在一个实施例中,通过利用指示已经被使用者指定并且不应被计算覆盖的位图,为如下的单元保留一些额外盘空间来实现该特征,所述单元被正常的导出但是可以被使用者输入值覆盖。此外,这些值不按以上的方式生成导出CLE,因为净变化量始终可通过根据相同块内的它的自变量来重算公式,并且将结果数据值与存储值进行比较而计算出来,从而使得系统能够更高效地操作。
映射
如以上所讨论的,出于各种原因,以不同的格式(方体、行源等)维护不同类型的数据是有利的,例如,因为不同数据具有不同的维数。当相比于多维方体格式而言,以关系格式更高效地存储数据或者数据在本质上相关时,行源尤其引人关注。例如,单位成本通常并不经常改变,所以如上所述地为沿着时间维度的每个时间周期都复制单位成本值,将引起低效率。
在一实施例中,本发明的系统提供在行源(例如关系数据库)与方体之间的映射,从而在方体计算期间,可以参考行源或表数据。在与聚集(即维数变少)和分配(即维数增多)相关的运算中,这样的映射尤其重要。例如,可能存在这样的情况,其中按照地域以美元针对生产线来存储销售数据,使用者想要针对生产线上的每种产品察看关于每种产品的单位数量的数据,而与地域无关。在这种情况下,需要作出几个转换。首先,将生产线转换为产品,也就是说需要执行分配操作,例如可以通过使用生产线中每种产品的产品比率来完成该分配操作。通常可以根据方体历史数据得到产品比率。接下来,以美元计的货币值需要被转换为单位数目,例如通过咨询行源中的平均售价(ASP)可完成该转换。这是变换运算的示例。最后,地域信息需要被忽略,从而使得数据不再被分解到不同地域中去。这是聚集运算的示例。可以通过在方体之间或者在方体和行源之间提供映射,来实现所有这些转换,现在将进一步详细描述这一点。
映射必须定义被映射的源和目标区域的子集。例如,当将一个方体映射到另一个时,必须指定沿每个维度的应用范围。而且,在该范围内的每个维度中的成员必须被映射到沿目标的一个或多个维度的一个或多个成员。当映射不是一对一时,必须指定分配或聚集信息。
定义了映射后,可以在不相似的数据(例如具有不同维数的多维元素或者关系元素和多维元素)之间执行相关性分析。用于执行相关性分析并通过映射来应用改变的两个示例性实现方式如下。第一个实现方式涉及应用映射将来自源映射的CLE变换为目标上的对应条目集,然后对每个目标条目应用相关性分析,如同在单个方体模型中那样。第二实现方式涉及生成直接从源维度到目标维度的相关结构,从而可以对CLE直接执行相关性分析而无需映射,然后如果建立了相关关系,则只在执行改变列表应用程序之前进行映射。应注意,即使两个值并不存在于映射区域范围内,在这两个值之间也可以存在相关关系,例如如果从映射目标区域中的值概要出目标值或者源值概要到映射源区域中的值。
以上的示例仅是映射起作用的情况的一个示例。熟悉此技术的读者应意识到,映射可以在其他的情况中起作用。例如,映射可以定义范围划分,该范围划分指定哪些维度的哪些成员参与跨方体的映射。映射可以定义维度映射规范(specification),从而使得当存在从产品维度到生产线维度的映射时,“父”函数被包括,并且当存在从生产线维度到产品维度的映射时,“子”函数被包括。映射可以定义时间变换,例如从每月的数据到每周的数据的变换,或者从财务日历到生产日历的变换。
沙盒
直到现在,以上描述的情境主要集中在从单个使用者的改变或者“假设”情境直接或间接生成的改变。经常存在多个使用者想要在相同下层数据集上运行交替的“假设”情境。但是,如在接触列表部分中讨论的上述库存的实例中可见,在应用改变中,经常有顺序相关性。这可能导致跨沙盒产生如同在沙盒内的类似问题。例如,假定使用者A与使用者B利用不同的沙盒在相同数据集上工作的情况。使用者A与使用者B运行各种分离的假设情境,这导致不同类型的级联将被完成,如上所讨论的,带来不同的结果。现在,如果使用者A要递交(submit)其改变到下层数据库,则数据将改变,并且所有由使用者B完成的级联将无效。这不可接受,并且因此系统需要具有用于处理诸如此类的情况的内建机制。具体地,一致性现在需要由使用者A所作的所有改变好像是在由使用者B所作的改变之前发生那样,因为如果使用者B要之后递交其改变,则这就将是顺序。现在将描述这些机制中的某些机制,但首先提出对沙盒概念的更详细的说明。
在以上引用的申请中,并且在上文中,已经从各个方面描述了沙盒的使用。由于在上文中已经描述了系统的新运算和性能,所以期望改进沙盒的改变应用以及隔离,以确保在沙盒之间保持一致性,并且避免出现其他可能出现的问题,问题的范围涉及从某些单元中的非预期编号到运行时的异常。
如上所述,引入沙盒来隔离改变,从而可以分离地研究不同的改变情境。沙盒可以形成树状分级结构,其中顶部沙盒被称为基沙盒,或者基。应注意,在不同沙盒中的方体共享相同的元数据,即方体定义。在沙盒之间的主要区别是块和改变。该基具有它自己的具有单元值的块集合,所述单元值是从由其他沙盒提交的改变导出的。所有其他沙盒或者是基的子代,或者是基的后代。每个沙盒具有它自己的单独的块集合。这些块是“快照”(snapshot),它们是在特定时间点形成的应用了来自(一个或多个)子沙盒的改变的父沙盒中的块的副本。拍摄快照并且应用改变的过程也称作改变隔离和应用。
在一个实施例中,将沙盒作为具有乐观锁(optimistic locking)的长期运行事务来处理。出于多个目的,将改变存储为改变列表条目。可以将基沙盒视为可能从不被提交的长期运行事务。仅当一个沙盒的所有子沙盒已经被递交或者被废弃时,该沙盒才可以被递交(即事务可以被提交)。
通常,沙盒遵从与数据库类似的改变隔离规则。如果两个沙盒不具有嵌套关系,那么它们不能够看到彼此的改变。另一方面,子沙盒通常可以看到其父沙盒中的改变,但是具有以下将进一步描述的一些约束。父沙盒可以具有不止一个的子沙盒。这些子沙盒独立地发展。一些沙盒可以先于其他沙盒被完成或废弃。因此,在父沙盒和子沙盒之间,使用乐观锁,其中在子沙盒中形成并修改块快照。为得到一致的块快照,子沙盒保持参考被应用到子沙盒的在父沙盒中的最新改变。为拍摄快照忽略所有将来的改变。这是改变隔离的另一方面。这在图1中被示意性地示出,图1示出基、父和子沙盒的分级结构。每个沙盒具有它自己的CLE,并且包含返回到形成快照处的其各自的父CLE的参考。
在一个实施例中,根据本发明的DBMS使用不同于先前乐观锁模型的机制。不是在进行调和前等到事务结束(即递交子沙盒),而是可以连续地执行调和,因为基于如下的概念调和处理是确定的,即在子沙盒中的改变优先于在其父沙盒中的改变。将在下文中进一步详细讨论调和处理。
沙盒具有快照CLN属性,该属性指定在与子沙盒一致的父沙盒中的一致性点。换句话说,子沙盒不应该看到发生在快照CLN之后的父沙盒中的改变,直到子沙盒中的改变与父沙盒调和为止。因此,当发生导致父沙盒或基沙盒的块演变的改变时,系统检查演变是否跨越快照CLN。如果演变不跨越快照CLN,那么然后如上描述地更新块。然而,如果演变跨越快照CLN,那么然后首先复制块,从而使得子沙盒将可访问来自父沙盒的“陈旧”块数据,然后如上描述地更新块。
块键(block key)具有以下组成部分:沙盒id、稀疏坐标和CLN。CLN指定块的版本,并确保块已经演变到该逻辑时间点。换言之,直到CLN为止,日志中的所有之前的改变已经被应用到块(或者块与改变不相关)。尚未应用任何随后的改变(或者块与改变不相关)。
在本发明的一个实施例中,有两种用于检索沙盒的块的方法。第一种方法包括检索具有从当前沙盒直到当前沙盒CLN(最大CLN)的改变的块。应注意,沙盒CLN是用于表示日志中的“当前”时间点的CLN,也就是说,该特定沙盒的最新日志条目的编号。另一种方法包括检索具有从当前沙盒直到特定CLN的改变的块。如熟悉此技术的读者将意识到的,通过使用沙盒的当前CLN,第一种方法可以被简化为第二种方法。在下表5中示出用于检索特定CLN的子沙盒的块的伪码:
表5
/** |
*Retrieve a block for sandbox Child for a particular cln*/getBlock(sandboxID,comboKey,expectedCLN)Try to locate a block with the sandbox ID,comboKey,and cln no greater thanexpectedCLN.If block is found,apply remaining changes when block cln is less than cln andreturn the copy,and persist/materialize the copy.If such a block cannot be found from the current sandbox,recursively find acopy from the parent using snapshotCLN.This is the process of takingsnapshots.Snapshots are not saved.This will result either in finding a copy or creating a blank block from the base.Then apply remaining changes as the recursion rewind. |
在一个实施例中,存在三种方式用于在不同于基沙盒的沙盒中创建所有的块。第一种方式是通过应用局部引入的变化。第二种方式是为各种任务检索所需的块,例如操控分析电子数据表、显示键量度以及作出报告。第三种方式是通过子沙盒递交。
出于各种原因,由块CLN表示的块的不同修订版需要被保留。例如,图2示出如何利用快照CLN1创建子沙盒。如在图2中所示,并且如以上所讨论的,有必要保留块的修订版,该修订版所具有的块CLN小于或等于快照CLN1。还有可能不同的沙盒具有不同的快照CLN,其不同的块修订版需要被保留。当废弃或递交子沙盒时,或者当引入导致将生成新修订版的新的改变时,有些块修订版可能变成垃圾块。
在一个实施例中,出于效率原因,仅当子沙盒被废弃或递交、当变化被递交到沙盒或者当调和发生时,回收在沙盒中的垃圾块。例如,假定所有子沙盒的快照CLN为升序s1,...,sn其中n≥0。对于按Long.MIN,s1,...,sn,Long.MAX顺序的任何两个相邻x及y而言,如果存在多于一个块修订版,其具有的块CLN在x与y之间(闭区间),则除最后一个块以外,所有这种块修订版为垃圾块。
接下来将描述调和处理。在一个实施例中,可以在任何级别的沙盒分级结构中启动调和,且仅当对于任何子沙盒而言沙盒CLN大于任何快照CLN时需要调和。在启动调和的沙盒中执行以下步骤。首先,在假定不存在活动子沙盒的前提下,删除所有垃圾块。接下来,沙盒分级结构被递归遍历,并且对每个后代沙盒执行以下操作:创建新沙盒,其将被用来替代该后代沙盒。父代的当前沙盒CLN被当作快照CLN。从旧沙盒中抽取出非内部变化条目,例如使用者启动的变化,并且构建接触列表。然后执行接触处理,如上所述。最后,废弃旧的沙盒,且新沙盒与相应的响应相关联。应注意当在块之间存在顺序相关性时,调和并非必要。
当变化条目与关系数据库有关时,对所有旧列及所有必要的新列保留副本,这是为了执行对方体的映射,或者为了得到方体的数据值。当调和发生时,使用了多个副本。几个使用者可能已经改变了位于关系数据库的相同行的不同的值,并且这些改变需要在调和时被合并。例如,在关系订单数据库中,第一个使用者可能已经对订单的数量作出改变,而另一使用者可能已经对同一订单的递送日期作出改变。因为这二者涉及相同订单,所以这些改变被合并时,它们需要被保留作为分离的副本直到调和为止。
在一个实施例中,仅当在其父沙盒处不需要调和时,子沙盒才可以被递交。在此条件下,所述递交不需要父沙盒块通过应用子沙盒变化而演变。相反,可以通过如下方式来合并两个沙盒:当块存在于子沙盒中时删除父沙盒中的每个块,并且通过更新它们的沙盒id及调节它们的改变列表编号值以表示合并的日志中的点,对子沙盒块重设键以表示父沙盒中的条目。
接下来,如上所述地移除垃圾块。垃圾块移除后,递交事件。所述递交包括得到在子沙盒中创建的所有被破坏的约束的ID,标记所有在父沙盒中创建了的在子沙盒中创建的破坏约束事件,并且使用所有被破坏的约束的ID来为子沙盒创建新记录,所述新记录随后被标记为关闭并且固定的。接下来通过如下方式递交被破坏的约束:删除父沙盒中每个在子沙盒中具有坐标相同的约束的被破坏的约束,并将子沙盒中所有被破坏的约束添加到父沙盒。然后通过在子沙盒中的每个方体的Calc CLN,为在父沙盒中的该方体调节Calc CLN。最后,可以通过复制来自子沙盒的改变条目,并将它们附加到父沙盒改变列表的末尾,来递交改变条目。相应地改变沙盒CLN,这完成了子沙盒递交。
从以上讨论中可以看出,保持块的尽可能新的版本是有利的,以便当应用改变时查询块的时间花费极少。因此,在本发明的一个实施例中,不仅当块变化时将块向前移动,而且当系统确定没有变化应用到所述块时,也将块向前移动。但是,如果块数据不变,则保存相同块数据的多个副本效率较低。因此,在本发明的一个实施例中,将块分段为头部部分和数据部分,只要当块被演变而不改变其数据,数据部分就保持不变,而只将头部向前移动。
本发明可以被实现为数字电子电路、或者计算机硬件、固件、软件或其组合。可以在计算机程序产品中实现本发明的装置,所述产品有形地包含在可以由可编程处理器执行的机器可读介质中。机器可读介质的示例包括但不限于以下介质:磁介质,例如硬盘、软盘和磁带;光介质,例如CD-ROM盘和DVD;磁光介质,例如光软盘;以及硬件设备,其被专门配置为存储并执行程序指令,例如只读存储器(ROM)及随机访问存储器(RAM)。本发明还可以被实现为在合适介质,例如电视广播、光线路、电线路等中传播的载波。本发明的方法步骤可以通过可编程处理器执行程序指令来通过对输入数据进行运算并生成输出而执行本发明的功能。
本发明可以在一个或多个在可编程系统中的可执行计算机程序中被实现,所述可编程系统至少包括被耦合用于从数据存储系统中接收数据和指令并将数据和指令传送到数据存储系统的可编程处理器,还包括至少一个输入设备和至少一个输出设备。每个计算机程序可以用高级程序化或面向对象编程语言实现,或者根据需要以汇编或机器语言实现;以及在任何情况下,所述语言可以是编译或解释语言。作为示例,合适的处理器包括通用和专用微处理器。通常,处理器将从只读存储器及/或随机访问存储器中接收指令和数据。通常,计算机将包括一个或多个海量存储设备,用于存储数据文件;此种设备包括磁盘,例如内部硬盘和可移动盘;磁光盘;以及光盘。适合用于有形地包含计算机程序指令和数据的存储设备包括所有形式的非易失性存储器,作为示例其包括半导体存储设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘和可移动盘;磁光盘;以及CD-ROM盘。前述的任何部件可以由ASIC(专用集成电路)补充或包含在ASIC中。
为提供与使用者的交互,本发明可以在计算机系统中实现,所述计算机系统具有诸如监视器或LCD屏幕之类的显示设备用于将信息显示给使用者,以及键盘和诸如鼠标或轨迹球之类点选设备,使用者可以利用它们提供对计算机系统的输入。所述计算机系统可以被编程以提供图形用户界面,通过该图形用户界面计算机程序与使用者交互。
以上描述了本发明的多种实现方式。然而,本领域内的技术人员应理解,可以想到各种修改而不会背离本发明的精神和范围。例如,本发明还可以用于对表示对中央事务或事实表执行的复杂分析运算结果的关系数据库中的概要表进行演变。因此,其他实施例落入所附权利要求的范围之内。
Claims (34)
1.一种通过使用多维数据模型将改变应用到数据库中的多维数据块的方法,其中每个数据块包括多个数据元素,该方法包括:
接收更新数据块中的一个或多个数据元素的请求;
从改变条目列表中得到改变条目,所述改变条目标识对所述数据块中的特定数据块作出的改变以及作出所述改变的时间;并且
根据基于受所述更新影响的数据元素而选择的一个或多个规则更新所述数据块中的数据元素,所述更新仅使用所得到的改变条目和已经存在于所述数据块中的数据元素,藉此该方法确保在所述更新中使用的所有数据在一致的时间点处。
2.如权利要求1所述的方法,其中所述规则包括一个或多个数学公式,所述数学公式定义用于更新所述数据块中的每种类型的数据元素的表达式。
3.如权利要求1或2所述的方法,其中所述改变条目至少包括以下元素:描述所述改变条目何时被创建的改变条目编号,受所述改变条目影响的一个或多个数据元素的位置,所述数据元素的旧值,以及所述数据元素的新值。
4.如权利要求1所述的方法,其中所述改变条目包括所述数据元素的新值的向量,并且用于更新所述数据元素的步骤包括通过使用所述向量以单次运算更新所述数据块的若干个数据元素的步骤。
5.如权利要求1所述的方法,还包括用于参考由其他方法执行的更新来确定何时将所述改变条目应用到所述数据块的步骤,其中关于所述数据模型中的相关性结构作出所述确定,该相关性结构标识所述数据块内的以及所述数据块之间的数据元素间数据相关性。
6.如权利要求5所述的方法,还包括用于在两个分离的方法的应用之间确定何时计算所述数据块中的数据值的步骤,其中关于所述数据模型中的相关性结构作出所述确定,该相关性结构标识在所述数据块和所述改变条目内的数据元素间数据相关性。
7.如权利要求1所述的方法,还包括用于从所述数据库中的其他数据块和非多维数据结构中检索数据的步骤。
8.如权利要求1所述的方法,还包括如下的步骤,其用于通过对一个或多个未改变的操作数使用反向运算来重新定义数学公式,基于改变的操作数和结果生成一个或多个方法规则。
9.如权利要求1所述的方法,还包括用于确定待存储到改变条目中的数据值的步骤,其中关于所述数据模型中的相关性结构作出所述确定,该相关性结构针对具体类型的改变条目标识每个方法所需的操作数。
10.一种通过使用多维数据模型来更新数据库的计算机实现方法,在所述多维数据模型中对应于所述数据库的数据被组织成多维数据块,每个数据块具有与之相关联的概要信息,该概要信息对应于相关联数据块的当前演变状态,所述方法包括:
在所述数据模型中维护相关性信息,该相关性信息标识所述数据块内和所述数据块之间的数据相关性:
维护改变条目列表,所述改变条目列表标识对所述数据块中的特定数据块作出的改变,并且标识作出所述改变的时间;
接收将改变条目应用到数据块的请求:
将所述改变条目应用到所述数据块,包括生成如下的数据块的相关性列表,即其数据直接或间接地与被应用了所述改变条目的数据块相关的数据块;
根据相关性更新算法处理所述相关性列表中的数据块,以更新所述相关性列表中的所述数据块;以及
参考所述相关性信息、所述概要信息和所述改变条目列表来更新所述数据库;
其中,接收请求包括:
将使用者输入值接收到被指定为包含导出值的数据块的单元中;并且
监视因所述使用者输入值导致的任何约束破坏,直到所述约束破坏已经被解决为止,
其中,处理包括:
判断具有所述使用者输入值的所述单元是否在一个或多个其他块中具有相关值;
当具有所述使用者输入值的所述单元在其他块中具有相关值时,创建调节在所述一个或多个其他块中的所述相关值的补偿导出改变列表条目;
判断具有所述使用者输入值的所述单元是否在一个或多个被使用者输入并且被导出的其他块中具有相关值;
当数据值被修改并且与使用者输入导出值二者相关时,将所述补偿导出改变列表条目仅指定给最内部的使用者输入导出值;
判断与具有所述使用者输入值的所述单元相关的所有值是否在相同块中;
当判断与具有所述使用者输入值的所述单元相关的所有值在相同块中时,保留另外的磁盘空间来指示所述导出数据值已经被使用者输入修改;并且
确保所述使用者输入值不被导出值覆盖。
11.如权利要求10所述的方法,其中如果对所述数据块进行所述处理将生成新的改变条目,那么所述处理包括对所述相关性列表中的数据块进行处理。
12.如权利要求10所述的方法,其中处理包括对所述相关性列表中的每个数据块进行处理。
13.如权利要求10所述的方法,其中维护改变条目列表包括维护计算改变列表编号,该计算改变列表编号标识所有改变条目已经被处理的时间点,藉此所述计算改变列表定义对所述相关性列表中的数据块进行处理的最早开始点。
14.如权利要求13所述的方法,其中为所述数据库的子集维护若干个计算改变列表编号,其中所述子集的集合在所述数据模型中形成分隔。
15.如权利要求10所述的方法,其中所述应用步骤和所述处理步骤是相同运算的一部分。
16.如权利要求10所述的方法,其中处理包括处理被推迟直到所述相关性列表中的数据块被查询为止,或者直到所述改变条目列表中的改变条目被应用到所述相关性列表中的数据块为止。
17.如权利要求10所述的方法,其中处理包括根据由在所述数据库内的使用者权力定义的范围划分关系,处理所述相关性列表中的数据块。
18.如权利要求10所述的方法,其中应用改变条目包括应用定义在多个时间周期上重复的改变的复合改变条目。
19.如权利要求10所述的方法,其中处理包括应用定义在沿对所述数据块进行定义的一个或多个密集维度的多个数据元素上重复的改变的复合改变条目。
20.如权利要求10所述的方法,其中应用改变条目包括通过使用改变相关应用程序来应用改变条目。
21.如权利要求10所述的方法,其中处理包括通过使用改变相关应用程序来应用改变条目。
22.如权利要求10所述的方法,还包括:
为了对访问按行源格式存储的数据元素的数据块应用计算规则,在行源中的一个或多个数据元素与数据块中的一个或多个数据元素之间创建映射,其中,在所述行源中,数据被建模为关系元组。
23.如权利要求22所述的方法,其中所述映射定义以下内容的一个或多个:范围划分、维度映射规范和时间变换。
24.如权利要求22所述的方法,还包括:
通过使用所述映射将用于行源的所述改变条目列表中的改变条目变换为用于与所述行源相关的目标方体的所述改变条目列表中的一个或多个改变条目,藉此对所述行源进行的改变可以被传播到所述目标方体,其中,方体是多维数据集。
25.如权利要求22到24的任一权利要求所述的方法,还包括:通过使用所述映射将行源中的数据值的相关关系变换为方体中的相关关系,其中,方体是多维数据集。
26.如权利要求10所述的方法,还包括:在第一方体中的一个或多个数据元素与第二方体中的一个或多个数据元素之间创建映射,其中所述映射定义以下内容的一个或多个:分配运算、变换运算和聚集运算,其中,方体是多维数据集。
27.如权利要求26所述的方法,其中所述映射定义以下内容的一个或多个:范围划分、维度映射规范和时间变换。
28.如权利要求26或27所述的方法,还包括:
通过使用所述映射将所述第一方体的所述改变条目列表中的改变条目变换为所述第二方体的所述改变条目列表中的一个或多个改变条目,其中所述第二方体与所述第一方体相关,藉此对所述第一方体中的数据元素进行的改变可以被传播到所述第二方体中的数据元素。
29.如权利要求26或27所述的方法,还包括:
通过使用所述映射将方体中的数据值的相关关系变换为跨越方体的数据值的相关关系。
30.一种通过使用来自下层数据库的数据来运行多个情境的计算机实现方法,根据多维数据模型组织所述数据,在所述多维数据模型中数据被组织成多维块,每个块具有与之相关联的概要信息,该概要信息对应于相关联块的当前演变状态,所述数据模型还包括标识所述块内以及所述块之间的数据相关性的相关性信息,所述方法包括:
运行第一情境处理,所述第一情境处理维护第一改变信息,该第一改变信息标识对所述块中的第一块的副本作出的第一改变和作出所述第一改变的时间,所述第一情境处理帮助重算所述第一块的所述副本以及第一相关块的副本以包括所述第一改变;
与所述第一情境处理基本同时地运行第二情境处理,所述第二情境处理维护第二改变信息,该第二改变信息标识对所述块中的第二块的副本作出的第二改变和作出所述第二改变的时间,所述第二情境处理帮助重算所述第二块的所述副本以及第二相关块的副本以包括所述第二改变;
其中在所述第一改变被提交到所述下层数据库之前,所述第一改变对所述第二情境处理不可用,并且在所述第二改变被提交到所述下层数据库之前,所述第二改变对所述第一情境处理不可用;并且
参考所述相关性信息、所述概要信息和所述第一改变信息更新所述下层数据库,从而使所述第一改变可用于所述第二情境处理,
其中所述更新包括调和所述第二改变信息与所述第一改变信息,确保所述第二情境看到数据如同所有所述第一情境的改变信息在任何所述第二情境的改变信息之前被应用到数据块一般,从而保持数据一致性,
并且其中更新包括:
确定以何种顺序将所述第一改变和所述第二改变提交到所述下层数据库;
按照所述确定的顺序,
对所述数据库应用所述改变信息,包括生成其数据直接或间接地与先前改变的数据改变相关的数据改变相关性列表;并且
根据相关性更新算法处理所述相关性列表中的所述数据改变,以更新所述相关性列表中的所述数据改变。
31.如权利要求30所述的方法,其中所述第一和第二情境处理按分级结构关系组织,并且所述方法还包括:
当以下情况中的一个或多个发生时,回收与情境处理相关的垃圾块:
当子情境处理被废弃或者被提交到所述数据库时、当改变被提交到情境处理时、或者当发生两个情境处理的调和时。
32.如权利要求30到31的任一权利要求所述的方法,其中仅当不需要与父情境处理进行调和时,子情境处理才被提交到所述数据库:并且其中更新包括用来自所述子情境处理的对应块替换在所述父情境处理中的块,其中所述子情境基于所述父情境的结果。
33.如权利要求30所述的方法,还包括:
针对每个情境处理,只要包括在情境处理中的块发生改变,就将不受所述改变影响的块也演变到当前状态。
34.如权利要求33所述的方法,其中每个块被分段为头部部分和数据部分,并且演变包括:
判断所述块的所述数据部分在演变后是否将仍与演变前相同;并且
当判断所述数据部分将仍相同时,仅将所述块的头部信息演变到当前状态。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/154,259 | 2005-06-15 | ||
US11/154,259 US7571192B2 (en) | 2005-06-15 | 2005-06-15 | Methods and apparatus for maintaining consistency during analysis of large data sets |
PCT/US2006/020494 WO2006138044A2 (en) | 2005-06-15 | 2006-05-24 | Methods and apparatus for maintaining consistency during analysis of large data sets |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101506804A CN101506804A (zh) | 2009-08-12 |
CN101506804B true CN101506804B (zh) | 2013-01-16 |
Family
ID=37570944
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800298283A Active CN101506804B (zh) | 2005-06-15 | 2006-05-24 | 用于在大数据集分析期间维持一致性的方法和装置 |
Country Status (7)
Country | Link |
---|---|
US (2) | US7571192B2 (zh) |
EP (1) | EP1897000B1 (zh) |
JP (1) | JP2008547086A (zh) |
CN (1) | CN101506804B (zh) |
AU (1) | AU2006259804A1 (zh) |
CA (1) | CA2612391A1 (zh) |
WO (1) | WO2006138044A2 (zh) |
Families Citing this family (109)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7613672B2 (en) | 2006-04-27 | 2009-11-03 | Cardiac Pacemakers, Inc. | Medical device user interface automatically resolving interaction between programmable parameters |
WO2008106643A2 (en) | 2007-03-01 | 2008-09-04 | Formotus, Inc. | Forms conversion and deployment system for mobile devices |
US9430552B2 (en) | 2007-03-16 | 2016-08-30 | Microsoft Technology Licensing, Llc | View maintenance rules for an update pipeline of an object-relational mapping (ORM) platform |
US8738573B2 (en) * | 2008-05-23 | 2014-05-27 | Microsoft Corporation | Optimistic versioning concurrency scheme for database streams |
US9348499B2 (en) | 2008-09-15 | 2016-05-24 | Palantir Technologies, Inc. | Sharing objects that rely on local resources with outside servers |
WO2010088523A1 (en) * | 2009-01-30 | 2010-08-05 | Ab Initio Technology Llc | Processing data using vector fields |
US20110078199A1 (en) * | 2009-09-30 | 2011-03-31 | Eric Williamson | Systems and methods for the distribution of data in a hierarchical database via placeholder nodes |
US9031987B2 (en) * | 2009-09-30 | 2015-05-12 | Red Hat, Inc. | Propagation of data changes in distribution operations in hierarchical database |
US8996453B2 (en) | 2009-09-30 | 2015-03-31 | Red Hat, Inc. | Distribution of data in a lattice-based database via placeholder nodes |
US8984013B2 (en) | 2009-09-30 | 2015-03-17 | Red Hat, Inc. | Conditioning the distribution of data in a hierarchical database |
US8271426B2 (en) | 2009-10-01 | 2012-09-18 | Oracle International Corporation | Change application for datasets using frozen and delta values |
US8315174B2 (en) * | 2009-12-31 | 2012-11-20 | Red Hat, Inc. | Systems and methods for generating a push-up alert of fault conditions in the distribution of data in a hierarchical database |
CN102231130B (zh) | 2010-01-11 | 2015-06-17 | 国际商业机器公司 | 计算机系统性能分析方法和装置 |
US9740994B2 (en) * | 2010-03-31 | 2017-08-22 | Oracle International Corporation | Simulation of supply chain plans using data model |
US9785894B2 (en) | 2010-03-31 | 2017-10-10 | Oracle International Corporation | Simulation of supply chain plans using web service |
US9767136B2 (en) | 2010-03-31 | 2017-09-19 | Salesforce.Com, Inc. | System, method and computer program product for maintaining data stored in a data structure |
CN102262636B (zh) * | 2010-05-25 | 2012-10-10 | 中国移动通信集团浙江有限公司 | 生成数据库分区执行计划的方法及装置 |
US9218408B2 (en) * | 2010-05-27 | 2015-12-22 | Oracle International Corporation | Method for automatically creating a data mart by aggregated data extracted from a business intelligence server |
CN102402559A (zh) * | 2010-09-16 | 2012-04-04 | 中兴通讯股份有限公司 | 一种数据库升级脚本的生成方法和装置 |
US10360527B2 (en) * | 2010-11-10 | 2019-07-23 | International Business Machines Corporation | Casual modeling of multi-dimensional hierarchical metric cubes |
US8983907B2 (en) * | 2010-12-08 | 2015-03-17 | Microsoft Technology Licensing, Llc | Change notifications from an updated data representation |
US8666997B2 (en) | 2010-12-08 | 2014-03-04 | Microsoft Corporation | Placeholders returned for data representation items |
US9069829B2 (en) | 2011-01-21 | 2015-06-30 | Microsoft Technology Licensing, Llc | Data items manager |
US9996540B2 (en) * | 2011-03-31 | 2018-06-12 | EMC IP Holding Company LLC | System and method for maintaining consistent points in file systems using a prime dependency list |
US10210169B2 (en) | 2011-03-31 | 2019-02-19 | EMC IP Holding Company LLC | System and method for verifying consistent points in file systems |
US9196086B2 (en) | 2011-04-26 | 2015-11-24 | Here Global B.V. | Method, system, and computer-readable data storage device for creating and displaying three-dimensional features on an electronic map display |
US8838533B2 (en) | 2011-05-20 | 2014-09-16 | Microsoft Corporation | Optimistic application of data edits |
US9348941B2 (en) | 2011-06-16 | 2016-05-24 | Microsoft Technology Licensing, Llc | Specification of database table relationships for calculation |
US9092482B2 (en) | 2013-03-14 | 2015-07-28 | Palantir Technologies, Inc. | Fair scheduling for mixed-query loads |
CN102222109B (zh) * | 2011-06-28 | 2014-05-07 | 用友软件股份有限公司 | 数据处理装置和数据处理方法 |
US8732574B2 (en) | 2011-08-25 | 2014-05-20 | Palantir Technologies, Inc. | System and method for parameterizing documents for automatic workflow generation |
US8504542B2 (en) | 2011-09-02 | 2013-08-06 | Palantir Technologies, Inc. | Multi-row transactions |
US8560494B1 (en) | 2011-09-30 | 2013-10-15 | Palantir Technologies, Inc. | Visual data importer |
US9171055B1 (en) * | 2011-10-08 | 2015-10-27 | Bay Dynamics, Inc. | Content packs for multidimensional data storage cubes |
US10353922B1 (en) | 2011-10-08 | 2019-07-16 | Bay Dynamics, Inc. | Rendering multidimensional cube data |
US9330091B1 (en) | 2011-10-08 | 2016-05-03 | Bay Dynamics, Inc. | System for managing data storages |
US8666968B2 (en) * | 2011-12-23 | 2014-03-04 | Sap Ag | Executing runtime callback functions |
US9348874B2 (en) * | 2011-12-23 | 2016-05-24 | Sap Se | Dynamic recreation of multidimensional analytical data |
US8892545B2 (en) * | 2011-12-23 | 2014-11-18 | Sap Se | Generating a compiler infrastructure |
US9378526B2 (en) | 2012-03-02 | 2016-06-28 | Palantir Technologies, Inc. | System and method for accessing data objects via remote references |
US8849747B2 (en) * | 2012-04-24 | 2014-09-30 | Sap Ag | Business process management |
US9798768B2 (en) | 2012-09-10 | 2017-10-24 | Palantir Technologies, Inc. | Search around visual queries |
US9348677B2 (en) | 2012-10-22 | 2016-05-24 | Palantir Technologies Inc. | System and method for batch evaluation programs |
US9471370B2 (en) | 2012-10-22 | 2016-10-18 | Palantir Technologies, Inc. | System and method for stack-based batch evaluation of program instructions |
US9367463B2 (en) | 2013-03-14 | 2016-06-14 | Palantir Technologies, Inc. | System and method utilizing a shared cache to provide zero copy memory mapped database |
US8909656B2 (en) | 2013-03-15 | 2014-12-09 | Palantir Technologies Inc. | Filter chains with associated multipath views for exploring large data sets |
US9898167B2 (en) | 2013-03-15 | 2018-02-20 | Palantir Technologies Inc. | Systems and methods for providing a tagging interface for external content |
US8868486B2 (en) | 2013-03-15 | 2014-10-21 | Palantir Technologies Inc. | Time-sensitive cube |
US9740369B2 (en) | 2013-03-15 | 2017-08-22 | Palantir Technologies Inc. | Systems and methods for providing a tagging interface for external content |
US8930897B2 (en) | 2013-03-15 | 2015-01-06 | Palantir Technologies Inc. | Data integration tool |
US8903717B2 (en) | 2013-03-15 | 2014-12-02 | Palantir Technologies Inc. | Method and system for generating a parser and parsing complex data |
US8855999B1 (en) | 2013-03-15 | 2014-10-07 | Palantir Technologies Inc. | Method and system for generating a parser and parsing complex data |
US9116953B2 (en) * | 2013-05-17 | 2015-08-25 | Sap Se | Calculation engine with dynamic partitioning of intermediate results |
US9116960B2 (en) * | 2013-05-17 | 2015-08-25 | Sap Se | Calculation engine with optimized multi-part querying |
SG11201602296WA (en) | 2013-09-27 | 2016-04-28 | Ab Initio Technology Llc | Evaluating rules applied to data |
US9105000B1 (en) | 2013-12-10 | 2015-08-11 | Palantir Technologies Inc. | Aggregating data from a plurality of data sources |
CN103778218B (zh) * | 2014-01-20 | 2017-01-25 | 浙江省方大标准信息有限公司 | 基于云计算的标准信息一致性预警系统及方法 |
US8935201B1 (en) | 2014-03-18 | 2015-01-13 | Palantir Technologies Inc. | Determining and extracting changed data from a data source |
US9882949B1 (en) | 2014-06-20 | 2018-01-30 | Amazon Technologies, Inc. | Dynamic detection of data correlations based on realtime data |
US11868372B1 (en) | 2014-06-20 | 2024-01-09 | Amazon Technologies, Inc. | Automated hierarchy detection for cloud-based analytics |
CA2952882C (en) | 2014-06-20 | 2019-06-11 | Amazon Technologies, Inc. | Embeddable cloud analytics |
US10430438B2 (en) | 2014-06-20 | 2019-10-01 | Amazon Technologies, Inc. | Dynamic n-dimensional cubes for hosted analytics |
US20160026923A1 (en) | 2014-07-22 | 2016-01-28 | Palantir Technologies Inc. | System and method for determining a propensity of entity to take a specified action |
US20160071226A1 (en) * | 2014-09-05 | 2016-03-10 | Siemens Medical Solutions Usa, Inc. | Method and System for Validating Compliance of Medical Records |
US20160232470A1 (en) * | 2015-02-05 | 2016-08-11 | Keguo Zhou | Automated Generation of Process Flow Charts |
US10909178B2 (en) | 2015-03-05 | 2021-02-02 | Workday, Inc. | Methods and systems for multidimensional analysis of interconnected data sets stored in a graph database |
US9348880B1 (en) | 2015-04-01 | 2016-05-24 | Palantir Technologies, Inc. | Federated search of multiple sources with conflict resolution |
US10698607B2 (en) * | 2015-05-19 | 2020-06-30 | Netapp Inc. | Configuration update management |
US9514205B1 (en) | 2015-09-04 | 2016-12-06 | Palantir Technologies Inc. | Systems and methods for importing data from electronic data files |
US10558339B1 (en) | 2015-09-11 | 2020-02-11 | Palantir Technologies Inc. | System and method for analyzing electronic communications and a collaborative electronic communications user interface |
US9772934B2 (en) | 2015-09-14 | 2017-09-26 | Palantir Technologies Inc. | Pluggable fault detection tests for data pipelines |
JP6832292B2 (ja) * | 2015-10-23 | 2021-02-24 | オラクル・インターナショナル・コーポレイション | 多次元データベース環境にサンドボックスサポートを提供するためのシステムおよび方法 |
US9652510B1 (en) | 2015-12-29 | 2017-05-16 | Palantir Technologies Inc. | Systems and user interfaces for data analysis including artificial intelligence algorithms for generating optimized packages of data items |
US10554516B1 (en) | 2016-06-09 | 2020-02-04 | Palantir Technologies Inc. | System to collect and visualize software usage metrics |
US9678850B1 (en) | 2016-06-10 | 2017-06-13 | Palantir Technologies Inc. | Data pipeline monitoring |
US10621314B2 (en) | 2016-08-01 | 2020-04-14 | Palantir Technologies Inc. | Secure deployment of a software package |
US10133782B2 (en) | 2016-08-01 | 2018-11-20 | Palantir Technologies Inc. | Techniques for data extraction |
US11256762B1 (en) | 2016-08-04 | 2022-02-22 | Palantir Technologies Inc. | System and method for efficiently determining and displaying optimal packages of data items |
US10552531B2 (en) | 2016-08-11 | 2020-02-04 | Palantir Technologies Inc. | Collaborative spreadsheet data validation and integration |
US10373078B1 (en) | 2016-08-15 | 2019-08-06 | Palantir Technologies Inc. | Vector generation for distributed data sets |
EP3282374A1 (en) | 2016-08-17 | 2018-02-14 | Palantir Technologies Inc. | User interface data sample transformer |
US10650086B1 (en) | 2016-09-27 | 2020-05-12 | Palantir Technologies Inc. | Systems, methods, and framework for associating supporting data in word processing |
US10152306B2 (en) | 2016-11-07 | 2018-12-11 | Palantir Technologies Inc. | Framework for developing and deploying applications |
US10261763B2 (en) | 2016-12-13 | 2019-04-16 | Palantir Technologies Inc. | Extensible data transformation authoring and validation system |
US11157951B1 (en) | 2016-12-16 | 2021-10-26 | Palantir Technologies Inc. | System and method for determining and displaying an optimal assignment of data items |
US10509844B1 (en) | 2017-01-19 | 2019-12-17 | Palantir Technologies Inc. | Network graph parser |
US10180934B2 (en) | 2017-03-02 | 2019-01-15 | Palantir Technologies Inc. | Automatic translation of spreadsheets into scripts |
US10572576B1 (en) | 2017-04-06 | 2020-02-25 | Palantir Technologies Inc. | Systems and methods for facilitating data object extraction from unstructured documents |
US10824604B1 (en) | 2017-05-17 | 2020-11-03 | Palantir Technologies Inc. | Systems and methods for data entry |
US10534595B1 (en) | 2017-06-30 | 2020-01-14 | Palantir Technologies Inc. | Techniques for configuring and validating a data pipeline deployment |
US10204119B1 (en) | 2017-07-20 | 2019-02-12 | Palantir Technologies, Inc. | Inferring a dataset schema from input files |
US10754820B2 (en) | 2017-08-14 | 2020-08-25 | Palantir Technologies Inc. | Customizable pipeline for integrating data |
CN107506147B (zh) * | 2017-08-29 | 2020-05-29 | 郑州云海信息技术有限公司 | 一种保持元数据一致性的方法及系统 |
US11016936B1 (en) | 2017-09-05 | 2021-05-25 | Palantir Technologies Inc. | Validating data for integration |
US11379525B1 (en) | 2017-11-22 | 2022-07-05 | Palantir Technologies Inc. | Continuous builds of derived datasets in response to other dataset updates |
US10783162B1 (en) | 2017-12-07 | 2020-09-22 | Palantir Technologies Inc. | Workflow assistant |
US10552524B1 (en) | 2017-12-07 | 2020-02-04 | Palantir Technolgies Inc. | Systems and methods for in-line document tagging and object based data synchronization |
US10360252B1 (en) | 2017-12-08 | 2019-07-23 | Palantir Technologies Inc. | Detection and enrichment of missing data or metadata for large data sets |
US11176116B2 (en) | 2017-12-13 | 2021-11-16 | Palantir Technologies Inc. | Systems and methods for annotating datasets |
US10853352B1 (en) | 2017-12-21 | 2020-12-01 | Palantir Technologies Inc. | Structured data collection, presentation, validation and workflow management |
GB201800595D0 (en) | 2018-01-15 | 2018-02-28 | Palantir Technologies Inc | Management of software bugs in a data processing system |
US10599762B1 (en) | 2018-01-16 | 2020-03-24 | Palantir Technologies Inc. | Systems and methods for creating a dynamic electronic form |
US10885021B1 (en) | 2018-05-02 | 2021-01-05 | Palantir Technologies Inc. | Interactive interpreter and graphical user interface |
US11263263B2 (en) | 2018-05-30 | 2022-03-01 | Palantir Technologies Inc. | Data propagation and mapping system |
US11061542B1 (en) | 2018-06-01 | 2021-07-13 | Palantir Technologies Inc. | Systems and methods for determining and displaying optimal associations of data items |
US10795909B1 (en) | 2018-06-14 | 2020-10-06 | Palantir Technologies Inc. | Minimized and collapsed resource dependency path |
US11651274B2 (en) * | 2019-07-10 | 2023-05-16 | Here Global B.V. | Method, apparatus, and system for providing semantic filtering |
US12066988B2 (en) * | 2020-07-20 | 2024-08-20 | Cigna Intellectual Property, Inc. | Computer-automated analysis and validation systems for data models |
CN114912427A (zh) * | 2021-02-10 | 2022-08-16 | 微软技术许可有限责任公司 | 响应于用户输入的数据表分析 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6205447B1 (en) * | 1997-06-30 | 2001-03-20 | International Business Machines Corporation | Relational database management of multi-dimensional data |
US6493699B2 (en) * | 1998-03-27 | 2002-12-10 | International Business Machines Corporation | Defining and characterizing an analysis space for precomputed views |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5497486A (en) * | 1994-03-15 | 1996-03-05 | Salvatore J. Stolfo | Method of merging large databases in parallel |
EP0823092A1 (en) * | 1995-04-24 | 1998-02-11 | Aspect Development, Inc. | Modeling of object-oriented database structures, translation to relational database structures, and dynamic searches thereon |
US5907711A (en) * | 1996-01-22 | 1999-05-25 | Hewlett-Packard Company | Method and apparatus for transforming multiplications into product table lookup references |
US6035306A (en) * | 1997-11-24 | 2000-03-07 | Terascape Software Inc. | Method for improving performance of large databases |
JP3436879B2 (ja) * | 1998-03-05 | 2003-08-18 | 松下電器産業株式会社 | 距離検出方法及びその装置 |
JP3004008B1 (ja) * | 1998-10-20 | 2000-01-31 | 三菱電機株式会社 | 更新履歴管理装置及び更新履歴管理方法 |
US6263334B1 (en) * | 1998-11-11 | 2001-07-17 | Microsoft Corporation | Density-based indexing method for efficient execution of high dimensional nearest-neighbor queries on large databases |
CA2281331A1 (en) * | 1999-09-03 | 2001-03-03 | Cognos Incorporated | Database management system |
US6393434B1 (en) * | 1999-09-14 | 2002-05-21 | International Business Machines Corporation | Method and system for synchronizing data using fine-grained synchronization plans |
US6542883B1 (en) * | 2000-03-09 | 2003-04-01 | International Business Machines Corporation | Ordering relational database operations according to referential integrity constraints |
US20020065818A1 (en) * | 2000-08-23 | 2002-05-30 | Starr Ronald E. | Computerized method and applications generator system for developing a customizable electronic records management system |
US7062479B2 (en) * | 2001-11-02 | 2006-06-13 | Cognos Incorporated | Calculation engine for use in OLAP environments |
US20030149571A1 (en) * | 2002-02-01 | 2003-08-07 | Steve Francesco | System and method for facilitating decision making in scenario development |
US6898608B2 (en) * | 2002-04-26 | 2005-05-24 | Oracle International Corporation | Techniques for managing what-if analysis of data managed by a relational database system |
BR0312989A (pt) * | 2002-07-26 | 2008-03-04 | Ron Everett | base de dados e sistema de operação de conhecimento |
US7647356B2 (en) * | 2004-05-07 | 2010-01-12 | Oracle International Corporation | Methods and apparatus for facilitating analysis of large data sets |
-
2005
- 2005-06-15 US US11/154,259 patent/US7571192B2/en active Active
-
2006
- 2006-05-24 CA CA002612391A patent/CA2612391A1/en not_active Abandoned
- 2006-05-24 AU AU2006259804A patent/AU2006259804A1/en not_active Abandoned
- 2006-05-24 WO PCT/US2006/020494 patent/WO2006138044A2/en active Application Filing
- 2006-05-24 JP JP2008516894A patent/JP2008547086A/ja active Pending
- 2006-05-24 CN CN2006800298283A patent/CN101506804B/zh active Active
- 2006-05-24 EP EP06771328.9A patent/EP1897000B1/en active Active
-
2009
- 2009-06-18 US US12/486,979 patent/US8069146B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6205447B1 (en) * | 1997-06-30 | 2001-03-20 | International Business Machines Corporation | Relational database management of multi-dimensional data |
US6493699B2 (en) * | 1998-03-27 | 2002-12-10 | International Business Machines Corporation | Defining and characterizing an analysis space for precomputed views |
Also Published As
Publication number | Publication date |
---|---|
CN101506804A (zh) | 2009-08-12 |
US20060288046A1 (en) | 2006-12-21 |
AU2006259804A1 (en) | 2006-12-28 |
US7571192B2 (en) | 2009-08-04 |
CA2612391A1 (en) | 2006-12-28 |
EP1897000A2 (en) | 2008-03-12 |
EP1897000B1 (en) | 2019-04-24 |
EP1897000A4 (en) | 2011-07-06 |
JP2008547086A (ja) | 2008-12-25 |
US20090259695A1 (en) | 2009-10-15 |
WO2006138044A3 (en) | 2009-04-30 |
US8069146B2 (en) | 2011-11-29 |
WO2006138044A2 (en) | 2006-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101506804B (zh) | 用于在大数据集分析期间维持一致性的方法和装置 | |
Golfarelli et al. | Designing the data warehouse: Key steps and crucial issues | |
Malinowski et al. | Hierarchies in a multidimensional model: From conceptual modeling to logical representation | |
US9280581B1 (en) | Method and system for determination of data completeness for analytic data calculations | |
US7716167B2 (en) | System and method for automatically building an OLAP model in a relational database | |
US7475080B2 (en) | Adaptive data warehouse meta model method | |
US9898491B2 (en) | Method and system for providing business intelligence data | |
Wrembel et al. | Data warehouses and OLAP: concepts, architectures, and solutions | |
Thalhammer et al. | Active data warehouses: complementing OLAP with analysis rules | |
Poess et al. | TPC-DI: the first industry benchmark for data integration | |
US8311975B1 (en) | Data warehouse with a domain fact table | |
CN104731791A (zh) | 一种市场销售分析数据集市系统 | |
US20060253472A1 (en) | System, method, and service for automatically determining an initial sizing of a hardware configuration for a database system running a business intelligence workload | |
Kossmann et al. | Self-driving database systems: a conceptual approach | |
Moukhi et al. | Towards a new method for designing multidimensional models | |
Cuzzocrea et al. | Model-driven data mining engineering: from solution-driven implementations to ‘composable’conceptual data mining models | |
El Beggar et al. | Towards an MDA-oriented UML profiles for data warehouses design and development | |
Ravat et al. | OLAP analysis operators for multi-state data warehouses | |
Ren | Constructing a business intelligence solution with Microsoft SQL Server 2005 | |
Kish | Efficient partitioning and allocation of data for workflow compositions | |
Prakash et al. | Requirements Engineering for Data Warehousing | |
Banek et al. | Logical design of data warehouses from xml | |
Zubcoff et al. | On the suitability of time series analysis on data warehouses | |
Işık | Fuzzy spatial data cube construction and its use in association rule mining | |
Van Raalte | Oracle Retail Data Model Implementation and Operations Guide, Release 11.3. 2 E20363-03 |
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 |