在数据存储系统上管理多个数据模型的制作方法_3

文档序号:9756908阅读:来源:国知局
擎280。图5示出了类似于图2的数据管理环境200的数据管理环境500,除了模型查询引擎501被显示为图2的模型查询引擎280的一个示例。此外,模型查询引擎510被示出为被更居中地定位,作为用于处理模型查询的中枢。此夕卜,与处理模型查询相关联的各个流被示出。附加地,虽然可能存在各个逻辑数据模型,但是仅示出了一个逻辑数据模型231。虽然可能存在各个物理数据模型(或不存在物理数据模型),但是仅示出了一个物理数据模型221。由于模型查询引擎501可使用、包括或可以是映射层240,所以映射层240也被显示为被包括在模型查询引擎501内。
[0047]图6示出用于模型查询引擎对接收到模型查询进行操作的方法600的流程图。方法600可由图2的模型查询引擎280和/或由图5的模型查询引擎501来执行。因此,方法600现在将参考图2和5来进行描述。
[0048]模型查询引擎280和/或501可在接收模型查询之际来执行方法600。在本描述和权利要求书中,“模型查询”是指定逻辑数据模型身份以及潜在地一个或多个逻辑数据模型实体(例如,节点)的身份和/或一个或多个逻辑数据模型实体属性(例如,特征)的身份的查询。由此,用户能够直接针对逻辑数据模型中的一个或多个来进行查询,而非具有关于底层数据存储系统的模式的任何知晓。
[0049]本文中描述的原理并不限制到针对模型查询的任一特定格式。然而,以下是一般化的模型查询的示例,并且被提供为它们遵循类似于对于基于表格的查询的结构,但针对模型,而非表格:
[0050]示例1:
[0051]SELECT Attribute(I),Attribute(2),…
[0052]FROM Model(I)
[0053]示例2:
[0054]SELECT Attribute(I),Attribute(2),…
[0055]FROM Model(I)
[0056]WHERE Attribute(I) = ({criteria}'
[0057]示例3:
[0058]SELECT Model(I).Attribute(I),Model(I).Attribute(2),Model(2).Attribute
(I),...
[0059]FROM Model(I)JOIN Model(2)
[0060]ON Model(I).Attribute(I),Model(2)Attribute(l)
[0061]示例4:
[0062]SELECT Attribute(I),Attribute(2),…
[0063]FROM Model(I)
[0064]UN1N{ALL}
[0065]SELECT Attribute(I),Attribute(2),…
[0066]FROM Model(2)
[0067]由此,模型查询语言可以、但不需要、类似于传统的查询语言,但参考逻辑数据模型实体和/或属性,而非数据存储系统表格和/或属性。例如,模型查询语言可具有针对集合表达式的规定(诸如 “UN1N(并集)”、“JOIN(联结)”、“DIFFERENCE(差)”、“INTERSECT1N(交集)”等)。模型查询中的每一个都可具有跨多个逻辑数据模型中的全部的公共模式。由此,查询者根本不需要具有关于数据存储系统的用于生成模型查询的任何知晓,而是仅参考逻辑数据模型、逻辑数据模型实体和/或逻辑数据模型实体属性,并在适当时,将约束、集合表达式等应用到模型查询。然而,如果查询者熟悉特定逻辑数据模型的建模符号,则查询者可依然使用建模符号来生成直接针对逻辑数据模型的逻辑数据模型查询。
[0068]模型查询引擎接收所生成的模型查询(动作601)。例如,在图5中,模型查询引擎501接收模型查询502(如由箭头511表示的)。
[0069]模型查询引擎接着解释该模型查询(动作602)。模型查询引擎接着可检查高速缓存(动作603)来查看是否相同模型查询的全部或部分已经在过去作出并且足够近到该高速缓存中相关联的结果可被认为是新鲜的。
[0070]例如,图7示出类似于图2的数据管理环境200的数据管理环境700。然而,在此,示出了存在四个逻辑数据模型731到734。因此,逻辑数据模型731和732可表示图2的逻辑数据模型231和232的示例。逻辑数据模型733和734可由图3中的省略号233表示。每个逻辑数据模型被示出为具有不同形状的元素,其符号地表示逻辑数据模型可各自由不同的建模符号来表示。示出了存在高速缓存710,其中先前作出的模型查询的结果(或这样的查询结果的部分)可至少保持到这样的结果不再认为是新鲜的。图5的模型查询引擎501由此可咨询高速缓存710来查看是否模型查询的一部分或全部已经在高速缓存710内具有新鲜的结果。
[0071]模型查询引擎接着标识被标识在查询中的一个或多个逻辑数据模型(动作604)。例如,在图5的示例中,假设被标识的唯一逻辑数据模型是逻辑数据模型231。对模型查询的解释还涉及标识被指定在模型查询中的任意逻辑数据模型实体和/或属性。
[0072]对于所标识的逻辑数据模型中的每一个,模型查询引擎与所标识的逻辑数据模型进行交互(动作610)。在图5的示例中,只有一个逻辑数据模型231被标识在模型查询中,并且由此模型查询引擎501通过适当的通道与逻辑数据模型231进行交互,如由箭头512和513表示的。
[0073]作为该交互的一部分,模型查询引擎501标识逻辑数据模型所使用的建模符号(动作611)。例如,逻辑数据模型提供者可在图4的动作403中指定了这个建模符号。替换地或附加地,模型查询引擎501可自动地检测逻辑数据模型所使用的建模符号。
[0074]模型查询引擎501接着制定逻辑数据模型查询(动作612),该逻辑数据模型查询符合针对该逻辑数据模型的建模符号并对应于模型查询中对应于该特定逻辑数据模型的该部分。
[0075]模型查询引擎501可接着检查与该逻辑数据模型相关联的索引(动作613),以查看是否该查询的结果先前已经被返回和/或是否存在将协助简化与该逻辑数据模型的交互的索引。在一个示例中,每个逻辑数据模型具有相关联的不同索引。例如,在图7的示例中,注意,逻辑数据模型731到734中的每一个都具有相关联的索引701到704。在图5的示例中,由于只存在一个与其交互的逻辑数据模型231,只有相关联的逻辑数据模型索引521被显示。例如,如果图5的逻辑数据模型231是图7的逻辑数据模型731,则图5的逻辑数据模型索引521将是图7的逻辑数据模型索引701。因此,本文中描述的原理可通过对多模型索引的使用来加速。
[0076]如果必要(由于逻辑数据模型查询的结果没有被完整地高速缓存在索引中),模型查询引擎501接着将逻辑数据模型查询(或由针对该逻辑数据模型的索引所允许的逻辑数据模型查询的简化版本)提交(动作614)到对应的逻辑数据模型。这个提交由图2中的箭头512表示。
[0077]无论是根据针对该逻辑数据模型的索引还是根据与该逻辑数据模型的并发交互,模型查询引擎501都接收来自对应的逻辑数据模型的逻辑数据模型查询的结果(动作615)。对逻辑数据模型查询结果的这一接收由图5中的箭头513被表示在图5中。
[0078]如果该逻辑数据模型的建模符号还不是公共建模符号,则模型查询引擎接着将这些结果从该逻辑数据模型所使用的建模符号转换为公共建模符号(动作616)。公共建模符号的一个示例是统一建模语言(UML),但是这仅仅是一个示例。因此,当与物理数据模型进行交互时,模型查询引擎可使用该公共建模符号,同时依然允许逻辑数据模型的提供者指定在参考相应逻辑数据模型时要被使用的建模符号。
[0079]这个逻辑数据模型查询的结果可潜在地被索引在对应的逻辑数据模型的索引中(动作617)。例如,在图5中,从逻辑数据模型231返回的结果(如被箭头513表示)可被索引在针对逻辑数据模型231的对应的索引521内。参考图7,逻辑数据模型索引701到704中的每一个可类似地对对相应逻辑数据模型731到734作出的先前模型查询的结果进行索引。
[0080]基于这些结果,模型查询引擎还标识(动作618)要被交互以对模型查询进行响应的一个或多个物理数据模型(或直接地标识数据存储系统)。为了这么作,模型查询引擎可参考针对从中可获得结果的对应的逻辑数据模型的语义映射集。
[0081]接着,模型查询引擎与所得到的一个或多个物理数据模型中的每一个进行交互(动作620) ο相应地,动作620的内容针对一个或多个物理数据模型中的每一个或直接针对数据存储系统(由于映射可指引)来执行。在对动作620的内容的剩余描述中,术语“物理数据模型”将与数据源系统互换地使用,这是因为动作620的内容可被执行来与在数据源系统上操作的特定物理数据模型进行交互或直接与数据源系统本身进行交互。
[0082]为了这么作,模型查
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1