用于根据数据仓库提供统计信息的方法和系统的制作方法

文档序号:6494560阅读:211来源:国知局
用于根据数据仓库提供统计信息的方法和系统的制作方法
【专利摘要】本发明涉及一种用于根据数据仓库(410)提供统计数据的方法,数据仓库包括一种或多种数据存储装置以及耦合至数据存储装置的一个或多个处理器,所述方法的特征在于包括以下步骤:定义多个索引域(114),每一个索引域都接受多个索引域值;建立多个索引文件(432)并且将文件分层级地索引为索引树(300),其中对于每一棵树都包括以下步骤:分层级地排序索引域(201);定义分选仓,每一个分选仓都关联至一个索引域并且收集用于该索引域的一个或多个索引域值;通过级联跟分层级排序的索引域的层级相一致的一个或多个分选仓构成分选仓序列而建立索引,索引在每一个索引域中都只包括一个分选仓;将文件分层级地索引为索引树(300),每一个索引都拥有零个或更多个子索引和/或拥有最多一个父索引,以使每一个子索引都包括跟其父索引的索引再加上关联至附加索引域的至少一个附加分选仓相同的分选仓序列;给每一个索引提供被设置用于存储统计数据的数据容器(325,335),以使每一个数据容器都被索引并且可以从分层级索引的文件中直接寻址;接收(436)一个或多个包括原始数据的输入文件(434)并且用输入文件(434)更新数据容器,其中包括对于每一个输入文件都使用一个或多个处理器来设置用于执行以下步骤:从原始数据中识别和提取至少一种属性以通过统计信息和表现所述属性特征的一个或多个输入文件参数进行分析;根据输入文件(434)建立至少一条个体记录(620),每一条个体记录(620)都包括至少一种属性和表现所述属性特征的一个或多个输入文件参数;将每一个输入文件参数与至少一个索引域相关联;在每一个输入文件参数以及关联至该输入文件参数的至少一个索引域的分选仓之间建立对应关系;识别出用全都跟所述个体记录(620)的输入文件参数相对应的一个或多个分选仓索引的数据容器;用所述个体记录(620)的至少一种属性增量式地更新识别出的数据容器(325,335)以获取描述属性的统计数据。
【专利说明】用于根据数据仓库提供统计信息的方法和系统
【技术领域】
[0001]本发明整体上主要涉及数据仓库和商业智能,并且更具体地致力于解决在考虑提供统计数据时加快数据检索以实时处理从大型数据储存库中查询的问题。
[0002]本发明涉及特定的内存中的数据结构,其允许明显加快针对通常在商业智能中使用的大量数据进行统计联机分析处理(OLAP)查询的响应时间。
【背景技术】
[0003]所有的大型公司和企业在实施其商业行为的过程中每天都需要收集和累积大量的信息。一种普遍适用的解决方案是将这些信息以数据库的形式存储,最常见的是称作关系数据库的数据库模型。关系数据库实际上是一种在特定的关系数据库管理系统(RDBMS)的控制之下的表格的集合以及表格之间的定义关系,并且配备有结构化查询语言(SQL)以使得信息能够被有效地存储、更新和检索。也存在其他的模型例如层级模型。无论使用何种模型,在要存储和组织的总体数据量显著增加时都需要进一步地组织数据库的集合。实际上,现在很常见的是仅仅为了允许这些大型公司的日常操作就需要存储太字节(terabyte)(也就是IO12字节)量级的信息数据,并且内容要做成持久保存和易于访问;因此,自从80年代以来就提出了数据仓库的概念。数据仓库和数据集市是由任何大型机构建立用于保存其战略经营和商业数据的储存库。组织仓库的方式跟商业智能有很大关系。为了允许任意地彻底分析其内容以使得尽管可能必须要涉及海量的数据但是所有仓库用户都能够做出知情决策,设计用于跟储存库之间来回地提取、转换和加载数据的仓库结构和工具以及检索信息的表达和报告是关键性的。
[0004]在旅游业中,这种需要存储和组织大量数据的大型机构通常是航空公司或⑶S也就是“全球分销系统”。GDS是在全世界范围内支持包括航空公司、连锁酒店、租车公司、传统的旅行社、其他在线旅游服务提供商等在内的所有旅游业参与者的几家大型旅游服务提供商中的任何一家。这样的GDS例如是AMADEUS,这是一家总部在西班牙马德里的欧洲旅游服务提供商。GDS因此必须要从他们大量的存储资源、计算资源和网络资源中记录可能是数以百万计的游客、成千上万家旅行社和在线服务提供商以及数十家航空公司和运输公司的相关数据。为此,任何一家GDS都需要建立很多大型数据库来保存例如所支持的运输公司的所有日程表、他们提供的日常更新的各种费用以及数以百万计的游客的所有票据数据等内容。
[0005]例如航空公司或GDS等机构经常需要依赖于统计信息来确定其战略。统计信息也可以作为帮助终端用户购买的服务而被提供给终端用户。统计信息经常需要分析散布在构成某个机构(例如航空公司或GDS)的数据仓库的很多数据库中的海量数据。
[0006]然而,这种海量分散数据的分析并不是一项简单的工作。即使事实上数据库被专门设计为有助于检索数据,但是仓库的内容分析仍然隐含地表明来自不同数据库的可能会涉及很多大表的数据需要交叉比对,以使得能够响应于这样的查询而提取有意义的信息片段并将其提供给终端用户。通常,对于关系数据库而言,这就意味着要对表项执行联合运算。已知这些运算在处理资源和时间等方面都代价高昂。而且,从可能是独立的计算机化操作平台访问多个数据库将触发大量的1/0(输入/输出)操作,这跟如果能将处理限制在单一的内部计算机化单元内相比当然要慢得多。此外,所有这些操作都会影响到需要一直运行并且能够同时处理多名用户的仓库数据库的正常生产工作。这就使得难以甚至是无法实时处理(也就是在几毫秒到几十毫秒的期望时限内)涉及到获取大量信息(例如收集和计算日常统计数据)的复杂查询。
[0007]因此,本发明的目标是公开一种根据数据仓库保持更新的数据结构,并且其目的在于加快统计数据的检索以使得即使是复杂的查询,尽管可能会涉及到大量的数据,但是也能够实时地处理和响应。
[0008]本发明的更多目标、特征和优点将在本领域技术人员参照附图研读以下的说明内容之后变得显而易见。应该理解任何附加的优点均可并入本文。

【发明内容】

[0009]为了满足上述目标,本发明介绍了一种用于根据数据仓库提供统计数据的方法,数据仓库包括一种或多种数据存储装置以及耦合至数据存储装置的一个或多个处理器。
[0010]在下文中并且在附图简要说明之前提供了用于描述本发明的术语和参考词汇的名词解释。
[0011]所述方法的特征在于其包括以下步骤:
[0012].定义多个索引域,每一个索引域都接受多个索引域值;
[0013].建立多个索引文件并且将文件分层级地索引为索引树,其中对于每一棵树都包括以下步骤:
[0014]-分层级地排序索引域;
[0015]-定义分选仓,每一个分选仓都关联至一个索引域并且收集用于该索引域的一个或多个索引域值;
[0016]-通过级联跟分层级排序的索引域的层级相一致的一个或多个分选仓构成分选仓序列而建立索引,索引在每一个索引域中都只包括一个分选仓;
[0017]-将文件分层级地索引为索引树,每一个索引都拥有零个或更多个子索引和/或拥有最多一个父索引,以使每一个子索引都包括跟其父索引的索引相同的分选仓序列再加上关联至附加索引域的至少一个附加分选仓;
[0018].给每一个索引提供被设置用于存储统计数据的数据容器,以使每一个数据容器都被索引并且可以从分层级索引的文件中直接寻址;
[0019].接收一个或多个包括原始数据的输入文件并且用输入文件更新数据容器,其中包括对于每一个输入文件都使用一个或多个处理器来设置用于执行以下步骤:
[0020]-从原始数据中识别和提取通过统计信息分析的至少一种属性和表征所述属性的一个或多个输入文件参数;
[0021]-根据输入文件建立至少一条个体记录,每一条个体记录都包括至少一种属性和表征所述属性的一个或多个输入文件参数;
[0022]-将每一个输入文件参数与至少一个索引域相关联;
[0023]-在每一个输入文件参数以及关联至该输入文件参数的至少一个索引域的分选仓之间建立对应关系;
[0024]-识别出用全都跟所述个体记录的输入文件参数相对应的一个或多个分选仓索引的数据容器;
[0025]-用所述个体记录的至少一种属性增量式地更新识别出的数据容器以获取描述属性的统计数据。
[0026]优选地,所述方法包括接收查询的附加步骤并且针对每一次查询都将一个或多个处理器编程用于:
[0027]-在查询中识别出一个或多个查询域以及关联至查询域的至少一个查询域值;
[0028]-在每一个查询域和索引域之间建立对应关系;
[0029]-在每一个查询域值以及跟所述一个或多个识别出的查询域相对应的每一个索引域的分选仓之间建立对应关系,由此定义跟查询相对应的一组分选仓;
[0030]-搜索并识别出用包括跟查询相对应的分选仓的索引来索引的相关数据容器;
[0031]-检索并向用户发送识别出的相关容器的统计数据。
[0032]有利地,统计数据涉及频率分布或集中趋势分布的度量或分散分布的度量。根据一个有利的示例,统计数据以涉及由游客为运输服务实际支付的价格的统计数据为基础。
[0033]在涉及运输并且更具体地涉及旅客运输的一个特定实施例中,本发明可以包括以下可选特征中的任何一项:
[0034]-索引域是以下内容中的至少一项:起点城市、起点国家、起点地理区域、目的地城市、目的地国家、目的地地理区域、文化目的地、体育赛事、美食、野生动植物观察、娱乐活动、用准确出发日期表示的出发日期、用月表示的出发时段、用周表示的出发时段、用准确日期表示的返回日期、用月表示的返回时段、用周表示的返回时段、到达之后的行程时长、预购类别。
[0035]-根据一个实施例,通过级联至少两个分选仓来建立没有父索引的至少一个索引。例如,没有父索引的索引包括关联至涉及起点城市的索引域的分选仓,关联至涉及出发前行程时长的索引域的分选仓,以及关联至涉及航班出发周的索引域的分选仓。根据具体的使用情形,分选仓收集涉及以下内容之一的一些索引域值:起点城市、出发城市、出发日期、出发周、返回日期、返回周、用于行程时长的天数、用于预购的天数。
[0036]-根据另一个实施例,没有父索引的至少一个索引仅包括一个分选仓。
[0037]-输入文件是运输服务的电子票并且包括体现出用于运输区段的所有信息的至少一张优惠券。
[0038]-属性是为每一张票或优惠券实际支付的价格。输入文件参数描述以下内容中的至少一项:起点城市、出发城市、出发日期、返回日期、行程时长、预订和出发之间的天数。
[0039]-查询域涉及以下域中的至少一个:起点城市、起点国家、起点地理区域、目的地城市、目的地国家、目的地地理区域、文化目的地、体育目的地、美食、野生动植物观察、娱乐活动、用准确出发日期表示的出发日期、用月表示的出发时段、用周表示的出发时段、用准确日期表示的返回日期、用月表示的返回时段、用周表示的返回时段、到达之后的行程时长、预订和出发之间的天数。
[0040]-单个索引域值可以关联至多个索引域。例如,描述目的地城市的索引域值可关联至以下索引域中的至少两个:起点城市、起点国家、起点地理区域、文化目的地、体育赛事、美食、野生动植物观察、娱乐活动。
[0041]可选地,所述方法根据本发明可以包括以下特征和步骤中的任何一项:
[0042]-建立个体记录包括以下步骤:为每一条个体记录赋予日期或周或月或学期或年,日期对应于接收输入文件;将个体记录存储在数据存储装置内。
[0043]-用个体记录更新数据容器包括以下步骤:建立多批具有相同日期或者具有相同日期时段的个体记录;通过各批个体记录来更新数据容器。
[0044]-更新并不需要计算所有的先前记录。因此只需要最小的计算量。通常,统计信息是在每一天结束时收到所有的输入文件之后更新。这就允许将每一天的交易数据无缝集成到应该可供下一天使用的数据范围内且无需取消直到前一天为止所进行的计算。
[0045]-优选地,索引域值和属性是利用适当的计数或者新数值更新的整数、小数或区间。
[0046]向容器加入新的个体记录涉及的改变最少:仅仅是相应频率分选仓内的计数值。因此,尽管个体记录的总数有巨大的增加,但是由于使用了频率分布表达和增量机制,因此容器大小和文件大小不会增加太多。不再加入其他的数据。
[0047]-为了保持统计数据准确,本发明可以包括以下的步骤:读取存储的个体记录的日期;识别出被赋予的日期早于指定日期的先前个体记录;通过这些识别出的先前个体记录的输入文件参数定位用这些识别出的先前个体记录更新过的数据容器;通过删除这些识别出的先前个体记录来更新定位的数据容器。更准确地说,通过利用识别出的先前个体记录的属性增量式地删除定位的数据容器来更新数据容器。删除记录并不需要计算所有的先前记录。因此,需要用最小的计算量来放弃过去的数据和保留相关的统计数据且无需放弃过去的计算。
[0048]-增量式地更新识别出的数据容器包括根据先前计算的统计数据和所述个体记录的至少一种属性增量式计算更新的统计数据的步骤。
[0049]-如果所述数据容器由等于或小于输入文件参数的数量的若干个分选仓索引并且假设这一个或多个分选仓中的每一个都对应于所述输入文件的输入文件参数,那么数据容器即被识别用于通过输入文件来更新。
[0050]-如果个体记录的输入文件参数被关联至现有的索引域但是并不对应于该关联的现有索引域中的任何分选仓,那么就针对该关联的现有索引域建立附加分选仓;建立用这一附加分选仓索引的附加数据容器;用所述个体记录更新附加的数据容器。
[0051]例如,如果存在用索引NBO和NB005索引的数据容器并且如果个体记录的输入文件参数对应于分选仓NB0、05和40,那么就应建立数据容器NB00540。该个体记录的属性应将数据容器更新为用以下的索引来索引:ΝΒ0、NB005和新建的NB00540。用NB00532和NB00540索弓I的数据容器位于索弓I树的同一层级。
[0052]-个体记录的每一个输入文件参数都对应于分选仓,但是仍有一个或多个分选仓的组合跟并不对应于索引的所述输入文件参数相对应,那就建立用这种一个或多个对应分选仓的组合索引的附加数据容器;用所述个体记录更新附加的数据容器。
[0053]例如,如果存在用索引NBO和NB005索引的数据容器并且如果个体记录的输入文件参数对应于分选仓NB0、05和32,那么以下的分选仓组合就并未对应于现有的索引:NB00532。随后就应建立数据容器NB00532。该个体记录的属性应将数据容器更新为用以下的索引来索引:NB0、NB005和新建的NB00532。
[0054]-如果不同的实体例如GDS、航空公司、旅行社等需要将不同的索引用于相同或部分重叠的数据,那么就建立用于每一家商业实体的索引并且用单独的预先计算建立可以对其进行查询的不同文件。
[0055]-存储在数据容器内的所有数据都以包含没有相对关系结构的记录的文件(flatfile)的形式存储。
[0056]-查询允许将通配符作为用于一个或多个查询域的查询域值。通配符在本发明中被标注为通配符意味着仅搜索跟所述查询域相对应的索引域中的*或通配符分选仓。因此,对于查询域值为ΝΒ0、*、32的查询,本发明定位其索引中将分选仓NBO和32用于第一和第三索引域并且第二索引中有*或通配符分选仓的所有容器。这是查询加速的原因之一。搜索所有的分选仓响应会比较慢。通过以数据转换时间来整合搜索组合即可在查询时段期间节约大量的计算时间。
[0057]-查询允许用于一个或多个查询域的通配符查询域值,并且通配符查询域值意味着将搜索跟用于该索引域的通配符分选仓相对应的统计信息。更准确地说,所述方法包括通过构成一个或多个分选仓的序列来建立索引的步骤,这些分选仓中至少有一个接受用于索引域的所有索引域值。这样的分选仓被称为通配符分选仓。因此,本发明自动建立附加索引以及索引不太明确的数据容器。
[0058]考虑来自我们的系统中的一个索引例如NCE0152:这是从NCE预订的旅游类型为01且处于一年中第52周的所有行程的分组细节所用的索引。类似地是NCE0602:这是从NCE预订的旅游类型为06且处于一年中第2周的所有行程的分组细节所用的索引。本发明在索引过程期间建立通配符索引。例如建立了以下的索引:NCE*52是从NCE预订的处于一年中第52周的任意旅游类型的所有行程的分组细节所用的索引;NCE2**是从NCE预订的处于一年52周中任何一周的旅游为02的所有行程的分组细节所用的索引;NCE***是从NCE预订的处于一年52周中任何一周的任何旅游类型的所有行程的分组细节所用的索引。也被称作星号的通配符表示接受所有的索引域值。通配符还也可以由索引值“all”表示。语义上表明NCE***包括用于每一个NEC XX DD的所有记录,其中XX是用于第二索引域(例如旅游类型)的任何指定值且DD是用于第三索引域(例如一年中的周数)的任何指定值。这种特征允许用固定的时间检索对大规模查询的响应。
[0059]本发明的另一主题是一种从根据上述方法得到并且包括一个或多个处理器的数据仓库中检索统计数据的方法,其特征在于所述方法包括以下步骤:
[0060]-在查询中识别出一个或多个查询域以及关联至查询域的至少一个查询域值;
[0061]-在每一个查询域和索引域之间建立对应关系;
[0062]-在每一个查询域值以及跟所述一个或多个识别出的查询域相对应的每一个索引域的分选仓之间建立对应关系,由此定义跟查询相对应的一组分选仓;
[0063]-搜索并识别出用索引来索引的其中包括跟查询相对应的分选仓组的相关数据容器;
[0064]-检索并向用户发送识别出的相关容器的统计数据。
[0065]本发明的另一个目标是一种用于从包括一个或多个数据库的数据仓库中收集统计数据的方法和系统,其中收集的统计数据被保留在多个索引包含没有相对关系结构的记录的文件内,所述方法的特征在于包括以下步骤:将统计数据收集到类别分选仓内;增量式地更新类别分选仓;将包含没有相对关系结构的记录的文件分层级地索引为索引树;在每一棵索引树的根节点定义主索引;根据索引直接寻址统计数据的容器或者另一个索引。
[0066]可选地,所述方法和系统至少包括以下可选特征和步骤中的至少一项:
[0067]-索引包含没有相对关系结构的记录的文件被导入并保持驻留在计算机操作服务平台的主存储器内。
[0068]-根据保持驻留在计算机操作服务平台的主存储器内的多个索引包含没有相对关系结构的记录的文件完备地服务来自终端用户的查询。
[0069]-以预定的时间间隔从数据仓库中收集统计数据。
[0070]-统计数据是由航空公司航班上运输的游客支付的实际机票费用。
[0071]-类别分选仓是:航班起点、航班目的地、旅游类型、出发周和预购类别。
[0072]-主索引包括起点、旅游类型和航班的出发周。
[0073]-包含没有相对关系结构的记录的文件索引包括航班的目的地和预购类别。
[0074]-索引包括至少一个通配符。
[0075]本发明的另一个目标是一种存储在非易失性计算机可读取存储介质上的计算机程序产品,包括计算机可读取代码装置,被指示用于促使至少一个微处理器操作根据任何一项前述步骤提供统计数据所用的方法。
[0076]优选地,计算机程序产品通过在线的网站提供。
[0077]本发明的另一个目标涉及一种用于在包括处理装置以及耦合至处理装置的一种或多种数据存储装置的数据仓库内建立统计数据的系统。所述系统的特征在于数据存储装置和处理装置被设置用于实现以下步骤:
[0078].定义多个索引域,每一个索引域都接受多个索引域值;
[0079].建立多个索引文件并且将文件分层级地索引为索引树,其中对于每一棵树都包括以下步骤:分层级地排序索引域;定义分选仓,每一个分选仓都关联至一个索引域并且收集用于该索引域的一个或多个索引域值;通过级联跟分层级排序的索引域的层级相一致的一个或多个分选仓构成分选仓序列而建立索引,索引在每一个索弓I域中都只包括一个分选仓;将文件分层级地索引为索引树,每一个索引都拥有零个或更多个子索引和/或拥有最多一个父索引,以使每一个子索引都包括跟其父索引的索引相同的分选仓序列再加上关联至附加索引域的至少一个附加分选仓;
[0080].给每一个索引提供被设置用于存储统计数据的数据容器,以使每一个数据容器都被索引并且可以从分层级索引的文件中直接寻址;
[0081].接收一个或多个包括原始数据的输入文件并且用输入文件更新数据容器,其中包括对于每一个输入文件都使用一个或多个处理器来设置用于执行以下步骤:从原始数据中识别和提取通过统计信息分析的至少一种属性和表征所述属性的一个或多个输入文件参数;根据输入文件建立至少一条个体记录,每一条个体记录都包括至少一种属性和表现所述属性特征的一个或多个输入文件参数;将每一个输入文件参数与至少一个索引域相关联;在每一个输入文件参数以及关联至该输入文件参数的至少一个索弓丨域的分选仓之间建立对应关系;识别出用全都跟所述个体记录的输入文件参数相对应的一个或多个分选仓索引的数据容器;用所述个体记录的至少一种属性增量式地更新识别出的数据容器以获取描述属性的统计数据。
[0082]优选地,所述系统还包括用于接收查询并且被设置为针对每一次查询都通过使用一个或多个处理器来执行以下步骤:在查询中识别出一个或多个查询域以及关联至查询域的至少一个查询域值;在每一个查询域和索引域之间建立对应关系;在每一个查询域值以及跟所述一个或多个识别出的查询域相对应的每一个索引域的分选仓之间建立对应关系,由此定义跟查询相对应的一组分选仓;搜索并识别出用索引索引的其中包括跟查询相对应的分选仓组的相关数据容器;检索并向用户发送识别出的相关容器的统计数据,由此允许响应于终端用户的查询而跟涉及的数据量无关地并且在短暂的毫秒级耗时内检索统计数据。
[0083]本发明由此允许以非常短的时间响应复杂的查询也就是涉及到获取大量信息例如收集和计算日常统计数据的查询。
[0084]本发明的另一个目标是一种存储在非易失性计算机可读取存储介质上的计算机程序产品,包括计算机可读取代码装置,被指示用于促使至少一个微处理器操作根据任何一项前述步骤提供统计数据所用的方法。
[0085]以下通过注释和定义来详细介绍本发明的各种特征。
[0086]统计数据
[0087]本发明提供了一种用于建立、存储、增量式更新和检索根据大量原始数据算出的统计数据的系统。对于指定的变量,这些统计数据例如可以涉及频率分布;集中趋势分布的度量例如平均值或中值;分散趋势分布的度量例如标准差;分布本身的性质,由百分位数/分位数等注明。
[0088]这样的统计数据并非限制性的。通过统计信息研究的数据性质也不是限制性的。
[0089]典型的示例涉及关于待售或由顾客支付的任何指定产品或服务的价格的统计信息。本发明的一种特别有利的应用涉及关于由乘客实际支付的交通票的价格的统计数据。
[0090]索引,索引域,索引域值和分选仓
[0091]索引域(IF)是一种参数,其与表征另一种待分析参数的统计信息相关。例如,对于旅行费用的相关统计数据,索引域可以涉及:旅行起点(例如索引域=“城市”、“国家”、“地理区域”等);位置方面的旅行目的地(例如索引域=“城市”、“国家”、“地理区域”)和/或主题目的地方面的旅行目的地(例如索引域=“文化目的地”、“体育目的地”、“美食目的地”、“野生动植物观察”、“娱乐活动”等);出发日期(例如索引域=“准确的出发日期”)或“出发时段”(例如索引域=“准确的出发日期”、“出发月”、“出发周”);返回日期(例如索引域=“准确的返回日期”)或“返回时段”(特定的月或周或周末)或“旅游类型分类”(到达之后的行程时长),“预订日期”或“预订时段”,“预购类别”(预订和出发之间的时间段)。以下列出并且在所述示例中描述的索引域是为了便于理解而选择但并非限制性的。
[0092]索引域的值(IFV)是能够从预定的值域中分配给索引域的值。该值可以是数字(天数)或者表示某一实体或实体集合(例如机场或城市或目的地主题)的字母数字编码。索引域值通常将具有预先选定的固定长度。例如,在分析关于旅游优惠券价格的统计信息时:
[0093]-用于索引域“起点”的索引域值可以是以下的一种=Nairobi(起点城市),Kenya (起点国家),非洲(地理区域)。[0094]-用于涉及旅行目标的索引域“目的地城市”、“地理区域”、“野生动植物观察”、“铁路博物馆”的索引域值例如可以是“Nairobi”。因此显而易见的是单一的索引域值可以关联至多个索引域。
[0095]-用于涉及出发日期的索引域“准确出发日期”、“出发周”、“出发月”的索引域值可以是“2007年6月14日”。
[0096]-用于索引域“旅游类型分类”或“旅游时长”的索引域值可以是以下的一种:1天、3天、2周、I个月零3天等。
[0097]-用于索引域“预购类别”的索引域值可以是以下的一种:1天、3天、2周、I个月
坐寸ο
[0098]-索引域值可以是通过重复适当固定长度的*而标明的通配符。这就类似于全选索引值,其含义对应于计算中常用的无关符(don’t care symbol)。
[0099]分选仓在数学上表示确保索引域值在其中分配的值域。分配给分选仓的标签表现为用于索引域的索引域值并且对应于该长度。即使索引域值对应于一个集合,这一点也同样成立,但是相应地该标签的含义就不再是单个实体而是表示离散的取值集合或可以通过数值范围的端点表示的连续集。例如,索引域“用月表示的出发时段”可以将其值域离散地定义为1-12范围内的整数,12个分选仓能够将一年内的每一个日期粗略地分类成位于I到12之间的一个分选仓标签。
[0100]类似地,索引域“野生动植物观察”或“主题目的地”可以具有分选仓“狩猎旅行”以跟构成用于狩猎旅行的良好起点的城市相对应。分选仓“狩猎旅行”可以收集的索引域值有“Nairobi”、“Mara Serena”、“Gab0r0ne”以及位于国家公园附近因其狩猎旅行而闻名的其他城市。
[0101]输入文件,记录,属性,数据容器
[0102]输入文件是由系统接收并且其中包含初始数据集、系统待分析的原始数据的文件。系统分析输入文件并保留、删除或者将其中的记录属性转化为适当的索引域值,索引域值对应于预定的索引域集合,这涉及如下参数相关联,所述参数的统计信息是由系统作为对查询的响应结果而提供的。输入文件内的所有数据在进行分析之前都被指定为原始数据。
[0103]在初始数据集(原始数据)中,记录仅仅是属性元组,由此可以定义并随后计算出我们想要获知其统计信息的一组参数或索引域值。例如,如果我们决定将模型起点和目的地作为影响称为飞行价格的参数的仅有索引域-输入数据源文件可以是优惠券或机票。我们可以设想每一张优惠券都是一条记录,就像表或电子表格内的一行,其中表的列表头对应于多种属性,例如起点、目的地、出发日期、出票日期、PNR日期、舱位等级、票价等级等,其中有一些被选择为索引域,例如其对于索引指定参数是有意义的起点和终点,指定参数譬如是我们感兴趣的价格。转换过程针对初始数据集的属性值进行以获得选定索引域的转换索引域值。例如,如果出发天数被选择为索引域,那么转换过程就利用被称为出发日期和PNR日期(或机票日期)的初始数据集属性以将“出发天数”索引域的值得出为出发日期-PNR日期或者出发日期-出票日期。
[0104]要注意的是在转换的数据集中,记录的概念有所不同。在转换记录的储存库中,每一条记录都是索引树内的一条路径。初始数据集内的多条记录映射为转换数据集内的单条记录。作为示例,考虑我们将价格统计信息作为感兴趣的主要研究参数,并且决定将起点和目的地建模作为价格的主要确定因素。现在如果第一级索引域是起点机场,由于在分析的每一张优惠券内都会遇到若干起点机场的大的数目,因此多个索引值分支作为用于每一个起点机场的索引域值。如果第二级是目的地机场,那么多个索引域值分支用于针对指定起点机场的每一个目的地机场,得到2级树。并且最终对于每一个起点-目的地的索引对,都有多种可能的价格。因此从每一个目的地节点分出多种价格,得到树的第三级。对于每一个唯一的起点-目的地-价格三元组或这棵树内的一条路径,都存在频率计数以得到树的第四级。但是应注意,在第三级内每一个树节点和第四级内每一个节点之间的关系是一对一的,这跟树的更高层级中的关系是一对多不同。用于该树内索引路径的价格-频率计数对被称为“数据容器”,实际上其中存储了将相同索引域值(例如NCE-NYC)作为起点-目的地城市的所有原始记录的不同价格分布。(起点,目的地集合)配对和(目的地,价格集合)配对被称为“索引容器”。通常,树内开始于根节点的任何一条完整(直达叶节点)或不完整(未达叶节点)的任意路径都被统称为容器。
[0105]杳询,杳询域和杳询域倌
[0106]由用户填写并发送查询以获取要统计分析的数据的相关统计信息。查询在本发明中可以包括用一条或多条搜索标准指定的“查询域值”。查询在包括大量的查询域值时可能非常复杂,或者在包括一个或少量查询域值时也可能很简单。
[0107]查询域是表征查询的参数。每一个查询域值都涉及一个查询域。每一个查询域都对应于一个索引域。当不存在对应于查询域值的索引域时要引入可选步骤。这些可选步骤在下文中有详细说明。
[0108]指定的查询域值对应于跟指定查询域值的查询域相对应的索引域分选仓。“对应”表示查询域值可以类似于索引域值(真实值或描述值),可以包含在索引域的分选仓内或者可以等价于索引域的分选仓。无论是哪种形式或形态,查询界面均可接受用户输入,必须将该输入转化为查询域值的字符串,这是通过首先将确切的输入转化为如下索引域的分选仓值而实现的,其中该索引域的顺序恰好跟用于建立用于自身的转化数据集所使用的索引的顺序相同。
[0109]例如,如果存在以2个索引域值索引的转化数据储存库,第一级是包括起点、旅游类型和起始周的级联的复合类型,并且第二级索引是目的地城市,那么查询“出发日期为8月4日且对于25天的旅行时长来说从Dubai旅行到Nairobi由旅客实际支付费用的频率分布是多少? ”就通过首先将用户输入转化为类似于DBX532这样的字符串作为用于第一索引的索引域值,获取用于下一个索引的对应容器,为了到达最终数据容器而在找到的索引中渐进地搜索第二索引NBO来进行回答。
[0110]因此,本发明的有利特征是:
[0111]-存储、索引和推理记录组(也就是业务相关容器)而不是个体记录。与传统数据库中的做法相反,本发明具有存储、索引、检索和推理记录组而不必存储个体原子记录的能力。
[0112]-在查询时间并不执行容器索引或内容的计算。所有内容都是预先计算的。在查询时间,仅搜索相关记录并且结果不是发现就是未发现。用于每一个容器的所有索引、递归和非递归内容都是根据对于所需特定业务来说重要的个体记录中的任何域预先计算的。在查询时间仅检索对应于正确记录的统计数据容器。
[0113]-如果不同的商业用户需要将不同的索引用于相同或部分重叠的数据,那么单独的预先计算建立不同的文件并且随后可以对这些查询进行不同的储存库索引。
[0114]-索引用作在存储器索引表内快速检索以寻址大块内容的钥匙:RAM(随机存取存储器)驻留的分组记录数据允许快速检索,因此跟RAM方法相比克服了如今缓慢的日常I/O方法。为了实现这一点,文件大小被保持在可接受的限制内,正如在本发明以下的说明内容中介绍的那样。
[0115]-索引可以组合有指定索引变量中的多个取值之一,指定索引变量是其含义为“不关心”的通配符*。在关系数据库术语中,这就意味着针对所有可行的相关表连接而预先计算出结果。
[0116]-在需要加入新的个体记录或者需要删除旧的个体记录时将增量机制用于更新容器而无需放弃过去的计算。在需要加入新的个体记录时,建立并搜索其对应的索引。如果发现这样的索引,那么就更新对应于参数的统计信息。只用适当的计数或新的值更新序数或间隔值。如果新的个体记录没有对应的索引容器,那就建立其对应的索引并更新内容。
[0117]-通过业务需求的所有相关标准建立、存储和增量式更新统计价格分布的机制需要使用上述机制。尽管个体记录的总数有巨大的增加,但是由于使用了频率分布表达,因此容器大小和文件大小不会增加太多。由于向容器加入新的个体记录而改变的所有内容最少:仅仅是相应频率分选仓内的计数值。不再加入其他的数据。这样就保持文件大小可控。
【专利附图】

【附图说明】
[0118]图1示出了设计用于根据本发明的数据结构实时处理的查询类型的示范性结果。
[0119]图2介绍了如何组织从仓库数据库预先获取的数据以允许实时访问存储信息。
[0120]图3示出了如何记忆和组织输入密钥以允许快速访问数据结构的计算出的统计数据。
[0121]图4根据本发明示出了允许快速索引、检索和显示从数据仓库中收集的统计数据的系统的整体架构。
[0122]图5讨论了根据本发明得到的系统的性能。
[0123]图6讨论了根据输入的原始数据增量式更新索引文件。
【具体实施方式】
[0124]本发明以下的详细说明应参照附图。尽管说明内容包括了示范性实施例,但是其他的实施例也是可行的,并且可以对介绍的实施例进行修改而并不背离本发明的实质和保护范围。
[0125]尽管以下对本发明的详细说明是在涉及旅行数据并且更具体地涉及飞行航线和票价的GDS的背景下示出,但是对信息系统领域的技术人员来说显而易见的是本发明可以轻易地适用于处理任何类型的数据以使其应用并不受限于飞行航线的行程服务领域。
[0126]图1示出了设计用于根据本发明的数据结构实时处理的查询类型的示范性结果。图1还示出了设置为响应于这种查询而提供的统计数据的显示示例。
[0127]被本发明的数据结构允许的查询实际上跟发往常规关系数据库的查询(例如SQL查询)有很大的不同。主要的不同之处在于查询中并不隐含其他情况下都需要的任何后处理,这是因为,要获得图1中的示范性显示,多个关系数据库表格中的个体项目都要被集中起来并进行处理。
[0128]为了运营任何大型公司,管理团队和主管专业人员通常都需要收集统计数据,其片段必须可以从他们的数据仓库的各种数据库中组装并且保持日常更新。在本发明中介绍航空业的背景下,预订编号以及旅客为从指定起点飞行到指定目的地所支付的实际费用对应于专业人员希望通过实施本发明数据结构的软件应用程序实时显示的请求种类。
[0129]因此,如110所示,可能想要显示例如在任意的出发日期115(输入域为空),在芬兰的赫尔辛基市111和挪威的奥斯陆机场112之间并且用于所有预定的返回日期或旅行时长117的所有已完成并付款的预订。域(114):起点、目的地、出发日期、返回/时长和提前预订的时间,每一个都构成了可查询的域。取值是如前定义的说明性文本编码或数字。对于旅游业来说感兴趣的一个重要参数是如图所示设置为八个分选仓的提前预订或预购时间119。考虑该示范性显示中的所有内容以使柱形图110示出出现频率与在指定的起点和目的地航线城市之间登记和支付的实际预订费用。明显地,表现这种分布特征的所有标准统计数字也可以计算并且在112处显示,其中包括:平均值、标准差、最小值和最大值等。
[0130]用户可能想要进一步限定显示内容以仅示出在某一确定的日期125出发,仅考虑某种类型的旅行时长127并且用于两周或更短的提前预订时间,以使显示的柱形图变成如120所示。
[0131]为了能够实时地显示和更新这种查询,在附图中详细介绍的本发明的数据结构必须从数据仓库中预先读取、计算和组织数据结构,以使所有需要的片段在查询时均可轻易地可用于快速显示。在用于介绍本发明的航空旅游业的说明背景下,并且对于以110示出的示范性种类的复杂请求,数据结构被组织为使得可以支持全世界的所有航线城市和机场,而且还设置为直接输入到数据结构中以允许显示其他的选定参数,例如出发日期、旅行时长、提前预订时间等。另外,通配符参数也是可行的,由此使用户具有不必明确某些参数(例如出发日期)的自由度。数据结构提供的可行性包括例如大概的起点和目的地,以使用户可能想要查阅从精确的起点(例如赫尔辛基)到世界的某些区域(例如北美的所有城市和机场)的全部航班的预订情况。
[0132]本发明的数据结构也可以由能够在线可用以允许事先安排旅行的旅行应用程序的终端用户使用。由于使用的数据是(从GDS数据库提取)由游客为预订航班而支付的实际价格,因此如图1所示的收集和显示内容就成为很有价值的工具。工具可以被用于利用上述特征估算未来行程的价格并确定游客的选择。例如,不必选择精确日期和/或不必选择精确起点或目的地的可行方案就为目前的旅游点增加了很大的自由度。
[0133]实际上,后面这些情况通常仅考虑公开的票价并且甚至更常见的是仅考虑最低的公开票价,而不顾及可用性且只需要忽略由旅客支付的实际费用的范围和分布。此外,数据结构可以扩展以使起点和目的地包括例如可能毫无共同点而仅仅是关注地理位置的主题目的地。这样的主题例如可以是包括埃及金字塔的古代文明景点以及在墨西哥和拉丁美洲有前哥伦布时期居民的古代文明景点。如上所述,古代文明景点可以对应于专用的索引域值和查询域值。
[0134]正如在本发明以下的说明内容中进一步介绍的那样,响应于上述类型的查询显示统计结果的检索过程几乎跟涉及的数据量无关并且在小数值的毫秒级范围内。即使对于涉及临时(ad-hoc)参数的分布子集也可以确保类似的响应时间并且显示内容允许以用户可选择的方式轻易地视觉比较该分布子集。
[0135]图2介绍了如何组织从仓库数据库预先获取数据以允许实时访问存储的信息。
[0136]为了实现该目标,通过将预先获取的数据记录重新分组为有限数量的数据类别、本说明书中的指定分选仓并且很好地适用于考虑的业务类型(也就是示例中选择用于介绍本发明的航空业)来执行预先获取的数据记录的压缩。因此预先获取的数据通过从仓库中检索而构成,所有的出票数据记录或优惠券(关于现已消失的印刷机票的优惠券)每天都通过包括旅行社、在线旅游服务提供商和航空公司办事处自身在内的各种销售渠道发放。总之,在累积了一个较长的时间段(例如一年)之后,这就代表了海量的信息,但是这些信息在数据结构中利用以下的分选仓来压缩。
[0137]预购日期是旅游业的非常重要的参数。预购日期通常如下所示被重新分组为仅8个标准分选仓:
[0138]
【权利要求】
1.一种用于根据数据仓库(410)提供统计数据的方法,其特征在于包括由至少一个数据处理器执行的以下步骤: ?定义多个索引域(114),每一个索引域都接受多个索引域值; ?建立多个文件(432)并且将所述文件分层级地索引为索引树(300),其中对于每一棵树都包括以下步骤: -分层级地排序索引域(201); -定义分选仓,每一个分选仓都关联至一个索引域并且收集用于该索引域的一个或多个索引域值; -通过级联跟分层级排序的索引域的层级一致的一个或多个分选仓以构成分选仓序列从而建立索引,索引对每一个索引域都只包括一个分选仓; -将文件分层级地索引为索引树(300),每一个索引都拥有零个或更多个子索引和/或拥有最多一个父索引,以使每一个子索引都包括跟其父索引的索引相同的分选仓序列再加上关联至附加索引域的至少一个附加分选仓; ?给每一个索引提供被设置用于存储统计数据的数据容器(325,335),以使每一个数据容器都被索引并且能够从分层级索引的文件中直接寻址; ?接收(436) —个或多个包括原始数据的输入文件(434)并且用输入文件(434)更新所述数据容器,其中包括对于每一个输入文件都使用一个或多个处理器,其被设置用于执行以下步骤: -从原始数据中识别和提取通过统计信息分析的至少一种属性和表征所述属性的一个或多个输入文件参数; -根据输入文件(434)建立至少一条个体记录(620),每一条个体记录(620)都包括至少一种属性和表征所述属性的一个或多个输入文件参数; -将每一个输入文件参数与至少一个索引域相关联; -在每一个输入文件参数以及关联至该输入文件参数的至少一个索引域的分选仓之间建立对应关系; -识别出用全都跟所述个体记录(620)的输入文件参数相对应的一个或多个分选仓来索引的数据容器; -用所述个体记录(620)的至少一种属性增量式地更新识别出的数据容器(325,335)以获取描述所述属性的统计数据。
2.如权利要求1所述的方法,包括接收查询的附加步骤并且针对每一次查询使用编程的一个或多个处理器用于: -在查询中识别出一个或多个查询域以及关联至查询域的至少一个查询域值; -在每一个查询域和索引域之间建立对应关系; -在每一个查询域值以及跟所述一个或多个识别出的查询域相对应的每一个索引域的分选仓之间建立对应关系,由此定义跟查询相对应的分选仓; -搜索并识别出用包括跟查询相对应的分选仓的索引来索引的相关数据容器; -检索并向用户发送识别出的相关容器的统计数据。
3.如以上权利要求中的任意一项所述的方法,其中统计数据涉及属性的频率分布或属性的分布的集中趋势的度量或属性的分布的分散的度量。
4.如以上权利要求所述的方法,其中统计数据基于与由游客为运输服务实际支付的价格相关的统计数据。
5.如以上权利要求中的任意一项所述的方法,其中索引域是以下内容中的至少一项:起点城市、起点国家、起点地理区域、目的地城市、目的地国家、目的地地理区域、文化目的地、体育赛事、美食、野生动植物观察、娱乐活动、用准确出发日期表示的出发日期、用月表示的出发时段、用周表示的出发时段、用准确日期表示的返回日期、用月表示的返回时段、用周表示的返回时段、到达之后的行程时长、预购类别。
6.如以上权利要求中的任意一项所述的方法,其中通过级联至少两个分选仓来建立没有父索引的至少一个索引。
7.如以上权利要求所述的方法,其中没有父索引的索引包括关联至涉及起点城市的索引域的分选仓,关联至涉及出发前行程时长的索引域的分选仓,以及关联至涉及航班出发周的索引域的分选仓。
8.如以上权利要求所述的方法,其中分选仓收集涉及以下内容之一的一些索引域值:起点城市、出发城市、出发日期、出发周、返回日期、返回周、用于行程时长的天数、用于预购的天数。
9.如权利要求1至5中的任意一项所述的方法,其中没有父索引的至少一个索引仅包括一个分选仓。
10.如以上权利要求中的任意一项所述的方法,其中输入文件是运输服务的电子票并且包括体现出用于运输区段的所有信息的至少一张优惠券(434)。
11.如以上权利要求所述的方法,其中属性是为票或优惠券实际支付的价格,并且输入文件参数描述以下域中的至少一个:起点城市、出发城市、出发日期、返回日期、行程时长、预订和出发之间的天数。·
12.如以上权利要求所述的方法,其中查询域涉及以下域中的至少一个:起点城市、起点国家、起点地理区域、目的地城市、目的地国家、目的地地理区域、文化目的地、体育目的地、美食、野生动植物观察、娱乐活动、用准确出发日期表示的出发日期、用月表示的出发时段、用周表示的出发时段、用准确日期表示的返回日期、用月表示的返回时段、用周表示的返回时段、到达之后的行程时长、预订和出发之间的天数。
13.如权利要求1所述的方法,其中单个索引域值可以关联至多个索引域。
14.如以上权利要求所述的方法,其中描述目的地城市的索引域值被关联至以下索引域中的至少两个:起点城市、起点国家、起点地理区域、文化目的地、体育赛事、美食、野生动植物观察、娱乐活动。
15.如以上权利要求中的任意一项所述的方法,其中建立个体记录(620)包括以下步骤:为每一条个体记录赋予日期或周或月或学期或年,日期对应于输入文件的接收;将该个体记录(620)存储在数据存储装置内。
16.如以上权利要求所述的方法,其中用个体记录(620)更新数据容器包括以下步骤:建立多批次具有相同日期或者具有相同日期时段的个体记录(620);通过个体记录(620)的批次来更新数据容器。
17.如前两项权利要求中的任意一项所述的方法,为了保持准确的统计数据而包括以下的步骤:读取存储的个体记录(620)的日期;识别出被赋予的日期早于指定日期的先前个体记录(620);通过这些识别出的先前个体记录(620)的输入文件参数定位用这些识别出的先前个体记录(620)更新过的数据容器;通过删除这些识别出的先前个体记录(620)来更新定位的数据容器。
18.如以上权利要求中的任意一项所述的方法,其中增量式地更新识别出的数据容器(325,335)包括根据先前计算的统计数据和所述个体记录(620)的至少一种属性增量式地计算更新的统计数据的步骤。
19.如权利要求1所述的方法,其中如果数据容器由等于或小于所述输入文件的输入文件参数数量的若干个分选仓索引并且假设这一个或多个分选仓中的每一个都对应于所述输入文件的输入文件参数,那么所述数据容器即被识别用于通过所述输入文件来更新。
20.如权利要求1所述的方法,其中如果个体记录(620)的输入文件参数被关联至现有的索引域但是并不对应于该关联的现有索引域中的任何分选仓,那么就针对所述关联的现有索引域建立附加分选仓;建立用所述附加分选仓索引的附加数据容器;用所述个体记录更新该附加数据容器。
21.如权利要求1所述的方法,其中如果个体记录(620)的每一个输入文件参数都对应于分选仓但是有一个或多个分选仓的组合跟并不对应于索引的所述输入文件参数相对应,那就建立用这种一个或多个对应分选仓的组合索引的附加数据容器;用所述个体记录更新附加的数据容器。
22.如以上权利要求中的任意一项所述的方法,其中存储在数据容器内的所有数据都以包含没有相对关系结构的记录的文件的形式存储。
23.如权利要求1所述的方法,包括通过构成一个或多个分选仓的序列来建立索引的步骤,所述序列中至少有一个分选仓收集被关联至所述至少一个分选仓的索引域接受的所有可能的索引域值。
24.一种用于根据包括处理装置的数据仓库(410)提供统计数据的系统,其特征在于所述处理装置被设置用于执行以下步骤: ?定义多个索引域(114),每一个索引域都接受多个索引域值; ?建立多个文件(432)并且将所述文件分层级地索引为索引树(300),其中对于每一棵树都包括以下步骤: -分层级地排序索引域(201); -定义分选仓,每一个分选仓都关联至一个索引域并且收集用于该索引域的一个或多个索引域值; -通过级联跟分层级排序的索引域的层级相一致的一个或多个分选仓以构成分选仓序列从而建立索引,索引对每一个索引域都只包括一个分选仓; -将文件分层级地索引为索引树(300),每一个索引都拥有零个或更多个子索引和/或拥有最多一个父索引,以使每一个子索引都包括跟其父索引的索引相同的分选仓序列再加上关联至附加索引域的至少一个附加分选仓; ?给每一个索引提供被设置用于存储统计数据的数据容器(325,335),以使每一个数据容器都被索引并且可以从分层级索引的文件中直接寻址; ?接收(436) —个或多个包括原始数据的输入文件(434)并且用输入文件(434)更新数据容器,其中包括对于每一个输入文件都使用一个或多个处理器,其被设置用于执行以下步骤: -从原始数据中识别和提取通过统计信息分析的至少一种属性和表征所述属性的一个或多个输入文件参数; -根据输入文件(434)建立至少一条个体记录(620),每一条个体记录(620)都包括至少一种属性和表征所述属性的一个或多个输入文件参数; -将每一个输入文件参数与至少一个索引域相关联; -在每一个输入文件参数以及关联至该输入文件参数的至少一个索引域的分选仓之间建立对应关系; -识别出用全都跟所述个体记录(620)的输入文件参数相对应的一个或多个分选仓来索引的数据容器; -用所述个体记录(620)的至少一种属性增量式地更新识别出的数据容器(325,335)以获取描述所述属性的统计数据。
25.一种存储在非易失性计算机可读取存储介质上的计算机程序产品,包括计算机可读取代码装置,被指示用于促使至少一个微处理器操作如权利要求1至23中的任意一项所述的提供统计数据 的方法。
【文档编号】G06F17/30GK103548019SQ201280009577
【公开日】2014年1月29日 申请日期:2012年2月20日 优先权日:2011年2月21日
【发明者】G·纳斯 申请人:阿玛得斯两合公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1