非常大数据库上的数据处理的制作方法

文档序号:6455602阅读:182来源:国知局
专利名称:非常大数据库上的数据处理的制作方法
非常大数据库上的数据处理
祖且 冃牙、
联网和计算技术的进步使得计算机从能够执行基本文字处理和执行基本 数学计算的低性能/高成本设备转变成能够执行无数不同功能的高性能/低成本
机器。例如,可采用消费级计算设备来协助用户支付帐单、跟踪花费、经由电 子邮件或即时消息收发跨远距离与朋友或家人近乎瞬时地通信、从网络化数据 储存库获取信息以及各种其它功能/活动。计算机及与之相关联的外设因此成为
现代社会的螺丝钉,用于个人和企业活动两者。
另外,电子存储机制使得个人和/或公司能积累大量数据。例如,以往需 要数巻书本来记录的数据现在可在无需印刷纸张的花费的情况下电子地存储, 且仅占用存储纸张所需的物理空间的一小部分。在一个具体示例中,以往用纸 张巻记录的契约和抵押单据现在可被电子地存储。而且,传感器和其他电子机
制的进步现在使得能够收集和存储大量数据。例如,GPS系统可经由卫星和 GPS接收器来确定个人或实体的位置,且与之连接的电子存储设备则可用来保 持与这样的系统相关联的位置。也可利用各种其他传感器和数据收集设备来获 取和存储数据。
某些商业模型很大程度上依赖于其处理极大量数据的能力。例如,搜索引 擎可收集关于数百万用户的大量数据,诸如年龄、人口统计信息等。在另一示 例中,跟踪股市变化的数据库可与大量数据相关联,尤其当这样的跟踪是以粒 度方式进行时。如果人们期望从该数据集合中检索特定的一个或多个条目,则 他们可生成采用特定数据库查询语言的查询,且数据根据该查询被组织并从数 据库中提取。
当存在小量数据时,诸如在电子表应用程序中,该数据处理可相当快速地 进行。然而当数据量变为相当大(例如,几千吉字节)时,处理这样的数据在 计算上是昂贵的,且需要大量时间。减少处理时间的一种常规方式涉及选择数 据的样本集并对这一样本集执行处理,其中样本集的大小可取决于处理这一样本集所需的时间量。尽管这减少了处理时间,但准确性将受到损害,尤其是在 数据挖掘应用中。另一种可用方式是减少功能,从而减少处理大量数据所需的 计算资源。
概述
以下呈现了简化的概述,以提供所要求保护的主题的某些方面的基本理 解。该概述不是详尽的概观,它不旨在标识所要求保护的主题的关键/重要的元 素也不旨在描绘其范围。其唯一的目的是以简化的形式来介绍一些概念,作为 稍后提出的更为详细的描述的序言。
所要求保护的主题一般涉及准备非常大量的数据(例如,在千吉字节数据 的数量级)供分析处理,诸如数据挖掘应用。为了使得这样的处理能用高效(且 相对不昂贵)的方式进行,商品计算设备被分层地安排,且处理任务在这些计 算设备之间拆分。更详细地,客户端可向担当主节点的计算节点(可以是计算
机、计算机的一部分...)提供SQL査询,其中主节点分析SQL查询并确定与 SQL查询相关的多个任务(即,"组成"该SQL查询)。SQL查询可以是与一 个或多个用户相关联的预定义查询,或是其中期望对特定SQL查询的使用的 其他主题。
一旦主节点确定了任务,这些任务即可被放置在与该主节点相关联的队列 中,并被提供给多个聚类节点(屈从于主节点的节点)。例如,任务可被分派 给特定的聚类节点和/或聚类节点可请求某些任务。更详细地,聚类节点可与某 些任务被设计成对其执行的数据分区相关联。在一示例中,当从web服务器加 载数据之后,可利用一个或多个分拣算法将特定的数据分区分派给某些聚类节 点,其中聚类节点请求和/或被分派与数据分区相关的特定任务。因此,与常规 系统/方法相比,任务可由聚类节点方便得多地执行。
另外,聚类节点可担当对于其他聚类节点的主节点。例如, 一聚类节点可 从主节点接收任务,且这一聚类节点可基于所接收的任务确定多个子任务。这 些子任务然后可根据与之相关联的数据分区被提供给子聚类节点。子聚类可请 求保存在"父"聚类节点的队列内的某些任务和/或可被分派来自"父"聚类节点 的任务。如前所述,可利用不可靠或单向消息收发来实现聚类节点之间、聚类节点和子聚类节点之间以及子聚类节点之间的通信。
为实现上述及相关目的,本文结合下面的描述和附图描述某些说明性方 面。然而,这些方面仅指示了可采用所要求保护的主题的原理的各种方法中的 几种,且本主题旨在包括所有这些方面及其等效方面。当结合附图阅读以下详 细描述时,本发明的其他优点和新颖特征将变得清楚。
附图简述


图1是用于处理非常大量数据的系统的高层框图。
图2是用于准备非常大量数据以便分析处理的系统的框图。
图3是使用共享存储体系结构来处理非常大量的数据的系统的框图。
图4是使用无共享体系结构来处理非常大量的数据的系统的框图。
图5是结合非常大的数据库的数据处理系统的框图。
图6是便于加载数据以便处理的系统的框图。
图7示出了数据分析处理对搜索引擎和/或广告服务器的的使用。
图8是示出用于对大量数据执行准备处理以允许对其分析的方法的代表
性流程图。
图9是示出用于将数据加载到数据处理系统内的方法的代表性流程图。 图10是示出用于将定制的搜索内容和/或广告提供给用户的方法的代表性 流程图。
图11是示出用于分拣web日志的方法的代表性流程图。 图12是示出合适的操作环境的示意性框图。 图13是示例计算环境的示意性框图。
详细描述
现在参考附图来描述所要求保护的主题,所有附图中使用相同的附图标记 来指代相同的要素。在以下描述中,为解释起见,阐明了众多具体细节以提供 对所要求保护的主题的全面理解。然而,很明显,这一主题可以在没有这些具 体细节的情况下实施。在其它情况下,以框图形式示出了公知的结构和设备以 便于描述所要求保护的主题。
7如在本申请中所使用的,术语"组件"和"系统"旨在表示计算机相关的实 体,其可以是硬件、硬件和软件的组合、软件、或者执行中的软件。例如,组 件可以是,但不限于在处理器上运行的进程、处理器、对象、可执行代码、 执订tf、J统程、程汁、和1T舁机。1卞为讽叨,返仃仕服分益工tfJM用枉厅和服分 器都可以是组件。 一个或多个组件可以驻留在进程和/或执行的线程内,并且组 件可以位于一个计算机上和/或分布在两个或更多的计算机之间。
此外,所要求保护的主题可以使用产生控制计算机以实现所公开的主题的 软件、固件、硬件或其任意组合的标准编程和/或工程技术而被实现为方法、装 置或制品。在此使用的术语"制品"旨在涵盖可以从任何计算机可读设备、载体 或介质访问的计算机程序。例如,计算机可读介质可以包括但不限于磁存储设 备(例如,硬盘、软盘、磁带......)、光盘(例如,紧致盘(CD)、数字多
功能盘(DVD)......)、智能卡和闪存设备(例如,卡、棒、钥匙驱动器......)。
另外应该明白,可以采用载波来承载计算机可读电子数据,例如那些用于发送 和接收电子邮件或用于访问如因特网或局域网(LAN)等网络的数据。当然, 本领域的技术人员将会认识到,在不背离所要求保护的主题的范围或精神的前 提下可以对这一配置进行许多修改。
现在参考附图,图1示出了便于处理大量数据(例如几千吉字节数据)的 系统100。如上所述,常规上,准备数据集的样本来对大量数据执行数据挖掘 任务;然而,当处理的不是可用数据整体时,准确性受到损害。系统100以使 得可高效地且用相对低成本的计算设备来处理数据集的整体的方式来构造。
系统100包括接收采用诸如SQL等数据库査询语言的查询的接收器组件 102。常规上,这一查询是针对数据集合的整体和/或其样本来执行的。系统100 通过利用划分组件104使得能对极大量数据高效地执行査询,划分组件可分析 由接收器组件102接收到的查询并将查询划分成多个任务。这多个任务当针对 数据集合执行时,可提供与该查询在单独针对数据集合执行时基本上相似的结 果。如将在以下更详细描述的,接收器组件102和划分组件104可驻留在主节 点内,该主节点能分派任务、聚集因执行任务而产生的数据并将所聚集的数据 提供给客户端。
在划分组件104定义了多个任务之后, 一个或多个任务可被分派给一个或多个聚类节点106-110。聚类节点106-110例如可以是各个计算机、共同包装
内的单独计算实体、单独逻辑进程等。在另一示例中,代替任务被分派给聚类
节点106-110,聚类节点106-110可从任务队列(未示出)检索任务。从而,3豕失T后、元成1士分H、」,该Ti后、H」请氺力一tt分,由iJ:L旭U确1禾平T威类,后、不会在另一聚类节点保持空闲时因多个任务而超负荷来提高效率。
另外,聚类节点106-110中的一个或多个可与一个或多个子聚类节点相关联,从而允许计算节点既担当聚类节点又担当主节点。例如,聚类节点106可接收或检索有关处理数据的多个任务。聚类节点106可执行任务的子集,并使将其他任务分派给驻留在从聚类节点106开始的体系结构分层结构的较低档中的子聚类或使其他任务对这些子聚类可用。聚类节点106然后可将由子聚类节点提供的数据与因聚类节点106自身执行的任务的运行而得到的数据进行聚集。这样聚集的数据然后可被提供给分层结构中聚类节点106上方的节点。
计算节点的这种分层安排允许低成本的机器的集合高效地处理相当大量的数据。为了进一步提高处理的效率,可在节点之间利用不可靠的消息收发(例如,没有信号交换、确认接收...)。相反,节点可执行确保因任务的执行而得到的数据在阈值时间段内接收到的监视操作。与常规系统相比,使用不可靠的消息收发可使聚类节点106-110能执行更大量的处理任务。
而且,系统IOO可与"无共享"数据存储体系结构或"共享存储"数据存储体系结构相关联。在每一聚类节点106-110 (以及相关联的子聚类节点)包括数据存储并保存供处理的数据时得到"无共享"体系结构,其中不存在聚类节点106-110共享的任何中央数据存储。"共享存储"体系结构涉及当聚类节点106-110共享存储空间,诸如在服务器上。系统IOO可利用商品计算系统,从而维持低成本(但由于系统100的体系结构而维持足够的性能)。
总之,各种应用要求巨大的计算资源。例如,基于在搜索引擎日志文件中跟踪的用户活动对用户关于项目的兴趣评分要求大量的处理。例如,搜索引擎公司可收集与用户活动有关的大量个别事件,诸如所访问的统一资源定位符(URL)、所执行的搜索查询、提供给用户的广告、用户选择的广告等。可通过数据挖掘和预测建模技术来推断用户的一个或多个兴趣,但准备大量数据供分析处理是非平凡的任务。例如,日志文件数据必须被解析、净化、分拣、加载、与其他类型的数据合并以及聚集。系统ioo通过将数据库查询划分成若干
任务来便于对这样的任务的端对端支持,其中这样的任务是并行执行的。
现在转向图2,示出了便于准备非常大量的数据以便分析处理的系统200。 乐玩2(JU迅括客广顺2U厶共^ W」/A込一议舍接仪SQL宜TOJ。仕一不词屮,客
户端202可以是OLE DB客户端,其中OLE DB是允许以统一方式访问不同类 型的数据的一组接口。 SQL查询由接收器组件102接收,该组件被包括在主节 点204内。如上所述,主节点204可以是单个计算设备、担当一个计算设备的 多个计算设备等。
主节点204还可包括划分组件104,它可确定需要什么数据来处理所接收 的SQL査询,并可将查询划分成多个任务,以便查询得到处理。划分组件104 可将任务分派给一个或多个聚类节点106-110。在另一示例中,聚类节点 106-110可向主节点204请求任务和/或从主节点204拉取任务。聚类节点 106-110可完成任务,并将这些任务的结果提供回主节点204。主节点204包 括可聚集从聚类节点106-110返回的数据并将这一聚集提供给客户端202的聚 集组件206。之后可将聚集的数据用于数据挖掘和预测建模应用。
另外,可以理解聚类节点106-110中的一个或多个可担当对于逻辑分层结 构内聚类节点106-110下方的子聚类节点的主节点。根据一示例,聚类节点108 可包括接收器组件102,该组件被配置成接收与经由客户端202提供的SQL査 询相关联的一个或多个任务。聚类节点108也可包括划分组件104,该组件将 任务划分成多个子任务。聚类节点108然后可执行一个或多个子任务和/或将子 任务分派给逻辑分层结构中聚类节点108下方的聚类节点(未示出)。聚类节 点108可接收因子任务的执行而得到的数据,并聚集这样的数据,之后将所聚 集的数据提供给分层结构中聚类节点108上方的计算实体(例如,主节点204)。 因此,与分层结构中低于任何计算节点的节点相关联的这样的计算节点可通过 划分查询/任务和聚集数据来担当主节点。
现在转向图3,示出了用于准备非常大的数据集合(几千吉字节)以便分 析处理的系统300。提供系统300以示出可结合所要求保护的主题利用共享存 储体系结构。系统300包括主节点204,主节点204又包括接收査询(例如从 OLE DB客户端)的接收器组件102。划分组件104通信耦合至接收器组件102,
10并将所接收的查询划分成多个任务。例如,任务可根据某些查询构造在之前定义。
主节点204还可包括任务队列302,它可保存未被分派给聚类节点106-110屮的仕一T和/SJC木由任inj聚类"P总接叹tf、J仕务。例卯,卯米豕类节总主动检索任务,则这些任务可根据重要性来排列。或者,聚类节点106-110可被配置成执行特定任务,且可针对这些任务分析队列的内容。队列302也可与监视队列302以确保任务正在被分派和/或聚类正在检索任务的监视组件304相关联。另外,监视组件304可监视某些聚类节点106-110所承担或被分派给某些聚类节点106-110的多个任务以确保高效的数据处理。而且,监视组件304可监视聚类节点106-110以査明特定任务是否在阈值时间量内完成。例如,系统300可利用不可靠的消息收发(单向消息收发)——从而,噪声有可能使聚类节点106不正确地接收任务分派。如果任务未在特定时间量中完成,则监视组件304可使主节点204重新发送任务或将任务置于队列302内。
如上所述,聚类节点106-110可接收与查询相关联的任务,并处理这些任务。此外,聚类节点106-110中的一个或多个可接收多个任务,并将任务的子集分派给一个或多个子聚类节点。另外或者替换地,聚类节点106-110还可将任务划分成子任务,并将这样的子任务分派给子聚类节点(未示出)。系统300还包括在聚类节点106-110之间共享的数据存储306。因此,例如,聚类节点106和聚类节点108可接收两个单独的任务,但均可对位于聚类节点106-110之间共享的数据存储306内的数据操作。
现在参考图4,示出了用于准备大量数据以便分析处理的系统400。系统400包括主节点204,它包括接收器组件102和划分组件104。如上详细描述的,接收器组件102从客户端接收SQL査询,划分组件102分析査询以确定定义查询的多个任务。例如,任务可被设计成对已知与聚类节点106-110之一相关联的特定数据部分操作。因此,根据与聚类节点相关联的数据,任务可被分派给特定的聚类节点和/或由某一聚类节点检索。更具体地,聚类节点106-110各自与数据存储402-406相关联,使得在多个聚类节点106-110之间不需要有共享的存储。
驻留在数据存储402-406内的数据可用特定方式按需格式化,并基于其与
11已知任务的关系被置于某些聚类节点内。例如,驻留在数据存储402内的数据 可与第一任务集相关联,而驻留在数据存储404内的数据可与第二任务集相关
联。而且,数据集可被分类为划分表和雪花式维度。数据存储402-406内的每 一数据集划分可被存储在多个聚类节点上,用于在节点故障的情况中有冗余 性。例如,数据可用以逗号分隔或二进制形式经压縮或未经压縮地存储。维度 数据可被保存在平面文件或SQL服务器数据库中,且可被加载到主节点204 和聚类节点106-110的存储器内,且可在该数据改变时被刷新。
如上所述,划分组件104可将SQL查询划分成多个任务,其中各个任务 仅需要特定数据划分边界内的数据(因此可由单个聚类节点处理)。例如,特 定任务可专门分派给聚类节点106,因为该节点106是包括该任务所需数据的 节点。聚类节点106可例如使用高效的离散盘读取来加载所需数据文件,且可 将数据置于内部高速缓存内。聚类节点106之后可针对任务内标识的数据划分 来执行任务。例如,对划分键的SQL联接可被优化以最小化盘访问,且保存 与查询相关联的中间结果的内部容器可不被锁定并为多CPU系统优化。来自 这样的处理的结果可在结果变为可用时提供给主节点204。
系统400还可包括回退组件408,它允许在数据加载期间在数据破坏的情 况中将数据回退到已知的良好状态。可利用回退组件408来创建系统400内数 据的快照,使得文件名以及大小被捕捉用于例如在从一个或多个web服务器加 载日志失败时进行回退。通常,进行加载的数据未被组织成允许高效查询(例 如,该数据未被分拣或划分,除了可能被按时间划分以外)。当数据被加载时, 它可根据某一划分方案使用一个或多个分布式分拣算法来重新组织。每一得到 的划分可由所分派的聚类节点处理。之后,用于划分的数据的附加副本可被置 于一个或多个其他节点上以获得数据的冗余性。如果在加载和划分之后,存在 数据破坏,则回退组件408可使系统400内的数据返回至前一状态。
现在参考图5,示出了便于准备大量数据以便分析处理的系统500。系统 500包括OLE DB客户端502,它可以是任何合适的客户端,包括电子表应用 程序、SQL服务器等。OLE DB客户端502可被通信耦合至OLE DB提供者 504,它例如可以是驱动器。SQL査询例如可由或可通过OLE DB客户端502 和/或OLE DB提供者504生成。主节点204可接收SQL查询,而主节点204内的划分组件104可确定可由一个或多个聚类节点执行以高效地执行SQL査
询的多个任务。当划分组件104确定任务时,它们可被置于任务队列506内,该队列可按照重要性或任何其他合适的次序对任务定序。
任务队列506内的任务可被提供给聚类节点508,更具体的是聚类节点508内的任务队列510。其他聚类节点512可与如关于聚类节点510所述的类似组件相关联。主节点204可将任务分派给聚类节点508和/或聚类节点508可从主节点204检索任务。另外,尽管未示出,但聚类节点508可与子聚类节点相关联,其中这些子聚类节点可被分派或检索来自任务队列510的任务。在无共享体系结构中,聚类节点可被分派保存特定数据的任务,因此可被指定为执行某些任务。来自任务队列510的任务可由聚类节点508内的一个或多个工作者线程514执行。如上所述,工作者线程514可与某些任务相关联。另外,事件数据516和/或元数据518可由聚类节点508分析以确定要检索哪些任务。主节点204和聚类节点508可经由不可靠的消息收发来通信。另外,聚类节点可通过使用不可靠(单向)消息收发在其之间通信。
聚类节点508还包括聚集因工作者线程514的执行而得到的数据的聚集组件520。聚集组件520还可聚集与被分派或检索来自任务队列510的任务的子聚类相关联的数据。所聚集的数据之后可被提供给聚类节点508上的结果队列522。主节点204可向结果队列522请求数据和/或聚类节点508可将来自结果队列522的数据自动提供给主节点204。来自若干聚类节点的结果队列的结果可由主节点204内的聚集组件524接收,且这一聚集的结果可被提供给结果队列526。例如,主节点204可被分派为聚集来自多个聚类节点的数据。用于聚集数据的方式可至少部分基于可由主节点204访问的元数据518。来自主节点204中的结果队列的数据然后可被提供给OLE DB提供者504,然后被返回给OLE DB客户端502。提供给OLE DB客户端502的数据然后可用于分析处理。
现在参考图6,示出了便于准备大量数据以便查询和/分析处理的系统600。系统600包括可通信耦合至web服务器604并接收驻留在web服务器604内的日志606的加载组件602。例如,加载组件602可向web服务器604请求日志606禾卩/或web服务器604可将日志606推送到加载组件602。例如,日志606的请求/推送可根据web服务器604上剩余的数据存储容量、周期性等进行。在一示例中,日志606可以是W3C日志。
一般,从web服务器604提取的日志606不会被正确定序用于高效査询。 例如,日志606可能不被划分,除了可能按时间划分以外。从而,加载组件602 可包括可重新组织数据并将其提供给多个聚类节点106-110共享的数据存储单 元和/或多个聚类节点106-110内的数据存储的分拣组件608。例如,如上所述, 每一聚类节点可被配置成对特定的数据和/数据类型执行某些任务。从而,可向 分拣组件608分派将某些数据划分提供给特定聚类节点的任务。例如,分拣组 件608可利用根据所定义的划分方案的分布式分拣算法,其每一个得到的划分 可被分派给某个聚类节点106-110或共享存储单元的一部分。为冗余性的目的, 可将划分的一个或多个附加副本分派给不同的节点以得到冗余性。
更具体地,从分拣组件608得到的数据集可被分类为划分表和雪花式维 度,其中特定的划分表可以是用于分拣事件数据516 (图5)的事实表。事实 表可具有键的主要划分序列,且可基于一个或多个事件的时戳进行辅助子划 分。数据可按照以逗号分隔的方式经压縮或未经压縮地保存在聚类节点 106-110上。维度数据可例如被保存在平面文件和/或SQL服务器数据库上,且 可被加载到主节点204和聚类节点106-110的存储器内,且在该维度数据改变 时被刷新。
一旦日志606被加载并被组织,主节点204即可接收SQL查询并将这一 査询划分成多个任务。任务然后可根据与之相关联的划分被分派给某些聚类节 点或由这些聚类节点检索。如上所述,可在主节点204和聚类节点106-110之 间和/或在聚类节点(和子聚类节点)之间进行单向消息收发。可利用提供给主 节点204的査询来准备与聚类节点106-110相关联的数据以用于诸如确定用户 兴趣、选择性地向用户提供广告等分析的目的。
在另一示例中,关于准备来自日志606的原始数据用于查询(例如,按照 经划分和分拣的方式安置这样的数据),主节点204可选择某些聚类节点为负 责读原始日志606。所选的聚类节点在后文中被称为"读取者"。对读取者的选 择可基于聚类节点的计算能力、资源可用性和/或任何其他合适的准则。主节点 204也可选择聚类节点为负责主宿经划分和分拣的数据,且这样所选的节点在 后文中被称为"写入者"。主节点204可准备读取者节点和写入者节点以便关于数据读取何时完成、写入何时完成等彼此通信。
读取者节点(在主节点204接收命令之后)可从web服务器604检索或接收日志606,且可将某些日志和/或其部分中继给特定的写入者节点(例如,根据划分表)。将日志供应给某些聚类节点(写入者)对允许并行处理而言是重要的。写入者节点可通过利用存储器内缓冲区来接收每一划分的数据——如果数据量超过物理存储器的容量,数据也可被写入临时盘存储。
在读取者节点接收web服务器604内的所有相关日志之后,读取者节点可向主节点204提供通知。读取者节点可刷新包括从web服务器604接收的数据的所有缓冲区,并等待接收所刷新的数据已经被一个或多个适当的写入者节点接收的确认。读取者节点然后可向主节点204通知向写入者节点的数据供应完成。当写入者节点确定(或接收通知)它们具有来自读取者节点的所有相关数据时,写入者节点可将所接收的日志划分成査询所需的格式(例如,表(字段l,字段2,字段3...))。写入者节点之后可通知主节点204日志是最终格式的。如果采用无共享体系结构,则主节点204可命令写入者节点将新写入的数据复制到要主宿划分数据的附加副本的其他节点。
现在参考图7,示出了示出主节点204和聚类节点106-110的实际应用的系统700。系统700包括客户端702,诸如OLEDB客户端,它可向主节点204提供SQL查询。如上所述,主节点204可将查询划分成若干任务,且这些任务可由聚类节点106-110执行。因执行任务而得到的结果可在聚类节点106-110和主节点204处聚集,然后可被提供给客户端702。客户端702可被通信耦合至数据存储704,且可在其中保存SQL查询的结果。
作为示例,SQL査询可与特定的因特网用户相关联,诸如定位用户进行的最近搜索、用户所访问的网页、用户购买的项目等。搜索引擎706和/或广告服务器708然后可执行数据挖掘操作或利用其他智能算法来向用户选择性地提供内容。例如,搜索引擎706可从用户终端710 (这可与特定用户相关联,或某一用户可登录到用户终端710内)接收查询。通过分析与用户相关的数据存储704的内容,搜索引擎706可智能地对搜索结果定序,并将内容提供给这一用户。类似地,广告服务器708可基于数据存储704的内容选择性地将广告提供给用户终端710。
15在一详细示例中,聚类节点106-110可保存从web服务器接收的划分数据, 诸如W3C日志以及任何其他合适的数据。在另一示例中,存储可在聚类节点 106-110之间共享以保存数据。当用户登录到服务时,客户端702 (或其他合 适的计算实体)可确定用户的身份。可自动生成一个或多个SQL查询以检索 与在用户终端710登录的用户有关的数据。得到的数据可被提供给数据存储 704,并用于向用户提供定制/改进的内容和/或广告。
现在参考图8-11,将通过一系列动作来描述根据所要求保护的主题的方 法。可以理解并明了,所要求保护的主题不受动作次序的限制,因为某些动作 可以按与本文所示和描述的不同的次序发生和/或与其他动作同时发生。例如, 本领域技术人员将会明白并理解,方法可被替换地表示为一系列相互关联的状 态或事件,诸如以状态图的形式。而且,并非所有示出的动作都是实现根据所 要求保护的主题的方法所必需的。另外还应该明白,下文以及本说明书全文中 所公开的方法能够被存储在制品上,以便于把此类方法传送和转移到计算机。 在此使用的术语"制品"意指包含可以从任何计算机可读设备、载体或介质访问 的计算机程序。
单独参考图8,示出了用于快速准备巨大数量的数据(例如,几千吉字节) 以便分析处理的方法800。方法800在802启动,在804接收SQL査询。例如, 该SQL查询可在用户提供登录信息时、在一个或多个用户通过对IP地址的分 析或用于标识用户的任何合适方式标识时自动生成。SQL查询可在OLE DB客 户端处生成,并通过OLEDB提供者,后者可以是驱动器。
在806,确定与SQL查询相关联的多个任务。例如,可向SQL查询分派 预定义任务,其中这些预定义任务要在某些聚类节点上运行。例如,可利用"无 共享"体系结构,使得在将数据加载到聚类节点中之后特定数据划分被分派给 某些聚类节点。被分派给聚类节点的任务可被定向到特定的数据划分。在808, 多个任务被提供给多个聚类节点,其中每一任务可按需由某一聚类节点执行。 另外,聚类节点可与子聚类节点相关联,使得多层分层结构计算结构被用于执 行任务。例如,任务可被提供给特定聚类节点,之后任务可被划分成多个子任 务并被提供给若干子聚类节点。另外,每一子聚类节点可被配置成执行某些子 任务,其中子聚类节点请求特定的子任务和/或被分派某些子任务。
16在810, 一旦执行了任务和/或子任务,因子任务而得到的数据可被聚集并被提供给聚类节点和/或在所述分层结构中位于执行该任务或子任务的聚类节点(或子聚类节点)上方的主节点。数据在其通过分层结构向上到达主节点时
可被聚集,主节点可执行最终聚集并将得到的数据中继回OLEDB客户端。当
在主节点和聚类节点之间、聚类节点之间、聚类节点和子聚类节点之间和/或子聚类节点之间进行通信时,这样的通信可经由不可靠消息收发进行。与常规非常大数据库处理系统/方法相比,这使得任务的处理能够更方便地完成。此外,
对SQL的使用允许采用公共接口 。方法800然后在812完成。
现在转向图9,示出了将大量数据加载到数据处理系统的方法900。方法
900在902开始,在904在加载数据之前拍摄系统内存在的数据的快照。因此,
如果存在破坏的数据或数据被不正确地加载,系统则可被"回退"到已知的良好
状态。例如,可为不成功的加载操作的回退捕捉文件名和大小。在906,根据
定义的划分方案重新组织按需加载的数据。在908,将某些划分提供给特定的
聚类节点。任务然后可被分派给聚类节点或由聚类节点请求,其中任务与划分
相关联。在910,为冗余性的目的将数据划分提供给其他聚类节点。方法900然后在912完成。
参考图IO,示出了用于将定制内容和/或广告提供给用户的方法1000。方法1000在1002处开始,并在1004处接收用户标识。例如,用户可登录到即时消息信使服务,登录到电子邮件服务,提供关于计算设备的IP地址等。因此,构想了用于接收/确定用户标识的任何合适方式,且这些方式旨在落入本文所附权利要求书的范围之内。在1006,査明关于所标识的用户的SQL查询。例如,为了准备数据用于对于用户的分析处理,查询被设计成定位和聚集与用户有关的数据(例如,诸如搜索日志等关于用户收集的信息、诸如人口统计信息等与用户有关的信息...)。
在1008,从可包括几千吉字节数据的非常大的数据库中定位(收集和聚
集)与用户相关联的数据。例如,包括至少一个主节点和至少一个聚类节点的
分层体系结构可用来快速并高效地准备数据用于分析目的。在1010,在分析所
定位的数据之后,将内容和/或广告提供给用户。因此,搜索结果可被优化,且广告可基于所推断的用户兴趣等被选择性地提供。方法1000然后在1012完成。现在参考图11,示出了用于快速准备大量数据以便查询和/分析处理的系
统IIOO。例如,保存在web服务器内的web日志一般不被分拣(除了可能按
时间分拣以外)。然而,为了允许在利用计算节点的分层安排的系统中查询
web日志,web日志需要按特定方式格式化和分拣(例如,表(字段1,字段2...)) 并与某些节点相关联。方法1100在1102启动,且在1104聚类节点由主节点 分派为读取者节点或写入者节点,其中读取者节点被分派从web服务器接收/ 检索web日志并将这些日志提供给适当的写入者节点的任务,而写入者节点被 分派按所需方式格式化web日志的任务。
在1106,从读取者节点处的web服务器接收web日志。例如,可将所有 web日志(按时间排列)的部分提供给某些读取者节点。 一旦读取者节点接收 到了所有相关的web日志,读取者节点即可向主节点指示读取己经完成。在 1108,将web日志的子集提供给特定的写入者节点。例如,读取者节点可利用 分发表来确保某些web日志被提供给特定的节点。 一旦web日志中的每一个 被提供给写入者节点,读取者节点即可等待接收的确认,然后向主节点告知其 任务已被完成。
在lllO,写入者节点可分拣其接收到的web日志,并生成最终经分拣的 数据。这样的数据可被格式化以允许高效的查询。另外,所写入的数据被保存 在某些节点内以允许并行处理(如上所述)。写入者节点在完成最终分拣数据 的生成之后,可向主节点告知这样的写入已完成,且数据准备好进行查询。在 1112,为冗余性的目的在多个位置中存储最终经分拣的数据划分,且方法1100 在1114完成。
为了提供用于所要求保护的主题的各方面的附加上下文,图12及以下讨 论旨在提供对其中可实现所要求保护的主题的各方面的合适的操作环境1210 的简要概括描述。尽管所要求保护的主题是在诸如程序模块等由一个或多个计 算机或其它设备执行的计算机可执行指令的通用上下文中描述的,但本领域的 技术人员将认识到,本发明还能够结合其它程序模块和/或作为硬件和软件的组 合来实现。
然而,通常,程序模块包括执行特定任务或实现特定数据类型的例程、程序、对象、组件、数据结构等。操作环境1210只是合适的操作环境的一个示例,并不旨在对本发明的使用范围或功能提出任何局限。适用于本发明的其他公知的计算机系统、环境、和/或配置,包括但不限于,个人计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括以上系统或设备的分布式计算环境等等。
参考图12,用于实现所要求保护的主题的各个方面(诸如高效地准备大
量数据以便分析处理)的示例性环境1210包括计算机1212。计算机1212包括处理器单元1214、系统存储器1216和系统总线1218。系统总线1218将包括但不限于系统存储器1216的系统组件耦合到处理单元1214。处理单元1214可以是各种可用处理器中的任一种。双微处理器和其它多处理器体系结构也可用作处理单元1214。
系统总线1218可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线或外部总线、和/或使用各种可用的总线体系结构中的任一种的局部总线,可用的总线体系结构包括,但不限于,8位总线、工业标准体系结构(ISA)、微通道体系结构(MCA)、扩展的ISA (EISA)、智能驱动器电子接口 (IDE) 、 VESA局部总线(VLB)、外围部件互连(PCI)、通用串行总线(USB)、高级图形接口 (AGP)、个人计算机存储卡国际协会总线(PCMCIA)以及小型计算机系统接口 (SCSI)。系统存储器1216包括易失性存储器1220和非易失性存储器1222。基本输入/输出系统(BIOS)包含诸如在启动期间在计算机1212的元件之间传送信息的基本例程,其存储在非易失性存储器1222中。作为说明而非局限,非易失性存储器1222可以包括只读存储器(ROM)、可编程ROM (PROM)、电可编程ROM (EPROM)、电可擦除ROM (EEPROM)或者闪存。易失性存储器1220包括用作外部高速缓冲存储器的随机存取存储器(RAM)。作为示例而非限制,RAM以多种形式可用,诸如同步RAM( SRAM)、动态RAM(DRAM)、同步DRAM( SDRAM)、双倍数据速率SDRAM (DDR SDRAM)、增强型SDRAM (ESDRAM)、同步链路DRAM (SLDRAM)以及直接Rambus总线RAM (DRRAM)。
计算机1212还包括可移动/不可移动、易失性/非易失性计算机存储介质。例如,图12示出了盘存储1224。盘存储1224包括但不限于诸如磁盘驱动器、 软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、LS-100驱动器、闪存卡、 或者记忆棒之类的设备。此外,盘存储1224可以包括独立的或者与其它存储 介质结合的存储介质,其他存储介质包括但不限于诸如紧致盘ROM设备 (CD-ROM)、可记录CD驱动器(CD-R驱动器)、可重写CD驱动器(CD-RW 驱动器)或者数字多功能盘ROM驱动器(DVD-ROM)这样的光盘驱动器。 为了便于将盘存储设备1224连接到系统总线1218,通常使用诸如接口 1226 等可移动或不可移动接口。
应该明白,图12描述了在用户和在合适的操作环境1210中描述的基本计 算机资源之间担当中介的软件。这样的软件包括操作系统1228。存储在盘存储 1224上的操作系统1228用于控制并分配计算机系统1212的资源。系统应用程 序1230通过存储在系统存储器1216或盘存储1224上的程序模块1232和程序 数据1234利用了操作系统1228对资源的管理。应该明白,所要求保护的主题 可以用各种操作系统或操作系统的组合来实现。
用户通过输入设备1236把命令或信息输入到计算机1212中。输入设备 1236包括但不限于诸如鼠标、跟踪球、指示笔、触摸垫等定点设备、键盘、话 筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、TV调谐卡、数码相机、 数码摄像机、网络摄像头等等。这些以及其它输入设备通过系统总线1214经 由接口端口 1238连至处理单元1218。接口端口 1238包括,例如串行端口、并 行端口、游戏端口、以及通用串行总线(USB)。输出设备1240利用和输入 设备1236相同类型的某些端口 。因此,例如,USB端口可以用来向计算机1212 提供输入,以及把来自计算机1212的信息输出到输出设备1240。提供输出适 配器1242来示出存在如监视器、扬声器、打印机以及其他输出设备1240等需 要特殊适配器的一些输出设备1240。输出适配器1242包括,作为说明而非局 限,提供输出设备1240和系统总线1218之间的连接手段的显卡和声卡。应该 注意到,其它设备和/或设备系统提供了输入和输出能力,诸如远程计算机 1244。
计算机1212可以使用至诸如远程计算机1244等一个或多个远程计算机的 逻辑连接在网络化环境中操作。远程计算机1244可以是个人计算机、服务器、路由器、网络PC、工作站、基于微处理器的电器、对等设备或者其它常见的网络节点等,且通常包括相对于计算机1212所描述的许多或者全部元件。为
了简明起见,对远程计算机1246仅示出了存储器存储设备1244。远程计算机1244经由网络接口 1248被逻辑地连接到计算机1212,然后经由通信连接1250物理地连接。网络接口 1248涵盖诸如局域网(LAN)和广域网(WAN)这样的通信网络。LAN技术包括光纤分布式数据接口 (FDDI)、铜分布式数据接口、以太网/IEEE 802.3、令牌环/IEEE 802.5等。WAN技术包括但不限于,点对点链路、诸如综合业务数字网(ISDN)及其各种变体等电路交换网、分组交换网、以及数字用户线(DSL)。
通信连接1250指的是用于把网络接口 1248连接到总线1218的硬件/软件。虽然为了清楚地举例说明,通信连接1250被示为在计算机1212的内部,但其也可以在计算机1212的外部。连接到网络接口 1248所需要的硬件/软件包括,仅出于示例的目的,内部和外部技术,诸如包括常规电话级调制解调器、电缆调制解调器以及DSL调制解调器的调制解调器、ISDN适配器和以太网卡。
图13是所要求保护的主题可以与之交互的示例性计算环境1300的示意性框图。系统1300包括一个或多个客户机1310。客户机1310可以是硬件和/或软件(例如,线程、进程、计算设备)。系统1300还包括一个或多个服务器1330。服务器1330也可以是硬件和/或软件(例如,线程、进程、计算设备)。例如,服务器1330可容纳线程,以例如通过使用本发明执行变换。在客户机1310和服务器1330之间的一种可能的通信能够以适合在两个或多个计算机进程之间传输的数据分组的形式进行。系统1300包括可以用来使客户机1310和服务器1330之间通信更容易的通信框架1350。客户机1310可在操作上连接到一个或多个可以用来存储对客户机1310本地的信息的客户机数据存储1360。同样地,服务器1330可在操作上连接到一个或多个可以用来存储对服务器1330本地的信息的服务器数据存储1340。
以上所已经描述的内容包括所要求保护的主题的各方面的例子。当然,出于描绘这一主题的目的而描述每一个可以想到的组件或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,许多进一步的组合和排列都是可能的。因此,所要求保护的主题旨在涵盖所有这些落入所附权利要求书的精神
21和范围内的改变、修改和变动。此外,就在说明书或权利要求书中使用术语"包 括"而言,这一术语旨在以与术语"包含"在被用作权利要求书中的过渡词时所 解释的相似的方式为包含性的。
权利要求
1.一种便于数据处理的系统,包括接收SQL查询的接收器组件(102);以及将所述SQL查询划分成多个任务并将所述任务提供给多个聚类节点以便处理的划分组件(104)。
2. 如权利要求1所述的系统,其特征在于,还包括聚集从所述聚类接收到 的经处理数据的聚集组件。
3. 如权利要求1所述的系统,其特征在于,还包括如果数据到所述系统的 加载失败则启动数据到已知良好状态的回退的回退组件。
4. 如权利要求1所述的系统,其特征在于,所述聚类节点的子集担当从 web服务器读取web日志并将所述web日志的子集提供给特定聚类节点的读取 者节点,所述特定聚类节点担当写入者节点并按照合适的形式格式化所述数据 以便查询。
5. 如权利要求l所述的系统,其特征在于,还包括监视所述多个聚类节 点以确保所述多个任务正被执行的监视组件。
6. 如权利要求1所述的系统,其特征在于,所述多个聚类节点包括子聚类 节点的分层安排。
7. 如权利要求1所述的系统,其特征在于,在所述划分组件和所述多个聚 类节点之间进行不可靠的通信。
8. 如权利要求1所述的系统,其特征在于,所述聚类节点经由不可靠的消 息收发彼此通信。
9. 如权利要求1所述的系统,其特征在于,聚类节点包括将所接收的任务 划分成多个子任务并向多个子聚类提供所述子任务以便执行的第二划分组件。
10. 如权利要求9所述的系统,其特征在于,所述聚类节点包括聚集因 在与所述聚类节点相关联的子聚类处执行所述子任务而得到的数据的聚集组 件。
11. 如权利要求l所述的系统,其特征在于,所述多个聚类驻留在无共 享存储体系结构内。
12. 如权利要求1所述的系统,其特征在于,还包括将数据从web服务 器加载到所述多个聚类节点的加载组件,所述加载组件采用一个或多个分布式 分拣算法以将一个或多个数据划分分派给一个或多个特定聚类。
13. 如权利要求1所述的系统,其特征在于,还包括利用所述SQL査询 的结果来向用户选择性地提供内容的搜索引擎。
14. 如权利要求1所述的系统,其特征在于,还包括利用所述SQL查询 的结果来向用户选择性地提供广告的广告服务器。
15. —种用于准备大量数据以便分析处理的方法,包括 接收查询;基于所述查询确定多个任务;通过使用单向消息收发将所述多个任务提供给多个聚类节点; 聚集由所述多个聚类节点关于所述多个任务提供的结果;以及 将所聚集的结果提供给OLE DB客户端。
16. 如权利要求15所述的方法,其特征在于,还包括 对所聚集的结果执行数据挖掘;以及至少部分基于所述数据挖掘提供搜索内容和广告的至少其中之一。
17. 如权利要求15所述的方法,其特征在于,所接收的查询是SQL查询。
18. 如权利要求17所述的方法,其特征在于,还包括在所述多个聚类节点中的一个或多个处,将所述任务划分成多个子任务;以及将所述子任务提供给屈从于提供所述子任务的聚类节点的多个聚类节占。
19. 如权利要求15所述的方法,其特征在于,还包括 接收用户的身份;以及至少部分基于所接收的身份生成所述査询。
20. —种数据处理系统,包括 用于接收要对几千吉字节数据执行的SQL査询的装置(102);以及 用于确定与所接收的SQL查询相关联的多个任务并将所述多个任务提供给多个聚类节点以便处理的装置(104)。
全文摘要
一种便于数据处理的系统包括接收SQL查询的接收器组件。划分组件将SQL查询划分成多个任务,并将任务提供给多个聚类节点以便处理。该系统使得非常大量的数据(例如,几千吉字节)可被快速准备以便分析处理,诸如结合搜索引擎、广告提供系统等使用。
文档编号G06F17/30GK101496012SQ200780028654
公开日2009年7月29日 申请日期2007年6月25日 优先权日2006年7月26日
发明者R·普拉萨德, T·H·哈格罗夫, V·希普诺夫 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1