数据到数据库上的用户定义加载的制作方法

文档序号:6498754阅读:190来源:国知局
数据到数据库上的用户定义加载的制作方法
【专利摘要】作为管理数据从源到数据库上的加载的一部分,根据示例,提供了用户通过其定义与数据到数据库上的加载相关的逻辑。用户定义逻辑涉及源的用户定义位置标识、要在数据上应用的用户定义过滤器、以及要在数据上执行以将数据转换成针对数据库的适当格式的用户定义解析操作中的至少一个。另外,接收用户定义逻辑并且实现用户定义逻辑以将数据加载到数据库上。
【专利说明】数据到数据库上的用户定义加载

【背景技术】
[0001]数据普遍被从多种不同类型的源加载到数据库上。各种类型的源的示例包括本地储存位置、文件传送协议(FTP)站点和Hadoop ?(例如,被存储在Hadoop ?文件系统内,Hadoop ?文件系统也被称作HDFS)。另外,被加载到数据库上的数据通常包括各种类型的格式。各种格式的示例包括Javascript对象标记法(JSON)文件、可扩展标记语言(XML)文件、定制二进制格式、tarball和7_Zip文件。

【专利附图】

【附图说明】
[0002]本公开的特征是作为示例而图示的且不被限制在下面的图中,在下面的图中,相似的附图标记指示相似的元素,在下面的图中:
图1示出了根据本公开的示例的网络环境的框图;
图2图示了根据本公开的示例的数据库机器的框图;
图3和4分别描绘了根据本公开的示例的用于管理数据从源到数据库的加载的方法的流程图;以及
图5图示了根据本公开的示例的可被采用以执行图1和2中描绘的数据库机器的各种功能的计算设备的示意表示。

【具体实施方式】
[0003]出于简明和说明性目的,通过主要参考本公开的示例来描述本公开。在下面的描述中,阐述了许多具体细节,以提供对本公开的透彻理解。然而,将显而易见的是,可以在不限制于这些具体细节的情况下实施本公开。在其他实例中,未详细描述一些方法和结构,以免不必要地使本公开模糊。在本公开中,术语“包括”意味着包括但不限于此,术语“包括……的”意味着其包括……但不限于此的。术语“基于”意味着至少部分地基于。另外,术语“一”和“一个”意图表示特定元素中的至少一个。
[0004]如贯穿本公开使用的那样,术语“数据”一般意图涵盖电子数据,诸如电子邮件(电邮)、文字处理文档、电子表格文档、网页、计算机辅助绘图文档、电子文件文件夹、数据库记录、日志、销售信息、患者信息等。
[0005]本文公开了一种用于管理数据从源到数据库上的加载的方法。本文还公开了一种用于实现该方法的设备以及一种在其上存储实现该方法的机器可读指令的非瞬变计算机可读介质。如本文所讨论,用于管理数据从源到数据库上的加载的方法包括:提供用户通过其定义与所述数据到所述数据库上的加载相关的逻辑的接口,其中,用户定义逻辑涉及所述源的用户定义位置标识和从所述源对数据的检索、要在所述数据上应用的用户定义过滤器、以及要在所述数据上执行以将所述数据转换成针对所述数据库的适当格式的解析操作。所述方法还包括:接收所述用户定义逻辑;以及实现所述用户定义逻辑以将所述数据加载到所述数据库上。
[0006]根据示例,所述用户定义逻辑还涉及定义要在从所述源检索所述数据之前满足的条件的用户定义策略。在该示例中,所述用户定义逻辑可以被注册至数据库元数据,使得所述数据的加载可以被推迟到查询时间,所述查询时间也被称作“后期绑定”。在一点上,后期绑定使得能够联合使用用户定义数据源,例如,直接在HDFS中存储的数据上运行SQL查询的能力。另外,用户可以定义用于在所述数据到所述数据库上的立即加载与后期绑定之间动态转移的用户定义策略。作为示例,用户可以定义用于在经由后期绑定在预定时间段中访问数据集多于预定次数的情况下自动将最后加载的内容保持在所述数据库中多达一周的用户定义策略。作为另一示例,用户可以定义用于在数据集极少被使用(例如,在预定时间段内被使用少于预定次数)的情况下将数据集从所述数据库移动到另一储存器(诸如HDFS)以及经由后期绑定从所述另一储存器访问数据的用户定义策略。
[0007]在一点上,数据的后期绑定实际上可能需要或可能不需要坚持到盘(persist todisk),这是由于数据仅用于查询的持续时间。取而代之,随着数据正在被本文公开的用户定义加载命令所提取,数据加载操作可以被直接流送到查询处理管线。
[0008]要加载到数据库上的数据通常具有多种不同类型的格式和大小中的一种。由此,典型地,任何单片段软件充分支持可对任何数目的用户有实际价值的每个可能数据格式和编码是不实际的。在一点上,本文公开的方法使用户能够定义定制逻辑或功能(诸如编程、代码等),以管理数据到数据库上的加载以及在某些实例中管理已经被加载到数据库上的数据。由此,用户可以实现本文公开的方法以将数据加载到数据库上,而不论数据的格式和大小以及要从其加载数据的源的格式如何。特别地,例如,本文公开的方法使作为使用定制库编码的数据中的至少一个的数据、具有定制格式的数据、经由定制源可用的数据等能够被以相对简单的方式加载到数据库上。
[0009]另外,至少一个用户的用户定义逻辑可以被存储以供该用户或供其他用户后续检索。在这点上,用户可以混合和匹配所存储的用户定义逻辑,以管理各种类型的数据从各种类型的源到各种类型的数据库上的加载,而不必每当要加载数据时定义逻辑。此外,用户可以访问所存储的用户定义逻辑以管理已经被加载到数据库上的数据。
[0010]根据示例,本文公开的方法由也管理数据库的设备实现。由此,包括相对简单用户接口的用于加载数据的统一接口可以被采用以管理数据的加载。另外,管理工具可以相对容易地跟踪和支持数据的加载。此外,数据的加载可以基本上被优化,例如,以便基本上最小化瓶颈、基本上最大化效率等等。
[0011]通过本公开的各种示例的实现,可以给用户提供担负得起在管理数据到数据库上的加载方面的相对较高级别的灵活性的选项和接口。另外,用户可以定制数据的加载的各种方面以及已经被加载到数据库上的数据的管理,而不必理解和应对成熟的分布计算系统。由此,本公开的各种示例使用户能够以相对简单且高效的方式将数据加载到数据库上以及管理数据库上的数据。
[0012]首先参考图1,示出了根据本公开的示例的网络环境100的框图。网络环境100被描绘为包括分布式数据库系统110、网络设备114、网络120和源130。分布式数据库系统110还被描绘为具有多个数据库机器112a-112n,其中“η”表示大于I的整数。应当理解,网络环境100可以包括附加部件,并且,在不脱离网络环境100的范围的情况下,可以移除和/或修改本文描述的部件中的一个或多个。例如,网络环境100可以包括任何数目的数据库机器112a-112n和源130。
[0013]数据库机器112a_112n包括在其上存储数据且能够接收从源130传送的数据的服务器或其他设备。根据另一示例,数据库机器112a包括在不使数据被存储在数据库机器112a上的情况下对其他数据库机器112b-112n之间的数据传送进行管理的机器。分布式数据库系统110是在其中数据库机器112a-112n不全部附着至公共中央处理单元(CPU)的数据库。在一点上,分布式数据库系统110使数据能够被存储在数据库机器112a-112n中的多个数据库机器中,数据库机器112a-112n可以位于一个物理位置中或分散在地理上相异的位置中。根据示例,由分布式数据库系统110提供或托管的数据库是关系数据库。
[0014]网络设备114包括例如通过其可向和从数据库机器112a_112n传递数据的网络交换机、路由器、集线器等中的任一个。另外或可替换地,数据库机器112a-112n中的至少两个可以直接连接至彼此,即,不经过网络设备114。网络120表示数据库机器112a-112n可通过其与源130通信的基础设施。在这点上,网络120包括局域网、广域网、因特网等中的任一个,并可以包括未示出的附加网络设备114。尽管未示出,数据库机器112a-112n中的任一个可以通过多个网络设备114 (例如,一系列互连交换机)连接至网络120。
[0015]下文中详细描述将数据从源130加载到在分布式数据库系统110上(例如,在数据库机器112a-112n中的至少一个上)托管的数据库上所依照的各种方式。特别地,可以以使用户(诸如计算机系统管理员、信息技术人员、终端用户等)能够基本上定制数据的提取、数据的变换和数据到数据库上的加载中的任一个以及使得能够以相对简单且高效的方式管理先前加载的数据的方式管理数据从源130到数据库的加载。另外,可以以基本上优化的方式将数据从源130加载到数据库,如下文中还更详细讨论的那样。
[0016]数据的加载可以被视为当下述至少一项发生时基本上被优化:加载数据所需的时间量基本上被最小化;正在加载的数据的拷贝的数目基本上被最小化;网络资源的消耗在数据的加载期间基本上被最小化;最高效网络资源的使用在数据的加载期间基本上被最大化;等等。另外,数据的加载可以被视为当在优化的数据加载方式不可行、违反策略等的实例中以小于优化的数据加载方式的方式执行数据的加载时基本上被优化。因此,例如,数据的加载可以被视为当以关于在数据的加载上适用的多种约束中的任一种优化的方式执行数据的加载时基本上被优化。
[0017]现在转至图2,示出了根据本公开的示例的数据库机器200的框图。数据库机器200总体上表示图1中描绘的数据库机器112a-112n中的任一个。应当理解,数据库机器200可以包括附加部件,并且在不脱离数据库机器200的范围的情况下,可以移除和/或修改本文描述的部件中的一个或多个。
[0018]数据库机器200被描绘为包括处理器202、数据储存器204、输入/输出接口 206和数据加载管理器210。数据库机器200包括例如服务器、计算机、膝上型计算机、平板计算机、个人数字助理、蜂窝电话、或执行本文公开的用于管理数据从源到数据库上的加载的方法的其他电子设备中的任一个。因此,数据库机器200可以存储数据和/或可以管理数据在其他数据库机器112a-112n中的储存。
[0019]数据加载管理器210被描绘为包括输入/输出接口 212、接口提供模块214、用户定义逻辑接收模块216、用户定义逻辑实现模块218、预定义加载栈实现模块220、数据加载优化模块222和数据加载模块224。处理器204,可包括微处理器、微控制器、专用集成电路(ASIC)等,用于执行数据库机器200中的各种处理功能。处理功能之一包括调用或实现数据加载管理器210中包含的模块212-224,如下文中更详细讨论的那样。
[0020]根据示例,数据加载管理器210包括硬件设备,诸如在板上布置的一个或多个电路。在该示例中,模块212-224包括电路部件或个体电路。根据另一示例,数据加载管理器210包括易失性或非易失性存储器,诸如动态随机存取存储器(DRAM)、电可擦除可编程只读存储器(EEPROM)、磁阻随机存取存储器(MRAM)、忆阻器、闪存、软盘、压缩盘只读存储器(⑶-ROM)、数字视频盘只读存储器(DVD-ROM)、或者其他光学或磁介质等等。在该示例中,模块212-224包括数据加载管理器210中存储的软件模块。根据另一示例,模块212-224包括硬件和软件模块的组合。
[0021]输入/输出接口 206包括硬件和/或软件接口。在任一点上,输入/输出接口 206可以通过网络设备114连接至网络(诸如因特网、内联网等),数据加载管理器210可以通过网络设备114接收和传递信息,例如,与用户定义逻辑和数据的加载相关的信息。处理器202可以将通过输入/输出接口 206接收的信息存储在数据储存器204中,并可以在实现模块212-224时使用该信息。数据储存器204包括易失性和/或非易失性储存器,诸如DRAM、EEPROM、MRAM、相变RAM (PCRAM)、忆阻器、闪存等。另外或可替换地,数据储存器204包括从可移除介质(诸如软盘、CD-ROM、DVD-ROM、或者其他光学或磁介质)读取和向可移除介质写入的设备。
[0022]关于图3和4中描绘的方法300和400更详细地讨论可实现模块212-224所依照的各种方式。图3和4分别描绘了根据本公开的示例的用于管理数据从源130到在数据库机器112a-112n、200中的至少一个上托管的数据库的加载的方法300、400的流程图。对本领域技术人员来说应当显而易见,方法300和400表示概括的说明,并且在不脱离方法300和400的范围的情况下,可以添加其他操作或者可以移除、修改或重新布置现有操作。尽管对图2中描绘的数据加载管理器210作出特别参考,作为包括可执行方法300和400中描述的操作的设备和/或机器可读指令集,但是应当理解,不同配置的设备和/或机器可读指令可以在不脱离方法300和400的范围的情况下执行方法300和400。方法400与方法300相关,其中方法400包括除方法300中包括的那些操作外的操作。因此,方法400应被理解为包括下面关于方法300讨论的所有特征。
[0023]一般来讲,方法300和400可以被分离地实现以管理数据从源130到在数据库机器112a-112n中的至少一个上托管的数据库的加载。在一点上,方法300和400可以被实现以管理数据的加载,使得用户可以相对容易地定制与数据的加载相关联的各种阶段。在另一点上,方法300和400可以被实现以管理数据的加载,使得以基本上优化的方式传送数据,如上所讨论。在另一点上,方法400可以被实现以管理被加载到数据库上的数据,例如,以管理在其之下将所加载的数据传送至另一储存器的条件。
[0024]源130可以包括在其上存储数据的单个实体或多个实体。同样地,来自源130的数据要被加载到其上的数据库可以包括单个数据库机器112a或者多个数据库机器112a-112n。另外,源130可以包括与数据要被加载到其上的(一个或多个)数据库机器112a-112n、200相同或不同数目的实体。根据示例,方法300、400被实现在数据库机器112a-112n、200中。在另一示例中,方法300、400被实现在多个数据库机器112a_112n中。
[0025]首先参考图3,在框302处,提供用户通过其定义与数据到数据库上的加载相关的逻辑的接口,例如由接口提供模块214提供。接口可以包括例如给用户提供与数据从源130到数据库上的加载有关的各种选项和特征的门户,诸如web门户、桌面门户等。根据示例,在对数据库机器200来说本地(即,连接至数据库机器200)或对数据库机器200来说远程(即,连接至数据库机器200的客户端机器(未示出))的监视器上显示接口。
[0026]接口一般提供用户可通过其引导数据加载管理器210以从源130加载数据的机制。特别地,接口提供用户可通过其定义与源130的用户定义位置标识、要在数据上应用的用户定义过滤器、以及要在数据上执行以将数据转换成针对数据库的适当格式的解析操作有关的逻辑的机制。接口还可以提供用户可通过其定义与定义要在从源检索数据之前满足的条件的用户定义策略有关的逻辑的机制。另外或可替换地,用户定义策略可以定义要如何管理被加载到数据库上的数据。
[0027]根据示例,接口给用户提供对包括先前定义的逻辑的库的访问。另外或可替换地,接口给用户提供例如通过任何合适编程语言(诸如C++、结构化查询语言(SQL)等)对逻辑进行编程的能力。因此,例如,用户可以通过直接对逻辑进行编程或通过选择先前定义(例如,编程)的逻辑来定义与数据从源130到数据库的加载相关的逻辑。先前定义的逻辑可以已由该用户、另一用户、数据加载管理器的编程者、第三方供应商等创建并被存储在库中。
[0028]一般来讲,用户定义逻辑提供用户可通过其写入和安装定制库以处理数据加载过程的各种阶段的机制。在一点上,通过给用户提供用于定义用于执行数据加载过程的各种阶段的逻辑的接口,用户能够利用定制实现来选择性地替换数据加载栈的任意部分。另外,用户(诸如开发者)可以写入针对数据加载过程的各种阶段的全功能且可互换的逻辑。因此,给用户提供了在将各种类型的数据从各种类型的源130加载到数据库上方面的相对较尚级别的灵活性。
[0029]在一个示例中,用户定义源130的位置标识。源130的位置标识可以包括例如源130的网际协议(IP)地址或者可以用于访问源130的源130的其他位置标识符。用户还可以定义与访问来自源130的适当数据相关联的参数。参数可以包括例如在其中在源130上存储数据的特定文件夹以及数据的文件名。另外,参数可以包括适当密码、安全性密钥和访问源130上的数据可能需要的其他信息。
[0030]在另一示例中,用户定义要被应用于从源130检索的数据的至少一个过滤器。用户可以基于与数据相关联的各种因素(诸如,数据是否被压缩、什么类型的压缩方案被用于压缩数据、数据是否要被压缩、什么类型的压缩方案要被用于压缩数据、数据是否要被从一个格式转换成另一个、数据要被转换成的格式的类型、数据是否要被解密、什么类型的解密方案要被采用等等)来定义该至少一个过滤器。由此,(一个或多个)过滤器可以包括用于对数据进行解压缩的过滤器、用于对数据进行压缩的过滤器、用于将数据从一个格式转换成另一个的过滤器、用于对数据进行解密的过滤器、用于呈现数据(例如,将JPEG图像转换成位图形式)的过滤器等中的至少一个。
[0031 ] 在另一示例中,用户定义要在数据上执行以将数据转换成适当格式以加载到数据库上的解析操作。可替换地,合适解析操作可以是预定义的,这是由于数据库所需的格式可能已经是已知的。在任一点上,解析操作可以包括将数据格式化成元组以供数据库系统110使用,数据库系统110可以包括关系数据库系统。
[0032]在又一示例中,用户定义对要在从源检索数据之前满足的条件进行定义的策略。在这点上,用户定义策略可以使数据到数据库上的加载被推迟,例如直到查询时间,该查询时间也被称作“后期绑定”。在一点上,后期绑定使得能够联合使用用户定义数据源,例如,直接在HDFS中存储的数据上运行SQL查询的能力。另外,用户可以定义用于在数据到数据库上的立即加载与后期绑定之间动态转移的用户定义策略。
[0033]根据示例,通过使用外部表来实现后期绑定能力,在外部表中,EXTERNAL关键字被添加到SQL CREATE TABLE,其向数据库指示数据未被存储在数据库内。尽管外部表的典型使用涉及提供数据库外部的数据文件的列表,但是在本文公开的用户定义逻辑的情况下,COPY命令与CREATE EXTERNAL TABLE声明相关联。由此,每当在查询中使用外部表,都运行用户定义逻辑命令以首先将数据加载到数据库中,并且在用户定义逻辑命令之上运行查询。在另一示例中,通过在源系统上使用元数据来实现后期绑定能力,例如,在Hadoop ?的情况下,HCatalog被用作元数据源。
[0034]在又一示例中,用户定义对要如何管理被加载到数据库上的数据进行定义的策略。在这点上,用户定义策略可以使得以特定方式管理被加载到数据库上的数据。作为示例,用户可以定义用于在经由后期绑定在预定时间段中访问数据集多于预定次数的情况下自动将最后加载的内容保持在数据库中多达一周的用户定义策略。作为另一示例,用户可以定义用于在数据集极少被使用(例如,在预定时间段内被使用少于预定次数)的情况下将数据集从数据库移动到另一储存器(诸如HDFS)以及经由后期绑定从所述另一储存器访问数据的用户定义策略。
[0035]在框304处,接收用户定义逻辑,例如由用户定义逻辑接收模块216接收。根据示例,用户可以通过接口来定义与数据从源130到数据库上的加载相关的逻辑,并可以通过接口来提交所定义的逻辑。在这点上,例如,接口可以提供用户定义逻辑提交特征,用户可以选择该用户定义逻辑提交特征来将用户定义逻辑提交到数据加载管理器210。
[0036]另外,在框304处,可以将用户定义逻辑存储在库中,例如,以便使用户定义逻辑能够可检索以供该用户或供另一用户后续使用。在该示例中,用户可以针对用户所定义的逻辑提供标题,例如,在逻辑与源130相关时,提供数据的格式和/或已定义的过滤器的类型。因此,可以使用描述性标题来存储用户定义逻辑,以使用户能够找到和实现用户定义逻辑。
[0037]—旦用户定义逻辑已经被写入、编译和接收,就要向数据引擎(例如,处理器202)通知用户定义逻辑的存在。这是例如通过将新SQL声明添加到数据库机器112a来执行的,该添加允许基于表示所编译的用户定义逻辑的共享库的路径和要使用的该共享库内部的用户定义逻辑对象的名称来注册用户定义逻辑。
[0038]在框306处,实现用户定义逻辑以将数据从源130加载到数据库上,例如由用户定义逻辑实现模块218实现。尽管未示出,可以将用户定义逻辑实现为预配置数据加载栈的一部分,例如由预定义加载栈实现模块220实现。特别地,例如,预定义加载栈实现模块220可以执行除与用户定义逻辑相对应的功能外的预定义功能。预定义功能可以包括例如将数据变换成适于将数据加载到数据库上的格式的解析操作、用于将数据从特定格式转换成针对解析操作中的处理而兼容的格式的转换操作等等。预定义功能还可以包括例如与用户定义过滤器的实现相关联的各种引用的调用。
[0039]根据示例,为了调用用户定义逻辑,生成用于将文件加载到数据库中的现有句法的扩展,例如,COPY声明。COPY声明添加了 WITH从句。作为特定示例,用户可以写入“WITHSOURCE MyExampleSource () ” 或 “WITH PARSER MyExampleParser () ”。引用还可以米取关键字自变量:例如,“WITH FILTER MyExampleFilter (argument= “value”,integer_argument=12345) ”。自变量被传递到用户定义逻辑,用户定义逻辑可以使用这些自变量来通知用户定义逻辑如何执行用户定义逻辑正在执行的计算。
[0040]在任一点上以及根据示例,由于用户定义逻辑由还管理数据库的数据加载管理器210实现,因此加载操作可以基本上被优化,例如由数据加载优化模块222优化。更特别地,例如,数据加载优化模块222可以获得与数据从源130的加载相关的信息,诸如要从其加载数据的源130的数目、可用于接收数据的数据库机器112a-112n的数目、源130的位置、数据库机器112a-112n的位置、要被传送的数据的类型、要被传送的数据的大小、数据的内容、要被应用于数据的过滤器的类型等等。数据加载优化模块222可以获得与数据的加载相关的信息,作为用户定义逻辑的接收的一部分。
[0041]另外,数据加载优化模块222可以基于与数据的加载相关的信息来确定基本上优化数据的加载的数据加载操作。基本上优化的数据加载操作可以是通过在与数据的加载相关的信息上实现多种不同类型的优化器中的任一种来确定的。例如,可以实现基于规则的优化器,该基于规则的优化器基于与数据加载相关的信息是否指示预定条件已被满足来确定基本上优化的数据加载操作。在该示例中,可以利用指示要在某些条件下实现某些数据加载操作的指令来对基于规则的优化器进行编程。
[0042]作为另一示例,可以实现基于成本的优化器,该基于成本的优化器基于关于哪个数据加载实现导致最低成本的确定来确定数据加载操作。例如,基于成本的优化器可以在各种数据加载操作场景上运行预测性模型,确定与数据加载操作场景中的每一个相关联的成本,并可以识别导致最低成本的数据加载操作场景以传送数据。该示例中的成本可以包括例如资源利用、能量利用、带宽消耗等中的任一个。
[0043]作为另一示例,可以实现采用历史信息以确定数据加载操作的机器学习优化器。在该示例中,机器学习优化器可以将与数据到数据库机器112a-112n上的加载有关的各种历史信息当作输入,并可以使用历史信息以基于与数据的当前加载相关的信息来确定基本上优化数据的当前加载的数据加载操作。在该示例中可以采用多个合适机器学习优化器中的任一个。
[0044]不管所实现的优化器的类型如何,可以采用多种各种类型的数据加载操作中的任一种来基本上优化数据的传送。另外,可以采用数据加载操作的类型的各种组合来基本上优化数据的加载。
[0045]根据示例,用户定义逻辑被实现以从源130流送数据、随着数据被流送而对数据进行过滤、对流送的数据进行解析以及将经解析的数据加载到数据库上。在该示例中,可以将相对较大的数据文件加载到数据库上而不首先本地存储数据文件。然而,可替换地,可以在过滤、解析和加载操作的执行之前首先从源130本地存储数据。关于图4中描绘的方法400更详细地描述数据加载管理器210可在将数据从源130加载到数据库上时实现的各种操作。
[0046]现在转至图4,在框402处,提供用户通过其定义与数据到数据库上的加载相关的逻辑的接口,例如由接口提供模块214提供。框402类似于上面关于图3讨论的框302。另夕卜,在框404处,接收用户定义逻辑,例如由用户定义逻辑接收模块216接收,这类似于上面关于图3讨论的框304。
[0047]在框406处,实现用户定义逻辑以从源130检索数据,例如由用户定义逻辑实现模块218实现。特别地,使用与源130的用户定义位置标识有关的用户定义逻辑来从源130检索数据。因此,例如,用户定义逻辑实现模块218基于与源130的位置和源130上的特定文件位置相关联的用户定义位置标识来访问数据。如上所讨论,用户定义逻辑可以包括使数据加载管理器210能够访问和检索源130上存储的数据的各种信息,诸如密码、安全性密钥等。用户定义逻辑实现模块218还可以使用各种信息来从源130访问和检索数据。也如上讨论的那样,可以在从在框404处接收用户定义逻辑的时间推迟的时间处(例如,在查询时间期间)实现框406。
[0048]在框408处,实现用户定义逻辑以对从源130检索的数据进行过滤,例如由用户定义逻辑实现模块218实现。如上所讨论,用户可以定义要被应用到数据上的至少一个过滤器,例如,以便处理数据以处于更好或更兼容的形式以加载到数据库上。过滤器可以包括例如用于对数据进行解压缩的过滤器、用于对数据进行压缩的过滤器、用于将数据从一个格式转换成另一个的过滤器等中的至少一个。
[0049]在已经使用特定压缩方案压缩源130上存储的数据的示例中,用户定义逻辑可以定义用于对数据进行解压缩的过滤器。因此,例如,如果已经使用zip压缩方案(例如BZIP、GZIP、7-ZIP等)压缩数据,则用户可以定义用于使用适当解压缩方案对数据进行解压缩的逻辑。
[0050]作为在其中源130上存储的数据具有第一格式的另一示例,用户定义逻辑实现模块218可以实现将数据从第一格式转换成第二格式的过滤器,如用户所定义。在该示例中,用户可以定义将数据从第一格式(例如,原生格式)转换成第二格式(例如,原生变长字符(NChar)格式)的过滤器。在定义过滤器时,用户可以指定:特定转换器程序被执行,以执行数据的转换。在一个示例中,特定转换器程序可以包括用户可通过特定转换器程序的标识而指定的先前定义的程序。在该示例中,用户定义逻辑实现模块218可能能够从本地库或从远程位置访问先前定义的程序。在任一点上,第二格式可以包括可适当从其格式化数据以加载到数据库上的格式。作为特定示例,过滤器可以被定义为将数据从第一格式转换成第二格式,该第二格式容易被转换成适于被解析成在数据库中存储数据所依照的格式的格式。
[0051]在框410处,对数据进行解析以将经过滤的数据转换成针对数据库的适当或兼容格式,例如由用户定义逻辑实现模块218解析。在经过滤的数据上执行的解析操作可以是用户定义的,即,用户可以定义要在经过滤的数据上执行的特定解析操作。可替换地,解析操作可以是在用户定义逻辑实现模块218中预定义的,这是由于针对数据库的适当或兼容格式可能已经是已知的。
[0052]在框412处,将经解析的数据加载到数据库上,例如由数据加载模块224加载。根据示例,数据加载模块224将经解析的数据直接加载到特定数据库机器112a上。在另一示例中,数据加载模块224根据数据加载优化操作(例如,如数据加载优化模块所确定)将经解析的数据加载到多个数据库机器112a-112n上。上文中关于方法300更详细地描述数据加载优化模块222可基本上优化数据到数据库机器112a-l 12η中的多个数据库机器上所依照的各种方式。数据的加载可以是通过对数据进行分段和/或分类中的至少一个以及通过以分段和/或分类的方式将数据存储在数据库机器112a-l 12η中的多个数据库机器上来基本上优化的。
[0053]根据示例,数据的加载还可以通过在数据库机器112a_112n中的多个数据库机器上实现方法400而基本上优化,从而分发与加载数据相关联的工作量。因此,例如,多个数据库机器112a-112n可以检索数据的不同部分,并可以同时过滤、解析和加载数据。作为另一示例,数据库机器中的一个112a可以从源130检索数据,数据库机器中的另一个112b可以对数据进行过滤,并且数据库机器中的另一个112c可以解析和加载数据。可以通过执行任何合适优化技术来确定基本上优化数据到数据库上的加载的数据库机器112a-112n的实现。
[0054]根据示例,在从源130流送数据的同时实现框406-412。因此,在该示例中,在给定时间处处理数据的相对较小部分,从而基本上最小化数据库机器112a-112n的数据储存需求。另外,可以实现输入缓冲器和输出缓冲器,其中,输入缓冲器包含来自数据流的一些输入,并且输出缓冲器被用于对来自输入缓冲器的数据进行写处理。
[0055]在另一示例中,在框406处,从源130拷贝所有数据并将该所有数据存储在例如数据储存器204中。在该示例中,在数据的所存储的拷贝上实现框408-412,这因此需要数据库机器112a-112n具有相对较大的数据储存能力。
[0056]在框414处,管理被加载到数据库上的数据,例如由用户定义逻辑实现模块218管理。如上所讨论,可以管理被加载到数据库上的数据,例如,以便控制在其期间在数据库中存储数据的时间的长度、在其之下要将数据传送至另一储存器的条件等等。
[0057]在方法300和400中阐述的一些或所有操作可以作为实用程序、程序或子程序而被包含在任何期望计算机可访问介质中。另外,方法300和400可以由计算机程序体现,该计算机程序可以以多种形式(活动和不活动二者)存在。例如,它们可以作为机器可读指令而存在,该机器可读指令包括源代码、目标代码、可执行代码或其他格式。上面任一项可以被体现在非瞬变计算机可读储存介质上。非瞬变计算机可读储存介质的示例包括传统计算机系统RAM、ROM、EPROM, EEPROM和磁或光盘或带。因此应当理解,能够执行上述功能的任何电子设备可以执行上面列举的那些功能。
[0058]现在转至图5,示出了根据示例的可被采用以执行图1和2中分别描绘的数据库机器112a-112n、200的各种功能的计算设备500的示意表示。计算设备500包括:处理器502,诸如但不限于中央处理单元;显示设备504,诸如但不限于监视器;网络接口 508,诸如但不限于局域网LAN、无线802.11 LAN、3G/4G移动WAN或WiMAX WAN ;以及计算机可读介质510。这些部件中的每一个操作性地耦合至总线512。例如,总线512可以是EISA、PC1、USB、火线、NuBus 或 PDS。
[0059]计算机可读介质510包括参与将指令提供给处理器502以用于执行的任何合适介质。例如,计算机可读介质510可以是非易失性介质,诸如存储器。计算机可读介质510还可以存储:操作系统514,诸如但不限于Mac OS,MS Windows、Unix或Linux ;网络应用516 ;以及数据加载管理应用518。操作系统514可以是多用户的、多处理的、多任务的、多线程的、实时的等等。操作系统514还可以执行基本任务,诸如但不限于:识别来自输入设备的输入,诸如但不限于键盘或键区;将输出发送至显示器504 ;跟踪介质510上的文件和目录;控制外围设备,诸如但不限于盘驱动器、打印机、图像捕获设备;以及管理总线512上的业务。网络应用516包括用于建立和维护网络连接的各种部件,诸如但不限于用于实现包括TCP/IP、HTTP、以太网、USB和火线的通信协议的机器可读指令。
[0060]数据加载管理应用518提供用于如上面关于图3和4中的方法300和400讨论的那样管理数据从源到数据库系统的加载的各种部件。因此,数据加载管理应用518可以包括输入/输出模块212、接口提供模块214、用户定义逻辑接收模块216、用户定义逻辑实现模块218、预定义加载栈实现模块220、数据加载优化模块222和数据加载模块224。在这点上,数据加载管理应用518可以包括用于执行方法300和/或400的模块。
[0061]在某些示例中,由应用518执行的一些或所有过程可以被集成到操作系统514中。在某些示例中,过程可以至少部分地被实现在数字电子电路中、或计算机硬件、机器可读指令(包括固件和软件)中、或者其任何组合中,也如上所讨论的。
[0062]本文已经描述和说明的是本公开的示例连同一些变型。本文使用的术语、描述和附图是仅作为说明而阐述的,并不意在限制。许多变型在本公开的范围内是可能的,本公开的范围意图由所附权利要求及其等同物限定,在所附权利要求中,所有术语是在其最宽合理意义上表示的,除非另有指示。
【权利要求】
1.一种用于管理数据从源到数据库的加载的方法,所述方法包括: 提供用户通过其定义与所述数据到所述数据库上的加载相关的逻辑的接口,其中,用户定义逻辑涉及所述源的用户定义位置标识、要在所述数据上应用的用户定义过滤器、以及要在所述数据上执行以将所述数据转换成针对所述数据库的适当格式的解析操作; 接收所述用户定义逻辑;以及 由处理器实现所述用户定义逻辑以将所述数据加载到所述数据库上。
2.根据权利要求1所述的方法,其中,提供接口进一步包括提供用户通过其而通过对逻辑进行编程定义逻辑的接口,所述方法进一步包括: 将所编程的逻辑存储在库中。
3.根据权利要求1所述的方法,其中,提供接口进一步包括通过接口来提供对在其上存储先前定义的逻辑的库的访问,并且其中,接收用户定义逻辑进一步包括从该库接收先前存储的逻辑。
4.根据权利要求1所述的方法,其中,要在所述数据上应用的用户定义过滤器用于执行下述至少一项:对所述数据进行解压缩、对所述数据进行压缩以及对所述数据进行转换。
5.根据权利要求1所述的方法,其中,实现用户定义逻辑进一步包括将用户定义逻辑实现为预配置数据加载栈的一部分。
6.根据权利要求1所述的方法,其中,实现用户定义逻辑进一步包括: 使用所述源的用户定义位置标识来从所述源检索数据; 使用所述用户定义过滤器来对数据进行过滤; 通过所述解析操作的执行来解析数据;以及 将经解析的数据加载到所述数据库上。
7.根据权利要求6所述的方法,其中,检索、过滤、解析和加载经解析的数据进一步包括:随着从所述源流送数据而检索、过滤、解析和加载经解析的数据。
8.根据权利要求1所述的方法,其中,所述用户定义逻辑进一步涉及定义要在从所述源检索数据之前满足的条件的用户定义策略。
9.根据权利要求1所述的方法,其中,所述用户定义逻辑进一步涉及定义要如何管理被加载到所述数据库上的数据的用户定义策略。
10.根据权利要求1所述的方法,其中,实现用户定义逻辑进一步包括在管理所述数据库的系统中实现用户定义逻辑,其中,管理所述数据库的系统包括分布式数据库系统,并且其中,实现用户定义逻辑进一步包括在实现数据库优化操作的同时在所述分布式数据库系统中的多个系统上实现用户定义逻辑。
11.一种用于管理数据从源到数据库上的加载的设备,所述设备包括: 至少一个模块,用于: 提供用户通过其定义与所述数据到所述数据库上的加载相关的功能的接口,其中,用户定义功能涉及所述源的用户定义位置标识、要在所述数据上应用的用户定义过滤器、以及要在所述数据上执行以将所述数据转换成与所述数据库兼容的格式的解析操作; 接收所述用户定义功能;以及 实现所述用户定义功能以将所述数据加载到所述数据库上; 处理器,用于实现所述至少一个模块。
12.根据权利要求11所述的设备,其中,用户定义逻辑进一步涉及定义要在从所述源检索数据之前满足的条件以及被加载到所述数据库上的数据的管理中的至少一个的用户定义策略,并且其中,所述至少一个模块进一步用于: 根据所述用户定义策略,使用所述源的用户定义位置标识来从所述源检索数据; 使用所述用户定义过滤器来对数据进行过滤; 通过所述解析操作的执行来解析数据;以及 将经解析的数据加载到所述数据库上。
13.根据权利要求11所述的设备,其中,所述设备包括数据库管理设备。
14.根据权利要求11所述的设备,其中,所述数据库是关系数据库。
15.一种在其上存储机器可读指令的非瞬变计算机可读储存介质,所述机器可读指令在被处理器执行时实现用于管理数据从源到数据库上的加载的方法,所述机器可读指令包括用于执行下述操作的代码: 提供用户通过其定义与所述数据到所述数据库上的加载相关的代码的接口,其中,用户定义代码涉及所述源的用户定义位置标识、要在所述数据上应用的用户定义过滤器、定义要在从所述源检索数据之前满足的条件以及被加载到所述数据库上的数据的管理中的至少一个的用户定义策略、以及要在所述数据上执行以将所述数据转换成与所述数据库兼容的格式的解析操作; 接收所述用户定义代码; 实现所述用户定义代码以将所述数据变换成适于将所述数据加载到所述数据库上的格式;以及 实现所述用户定义代码以将所述数据加载到所述数据库上。
【文档编号】G06F15/16GK104508660SQ201280075125
【公开日】2015年4月8日 申请日期:2012年6月4日 优先权日:2012年6月4日
【发明者】西林 A., 文卡特什 R., E. 比尔 C., 拉万德 S., A. 兰布 A. 申请人:惠普发展公司,有限责任合伙企业
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1