多维数据库自动路由实现方法和系统的制作方法_3

文档序号:9667450阅读:来源:国知局
ar, AreaDimens1n: Province, ProductDimens1n: A11};
[0070]在空间内容上定义一个操作:包含(Contain),当某个空间内容A上的度量集合是空间内容B的度量集合的子集时,则空间内容B包含空间内容A。如{SalesCount, SalesAmount}包含{SalesCount};
[0071]空间包含(Contain):—个数据空间A能够包含另外一个数据空间B,亦即是说B中的数据能够从A中获得。如“空间粒度为每年的数据”能够从“空间粒度粒度为每月的数据”中再次汇聚得到。评判两个数据空间之间的包含关系,可以根据评判这两个数据空间对应的数据能力之间是否包含,而数据能力包含关系再转化为对空间三要素(范围,粒度,内容)的包含关系评判,如果数据能力A对应的三要素都包含数据能力B对应的三要素,则说数据能力A包含数据能力B,然后得出数据空间A包含数据空间B,亦即是说数据空间B中的数据能够从数据空间A中推导而出;
[0072]步骤S208:根据预设性能最优条件在上述数据空间集中查询满足预设性能最优条件的数据空间,该满足预设性能最优条件的数据空间为上述数据空间集中空间粒度与上述查询请求转换的空间粒度相差最小的数据空间。
[0073]数据能力之间的距离(Distance):两个数据能力中空间粒度之间相差多少,其目地是为了描述从哪个数据空间中去取数的性能会更高,如需要查询每年的数据,很明显从已经汇总到月粒度的数据上再汇总,比从预先汇总到日粒度上再汇总到年的性能更高。所以两个空间距离越近,则说明从一个空间粒度到另一个空间粒度之间的汇聚性能越高。
[0074]本应用实例首先将用户的立方体查询请求转换为多维数据库中数据空间的数据能力,然后将多维数据库中所有数据空间的数据能力与查询请求转换的数据能力进行比较,得到满足预设要求的数据空间集,说明本次查询能够从该数据空间查询数据,能够支持本次查询,接下来,在该数据空间集合查询满足预设性能条件的数据空间,最后找到一个数据空间来支持本次查询,提高Cube的查询速度,实现多维模型的查询优化。
[0075]—个实施例中多维数据库自动路由实现系统,如图3所示,包括:
[0076]请求接收模块301,用于接收多维数据库立方体查询请求;
[0077]请求转换模块302,用于根据预设转换规则将所述查询请求转换为数据能力,所述数据能力为数据空间提供数据的能力,所述数据空间为根据预设汇聚规则对多维数据库中的立方体进行数据汇总后得到的汇总数据的存储空间;
[0078]能力比较模块303,用于分别将所述查询请求转换的数据能力与所述多维数据库中所有数据空间的数据能力进行比较,根据比较结果得到所述多维数据库中的满足预设要求的数据空间集;
[0079]空间查询模块304,用于根据预设性能最优条件在所述数据空间集中查询满足预设性能最优条件的数据空间。
[0080]此外,在一个具体示例中,所述查询请求包括过滤条件、汇总粒度和输出度量,所述数据能力包括空间范围,空间粒度,空间内容;所述空间范围为数据空间存储的每个维度的维度成员组合;所述空间粒度为数据空间存储的所有维度的层次组合;所述空间内容为数据空间存储的度量的集合。
[0081]用户的查询请求中,分为三类信息:过滤条件(如取日期维度上取1997年的数据),汇总粒度(如按照每年每省份显示),输出度量(如输出销售额)。
[0082]数据空间(Space):根据预设汇聚规则对所述多维数据库中的立方体(cube)进行数据汇总后得到的汇总数据的存储空间,将立方体(cube)按照预设汇聚规则汇总计算好若干份数据,每一份数据的存储,定义为一个数据空间。所以一个cube的数据被分布在若干个数据空间中存储。
[0083]数据能力(Capacity):某个数据空间提供数据的能力,如果该空间具备了支持本次查询的能力,则本次查询能够被路由到从该空间取数。如何来评估该能力,通过下面所讲述的空间范围,空间粒度和空间内容来衡量,即对数据能力的描述是一个三元的元组:(空间范围,空间粒度,空间内容)
[0084]空间范围(Range):该空间内存储数据的范围,由数据空间存储的每个维度(Dimens1n)的维度成员组合而成,如某个数据空间存储了为“ 1997-1998年,华南地区所有商品的数据”,则空间范围可以被描述为:{TimeDimens1n: [1997, 1998], AreaDimens1n:[华南],ProductDimens1n: [All]}。
[0085]空间粒度(Granularity):该空间所存储的数据的粒度,由数据空间存储的所有维度的层次(Level)组合而成,如某个空间粒度为“每年,每个城市,汇总所有产品的数据”,则空间粒度可以描述为:{TimeDimens1n: Year, AreaDimens1n:City, ProductDimens1n:All}o
[0086]空间内容(Measure):该空间存储的度量的集合,如某个空间的内容为“销售量”,可以被描述为{SalesCount (销售统计),SalesAmount (销售金额)}。
[0087]如图3所示,在一个具体示例中,所述请求转换模块302包括:
[0088]过滤条件转换单元3021,用于将所述过滤条件中的维度的层次转换为第一空间粒度,且将所述过滤条件中的常量转换为空间范围;
[0089]汇总粒度转换单元3022,用于将所述汇总粒度转换为第二空间粒度,并根据所述第一空间粒度和所述第二空间粒度确定空间粒度;
[0090]输出度量转换单元3023,用于将所述输出度量转换为空间内容。
[0091]用户的查询请求中,分为三类信息:过滤条件(如取日期维度上取1997年的数据),汇总粒度(如按照每年每省份显示),输出度量(如输出销售额)。分别将该三类信息转换为数据空间三要素(空间范围,空间粒度,空间内容):
[0092]过滤条件:条件中左侧出现的维度的层次(Level)转换为第一空间粒度,右侧的常量转换为空间范围,如日期维度.Year = 1997,会产生空间粒度{TimeDimens1n: Year},空间范围:{TimeDimens1n:
[1997]},如果同一个维度产生多个空间粒度,则需要做粒度合并:取更明细的粒度,如{TimeDimens1n:Year}和{TimeDimens1n:Month}合并之后取{TimeDimens1n:Month};如同一个维度产生多个空间范围,则需要做空间范围合并,取两个空间范围内维度成员的合集,如{TimeDimens1n:
[1997]}和{TimeDimens1n:
[1998]}合并之后为{TimeDimens1n: [1997, 1998]}。
[0093]汇总粒度:转换为第二空间粒度,如最后显示每年每省份的数据,产生粒度为{TimeDimens1n: Year, AreaDimens1n:Province}。根据所述过滤条件中的维度的层次转换的第一空间粒度和所述汇总粒度转换的第二空间粒度确定空间粒度。如第一空间粒度{TimeDimens1n:Month},第二空间粒度{TimeDimens1n: Year, AreaDimens1n:Province},合并之后为{TimeDimens1n:Month, AreaDimens1n: Province} 0
[0094]输出度量:转换为空间内容,如需要输出销售额,则产生的空间内容为{SalesAmount (销售额)},如果产生多个空间内容,则需要做空间内容的合并,取空间内容中度量集合的合集,如{SalesCount}和{SalesAmount}合并之后为{SalesCount, SalesAmount}。
[0095]如图3所示,在一个具体示例中,所述能力比较模块303包括:
[0096]能力比较单元3031,用于分别将所述查询请求转换的空间范围与所述多维数据库中所有数据空间的空间范围进行比较,将所述查询请求转换的空间粒度与所述多维数据库中所有数据空间的空间粒度进行比较,将所述查询请求转换的空间内容与所述多维数据库中所有数据空间的空间内容进行比较;
[0097]结果获取单元3032,用于当所述多维数据库中第一数据空间的空间范围包含所述查询请求转换的空间范围,所述第一数据空间的空间粒度包含所述查询请求转换的空间粒度,且所述第一数据空间的空间内容包含所述查询请求转换的空间内容时,得到所述第一数据空间为满足所述预设要求的数据空间,所述第一数据空间为所述多维数据库中任意一个数据空间。
[0098]在空间范围上定义一个操作:包含(Contain),当某个“空间范围”A内所有维度上的维度成员组合都是另一个空间范围B相对应维度上的维度成员组合的子集时,则空间范围 B 包含空间范围 A。如{TimeDimens1n: [1997, 1998], AreaDimens1n:[All],ProductDimens1n:[All]}包含{TimeDimens1n:
[1997], AreaDimens1n:[华南],ProductDimens1n:[All]}。
[0099]在空间粒度上定义一个操作:包含(Contain),当某个“空间范围”A内所有维度上的层次(Level)都比另一个空间范围B相对应维度上的层次(Level)更粗时,贝空间粒度B 包含空间粒度 A。如{TimeDimens1n:Month, AreaDimens1n:City, ProductDimens1n:A11}包含{Ti
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1