本申请要求2006年6月26日提交、发明名称为“Methods andApparatus for Improving Data Warehouse Performance(提高数据仓库性能的方法和装置)”的美国临时申请No.60/816,423的优先权,此处以引证的方式将其全文并入。
具体实施方式
数据仓库收集关于一个或更多兴趣主题的大量信息,对兴趣主题仅举几例,例如为消费者和/或企业的消费习惯,交易数据(例如,金融市场交易,房地产交易等),人口增长信息,和/或多媒体广播收看行为。维护和控制数据仓库设施和/或提供数据存储、处理、分析、和/或报告生成服务的企业面临由这一增长带来的挑战。一般而言,由于耗用数据仓库存储容量,需要额外的处理能力和/或处理周期以分析数量越来越多的收集数据。
如本文中应用的,数据分析(处理)可以包括但不限于搜索所收集的数据参数之间的趋势,对所收集的数据执行统计功能,积累计算结果,和/或生成反映查询结果的报告给最终用户审查。数据仓库的数据处理、分析和/或存储功能竞争处理资源,从而随着收集数据的增长使数据仓库系统负担加重。
向客户提供这种存储和/或处理服务的数据仓库企业有时会试图通过向计算机服务器增加处理器、向数据仓库系统增加存储空间、和/或实施数据仓库子系统来管理客户期望。除了改变和/或更新数据仓库基础结构以改善性能之外,这些数据仓库企业也可以向他们的客户提供关于完成报告的周转时间的预先通知,以确保客户不会失望。如果客户事先知道多长时间才能拿到指定的报告,则客户期望可以与事实完全相符,从而提高客户满意度。然而,无论是否预先通知客户,过长的报告生成处理时间仍可能导致客户的不满。此外,报告生成处理时间可能会取决于一天中不同时间的利用率,这样的利用率会引起预计处理时间意外波动,从而难以准确地向客户提供预先通知。
为了适应不同的客户,数据仓库企业可以使用许多专用数据栈(datamart)。如本文中应用的,“专用数据栈”是一个或更多个集中于一个或更多个特定业务和/或主题的较小的数据库。然而,尽管存在专用数据栈的规模小于聚集的数据仓库的规模的事实,但是专用数据栈可能增长到很大的规模,从而对报告生成和其他数据库性能特点产生负面影响。
本文中描述的示例方法和装置可以用来提高数据仓库性能。总的来说,本文中示出的示例方法和装置可以由数据仓库就地使用,和/或作为应用编程接口(API)提供给一个或更多客户端,以在一个或更多个人计算机、服务器、和/或其他计算平台上运行。API可以包括图形用户界面(GUI),和/或数据仓库可以响应于简单的基于网络的报告请求向他们的客户提供全面解决方案。
图1是根据本公开的教导构造的示例数据仓库系统100的结构图。示例系统100包括馈送到数据仓库优化器104的输入的数据分析指令102。数据分析指令102可以构造为,例如,包含有关客户端目标的详细内容的可扩展标记语言(XML)文件。数据分析指令102可以以任何计算机语言编写和/或可以采取任何替换形式,如文本文件,字符分隔的文件(character delimited file),和/或可以解析为具体的数据参数、统计方法,和/或报告格式参数的二进制文件,而没有任何限制。例如,国家广播公司客户可以要求一份包含广播节目、新闻事件和/或商业收视率的收视率数据的报告。此外,该广播公司客户可能需要以统计的方式分离的子报告以确定,例如,哪个年龄组别的观众观看一个或多个特定的广播节目。并且,该广播客户可能需要这种以统计的方式分离的子报告按诸如国家、地区、州、郡、和/或城市的地理界限分离收视率信息。本领域普通技术人员将能够理解,由数据仓库存储和/或处理的数据不限于收视率信息,也可能包括任何类型的信息。例如,数据仓库信息可以包括但不限于:金融交易信息、人口统计信息、订阅服务消费信息、医疗信息、处方药的使用和/或供应信息、销售信息(例如,销售点信息)、天气信息和/或行为信息。
如下文进一步详细讨论的,所示出的示例的数据仓库优化器104与一个或更多数据仓库106、108、110通信。各数据仓库106、108、110可以包括一个或更多数据库112以存储一种或更多种类型的数据。在所例示的示例中,一个数据仓库106以通讯的方式直接连接到数据仓库优化器104。到数据仓库的直接连接可以通过一个或更多连接和/或通讯协议完成,该通讯协议包括但不限于通用串行总线(USB)通信协议和/或
通信协议(即IEEE-1394)。此外,所示出的示例的数据仓库优化器104和数据仓库106、108、110通过诸如内联网和/或互联网的网络114以通讯的方式结合。合适的网络114连接包括但不限于:
(以太网)通信协议、IEEE-802.11(
)、
(蓝牙)、900MHz、1.6GHz和/或移动通信协议(例如,CDMA、TDMA、GSM、AMPS、EDGE等)。
所示出的示例的数据仓库优化器104接收数据分析指令102,并响应于分析指令102从一个或更多个数据仓库106、108、110提取相关数据。所示出的示例的数据仓库优化器104从一个或更多数据仓库106、108、110提取(例如,复制)响应于一组给定指令102的具体数据并将所提取的数据存储到临时存储器116,而不是使每一个数据仓库106、108、110充满数据查询(获取)和统计处理。这样,数据仓库优化器104使数据仓库106、108、110免于履行复杂的统计数据处理的职责,从而允许各数据仓106、108、110把重点放在数据存储、归档、和响应于请求提供数据的任务上。存储器116可以由海量存储光、磁、和/或固态存储器来实现,可以用于存储上述的可执行API和/或从数据仓库106、108、110收集的将用于构建分块统计(block statistics)的数据,如下文进一步详细讨论的。
虽然在图1中仅示出了一个优化器104,但是本领域普通技术人员将理解,可以使用多个优化器104。所示出的示例的数据仓库优化器104在诸如个人计算机(PC)的计算机上实施。本领域普通技术人员将理解,计算机和/或计算机硬件的成本已经降低,从而使个人计算机成为专门的处理任务在成本上的明智替换物。附加地或者可替换地,数据仓库优化器104可以在包括一个或更多个硬盘驱动器以存储从数据仓库106、108、110接收的所收集数据的服务器上实施。实施优化器104的个人计算机和/或服务器可以位于或靠近数据仓库业务设施来处理客户端请求。可替换地,实施优化器104的个人计算机和/或服务器可以属于一个或更多个客户。因此,举例来说,数据仓库优化器104可以在客户端机器上作为API执行以创建和/或处理数据分析指令102。这样的API可以出售或授权给客户,和/或数据仓库公司可以向客户收取使用API的每次交易费。
在图2中更详细地示出了示例数据仓库优化器104。在该例示的示例中,数据仓库优化器104包括:通信接口202、数据检索器204、分析器206和报告生成器208。此外,示例数据检索器204包括:结构查询语言(SQL)生成器210和调度器212。如上所述,通信接口202使得能够通过专用连接、直接连接和/或诸如内联网或互联网的网络114来通信。至/从实施例数据仓库优化器104的通信可以通过网页(例如,动态服务器主页)、命令行用户界面、图形用户界面和/或信息亭发生。通信接口202可以包括一个或更多个保护措施(如防火墙)来保护数据仓库优化器104免受未经授权的使用和/或篡改的伤害。
通过通信接口202接收比如XML文件的数据分析指令102,并将其提供给数据检索器204。数据分析指令102可以包含针对所请求的报告的一个或更多参数、属性、统计和/或格式指令。例如,数据分析指令102可以指定感兴趣数据的类型和/或以下数据:应当针对特定时段(例如,日,周,月等)、特定广播节目(例如,体育比赛、电影、连续剧等)和/或特定人口群体(如儿童、青少年、成人、长者、墨西哥裔美国人、波兰裔美国人等等)从数据仓库中提取的数据。数据分析指令102也可以指定要从其检索数据的特定数据仓库106、108、110。
许多数据仓库可能包含私人的、保密的(例如,律师/客户通信,社保号码,银行帐户号码等)和/或商业敏感的数据。因此,数据分析指令102也可包含一个或更多个验证参数来控制对整个数据仓库或数据仓库的特定方面的连接和/或访问。因此,所示出的示例的数据检索器204可以调用通信接口202以建立用于数据传送的连接。数据仓库优化器104和数据仓库106、108、110之间的验证可以包括,但不限于:安全套接层(SSL)、数字证书、密码保护、加密、和/或公钥密码法。
一旦示例数据仓库优化器104连接到特定的数据仓库106、108、110,SQL生成器210可以创建针对在数据分析指令102中标识的请求数据的查询命令。在一些示例中,指令102可以将“情景喜剧”列为数据仓库优化器104分析收视率数量所针对的数据参数。类似地,指令102可以将“退休人员”列为数据仓库优化器104分析收视率数量所针对的另一项数据参数。然而,数据分析指令102与一个或更多数据仓库106、108、110之间可能不存在确切的参数术语。这样,数据检索器204可以使用例如元数据解决一个或更多数据仓库106、108、110与分析指令102之间的任何不一致。因此,例如,当示例数据分析指令102列出“情景喜剧”时,数据仓库可能改为使用名词“连续剧”。元数据在一个或更多名词之间进行术语映射,使得在数据仓库106、108、110与分析指令102之间缺乏确切的一致性不能阻碍数据处理。所示出的示例的数据检索器通过将频繁使用的替换术语与特定分析指令102(例如,XML文件)所采用的术语相关联来完成元数据分解。可替换地,数据分析指令可包括任何数目的术语名词别名以与数据仓库术语相关联,使得如果匹配分析参数与数据仓库参数的第一次尝试失败,那么可以尝试来自分析指令的替代的术语名词。
在其他示例中,数据检索器204将数据分析指令值分解为由一个或更多个数据仓库所采用的编码值。可以使用编码值而不是确切值,例如以节省存储器。例如,数据仓库可以使用从1到4的整数范围来代表四个不同的收入水平。值“1”可以代表$10,000和$20,000之间的收入阈值;值“2”可以代表$20,000和$40,000之间的收入阈值;值“3”可以代表$40,000和$70,000之间的收入阈值;值“4”可以代表超过$70,000的收入阈值。这样,数据检索器204可以在例如检索对应于1到4的特定值的条目之后,将从仓库接收的任何数据分解(即翻译)为关于适当收入阈值的收入栏。因此,举例来说,如果数据分析指令仅请求$20,000与$40,000之间的阈值收入,那么在这个示例中,数据检索器204将产生使用关联值“2”的SQL查询指令,该关联值“2”被目标数据仓库理解为有效查询输入名词。
在示出的示例中,能够构建调度器212以周期性地和/或非周期性地从一个或更多数据仓库向存储器116中复制数据分析指令102和/或构建分块统计所涉及的一些或全部数据。因此,虽然前面的示例示出了数据检索器204响应于接收数据分析指令102而从数据仓库获取数据,相关的数据仓库信息(例如,一个或更多参数、属性、统计和/或格式指令)可能作为在由调度器212调用的在先前周期性的、非周期性的和/或手动的数据获取中发生的检索结果已经存储在存储器116中。因而,可能没有必要响应于给定的指令集102来查询一个或多个数据仓库。
如上文所讨论的,当国家的大部分人可能正在收看重要事件时,比如在超级杯(Super Bowl)或奥运会期间,数据仓库可能会遇到大量使用的时段。调度器212可在当这种大量使用不太可能发生的时段从数据仓库检索相关的数据(例如,为数据库的相关部分制作副本),从而确保由于负担较少的数据仓库处理器导致的更快的查询响应时间。类似地,数据仓库的活动可能在清晨的时间较低。因此,调度器212可以被配置为每天,例如在凌晨2:00获取(例如,制作副本)数据仓库的一个或更多部分。
在完成从一个或更多数据仓库106、108、110中提取数据并存储到存储器116之后,数据仓库优化器104可以调用分析器206来参照数据分析指令102处理数据。可以通过数据仓库优化器104执行数据分析,而不是通过要由数据仓库106、108、110的一个或更多处理器执行的SQL命令/指令来调用数据分析。优化器104可以以任何所需的计算机语言编程。本领域普通技术人员将理解,Java程序是独立平台并且可能比其他以SQL脚本实现的程序执行得更快。因此,Java特别适合用于实施部分或全部的优化器104。
所示出的示例的数据仓库优化器104特别适合于企业智慧(BI)报告应用。所示出的示例的优化器104能够在数据仓库106、108、110的数据库112和/或在存储器116中的数据上直接执行统计计算。当数据分析指令102的报告需求变得更加复杂并且数据库112的数据集很大时,基于SQL的方案变得越来越效率低下和繁琐。不同于通过使用数据仓库优化器104实现的简单的SQL提取命令,基于SQL的计算通常需要执行相对缓慢的多道SQL和临时表格。此外,由于从数据仓库106、108、110提取的数据集中于由数据分析指令102所确定的客户特定目标,所以通过数据仓库优化器104的所述数据的后序数据处理执行得较快,这是因为要分类的非相关数据较少。
所示出的示例的分析器206通过处理构建分块统计(本文中也称为一次统计)开始数据分析。一般来说,初级/构建分块统计可以包括基于来自数据仓库106、108、110的直接可用数据的一个或更多计算。另一方面,综合统计(本文中也称为二次统计)可以部分地基于由一次统计所获得的结果和/或来自数据仓库106、108、110的附加数据来计算。构建分块统计可以通过多阶段处理来生成。举例来说,一个或更多个分组和组织的初步阶段使得后序的综合统计计算成为可能。例如,构建分块统计可以包括,但不限于:观看特定广播节目的观众总数,全国范围的广播节目收视率直方图,广播节目在各州的平均收视率等。如上文所讨论的,虽然本文中示出的示例特别针对广播节目和/或收视率,但是本文中描述的系统,方法和装置可以不限于此而应用于任何类型的数据仓库主题事项。构建分块统计还可以包括信息的离散桶(discrete buckets)和包含于其中的一个或更多个子群的分类。例如,可以根据所收集的数据来计算“人口统计”类型的桶。对于任何特定的数据样本大小,比如某一天,多天,周,和/或月,人口统计桶可以包含不同的人口统计子群。例如,周末期间的数据样本可能包括具有相对更大比例的成年男性在下午时段观看电视节目的人口统计桶。作为另一个示例,工作日期间的数据样本可能包括具有相对更大比例的40-60岁的妇女在下午时段观看电视节目的人口统计桶。
元数据还允许数据仓库优化器104确定从数据仓库106、108、110获得哪些数据。在一些示例中,元数据包含有事实和星型架构的维度之间的关系。这种关系允许示例数据检索器204的SQL生成器210生成适当的基于SQL的提取命令。在另一个示例中,数据仓库优化器104通过分析器206检查按照数据分析指令102生成的综合统计。此外,元数据可以基于所请求的综合统计确定计算综合统计需要哪些构建分块统计。
另一方面,综合统计可以使用一些或全部的构建分块统计。这种综合统计可以在构建分块阶段之后的一个或更多处理阶段期间由所示出的示例的分析器206来计算。例如,综合统计可以包括确定在$70,000或以上的收入阈值中在工作日观看电视的40-60岁妇女的百分比。在这一示例中,综合统计基于下述内容的分块统计:(1)40-60岁的妇女,以及(2)有$70,000或以上收入的妇女。在其它示例中,综合统计可以包括确定在给定的周末期间成年男性观看足球对奥运会的相对百分比收视率。这种综合统计可以基于一个或更多个构建分块统计。
所示出的示例的报告生成器208利用在数据分析指令102中指定的报告格式参数和/或默认参数向客户端提供处理后的数据结果。可以按一种或更多种格式提供报告,包括但不限于:制表符分隔文件、电子表格、图表、直方图、饼形图和/或趋势分析曲线。所示出的示例的报告生成器208可以附加地或可替换地调用通信接口202的网络服务器以成网络浏览器可见格式的这种报告信息。
在图3至图5中示出了可被执行以实现图1和/或图2的示例数据仓库优化器104的示例机器可读指令的典型流程图。在这些示例中,由各个流程图表示的机器可读指令可以包含由以下执行的一个或更多程序:(a)处理器,如图10(b)中的处理器1012,(b)控制器,和/或(c)任何其它适合的设备。所述一个或更多程序能够具体表现为:存储于例如存储器116(见图1)的有形介质上的软件,但是本领域普通技术人员将容易理解,另外一个或多个程序的全部和/或他们的一部分能够由除处理器1012以外的设备执行和/或实施为固件或专用硬件(例如,利用专用集成电路(ASIC)、可编程逻辑器件(PLD),现场可编程逻辑器件(FPLD)、离散逻辑等来实施)。例如,能够用软件、硬件和/或固件的任意组合实施处理器1012、I/O控制器1012、存储器控制器1020和/或网络接口1030。并且,由图3到图5的流程图表示的部分或全部块可以手动地实施。此外,尽管参照图3到图5的流程图描述了示例机器可读指令,但是本领域普通技术人员将容易理解,另外也能够使用实现本文中描述的示例方法和装置的许多其它技术。例如,参照图3到图5的流程图,可以改变块的执行顺序,和/或可以将所描述的一些块改变、去掉、组合和/或再分割为多个块。
参见图3,数据仓库优化器104的通信接口202可以接收例如文本文件、二进制文件、XML文件、或其它指令格式的形式的分析指令102(块302)。如果分析指令102需要来自一个或更多数据仓库的数据(块304),那么数据仓库优化器104的SQL生成器210和数据检索器204从所述仓库获取相关数据(块306),如下文参照图4所讨论的。如果分析指令102仅需要本地存储的数据(例如,由调度器212从仓库预先检索的数据)(块304),那么数据仓库优化器104的分析器206处理存储在本地存储器116中的数据(块308)。
如果通过数据仓库优化器104没有接收到分析指令102(块302),那么数据仓库优化器104的调度器212确定是否已经达到预定的获取时间(块310)。如上文所讨论的,在(完整地或部分地)实施数据仓库的示例中,调度器212可以被配置为每天凌晨2:00查询和获取在仓库的相关部分中发现的任何新数据的拷贝(块306)。如果获取时间还没有发生(块310),那么控制返回块302。如果获取时间已经发生(块310),调用请求对应的相关数据的请求(块312)。
返回块308,在已经按照分析指令102处理数据(块308,如参照图5进一步讨论的)之后,报告生成器208为客户端生成报告(块314)。然后控制返回块302。
图4是例示了实现图3的块306和312的示例方式的流程图。如果所提供的指令指定了一个或多个特定的数据仓库(块402),那么通信接口202通过验证协议与那些数据仓库106、108、110建立连接(块404)。另一方面,如果分析指令102未标识一个或更多特定的数据仓库(块402),那么处理306可以用本地存储器116中的数据继续进行和/或数据检索器204可以从已知包含与所述指令有关的数据的一个或更多数据仓库连接、验证、和/或获取数据(块406)。如上文所讨论的,因为数据仓库106、108、110可以采用与分析指令102所采用的术语不同的参数术语,所以数据检索器204可以通过元数据解决这种差异(块408)。然后将由SQL生成器210产生的查询发送到远程和/或本地数据源(例如,本地存储器116和/或一个或更多仓库106、108、110)(块409)。然后将由数据源返回的数据存储在存储器116中的数据工作文件中(块410),其可以包含一个或更多参数数据、一个或更多属性、一个或更多统计、一个或更多构建分块统计、和/或一个或更多格式指令。
图5是例示了实施图3的块308的示例方式的流程图。如上文所讨论的,数据分析指令102可以包括使用从数据仓库106、108、110提取的数据计算的一个或更多统计公式。可替换地,分析器206可以包括默认公式。分析器206检索在图4的块410存储的工作文件并生成要根据分析指令102处理的任何构建分块统计(块502)。为了以后的使用,可以将这种构建分块统计存储在存储器116中。然后分析器206参照所接收的目标参数处理构建分块统计(块504)。可以将构建分块统计用作一个或更多其它统计计算的基础,该一个或更多其它统计计算涉及在存储器116中存储的所获取的数据的目标参数的更大复杂性、附加组合、和/或交错置换。这样,可以按一个或更多批次/分组计算构建分块统计。一旦完成在分析指令102中标识的任何一个特定的构建分块统计,分析器206确定分析指令102是否包括附加的构建分块统计指令(块506)。如果要计算更多的构建分块统计,则控制返回块502。否则,分析器206从分析指令102和/或从与分析器206相关联的默认指令中(例如,从XML文件中)检索综合统计指令(块508)。
如上文所讨论的,可以通过使用较早计算的构建分块统计来部分地计算综合统计。分析器206参照目标参数和/或先前计算的构建分块统计结果来处理这种综合统计(块510)。与构建分块统计很相像,可以按一个或更多批次和/或分组计算综合统计。一旦完成任何一个特定的综合统计指令,分析器确定分析指令是否包括附加的综合统计指令(块512)。如果要计算更多的综合统计指令,那么处理控制返回块508。
除了以基于SQL的方式进行复杂的统计计算、分类和/或分组的传统BI报告方法之外,采用所示出的示例的数据仓库优化器104允许高度扩展的其它选择。数据仓库106、108、110通常为昂贵的整体式服务器,其需要大量的费用升级。鉴于上述披露的数据检索、分组和统计计算的方案,更便宜的PC可能会被以可扩展方式来使用以比现有技术更快地生成客户端报告。本领域普通技术人员将理解,可以使用其他的编程语言来实施数据仓库优化器104的全体或部分。这种编程语言可能包括,但不限于:ASNI、C、C++和/或C#。
为了更有效地存储和访问从一个或更多个仓库获得的数据,示例系统还可以设置有数据格式器600,如图6中所示。示例数据格式器600可实现为图2的数据检索器204的一部分,和/或作为数据仓库优化器104的单独模块来工作。不限于此,示例数据格式器600可以与数据仓库优化器104完全地分离,和/或在将数据仓库106、108、110信息存储到存储器116之前对数据仓库106、108、110信息执行数据格式化技术。
图6的示例数据格式器600包括:通信接口602(或可以共享图2的通信接口202)、调度器604(其可以是图2的调度器212)、数据仓库提取器606、组织器608,压缩引擎610和存储器612。存储器612可以在示例数据格式器600外部,可以访问图1中所示的示例存储器116,和/或可以由存储器116来实施。
通信接口602以类似于图2的通信接口202的方式工作。例如,通信接口602使数据格式器600与一个或更多数据仓库(例如图1中所示的仓库106、108、110)之间能够通信。通信可以网络连接发生,该网络连接采用
通信协议、IEEE-802.11(
)、
(蓝牙),900MHz、1.6GHz和/或移动通信协议(例如,CDMA、TDMA、GSM、AMPS、EDGE等)。附加地或可替换地,到/来自示例数据格式器600的通信可以通过采用通用串行总线(USB)通信协议、和/或
通信协议(例如IEEE-1394)的直接连接发生。通过通信接口602从数据仓库106、108、110接收的数据可发送到以下中任意之一/由以下中任意之一发送:调度器604、数据仓库提取器606、组织器608、压缩引擎610和/或存储器612。
存储在数据仓库中的数据可以采取一种或更多格式,这些格式包括脱机操作数据库、脱机数据仓库、实时数据仓库和/或集成数据仓库。数据仓库的数据源可以指信息的任何电子储存库,并可以包括主机数据库(例如,IBMS DB2、VSAM、ISAM、Adabas等),客户端服务器数据库(例如,
,
,
(SQL服务器)等),和/或PC数据库(例如,
,
)。数据仓库通常存储通过可以按反映数据的通常用途的主题区域(例如,消费者、产品、金融等)集合在一起的数据。这种集合可以包括使用维度方案(dimensional approach),在该方案中将信息作为可以是针对交易和/或事件的数字或文本数据的事实来存储。附加地或可替换地,维度(例如,数据库/仓库结构的架构要素)可以包含允许对交易以不同方式进行分类的参考信息。例如,销售交易可以被分解为包括许多所定购产品的数量和所支付价格的事实。另外,维度可以包括其它因素,比如销售日期、消费者信息、产品细节、销售的地理位置、以及由哪个销售员进行销售。
虽然数据仓库优化器104和数据格式器600能够就任何数据库架构工作,出于例示的目的,下面将讨论星型架构。星型架构包括具有复合主关键字(例如,佛罗里达收视率6-20-06,如图7中所示)的单一事实表(fact table)。该事实表包含关于例如公司和/或其它组织感兴趣的主题的定量数据或事实数据。事实表的每个不同的关键字(例如,图7的节目ID和/或住户)包括对应的维度表(dimension table),该维度表可以包括实施例业务的事实和/或不同属性的附加栏。
可以在周期的、非周期的和/或预定的基础上由调度器604调用通信接口602以连接一个或更多数据仓库。许多数据仓库包含敏感数据和/或私人数据。因此,这种仓库可以在访问和/或提取包含于其中的数据之前要求验证。数据格式器600和数据仓库106、108、110之间的验证可以包括,但不限于:安全套接协议层(SSL)、数字证书、密码保护、加密、和/或公钥密码法。
一旦数据格式器600连接到一个或更多特定的数据仓库106、108、110,数据仓库提取器606构建一个或更多个查询命令,比如基于SQL的提取命令,以从数据仓库获得数据。来自数据仓库提取器606的提取命令通常以基本无差别的方式工作并根据兴趣时段(例如,特定日子、根据多个日子、根据特定周,和/或根据任何其它时间范围)获取所有的数据。不限于此,数据仓库提取器606能够以更有识别力的方式构建提取命令,该方式可以要求更大复杂性的基于SQL的提取命令。例如,数据仓库提取器606可以回顾和/或解析全部或部分数据分析指令102,以获取应当从数据仓库106、108、110提取的特定参数。可以将从所述数据仓库提取的数据保存在存储器612中用于后面的组织,和/或组织可以在数据提取处理期间实时地发生。
基于从其获取了数据的数据仓库106、108、110的结构(域特定细节),组织器608创建层级目录文件路径结构。例如,在用于数据仓库106、108、110的星型构架构造中,每个维度建模为目录。如上所述,维度可以是数据库和/或仓库的一个或更多个结构构架元素,并且各维度可以具有一个或更多数据栏。例如,产品的维度可以包括涉及产品标识、产品成本、产品尺寸等的栏。每个维度目录可以包含许多针对维度的每个栏的单独目录。通常来讲,组织器608可以创建与数据仓库106、108、110的最顶级(例如,最宽泛的,最概括的)提取相关联的第一层级目录文件路径。并且,组织器608可以创建与数据仓库106、108、110的比第一层级目录文件路径的提取更狭窄的一个或更多个提取相关联的第二层级目录文件路径。实施例组织器608可以创建任意数量的附加层级目录文件路径以适应一个或更多个数据仓库。
在给定维度的每个栏之下是包含维度关键字到标识符(ID)数据(例如,“id.bin”)的映射的第一二进制文件。每个关键字(例如,如产生维度表的事实的一个或更多个关键字)是维度的主关键字,而ID是代表那一栏的值的数字。每栏还包括包含ID数据到值(例如,“valuemap.bin”)的映射的第二二进制文件。使用这两种文件允许通过以顺序的方式对文件映射层级从头至尾进行依次映射推导一定关键字的栏的实际值(例如,通过基于数据分析指令102的查询)。例如,如果事实表包括名称为“住户”的关键字并且住户维度表包括名称为“收入”的关键字,那么用于查询的关联值可以通过遵循合乎逻辑的层级目录路径“DIM/住户/收入”来确定,以检索对应值(例如,图7中的value 11.bin)。本文中描述的一个或更多个层级目录路径的游历还减少和/或消除在访问数据时对SQL命令的需要。结果,能够通过使用例如网页浏览器、信息亭、和/或目录树的目录游历来简化数据访问。
一旦由组织器608完成层级目录结构,压缩引擎610可以压缩所有的二进制文件以节约存储空间。压缩技术可以包括,但不限于:收缩(shrinking)方法、减小(reducing)方法、爆聚(imploding)方法,和/或令牌化(tokenizing)方法。可以采用ZIP文件格式以利用其开放的格式和丰富的实用性。压缩引擎610也可以将整个层级目录压缩为带有日期关键字文件名(比如下面在图7中例示的“Julian date code(Julian日期码)”)的单一ZIP文件。
图7示出了示例星型架构702和由数据格式器600创建的示例层级目录路径704。示例星型架构702包括具有标注为“节目ID”708以及“住户”710的关键字(例如,每一个与一个维度相关联的主关键字)的事实表“佛罗里达收视率6/20/06”706。该事实表包括作为数据的“观众数”712。另外,示例星型架构702包括针对事实表706的各关键字708、710的对应维度表。特别是,示例星型架构702包括“节目ID”维度表714以及“住户”维度表716。“节目ID”维度表714包括附加的维度关键字:“世界杯”718、“PGA巡回赛”720、“《我们的生活》”722和“《海绵宝宝》”724。类似地,“住户”维度表716包括维度关键字:“成人”726、“年轻人”728、“儿童”730、“TV数”732和“收入”734。
示例数据格式器600以反映数据仓库结构的方式创建层级目录路径704,其在图7的所例示示例中是星型架构。特别是,数据格式器600的组织器608创建事实表路径736、“节目ID”维度表路径738以及“住户”维度表路径740。如上所述,每个对应的目录包括含有映射和/或数据信息的关联二进制文件(栏742)。示例层级目录路径704也包括对于“节目ID”和“住户”维度表714、716的单独目录标签路径744。例如,一旦游历到目录路径704的最顶级维度表路径(例如,738或740)之一,对应二进制文件(栏742)可以包含映射信息以说明可以对其进行游历的附加路径。因而,游历至与二进制文件(例如,维度映射文件)“value 1.bin”相关联的“NMR\DIM\节目ID”,提供映射信息以允许游历到目录标签路径744的一个或更多二进制文件。最终,目录游历可以包括任意数量的嵌套目录路径,顺序地访问每一个以提供附加的映射信息(例如,一个或更多游历选项),和/或数据(例如,收视率信息)。在图7的所例示示例中,第一层级目录文件路径包括事实表路径736、第二层级目录文件路径包括维度表路径“NMR\DIM\节目ID”738或者“NMR\DIM\住户”740,并且第三层级目录文件路径可以包括目录标签路径744中任何一个。当组织器608完成层级目录路径704时,压缩引擎可以将目录保存为ZIP文件746。
图8是示出了从数据仓库800检索和格式化数据的示例处理的流程图。如上所述,调度器604可以被配置为以周期性的和/或非周期性的方式从数据仓库106、108、110获取数据(块802)。附加地或可替换地,可以通过例如客户端、用户、和/或数据获取及报告生成业务的管理器手动地调用数据的获取(块804)。在从一个或更多数据仓库106、108、110获取数据之前,通信接口602连接到目标数据仓库106、108、110并作为安全措施验证该连接(块806)以维持数据完整性(块806)。
所示出的示例的数据仓库提取器606构建针对目标数据仓库106、108、110的查询命令(块808)以检索数据,比如基于SQL的命令。例如,数据仓库提取器606可以构建具有最小规范约束的简单的基于SQL的数据提取命令,比如请求针对特定小时、若干小时的范围、天、若干天的范围、周等的所有数据。然后执行查询命令(块810)并且将从数据仓库返回的数据存储到存储器612(块810)。
组织器608将所接收的数据安排(块812)到一个或更多层级目录路径704中,其反映起源的数据仓库106、108、110的域特定细节(domainspecific details)。如上所述,虽然所示出的示例采用星型架构格式,但是本文中所描述的系统和方法不限于此,而可以适应任何数据库架构。一旦完成层级目录路径组织(块812),压缩引擎可以将目录压缩为,例如,ZIP文件(块814)。然后控制返回块802。
图9示出了另一示例数据仓库优化器904。如上所述,虽然通过将数据仓库从与统计计算相关联的任何任务中部分地解除出来,和/或通过以Java取代基于SQL的命令进行这种报告生成处理,图1和2的示例数据仓库优化器104与SQL数据库引擎相比,报告生成时间提高到十倍,但是还可以通过加入数据格式器600来实现额报告生成时间的附加提高。图9的示例数据仓库优化器904可以使用示例层级目录路径704以按大约一百的系数来提高报告生成时间消耗,而不是调用针对数据仓库数据的基于SQL的查询命令。
除了数据检索器204中附加的数据格式器600,图9的示例数据仓库优化器904本质上与图2的示例数据仓库优化器204相同。在图9中以与图2和6中同样的标号来标识相似的部件,并不再对其做进一步讨论。
图10是可用来执行图3-5和图8的示例机器可读指令以实现本文中描述的示例系统和/或方法的示例处理器系统1010的结构图。如图10中所示,处理器系统1010包括连接到互连总线1014的处理器1012。处理器1012包括寄存器组或寄存器空间1016,其在图10中被描述为完全芯片级(on-chip),但是可选地,其能够完全或部分位于芯片外并且通过专用电连接和/或通过互连总线1014直接结合到处理器1012。处理器1012可以是任何适用的处理器、处理单元或微处理器。尽管在图10中没有示出,但是系统1010可以是多处理器系统,并且因而可以包括与处理器1012相同或相似并以通信的方式结合到互连总线1014的一个或更多附加处理器。
将图10的处理器1012结合到芯片集1018,芯片集1018包括存储器控制器1020和输入/输出(I/O)控制器1022。众所周知,芯片集通常提供I/O和存储器管理功能以及多个通用和/或专用寄存器、计时器等,它们能够由结合到芯片集1018的一个或更多个处理器访问或使用。存储器控制器1020执行使处理器1012(或多个处理器,如果存在多个处理器)能够访问系统存储器1024和海量存储的存储器1025的功能。
系统存储器1024可以包括任何所需类型的易失和/或非易失存储器,例如,静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、闪存、只读存储器(ROM)等。海量存储的存储器1025可以包括任何所需类型的海量存储装置,包括硬盘驱动器、光驱、磁带存储装置等。
I/O控制器1022执行使处理器1012能够通过I/O总线1032与外围输入/输出(I/O)设备1026和1028以及网络接口1030通信的功能。I/O设备1026和1028可以是任何所需类型的I/O设备,例如,键盘、视频显示器或监视器、鼠标等。网络接口1030可以是使处理器系统1010能够与另一处理器系统通信的设备,例如,以太网设备、异步传输模式(ATM)设备、802.11设备、数字用户线路(DSL)调制解调器、缆线调制解调器、蜂窝调制解调器等。
虽然存储器控制器1020和I/O控制器1022在图10中描述为芯片集1018中独立的功能模块,但是由这些模块执行的功能可以集成在单一半导体电路中或者可以用两个或更多独立集成电路来实施。
尽管本文中已经描述了特定的方法、装置、系统和制品,但本专利覆盖的范围不限于此。相反,本专利涵盖完全落入所附权利要求在字面上或依据其等同物原理的范围内的所有方法、装置、系统和制品。