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

文档序号:9667450阅读:来源:国知局
维数据库中所有数据空间的空间内容进行比较;
[0043]当所述多维数据库中第一数据空间的空间范围包含所述查询请求转换的空间范围,所述第一数据空间的空间粒度包含所述查询请求转换的空间粒度,且所述第一数据空间的空间内容包含所述查询请求转换的空间内容时,得到所述第一数据空间为满足所述预设要求的数据空间,所述第一数据空间为所述多维数据库中任意一个数据空间。
[0044]在空间范围上定义一个操作:包含(Contain),当某个“空间范围”A内所有维度上的维度成员组合都是另一个空间范围B相对应维度上的维度成员组合的子集时,则空间范围 B 包含空间范围 A。如{TimeDimens1n: [1997, 1998], AreaDimens1n:[All],ProductDimens1n:[All]}包含{TimeDimens1n:
[1997], AreaDimens1n:[华南],ProductDimens1n:[All]}。
[0045]在空间粒度上定义一个操作:包含(Contain),当某个“空间范围”A内所有维度上的层次(Level)都比另一个空间范围B相对应维度上的层次(Level)更粗时,贝空间粒度B 包含空间粒度 A。如{TimeDimens1n:Month, AreaDimens1n:City, ProductDimens1n:A11}包含{TimeDimens1n: Year, AreaDimens1n:Province, ProductDimens1n:All} 0
[0046]在空间内容上定义一个操作:包含(Contain),当某个空间内容A上的度量集合是空间内容B的度量集合的子集时,则空间内容B包含空间内容A。如{SalesCount, SalesAmount}包含{SalesCount}。
[0047]空间包含(Contain):—个数据空间A能够包含另外一个数据空间B,亦即是说B中的数据能够从A中获得。如“空间粒度为每年的数据”能够从“空间粒度粒度为每月的数据”中再次汇聚得到。评判两个数据空间之间的包含关系,可以根据评判这两个数据空间对应的数据能力之间是否包含,而数据能力包含关系再转化为对空间三要素(范围,粒度,内容)的包含关系评判,如果数据能力A对应的三要素都包含数据能力B对应的三要素,则说数据能力A包含数据能力B,然后得出数据空间A包含数据空间B,亦即是说数据空间B中的数据能够从数据空间A中推导而出。
[0048]此外,在一个具体示例中,所述满足预设性能最优条件的数据空间为所述数据空间集中的空间粒度与所述查询请求转换的空间粒度相差最小的数据空间。
[0049]数据能力之间的距离(Distance):两个数据能力中空间粒度之间相差多少,其目地是为了描述从哪个数据空间中去取数的性能会更高,如需要查询每年的数据,很明显从已经汇总到月粒度的数据上再汇总,比从预先汇总到日粒度上再汇总到年的性能更高。所以两个空间距离越近,则说明从一个空间粒度到另一个空间粒度之间的汇聚性能越高。
[0050]为了更好地理解上述方法,以下详细阐述一个本发明多维数据库自动路由实现方法的应用实例。
[0051]本发明根据一定的规则预先汇总好一部分数据,分别存储在不同的表中,当用户查询Cube时,分析用户的查询请求,从预先汇总好的表中找到从性能上说是最优的一个表,我们将该过程定义为“自动路由”。
[0052]如图2所示,该应用实例可以包括以下步骤:
[0053]步骤S201:根据预设汇聚规则对多维数据库中的立方体进行数据汇总后得到汇总数据,每一份数据的存储,定义为一个数据空间;数据能力为数据空间提供数据的能力;
[0054]数据空间(Space):根据预设汇聚规则对所述多维数据库中的立方体(cube)进行数据汇总后得到的汇总数据的存储空间,将立方体(cube)按照预设汇聚规则汇总计算好若干份数据,每一份数据的存储,定义为一个数据空间,所以一个cube的数据被分布在若干个数据空间中存储;
[0055]数据能力(Capacity):某个数据空间提供数据的能力,如果该空间具备了支持本次查询的能力,则本次查询能够被路由到从该空间取数。如何来评估该能力,通过下面所讲述的空间范围,空间粒度和空间内容来衡量,即对数据能力的描述是一个三元的元组:(空间范围,空间粒度,空间内容);
[0056]空间范围(Range):该空间内存储数据的范围,由数据空间存储的每个维度(Dimens1n)的维度成员组合而成,如某个数据空间存储了为“ 1997-1998年,华南地区所有商品的数据”,则空间范围可以被描述为:{TimeDimens1n: [1997, 1998], AreaDimens1n:[华南],ProductDimens1n: [All]};
[0057]空间粒度(Granularity):该空间所存储的数据的粒度,由数据空间存储的所有维度的层次(Level)组合而成,如某个空间粒度为“每年,每个城市,汇总所有产品的数据”,则空间粒度可以描述为:{TimeDimens1n: Year, AreaDimens1n:City, ProductDimens1n:All};
[0058]空间内容(Measure):该空间存储的度量的集合,如某个空间的内容为“销售量”,可以被描述为{SalesCount (销售统计),SalesAmount (销售金额)};
[0059]步骤S202:接收用户的多维数据库立方体查询请求,用户的查询请求中,分为三类信息:过滤条件(如取日期维度上取1997年的数据),汇总粒度(如按照每年每省份显示),输出度量(如输出销售额);
[0060]步骤S203:将上述查询请求中的过滤条件中的维度的层次转换为第一空间粒度,且将所述过滤条件中的常量转换为空间范围;
[0061]过滤条件:条件中左侧出现的维度的层次(Level)转换为第一空间粒度,右侧的常量转换为空间范围,如日期维度.Year = 1997,会产生空间粒度{TimeDimens1n: Year},空间范围:{TimeDimens1n:
[1997]},如果同一个维度产生多个空间粒度,则需要做粒度合并:取更明细的粒度,如{TimeDimens1n:Year}和{TimeDimens1n:Month}合并之后取{TimeDimens1n:Month};如同一个维度产生多个空间范围,则需要做空间范围合并,取两个空间范围内维度成员的合集,如{TimeDimens1n:
[1997]}和{TimeDimens1n:
[1998]}合并之后为{TimeDimens1n: [1997, 1998]};
[0062]步骤S204:将上述查询请求中的汇总粒度转换为第二空间粒度,并根据所述第一空间粒度和所述第二空间粒度确定空间粒度;
[0063]汇总粒度:转换为第二空间粒度,如最后显示每年每省份的数据,产生粒度为{TimeDimens1n: Year, AreaDimens1n:Province}。根据所述过滤条件中的维度的层次转换的第一空间粒度和所述汇总粒度转换的第二空间粒度确定空间粒度。如第一空间粒度{TimeDimens1n:Month},第二空间粒度{TimeDimens1n: Year, AreaDimens1n:Province},合并之后为{TimeDimens1n:Month, AreaDimens1n:Province};
[0064]步骤S205:将上述查询请求中的输出度量转换为空间内容;
[0065]输出度量:转换为空间内容,如需要输出销售额,则产生的空间内容为{SalesAmount (销售额)},如果产生多个空间内容,则需要做空间内容的合并,取空间内容中度量集合的合集,如{SalesCount}和{SalesAmount}合并之后为{SalesCount, SalesAmount};
[0066]步骤S206:分别将所述查询请求转换的空间范围与所述多维数据库中所有数据空间的空间范围进行比较,将所述查询请求转换的空间粒度与所述多维数据库中所有数据空间的空间粒度进行比较,将所述查询请求转换的空间内容与所述多维数据库中所有数据空间的空间内容进行比较;
[0067]步骤S207:当所述多维数据库中第一数据空间的空间范围包含所述查询请求转换的空间范围,所述第一数据空间的空间粒度包含所述查询请求转换的空间粒度,且所述第一数据空间的空间内容包含所述查询请求转换的空间内容时,得到所述第一数据空间为满足所述预设要求的数据空间,所述第一数据空间为所述多维数据库中任意一个数据空间;
[0068]在空间范围上定义一个操作:包含(Contain),当某个“空间范围”A内所有维度上的维度成员组合都是另一个空间范围B相对应维度上的维度成员组合的子集时,则空间范围 B 包含空间范围 A。如{TimeDimens1n: [1997, 1998], AreaDimens1n:[All],ProductDimens1n:[All]}包含{TimeDimens1n:
[1997], AreaDimens1n:[华南],ProductDimens1n: [All]};
[0069]在空间粒度上定义一个操作:包含(Contain),当某个“空间范围”A内所有维度上的层次(Level)都比另一个空间范围B相对应维度上的层次(Level)更粗时,贝空间粒度B 包含空间粒度 A。如{TimeDimens1n:Month, AreaDimens1n:City, ProductDimens1n:A11}包含{TimeDimens1n: Ye
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1