CN108292323B - 使用数据源的元数据的数据库操作 - Google Patents
使用数据源的元数据的数据库操作 Download PDFInfo
- Publication number
- CN108292323B CN108292323B CN201680070437.XA CN201680070437A CN108292323B CN 108292323 B CN108292323 B CN 108292323B CN 201680070437 A CN201680070437 A CN 201680070437A CN 108292323 B CN108292323 B CN 108292323B
- Authority
- CN
- China
- Prior art keywords
- data
- examples
- module
- metadata
- query
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9032—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/186—Templates
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
在一些示例中,计算设备从作业规范确定数据操纵。设备使用数据源元数据确定对应的数据处理指令,并且确定并执行相应的查询。在一些示例中,设备接收搜索关键字。设备使用搜索关键字搜索数据源元数据。设备基于数据源之间的生产者‑消费者关系来加权第一数据源,并使用权重对第一数据源进行排名。在一些示例中,设备确定数据记录的结构和内容信息。设备从结构信息确定数据源标识符,并将内容信息与数据源标识符一起存储在数据库中。在一些示例中,经由用户界面,设备接收作业规范和注释数据。设备将规范和注释数据存储在元数据储存库中。
Description
背景
数据库越来越多地用于复杂分析或数据挖掘任务,诸如模式提取和聚集(clustering)。许多类型的数据库正在使用中,包括关系型数据库管理系统(RDBMS)(诸如可使用结构化查询语言(SQL)访问的那些数据库管理系统)以及以非关系形式(例如分层地)存储数据的非RDBMS或“NoSQL”数据库。此外,许多类型的查询接口正在使用中,包括SQL数据库客户端、统计编程语言(诸如R)和联机分析处理(OLAP)客户端应用。此外,现在可以以许多形式提供数据,包括经由SQL INSERT语句、超文本传输协议(HTTP)(或全程安全的HTTP、HTTPS以及类似者)POST请求以及富文本摘要(Rich Site Summary;RSS)或Atom格式的联合报告。
概述
本公开描述了用于将数据加载到数据库、搜索数据库及管理数据库的系统、方法、保存处理器可执行指令的计算机可读介质以及用户界面。在一些示例中,计算设备至少部分地基于作业规范来确定数据操纵,其中(诸)数据源中的至少一个数据源与作业规范相关联。计算设备至少部分地基于数据操纵和(诸)数据源中的该至少一个数据源的至少一些元数据来确定数据处理指令。计算设备至少部分地基于作业规范来确定来自数据处理指令的查询。计算设备通过至少部分地基于查询来访问来自(诸)数据源的至少一个数据源的数据而执行查询以提供查询结果。
在其他示例中,计算设备接收包括一个或多个搜索关键字并指示多个数据源的搜索请求。计算设备至少部分地基于多个数据源中的至少两个数据源之间的生产者-消费者关系来确定多个数据源中的第一数据源的权重。计算设备使用搜索关键字来搜索与多个数据源中的至少一个数据源相关联的元数据以标识多个数据源中的匹配数据源,其中匹配数据源对应于搜索请求。计算设备至少部分地基于所确定的权重来确定多个数据源中的至少该第一数据源和第二数据源的排名信息。
在又一些其他示例中,计算设备从数据流接收数据记录。计算设备确定数据记录的结构信息和数据记录的内容信息。计算设备至少部分地基于结构信息来确定数据源标识符。计算设备将内容信息与数据源标识符相关联地存储到数据库中。
在另一些其他示例中,计算设备呈现包括至少一个查询准则控件和至少一个结果字段控件的用户界面。计算设备经由用户界面接收作业规范的信息。作业规范包括查询准则和结果字段规范。计算设备在用户界面中呈现注释控件。计算设备经由用户界面接收注释数据。计算设备在元数据储存库中与注释数据相关联地存储作业规范的信息。
提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。例如术语“技术”可指代上述上下文和通篇文档中所准许的(诸)系统、(诸)方法、计算机可读指令、(诸)引擎、(诸)模块、算法、硬件逻辑和/或(诸)操作。
附图简述
结合附图来描述具体实施方式。在附图中,附图标记最左边的数字标识该附图标记首次出现的附图。不同附图中的相同参考标记指示相似或相同的项。
图1是描绘了用于实现如本文描述的数据库的操作的示例环境的框图。
图2是描绘了根据本文描述的各示例的被配置成参与数据库的操作的示例计算设备的框图。
图3是描绘了在数据库的操作期间的示例模块交互的数据流图。
图4示出了数据库操作的示例数据流图。
图5示出了与图4所示的示例数据流图对应的模板树。
图6是示例数据库用户界面的图形表示。
图7是示出根据本文描述的各示例的用于操作数据库的示例过程的流程图。
图8是示出根据本文描述的各示例的用于搜索数据库的示例过程的流程图。
图9是示出根据本文描述的各示例的用于搜索数据库的示例过程的流程图。
图10是示出根据本文描述的各示例的用于搜索数据库的示例过程的流程图。
图11是示出根据本文描述的各示例的用于更新数据库的示例过程的流程图。
图12是示出根据本文描述的各示例的用于更新数据库的示例过程的流程图。
图13是示出根据本文描述的各示例的用于更新元数据储存库的示例过程的流程图。
图14是示出根据本文描述的各示例的用于搜索元数据储存库的示例过程的流程图。
图15是示例数据摄取用户界面的图形表示。
图16是示例报告或数据导出用户界面的图形表示。
详细描述
概览
本文描述的示例提供用于改善数据库操作(例如针对聚集来自多个数据源的数据的数据库的查询)的准备和执行的技术和构造。数据库操作可以包括例如至少摄取、存储、索引、搜索、变换、聚集、分析或导出数据,或者导出对数据的搜索、变换、聚集或分析的结果。一些示例例如从用户接收作业规范,并确定对应于作业规范的查询。至少部分基于作业规范提供的查询可以抽象指定作业使用的(诸)个体数据源的细节。一些示例在搜索中加权数据源,使得例如用户可以容易地定位要并入到查询中的相关数据源。一些示例处理传入数据记录(例如,流传输数据)以不仅存储数据,而且存储数据记录的结构信息或其他元数据。
作业规范可以描述或以其他方式指示要执行的数据库操作,并且可以附加地指示该数据库操作的至少一些参数。示例作业规范可以指定从数据源检索数据的摄取作业。摄取作业可以例如将检索到的数据存储到数据库中。摄取作业可以附加地或替代地对数据进行索引并将索引存储在数据库中,或将数据存储在文档存储中,诸如执行所存储数据的索引的NoSQL数据存储。索引所存储数据可以准许容易地执行对所存储数据的搜索。另一示例作业规范可以指定检索作业,该检索作业从数据库检索匹配所选准则的数据记录。另一示例作业规范可以指定处理数据库中的数据的分析作业,例如通过摘要或聚集数据或对数据执行数学运算。又一示例作业规范可以指定将数据从数据库导出到另一数据库或另一数据阱(例如MICROSOFT EXCEL电子表格)的导出作业。在一些示例中,作业规范可以指定多于一个数据库操作。
准备对应于作业规范的查询的各种示例可以允许用户与直接将复杂的数据库操作制定为查询相比更快地将这样的操作制定为作业规范。准备查询的各种示例可以允许应用查询计划优化技术来减少作业规范的运行时、内存要求、磁盘要求或网络要求。准备查询的各种示例可以允许使用存储的模板跨多个作业应用高效查询技术。
加权数据源的各种示例可以允许响应于用户查询来定位相关数据源。这些示例中的一些示例可以减少用户花费在定位特定作业的数据源上的时间量。加权数据源的一些示例可以减少用户在制定作业时必须咨询的匹配数据源的数量,从而允许减少在用户制定作业时检索有关数据源的信息所消耗的网络带宽量。
处理传入数据记录的各种示例可以有效地分离具有不同字段或结构的传入记录。处理传入数据记录的各种示例可以减少将数据摄取到数据库中并将数据更快地提供给相关作业所需的时间。处理传入数据记录的各种示例可以将记录与元数据相关联地存储在数据库中,所述元数据将作业容易访问的不同类型的记录作为独立数据源呈现。
一些示例使用作为集群计算系统(“计算集群”或“集群”)的一部分提供的处理单元,其具有若干离散计算节点,这些节点一起工作以完成分配给作为整体的集群的计算任务。一些此类系统可使集群的全部或一部分部署在云中。云计算允许将计算资源作为服务而非可递送产品来提供。例如,在云计算环境中,通过诸如因特网等网络来提供(例如,通过租赁协议)诸如计算能力、软件、信息、存储和/或网络连通性等资源。如本文所使用的,参考计算集群、节点和作业使用的术语“计算”一般而言指计算、数据存储或检索、数据操纵或其他程序控制的操作。参考集群、节点和作业使用的术语“资源”一般而言指集群提供的供作业使用的任何商品或服务。资源可以包括处理器周期、磁盘或其他非易失性存储上的空间、随机存取存储器(RAM)或其他易失性存储中的空间、网络带宽(上行链路、下行链路或两者)、优先化网络通道,诸如用于带服务质量(QoS)保证的通信的那些网络通道、备份磁带空间或安装/卸载服务、电力等。
如本文所使用的,术语“数据库”一般而言指被配置成保留数据并允许或执行针对保留数据的查询的数据存储。数据库可以存储在易失性或非易失性存储或其组合中。数据库至少可以包括例如数据仓库、RDBMS、NoSQL数据库、诸如WINDOWS注册表的键值存储、平面文件或者平面文件集合、或者结构化或非结构化的其他数据存储。在一些示例中,数据库可包括一个或多个表、阵列、索引、存储的过程等以实现数据访问。可用于各个方面的示例数据库包括MICROSOFT AZURE存储、MICROSOFT AZURE SQL服务、APACHE LUCENE、ELASTICSEARCH和MICROSOFT SQL SERVER。
在一些示例中,数据库可以包括例如数据或数据库结构、数据库模式或其任何组合的元数据或与其关联。数据源的元数据或从数据源抽取的数据库的元数据可以描述例如数据源的位置,诸如网络地址;用于连接到该数据源的连接细节;或安全信息,诸如连接到数据源所需的访问权限或组成员资格。数据库结构或模式的元数据可以描述例如数据库中的字段、那些字段的数据类型或那些字段之间的关系,诸如SQL数据库中的外键关系。
参考图1-14进一步描述了用于准备和执行数据库查询的各种环境、电子设备的配置以及方法,例如以用于数据挖掘应用。尽管本文描述的许多示例涉及服务器和其他非消费者电子设备,但是可以使用其他类型的电子设备,例如,如参考图1所讨论的。
说明性环境
图1示出了数据库系统的各示例可在其中操作的或诸如以下描述的数据库操作可在其中被执行的示例环境100。在所解说示例中,环境100的各种设备和/或组件包括计算设备102(1)-102(N)(本文中单独地或共同地用参考标号102来指代),其中N是大于或等于1的任何整数;例如,分布式计算资源,以及计算设备104(1)-104(K)(本文中单独地或共同地用参考标号104来指代),其中K是大于或等于1的任何整数。在一些示例中,N=K;在其它示例中,N>K或N<K。尽管被示为例如台式计算机、膝上型计算机、平板计算机或蜂窝电话,但计算设备102或104可包括各种各样的设备类别、种类或类型,并且不限于特定类型的设备。在所解说的示例中,计算设备102(1)-102(N)可以是计算集群106中的计算节点,例如诸如微软AZURE等云服务。在一些示例中,集群106提供诸如磁盘空间的存储资源,或者诸如CPU周期或主存数据分析或数据挖掘软件的数据分析或数据挖掘资源服务。在所解说的示例中,计算设备104可以是集群106(例如云主存的数据库集群)的客户端并可以向集群106提交作业和/或从集群106接收作业结果。集群106中的计算设备102(1)-102(N)可例如共享资源、平衡负载、提高性能、或提供故障切换支持或冗余性。计算设备104可附加地或替代地在集群或编组配置中操作。
作为示例而非限制,计算设备102或104可以包括但不限于:服务器计算机或诸如Web服务器等刀片服务器,map/reduce(映射/化简)服务器或其他计算引擎,或网络附加存储单元(例如,102(1)),膝上型计算机,瘦客户端,终端或其他移动计算机(例如104(1)),诸如智能手表或生物计量或医疗传感器等可穿戴计算机,诸如生物计量或医疗传感器等植入计算设备,计算机导航客户端计算设备,包括全球定位系统(GPS)设备和其他基于卫星的导航系统设备在内的基于卫星的导航系统设备,个人数据助理(PDA),以及其他专用便携式电子设备(例如104(2)),平板计算机或平板混合计算机(例如,104(3)),智能电话,移动电话,移动电话-平板混合设备,或其他电信设备(例如,104(4)),便携式或基于控制台的游戏设备或诸如启用网络的电视机,机顶盒,媒体播放器等其他娱乐设备,相机或个人录像机(PVR)(例如104(5),图形地表示为游戏手柄),诸如车辆控制系统、车辆安全系统或用于车辆的电子钥匙等汽车计算机(例如104(N),被图形地表示为汽车),台式计算机,或用于包括在计算设备中的整合组件,电器,或被配置为参与或执行如本文所述的DNN训练或操作以例如用于预测目的的其它计算设备。在一些示例中,如所指示的,计算设备(例如,计算设备102(1)和102(2))可以相互通信以参与或执行如本文描述的数据库操作。例如,计算设备104(1)可以是数据源,并且计算设备102(2)可以是数据库系统,如下面参考例如图2和3描述的。
计算设备102和104的不同设备或类型可以具有与集群106交互的不同需求或方式。例如,计算设备104可以利用离散请求/响应通信与集群106交互,例如以触发先前准备的查询的执行并接收结果。附加或替代地,计算设备104可以是数据源并且可以通过要被存储在数据库中的数据的离散的或正在进行的传输与集群106交互。例如,计算设备104可以包括监视其他计算系统并将遥测事件提供给计算设备104的服务器。在一些示例中,计算设备104可以执行提供遥测事件或其他周期性或间歇性传送的数据记录的服务、守护进程或其他软件。在一些示例中,计算设备104可以包括运行操作系统的个人计算机,其也可以运行提供关于个人计算机的遥测信息(诸如崩溃报告)的遥测服务。在一些示例中,汽车(例如计算设备104(N))中的数据源可周期性地向集群106提供汽车位置和汽车周围的环境条件的数据。这可以例如通过增加可供预测模型使用的数据量来提供提高的天气预报的准确性。各个方面可以在单个网络连接上接收位置数据和条件数据,并使单独的位置数据和条件数据数据源对作业可用。附加或替代地,计算设备104可以是数据阱并且可以通过对来自数据库的报告的离散的或正在进行的请求而与集群106交互。
在一些示例中,计算设备102或104可经由一个或多个网络108来与彼此或与其它计算设备通信。在一些示例中,计算设备102和104可经由网络108与外部设备通信。例如,网络108可包括诸如因特网之类的公共网络、诸如机构或个人内联网的专用网络,或专用和公共网络的组合。专用网络可以包括不与其他网络连接的隔离网络,诸如MODBUS、FIELDBUS或工厂内部用于机器自动化的工业以太网网络。专用网络还可以包括经由网络地址转换(NAT)设备、防火墙、网络入侵检测系统或约束或控制允许在专用网络和公共网络之间流动的网络分组类型的其它设备来连接到因特网或其它公共网络。
(诸)网络108还可包括任何类型的有线或无线网络,包括但不限于局域网(LAN)、广域网(WAN)、卫星网络、有线网络、Wi-Fi网络、WiMAX网络、移动通信网络(例如3G、4G等等)或它们的任意组合。网络108可利用通信协议,诸如例如基于分组或基于数据报的协议,诸如网际协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、其它类型的协议、或其组合。而且,网络108还可包括便于网络通信或形成网络的硬件基础设施的若干设备,诸如交换机、路由器、网关、接入点、防火墙、基站、中继器、主干设备等等。网络108还可包括促成使用各种拓扑结构的总线协议(例如,交叉开关、INFINIBAND开关或FIBRE CHANNEL开关或中枢)来在计算设备102或104之间进行通信的设备。
在一些示例中,网络108可进一步包括能够实现到无线网络的连接的设备,诸如无线接入点(WAP)。各示例支持通过WAP的连接性,WAP经由各个电磁频率(例如,无线电频率)来发送和接收数据,包括支持电气和电子工程师协会(IEEE)802.11标准(例如,802.11g、802.11n等)、其他标准(如蓝牙、蜂窝电话标准(诸如GSM、LTE)或WiMAX)或它们中的多者或组合的WAP。
不同的网络具有不同的特征,例如带宽、等待时间、可访问性(开放、宣告但受安全性保护或未宣告)或覆盖区域。用于例如计算设备104与集群106之间的任何给定连接的网络108的类型可基于这些特性以及交互类型来选择。例如,示例数据源可以是TWITTER(推特)微博客系统提供的“流水帐(firehose)”。TWITTER流水帐是用户经由TWITTER发送的所有消息的实时馈送。来自TWITTER流水帐的馈送可以经由高带宽、低延迟网络承载。相比之下,低带宽网络可用于承载诸如来自环境传感器(诸如温度传感器)的测量等数据。此类传感器可提供不频繁更新,例如逐渐改变的温度的每分钟一个值。
插图110处解说示例计算设备102(N)的细节。示例计算设备102(N)的细节可代表其它计算设备102。然而,计算设备102中的每个计算设备可包括附加或替代硬件和/或软件组件。仍旧参考图1的示例,计算设备102(2)可包括诸如经由总线116可操作地连接到一个或多个计算机可读介质114(例如存储器)的一个或多个(例如,至少一个,且在全文中同样如此)处理单元112,总线116在一些实例中可包括系统总线、数据总线、地址总线、外围组件互连(PCI)高速(PCIe)总线、PCI总线、Mini-PCI总线以及各种局部、外围或独立总线中的任一者或多者或其任意组合。在一些示例中,多个处理单元112可通过内部接口总线(如PCIe)(作为网络108的替代或附加)来交换数据。虽然在该示例中处理单元112被描述为驻留在计算设备102(N)上,但处理单元112在一些示例中还可驻留在不同的计算设备102或104上。在一些示例中,处理单元112中的至少两个可驻留在不同计算设备102或104上。在这些示例中,同一计算设备102或104上的多个处理单元112可使用计算设备102或104的总线116来交换数据,而不同计算设备102或104上的处理单元112可经由网络108来交换数据。
在此描述的计算机可读介质(例如,计算机可读介质114)包括计算机存储介质和/或通信介质。计算机存储介质包括有形存储单元,诸如以用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任意方法或技术实现的易失性存储器、非易失性存储器和/或其他持久和/或辅助计算机存储介质、可移动和不可移动计算机存储介质。计算机存储介质包括有形或物理形式的介质,该介质被包括在设备或作为设备的一部分或外置于设备的硬件组件中,该介质包括但不限于:RAM、静态RAM(SRAM)、动态RAM(DRAM)、相变存储器(PRAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、紧致盘只读存储器(CD-ROM)、数字多功能盘(DVD)、光卡或其它光存储介质、磁带盒、磁带、磁盘存储、磁卡或其它磁存储设备或介质、固态存储器设备、存储阵列、网络附连存储、存储区域网络、被托管的计算机存储或存储器、存储、设备和/或可用于存储并维护供计算设备102或104访问的信息的存储介质。
与计算机存储介质相反,通信介质可在诸如载波之类的已调制数据信号或其他传输机制中体现计算机可读指令、数据结构、程序模块或其他数据。如本文所定义的,计算机存储介质不包括通信介质。
在一些示例中,计算机可读介质114可存储能由(诸)处理单元112执行的指令,如上面所讨论的,(诸)处理单元112可表示被结合到计算设备102中的处理单元。计算机可读介质114可附加地或替代地存储可由外部处理单元(诸如由本文讨论的任何类型的外部中央处理单元(CPU)或外部处理器)执行的指令。在一些示例中,至少一个处理单元112(例如,CPU、图形处理单元(GPU)或硬件逻辑设备)可被合并入计算设备102中,而在一些示例中,至少一个处理单元112(例如,CPU、GPU或硬件逻辑设备中的一个或多个)可在计算设备102的外部。
计算机可读介质114可存储例如操作系统118、摄取引擎120的模块、构造引擎122的模块、执行引擎124的模块、报告引擎126的模块、规范引擎128的模块和/或可由处理单元112加载并执行的其他模块、程序或应用的计算机可执行指令。在未示出的一些示例中,计算设备102或104中的一者中的处理单元112中的一者或多者可例如经由通信接口和网络108可操作地连接到计算设备102或104中的不同一者中的计算机可读介质114。例如,用于执行本文的流程图的步骤的程序代码,例如用于与摄取引擎120、构造引擎122、执行引擎124、报告引擎126或规格引擎128交互的程序代码或用于执行数据供应引擎146或交互引擎148的操作的程序代码可以例如经由网络108从服务器(例如,计算设备102(1))下载到客户端(例如,计算设备104(K)),并且由计算设备104(K)中的一个或多个处理单元执行。例如,存储在计算机可读介质114上的计算机可执行指令在执行之际可将诸如计算设备102或104等计算机配置成执行本文中参考操作系统118、摄取引擎120、构造引擎122、执行引擎124、报告引擎126或规范引擎128描述的操作。
计算机可读介质114还可以存储例如数据库130。数据库130可以包括例如SQL或NoSQL数据库,或者诸如上述数据库的其他类型的数据库。摄取引擎120可以将数据加载到数据库130中,并且执行引擎124可以对数据库130执行查询。
处理单元112可以是或可包括一个或多个单核处理器、多核处理器、CPU、GPU、GPGPU或例如经由来自模块或API的专用编程配置以执行本文描述的功能的硬件逻辑组件。作为示例而非限制,可被使用在处理单元112中或被用作处理单元108的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、程序专用的集成电路(ASIC)、程序专用的标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)、数字信号处理器(DSP)以及其它类型的可定制处理器。例如,处理单元112可表示混合设备,诸如来自包括内嵌在FPGA结构中的CPU核的ALTERA或XILINX的设备。这些或其他硬件逻辑组件可独立地操作,或在一些实例中,可由CPU驱动。在一些示例中,计算设备102或104中的至少一些可包括多种类型的多个处理单元112。例如,计算设备102(N)中的处理单元112可以是一个或多个GPGPU和一个或多个FPGA的组合。不同的处理单元112可具有不同的执行模型,例如,如在用于图形处理单元(GPU)和中央处理单元(CPU)的情况下。
计算设备102还可以包括经由总线116连接到处理单元112的一个或多个通信接口132,以实现通过网络108在计算设备102和集群计算中涉及的其他联网计算设备102或104或者其他计算设备之间的有线或无线通信。此类通信接口132可包括用于通过网络发送和接收通信的一个或多个收发机设备,例如网络接口控制器(NIC),诸如以太网NIC或其它类型的收发机设备。处理单元112可通过相应的通信接口132来交换数据。在一些示例中,通信接口132可以是PCI高速(PCIe)收发机,并且网络108可以是PCIe总线。在一些示例中,通信接口132可包括但不限于,用于蜂窝(3G、4G或其它)、Wi-Fi、超宽带(UWB)、蓝牙或卫星传输的收发机。通信接口132可包括有线I/O接口,如以太网接口、串行接口、通用串行总线(USB)接口、INFINIBAND接口或其他有线接口。为了简明起见,这些和其他组件从所解说的计算设备102(N)中省略。
计算设备102的计算机可读介质114可存储操作系统118。在一些示例中,操作系统118不被使用(通常被称为“裸机”配置)。在一些示例中,操作系统118可包括使计算设备102能够或引导计算设备102经由各种输入(例如,用户控件、网络或通信接口、存储器设备或传感器)来接收数据并且使用处理单元112来处理数据以产生输出的组件。操作系统118还可包括呈现输出(例如,在电子显示器上显示图像、在存储器中存储数据、和/或将数据传送给另一计算设备)的一个或多个组件。附加地,操作系统118可包括执行通常与操作系统相关联的各种功能(例如,存储管理和设备内部管理)的组件。
在一些示例中,计算设备102可包括例如操作系统118或另一模块或引擎的用户界面(UI)134,该用户界面被配置为允许用户(例如数据分析员或数据库管理员)操作摄取引擎120、构造引擎122、执行引擎124、报告引擎126或规范引擎128。用户界面134的一些示例在以下讨论。
插图136处解说示例计算设备104(1)的细节。示例计算设备104(1)的细节可代表其它计算设备104。然而,计算设备104中的每个计算设备可包括附加或替代硬件和/或软件组件。计算设备104(1)可包括例如经由总线142可操作地连接到一个或多个计算机可读介质140的一个或多个处理单元138。处理单元138的一些示例在上面参考处理单元112被讨论。计算机可读介质140的一些示例在上面参考计算机可读介质114被讨论。例如,计算机可读介质140可包括一个或多个计算机存储介质。总线142的一些示例在上面参考总线116被讨论。
计算机可读介质140可存储例如操作系统144、数据供应引擎146或其模块、交互引擎148或其模块和/或可由处理单元138加载并执行的其它模块、程序或应用的计算机可执行指令。操作系统144的一些示例在上面参考操作系统118被讨论。
在一些示例中,数据供应引擎146可以被配置为例如经由网络108向计算设备102提供一个或多个数据记录。例如,汽车计算设备104(N)中的数据供应引擎146可被配置为操作传感器(未示出)以周期性地采样温度、风速和方向、大气压、和GPS位置,并且将采样值在数据记录中提供给计算设备102。
在一些示例中,交互引擎148可被配置为与计算设备102通信以操作数据库130。在一些示例中,交互引擎148可以经由用户界面152(在下面讨论)接收查询并且将查询的信息传送到集群106。本文参考构造引擎204或执行引擎206讨论了一些示例。在一些示例中,交互引擎148可以向计算设备102传送对来自数据库130的报告的请求,接收响应,并将该响应呈现给用户。本文参考报告引擎208讨论了一些示例。
计算设备104还可以包括经由总线142连接到处理单元138的一个或多个通信接口150,以实现通过网络108在计算设备104和集群计算中涉及的其他联网计算设备102或104或其他计算设备之间的有线或无线通信。在上面参考通信接口132讨论了一些示例。
在一些示例中,计算设备104可包括用户界面152。例如,计算设备104(4)可以提供用户界面152以控制或以其他方式与集群106或其中的计算设备102交互。例如,处理单元138可以经由用户界面152接收用户动作的输入并且经由通信接口150将相应的数据传送到计算设备102。
用户界面134或152可包括一个或多个输出设备,所述输出设备被配置成用于与用户或另一计算设备102或104通信。输出设备可以集成到或外设于计算设备102或104。输出设备的示例可包括显示器、打印机、音频扬声器、传呼机或其他音频输出设备、振动马达、线性振荡器或其他触觉输出设备等。用户界面134或152可包括集成于或外设于计算设备102或104的一个或多个输入设备。输入设备可以是用户可操作的,或者可被配置成用于来自其它计算设备102或104的输入。输入设备的示例可包括例如,键盘、键区、鼠标、跟踪球、笔传感器或智能笔、光笔或光枪、游戏控制器(诸如操纵杆或游戏垫)、语音输入设备(诸如话筒)、语音识别设备或语言识别设备、触摸输入设备(诸如触摸屏)、姿势或运动输入设备(诸如深度相机)、握持传感器、加速度计、另一触感输入、可视输入设备(诸如一个或多个相机或图像传感器)等。
说明性组件
图2是示出计算设备200的示例组件的说明性图示,计算设备200可表示计算设备102或104并且可以是、可以实现、或可被包括在根据本文描述的各示例的数据库操作系统、设备、或装置中。计算设备200可实现摄取引擎202,摄取引擎202可表示图1中的摄取引擎120。计算设备200可实现构造引擎204,构造引擎204可表示图1中的构造引擎122。计算设备200可实现执行引擎206,执行引擎206可表示图1中的执行引擎124。计算设备200可实现报告引擎208,报告引擎208可表示图1中的报告引擎126。计算设备200可实现规范引擎210,规范引擎210可表示图1中的规范引擎128。计算设备200可实现数据供应引擎212,数据供应引擎212可表示图1中的数据供应引擎146。计算设备200可实现交互引擎214,交互引擎214可表示图1中的交互引擎148。在例如计算设备102的一些示例中,计算设备200可至少实现摄取引擎202、构造引擎204、执行引擎206、报告引擎208或规范引擎210,但不实现数据供应引擎212或交互引擎214。在例如计算设备104的一些示例中,计算设备200可至少实现数据供应引擎212或交互引擎214,但不实现摄取引擎202、构造引擎204、执行引擎206、报告引擎208或规范引擎210。
计算设备200可包括或被连接到用户界面216,用户界面216可表示用户界面134或152。用户界面216可包括显示器218。显示器218可包括有机发光二极管(OLED)显示器、液晶显示器(LCD)、阴极射线管(CRT)或另一类型的视觉显示器。显示器218可以是触摸屏的组件,或可包括触摸屏。用户界面216可包括以上关于用户界面134或152描述的各种类型的输出设备。在一些示例中,计算设备200可以与另一计算设备的图1的用户界面152通信地连接。用户界面216可包括用户可操作的输入设备220(图形地表示为游戏垫)。用户可操作的输入设备220可包括以上参考用户界面134或152描述的各种类型的输入设备。
计算设备200还可包括一个或多个输入/输出(I/O)接口222,以允许计算设备200与输入、输出或I/O设备通信(出于清楚目的,一些未被描绘)。这样的设备的示例可以包括用户界面216的组件,诸如以上参考用户界面134或152描述的用户可操作的输入设备和输出设备。这样的设备的其他示例可以包括功率计、加速度计和用于测量计算设备200或其环境或另一计算设备102或104的性质的其它设备。计算设备200可经由I/O接口222或使用合适的电子/软件交互方法来与合适的设备通信。例如用户可操作输入设备220上的用户输入的输入数据可经由I/O接口222接收,并且例如用户界面屏幕的输出数据可经由I/O接口222提供给显示器218以例如供用户查看。
计算设备200可包括一个或多个处理单元224,其可表示处理单元112或138。在一些示例中,处理单元224可包括或被连接到存储器226,例如RAM或高速缓存。处理单元224可以可操作地耦合到以下讨论的I/O接口222和至少一个计算机可读介质228。处理单元224可以被配置为经由例如I/O接口222从一个或多个数据源(例如数据库)访问数据。处理单元224可包括例如上面参考处理器112描述的处理单元类型,诸如CPU或GPGPU型处理单元。
在一些示例中,计算设备200的计算机可读介质228可表示图1的计算机可读介质114或140,并且可存储摄取引擎202、构造引擎204、执行引擎206、报告引擎208、规格引擎210、数据供应引擎212、或交互引擎214的多个模块,例如外壳(shell)模块或API模块。处理单元224可被配置成执行多个模块中的各个模块。例如,存储在计算机可读介质228上的计算机可执行指令在执行之际可将诸如计算设备200等计算机配置成执行本文中参考所述多个模块中的模块描述的操作。存储在计算机可读介质228中的模块可包括当被一个或多个处理单元224执行时使得一个或多个处理器224执行以下描述的操作的指令。在一些示例中,计算机可读介质228上具有例如模块的计算机可执行指令,所述计算机可执行指令在执行之际将计算机配置为执行本文描述的操作。计算机可读介质228中的模块的示例在下文中讨论。计算机可读介质228还可包括操作系统,例如操作系统118。计算机可读介质228可以是上面讨论的计算机存储介质。
在所解说示例中,计算机可读介质228包括数据存储230。在一些示例中,数据存储可以存储数据库232,数据库232可表示图1的数据库130。数据库232可以存储数据记录,数据记录例如包括字段(也称为“列”)。一个或多个数据记录可以共享一组公共字段。在所解说示例中,数据存储230还存储元数据储存库234元数据储存库234可以存储例如模式、表名称、字段名称、定时信息或关于数据库232中的数据的其他信息。在一些示例中,元数据储存库234(或数据存储230的另一组件,且在全文中同样如此)可以存储例如从用户接收的作业规范或关于那些作业规范的信息。例如,元数据储存库234可以存储哪些数据源被哪些作业规范所使用的信息,或者多少个作业规范使用来自特定数据源的数据的信息。在一些示例中,元数据储存库234可以包括例如保存作业规范的SQL或其他数据库,以及描述作业规范或可用数据源的元数据的索引文档存储。
数据存储230可以存储用于存储在计算机可读介质228中的过程、应用、组件或模块的操作或由处理单元224执行的那些模块中的计算机指令的数据,例如数据、诸如数据库模式的元数据、或用于数据库232的操作的其他数据。虽然为了说明的目的而与数据库232分开地示出,但是元数据储存库234可被包括在数据库232中,例如作为关系型数据库232中的“INFORMATION_SCHEMA(信息_模式)”表或通过诸如SQL DESCRIBE语句或TRANSACT-SQL“sp_help”语句之类的语句以其他方式可见。在一些示例中,元数据储存库234和数据库232可以被组合在数据存储230中。
计算设备200还可包括通信接口236,通信接口236可表示通信接口132或150。例如,通信接口236可包括诸如网络接口控制器(NIC)之类的用于通过网络108(用幻影示出)发送和接收通信的收发机设备,如以上讨论的。如此,计算设备200可具有网络能力。例如,计算设备200可经由诸如因特网等一个或多个网络108来与计算设备102或104(例如,膝上型计算设备、计算机和/或服务器)交换数据。在一些示例中,计算设备200可以经由一个或多个网络108接收来自一个或多个数据源(未示出)的数据。示例数据源可以包括计算设备102或104、传感器、数据聚合器或数据馈送(例如经由应用编程接口(API))。处理单元224可以例如经由诸如GET的HTTP请求向Web服务或代表性状态传输(REST)API端点检索来自数据源的数据。
在一些示例中,处理单元224可经由总线238访问计算机可读介质228上的模块,总线238可表示图1的总线116或142。I/O接口222和通信接口236还可经由总线238与处理单元224通信。
存储在计算机可读介质228上的摄取引擎202的模块可以包括被解说为检索模块240、元数据模块242和存储模块244的一个或多个模块。
存储在计算机可读介质228上的构造引擎204的模块可以包括被解说为用户界面(UI)模块246、操纵模块248、指令模块250和查询模块252的一个或多个模块。
存储在计算机可读介质228上的执行引擎206的模块可以包括被解说为执行模块254的一个或多个模块。
存储在计算机可读介质228上的报告引擎208的模块可以包括被解说为格式模块256、指令模块258和执行模块260的一个或多个模块。
存储在计算机可读介质228上的规范引擎210的模块可以包括被解说为接收模块262、加权模块264、搜索模块266和传送模块268的一个或多个模块。
存储在计算机可读介质228上的数据供应引擎212的模块可以包括被解说为供应模块270的一个或多个模块。
存储在计算机可读介质228上的交互引擎214的模块可以包括被解说为接收模块272、呈现模块274和传送模块276的一个或多个模块。
在摄取引擎202、构造引擎204、执行引擎206、报告引擎208、数据供应引擎212或交互引擎214中,模块的数量可变得更多或更少,并且各种类型的模块能够以各种组合使用。例如,与示出的模块相关联描述的功能可被组合以由更少数量的模块或API执行或可被拆分且由更多数量的模块或API执行。例如,UI模块246和接收模块262可被组合在执行这些模块的以下描述的示例功能中的至少某一些的单个模块中。在一些示例中,UI模块246可以位于规范引擎210中,或者接收模块262可以位于构造引擎204中。在一些示例中,操纵模块248、指令模块250和查询模块252中的任一者或全部可以被组合成一个或两个模块。例如,指令模块250和查询模块252可以被组合成单个模块。在一些示例中,执行模块254、格式模块256、指令模块258和执行模块260中的任一者或全部可以被组合成一个、两个或三个模块。在一些示例中,计算机可读介质228可以包括模块240-276的子集。下面例如参考图3-14讨论存储在计算机可读介质228中的模块执行的功能的示例。
图3是解说图2中解说的各模块之间的示例交互的数据流图300。数据库客户端302可以包括设备,例如诸如图1的计算设备104之类的计算设备。数据库客户端302可以由诸如用户之类的实体304(以虚线示出)来操作。
贯穿此讨论,各种操作被描述为对各种项执行。任何所描述的操作还可以对除了任何专门标识的项之外的其他项或任何项群组中的其他项执行。例如,本文的一些配置包括确定数据操纵并确定用于数据操纵的数据处理指令。数据处理指令可以针对全部或少于全部的数据操纵来确定。本文的其他示例配置包括接收指示一个或多个数据源的搜索请求,以及确定数据源的权重。可以针对所有指示的数据源或仅针对某些指示的数据源确定权重。这些示例不是限制性的。
在一些示例中,供应模块270可以被配置为提供要存储在数据库232中的数据。供应模块270可以通过推送或拉取技术来提供数据,如下面参考检索模块240所讨论的。供应模块270可以经由网络108或另一连接提供数据。
在一些示例中,检索模块240可以例如从供应模块270检索一个或多个数据记录。例如,可以从例如由计算设备104提供的数据流接收数据记录。为了清楚起见,本文中的一些讨论是在对应于单个数据源的单个数据流的上下文中讨论的。然而,这不是限制性的。检索模块240可以从一个或多个数据流串行地、并行地或以任何次序交替地接收数据记录。每个数据流可以提供对应于一个或多个数据源的数据记录,例如如下所述。
示例数据流可以包括建立的连接(诸如TWITTER流水线)、周期性或间歇性更新的数据流(诸如RSS馈送)、MICROSOFT组件对象模型(COM)存储或流、运行日志文件(例如,POSIX-兼容系统上的“tail-f”输出)、HTTP连接(例如根据异步JAVASCRIPT(JS)和XML(AJAX)或Comet架构模式)、在指定地址或USB、蓝牙、PCI接收的电子邮件、或者到提供数据的设备(例如传感器)的有线或无线的其他连接。在一些示例中,检索模块240可以从数据库232或另一数据库检索一个或多个数据记录,例如作为针对该数据库的查询的结果。例如,数据记录可以是或可以包括针对数据库的SQL查询所返回的行。
每个数据流或数据源可以提供一个或多个数据记录。如本文所使用的,术语“记录”不需要数据域内或数据域之间的任何固定格式、长度或结构的通用性。例如,即使消息在长度和内容方面不同(例如,通过包含图像、文本或链接),经由TWITTER微博客服务或另一类似服务发送的每条消息都可以表示为微博客消息的数据集中的单个记录。在用于书籍的全文搜索引擎的另一示例中,每本书可以被表示为具有例如标题、作者和内容的字段的单个记录。
在一些示例中,每个数据记录可以与时间戳相关联。检索模块240可以跟踪在例如数据加载作业的特定运行中最新近处理的数据记录的时间戳。在数据加载作业的下一运行中,检索模块240可以只检索比跟踪的时间戳更新的数据记录,然后更新时间戳。这可以防止向数据库添加重复记录。参考指令模块258来描述时间戳跟踪的其他示例。
在一些示例中,元数据模块242可以被配置为确定对应于一个或多个数据记录的元数据。在一些示例中,对于给定的数据记录,元数据可以包括指示该数据记录的数据源之一的数据源标识符。元数据可以包括用于各个数据记录的任何数量的数据源标识符。例如,在具有三个数据源的系统中,数据记录的元数据可以包括具有值1、2或3的数字数据源标识符,以指示三个数据源中的哪个数据源提供该记录。在由数据库查询结果产生的数据记录的示例中,数据源标识符可以包括查询的名称、查询结果所基于的表的名称、或运行查询的存储过程的名称。如果查询是作业的一部分,则数据源标识符可以包括作业名称。
在一些示例中,元数据模块242可以基于通过其上接收数据记录的连接的信息或经由该连接提供的信息来确定哪个数据源与数据记录相关联。例如,从到TWITTER流水线的开放连接接收的数据记录可以与数据源标识符“TWITTER流水线”相关联。在其他示例中,可以从例如监视计算设备104上的事件的遥测连接接收数据记录。遥测数据记录可以与数据源标识符“遥测”相关联。在其他示例中,数据记录可以经由到指定数据库的连接来检索,例如计算机配置数据库,诸如安装在各种计算机上的软件的数据库。配置数据记录可以与数据源标识符“配置”相关联。
在一些示例中,可以经由单个连接(例如,经由系统日志程序或其他事件聚合器的输出)接收来自多个计算设备104的数据记录(例如,遥测记录)。在这些示例中的一些示例中,数据记录可以具有指示从其接收遥测数据记录的计算设备104的数据源标识符。例如,数据源标识符可以包括从计算设备104(n)接收的数据记录的整数n。在一些示例中,用于遥测记录的数据源可以由与计算设备104相关联的标识值来指示,例如诸如“104.example.com”的主机名,或者诸如{b74202c0-a278-11e5-a430-0002a5d5c51b}的通用唯一标识符(UUID)。
在一些示例中,单个计算设备104可以执行多个供应模块270,或者计算设备104、数据流或事件聚合器可以提供多种不同类型的数据记录。在这些示例中的一些示例中,数据记录的数据源标识符可以包括数据记录的类型的标识符或提供数据记录的特定供应模块270的标识符。在一个示例中,Windows错误报告数据记录可以具有“崩溃报告”(类型)或“博士沃森”(供应方)的数据源标识符。在另一示例中,Windows改进项目记录可以具有“使用统计”(类型)或“改进项目”(供应方)的数据源标识符。在又一示例中,XBOX控制台或XBOX在线服务(或其他社交媒体服务)可以提供指示用户已添加新朋友连接或用户已更新该用户简档的事件。朋友添加的数据记录可以具有“xbox朋友”的数据源标识符,并且简档更新的数据记录可以具有“xbox简档更新”的数据源标识符。
在一些示例中,检索模块240可以向数据流请求数据记录。这可以用于“拉取”数据流,诸如RSS馈送或Win32消息队列(由事件循环中的GetMessage()调用拉取)。在一些示例中,该请求可以请求特定的数据记录,或R个最新近的记录(R≥1),或者匹配特定准则的记录。在一些示例中,检索模块240(或操作系统118)可以建立与数据流的网络连接,例如通过接受来自数据流的传入网络连接,并且检索模块240可以经由网络连接接收数据记录。这可以用于“推送”数据流,诸如Comet风格的连接或控制台中的键盘输入流。网络连接可以持续或者可以被周期性地重新建立,使得检索模块240可以在新数据变得可用时接收新数据,例如,如以下参考执行模块260所讨论的。
在一些示例中,元数据模块242可以确定数据记录的结构信息和数据记录的内容信息。例如,在存储在SQL表中或从SQL表提供的数据记录中,元数据模块242可以使用SQLDESCRIBE语句或使用特定于数据库供应商的扩展从SQL数据库的INFORMATION_SCHEMA中检索结构信息,诸如记录中的字段的名称和类型。元数据模块242可以例如响应于SQL SELECT语句将内容信息确定为所提供的值。
在另一示例中,在JAVASCRIPT对象符号(JSON)格式化的数据记录中,元数据模块242可以提取属性名称和嵌套关系作为结构信息,并且提取数据值作为内容信息。在这个和其他示例中,元数据模块可以通过从数据提取属性值或关系来确定元数据。表1示出了一个示例。
表1
在表1中,结构信息可以包括例如具有条目“艺术家”、“排名”、“专辑[0].名称”(针对“Tubular Bells”)、“专辑[0].年”、“专辑[1].名称”和“专辑[1].年”(1990年)的字段列表。内容信息可以包括表1中所示的对应值。
在一些示例中,元数据模块242可以从其他数据格式中提取结构信息和内容信息。例如,从XML数据记录中,可以提取例如以XPath表达的XML节点名称和关系作为结构信息,并且可以提取属性值和节点值作为内容信息。例如,在表1的XML版本中,结构信息可以包括例如“/艺术家”或“/专辑[0]/名称”的XPath值。在其他示例中,从以资源交换文件格式(RIFF)或诸如可移植网络图形(PNG)格式的其他基于块的格式存储的数据记录中,元数据模块242可以提取块名称和嵌套信息作为结构信息,并且提取块内容作为内容信息。对于平面文件(例如,TSV或CSV)或不包括记录类型信息的另一文件,元数据模块242可以例如基于诸如逗号的分隔符对字段计数,并且基于数据中的观测的值来推断数据类型。例如,如果多个数据记录中特定字段的值与正则表达式/[0-9]/和/\b[0-9]*(\.[0-9]*)?([Ee]-?[0-9]+)?\b/匹配,则元数据模块242可以确定对于那些记录该字段是数字值字段。在另一示例中,如果多个数据记录中的特定字段的值匹配Unicode变换格式8(UTF 8)文本字符,则元数据模块242可以确定对于那些记录该字段是具有UTF-8编码的文本值字段。
在一些示例中,诸如表1的示例,元数据模块242可以解析接收到的数据记录以定位一个或多个字段名称,例如JSON属性或XML节点名称或属性名称。元数据模块242可以进一步解析接收到的数据记录以定位接收到的数据记录中的一个或多个字段关系。示例字段关系可以包括嵌套关系,例如嵌套在嵌套在“专辑”字段中的专辑中的“名称”字段,或者交叉引用,例如使用散列引用(诸如超文本标记语言(HTML)片段‘<a name=“target”></a><ahref=“#target”>link text</a>’中的“#target”)。两个字段之间的示例字段关系可以包括父(例如,一个字段是层次结构中的另一字段的父)、子、兄弟、祖父、孙、后代、祖先、第n子(对于非负整数n)或第n兄弟。元数据模块242然后可组装字段名称和字段关系以提供结构信息,例如通过以由字段关系确定的公认次序列出字段名称,或者通过以完全合格的形式表达字段名称(例如“专辑[0].名称”而不仅仅是“名称”)。
在一些示例中,元数据模块242可以至少部分地基于结构信息来确定数据源标识符。例如,数据源标识符可以按预定格式排列结构信息,并散列化所排列的结构信息(例如,使用MD-或SHA-系列散列函数),或以其他方式提供与结构信息相关联的标识符。
在一些示例中,一些数据记录可以具有一些公共字段和一些不同的字段。例如,来自特定计算设备104的遥测数据记录可以具有一些公共字段,诸如特定计算设备104的时间戳和标识符,以及一些非公共字段,诸如改进项目数据记录的使用统计以及崩溃报告的堆栈跟踪数据。在另一示例中,XBOX朋友添加的数据记录和XBOX简档更新数据记录可以共享指示数据记录是XBOX记录的公共字段,并且可以具有各自的不同的字段,例如分别具有“哪个朋友”字段和“哪个内容”字段。元数据模块242可以至少基于公共字段或非公共字段来确定数据源标识符。在一些示例中,元数据模块242可以确定特定数据记录的多个数据源标识符,例如,至少部分基于公共字段的一个数据源标识符和至少部分基于非公共字段的另一数据源标识符。
在一些示例中,元数据模块242可以确定结构信息是否在元数据储存库234中被表示。例如,元数据模块242可以查询元数据储存库234以寻找对应于结构信息的数据源标识符。在一些示例中,与结构信息相关联的标识符可以用作查询的搜索关键字。如果结构信息从元数据储存库丢失,例如如由缺少搜索关键字所指示的,则元数据模块242可以将结构信息添加到元数据储存库并且从元数据储存库234接收对应于结构信息的数据源标识符。在一些示例中,确定表示、添加结构信息和接收数据源标识符可以例如响应于来自数据库客户端302的“条件添加”或类似API调用来执行。
在一些示例中,存储模块244可以将元数据存储在与各数据源中的所选一个数据源相关联的元数据储存库234中。在一些示例中,存储模块244可以将对应于数据记录的元数据与对应于该数据记录的数据源的数据源标识符相关联地存储在元数据储存库234中。例如,存储模块244可以将结构信息和数据源标识符存储在元数据储存库234中的记录中。将元数据存储在元数据储存库234中可以允许基于记录类型、数据源或其他元数据值来更容易地搜索和过滤数据记录。在一些示例中,存储模块244可以将内容信息与数据源标识符相关联地存储到数据库232中。这可以准许容易地按数据源进行过滤,并且可以允许容易地定位与存储的内容信息相对应的元数据。
在所解说示例中,元数据储存库234存储描述306。描述306可以包括一个或多个数据源或作业规范的元数据,如本文所述。例如,描述306可以包括存储在诸如ELASTICSEARCH数据存储的索引数据存储中的JSON记录。JSON(或其他格式)记录可以包括例如关于数据源的信息,诸如名称、区域、类型、源组件、描述、属性、谱系、与其他数据源的关系、或者分类或本体信息,诸如类别或子类别。本文描述了元数据字段的示例。
上面描述的用于检索模块240、元数据模块242或存储模块244的处理可针对多个数据记录执行。在一些示例中,检索模块240可以从数据流接收多个数据记录。元数据模块242可以为多个数据记录中的个体数据记录确定相应的结构信息记录,各个结构信息记录中的一个结构信息记录包括结构信息。元数据模块242还可以确定各个结构信息记录的一个或多个代表性结构信息记录,每个代表性结构信息记录与相应的数据源标识符相关联并且对应于一个或多个个体数据记录。存储模块244可以将个体数据记录与相应的代表性结构信息记录的数据源标识符相关联地存储到数据库中。这可以允许将可能来自多个不同数据源的多个数据记录以以下方式加载到数据库232或元数据储存库234中:允许快速搜索和过滤数据记录,并且允许有效地跨越来自多个数据源的数据记录执行查询。
在一些示例中,存储模块244可以用从数据源检索的新数据覆写数据库232或元数据储存库234中的数据。这可以允许重新加载参考数据或不经常修改的数据。在一些示例中,例如,如上面参考检索模块240所描述的,存储模块244可以跟踪最后记录时间戳并且在给定作业运行时仅存储比最后记录时间戳更新的数据记录。在一些示例中,存储模块244可以将数据库232或元数据储存库234中的数据与从数据源检索的新数据合并,例如通过插入新数据记录或删除或修改现有数据记录(例如,使用SQL UPDATE语句),以使数据库232或元数据储存库234的相关部分与新接收的数据记录同步。数据源可以传送更新而不是完整的数据记录,从而减少维持数据库232或元数据储存库234中当前信息所需的带宽。
可以查询数据库232中的数据或元数据储存库234中的元数据,例如用于数据挖掘或商业智能目的。一些示例允许用户更快速地开发与用户希望运行的作业相对应的高效查询,例如用于数据检索或分析。
在一些示例中,UI模块246可以被配置为提供包括数据源选择控件、查询准则控件和结果字段控件的用户界面。示例用户界面在下面在图6中示出。用户界面可以例如作为Web应用的一个或多个HTML或JS文件来提供。替代地,可以将用户界面提供为本机应用,例如Win32、MICROSOFT.NET或JAVA应用。UI模块246可以通过触发在数据库客户端302上存储的UI应用在数据库客户端302上的显示来提供用户界面。在一些示例中,数据库客户端302可以独立于UI模块246(例如根据诸如实体304之类的用户的请求)显示用户界面。
在一些示例中,接收模块272可以例如经由网络108接收用户界面或用户界面的触发。
在一些示例中,呈现模块274可以呈现用户界面。例如,呈现模块274可以在显示器218上显示用户界面并且经由用户可操作输入设备220从实体304(例如用户)接收输入。在一些示例中,呈现模块274可以运行事件循环或终端对话或以其他方式操作用户界面以接收用户输入或呈现信息,如本文所述的。
用户界面可以包括例如一个或多个查询准则控件和一个或多个结果字段控件。查询准则控件可以接收用于选择相关数据记录的值,如下所讨论的。结果字段控件可以接收用于选择哪个数据被输出的值,同样如下所讨论的。查询准则控件、结果字段控件以及用户界面的或其中的任何其他控件可至少包括文本输入控件、标签、复选框、单选按钮、按钮、下拉列表(受限还是不受限)或其他列表选项字段、滑块、旋钮或其他小部件,无论是虚拟的(例如,呈现在显示器218上)还是实体的(例如,机械致动的按钮)。
在一些示例中,呈现模块274可以经由用户界面接收用户输入。例如,呈现模块274可以经由用户界面接收作业规范的信息。作业规范可以包括至少一个查询准则(例如经由查询准则控件接收的查询准则)以及至少一个结果字段规范(例如经由结果字段控件接收的结果字段规范)。
在一些示例中,呈现模块274可以进一步在用户界面中呈现注释控件。注释控件可以至少包括复选框、标签输入控件或文本输入控件。呈现模块274可以经由用户界面的注释控件接收注释数据。注释数据可以指示例如笔记、预期使用或限制的陈述、搜索关键字(例如,在其他字段中未找到的关键字)、相关作业的标识信息、或关于作业规范的其他信息,例如该实体304相信在搜索数据源时对定位作业规范将有用的信息。
在一些示例中,传送模块276可以在元数据储存库234中与注释数据相关联地存储作业规范的信息。例如,传送模块276可以从呈现模块274接收作业规范的信息和注释数据,并将作业规范的信息和注释数据传送到元数据储存库234。在一些示例中,传送模块276可以,例如通过将元数据封装在XML中或通过准备SQL INSERT查询来存储元数据,重新格式化或封装作业规范的信息或注释数据以用于存储在元数据储存库234中。
在所解说示例中,元数据储存库234存储作业规范308。从传送模块276接收的作业规范可以被存储在例如SQL数据库或其他数据存储中。本文描述了作业规范的示例。在一些示例中,传送模块276可以在元数据储存库234中存储作业规范308和在作业规范中指示的作业的输出的描述306两者。这可以允许作业的输出被用作其他作业的数据源,例如如本文所述。
在一些示例中,注释数据可以指示关于作业的数据源或目标的信息。传送模块276可以在元数据储存库234中与注释数据相关联地存储数据源或目标的信息。这可以允许用户更容易地定位数据源或目标,从而降低重复工作或重复存储的可能性。
在一些示例中,呈现模块274或用户界面被配置为在定位感兴趣的数据源时提供帮助。本文各种示例可以减少用户定位相关数据源所需的时间。本文参考图6、15和16描述了示例用户界面。
在一些示例中,呈现模块274被配置为在用户界面中呈现数据源搜索控件。数据源搜索控件可以至少包括文本输入控件或选择控件。例如,文本输入控件可以接收搜索关键字。选择控件可以接收来自预定选项集合的选择,并且可以包括例如复选框、单选按钮或下拉列表(单选或多选,例如,每个项具有复选框的多选)。在一些示例中,文本输入控件可以与选择控件组合以提供自动补全或者以其他方式允许用户使用至少一些文本输入来从选项集合中进行选择。在一些示例中,可以从诸如描述306的元数据中准备选项集合。例如,呈现模块274或另一模块可以确定包括元数据储存库234中列出的数据源的数据源类型的选项集合。这可以例如使用“选择唯一值”查询来完成。呈现模块274或另一模块可将所确定的选项集合与选择控件相关联以允许用户从选项集合中选择选项。
在一些示例中,选择控件可以允许至少选择数据源的名称(例如数据源标识符或人类提供的友好名称)、数据源的类型(例如,SQL数据库或RSS馈送)、或数据源的类别、子类别、区域、提供者或位置。类别和子类别可以是分类或本体元数据的示例;其他分类学或本体论元数据(诸如术语关系或群组成员资格)可以附加或替代地经由选择控件来选择。数据源的类型、类别、子类别、区域、提供者、位置或其他区分字段值可以具有层次级别或值。例如,来自日本山梨县大月市的数据源可以具有“日本”、“日本.山梨县”或“日本.山梨县.大月市”的位置值。示例类别可以包括至少“设备”或“用户”。“设备”类别的示例子类别至少可以包括“遥测”或“改进项目”。示例提供者可以包括提供数据的组织或子组织的名称,诸如业务单位。示例区域可以包括“收集”(仍在收集的数据)、“筹划”(收到但仍在处理中的数据)或“已处理”(数据可供使用)。示例位置可以包括物理或逻辑服务器位置,例如在特定集群106内或在该集群106外。
在一些示例中,呈现模块274被配置为经由用户界面接收一个或多个搜索关键字。搜索关键字可以包括在任何数据源搜索控件中输入的值,例如全文关键字或类别选择。个体搜索关键字可以是必需的、任选的或禁止的,分别指示数据源必须、可或不可匹配那些个体搜索关键字。例如,搜索关键字可指示数据源必须具有类别“music(音乐)”,可具有全文“Mike Oldfield”,可具有全文“Pink Floyd”,并且不能有全文“bad(不好)”。这样的查询可以在APACHE LUCENE经典查询语法中表达为‘+category:music“Mike Oldfield”“PinkFloyd”-bad’。用户界面可以允许实体304提供该查询,例如使用其中输入LUCENE查询的单个文本控件,或者例如针对类别(category)使用下拉列表,针对可被包括的单词或短语(“Mike Oldfield”和“Pink Floyd”)使用全文控件,以及针对不能被包括的单词或短语(“bad”)使用分开的全文控件。
在一些示例中,呈现模块274被配置为在元数据储存库234(例如,描述306)中搜索匹配搜索关键字的数据源以提供匹配的数据源。一旦所有搜索关键字已经被提供,可以执行搜索(例如,在按下“搜索”按钮之后)或者可以迭代地(例如当输入到数据源搜索控件中的值改变时)执行搜索。在一些示例中,搜索可以至少包括搜索例如经由注释控件提供的存储的注释数据。在一些示例中,可以例如使用布尔或全文搜索来搜索元数据储存库。在一些示例中,可以如下面参考接收模块262、加权模块264、搜索模块266和传送模块268所讨论的搜索元数据储存库。
例如,当实体304(例如用户)创建数据源时,实体304可以提供指示例如关键字、范围、预期用途或数据源的其他特征的注释。在一些示例中,如下所讨论的,查询的结果本身可被用作新数据源。注释可包括例如关于查询的信息。接收、存储和搜索注释可提供相关数据源的更快速发现。在一些示例中,当创建数据源时,可例如通过呈现模块274自动产生与该数据源相关联的元数据。自动产生的元数据可以包括例如表达或指示数据源之间的联系的标签,诸如生产者-消费者关系,或在构建查询时使用的搜索术语或准则的指示。在一些示例中,数据源(例如作业)的注释或其他元数据(用户提供的或自动产生的)可以包括数据源的典型更新频率的指示(例如,作业被调度以运行的频繁程度)。
数据源的元数据可包括数据源的元数据或由数据源提供的个体字段的元数据。字段专用的元数据可以包括例如自由文本字段,该自由文本字段被配置为保持字段的内容的人类可读解释。元数据可包括每个字段的预定类型的值,例如字段的数据类型(诸如文本或数字),指示数据记录是否必须包括该字段的值的标志,在该字段是任选的情况下该字段的默认值,或对于跟踪业务需求有用的值。在一些示例中,作为作业专用的元数据的值的替代或附加,诸如本文描述的那些的用户界面可以允许提供字段专用的元数据的值。
在一些示例中,呈现模块274被配置为在用户界面中呈现匹配数据源的标识信息。例如,呈现模块274可以在按下搜索按钮之后或者迭代地呈现数据源的列表。标识信息可以至少包括数据源名称、数据源标识符或关于数据源的其他元数据。
如上所述,查询结果可担当未来作业的数据源。因此,在一些示例中,匹配数据源包括作业规范。在一些示例中,呈现模块274被配置为在呈现标识信息之后,经由用户界面接收包括作业规范作为数据源的指定的第二作业规范。
一些示例提供了例如在计算设备102上运行的查询支持,以有效地使相关数据源在搜索结果中排名较高。
在一些示例中,接收模块262可以接收至少部分经由用户界面提供的信息。该信息可以包括例如作业规范或搜索请求。在一些示例中,例如在计算设备104上执行的传送模块276可以例如以键值、JSON或XML形式将信息传送到例如在计算设备102上执行的接收模块262。例如,传送模块276可以将来自呈现模块274的搜索关键字以例如XML、JSON、多部分/形式数据或应用/x-www-form-urlencoded形式打包,并将打包数据经由HTTP连接传送到接收模块262。
因此,在一些示例中,接收模块262可以接收包括例如经由数据源搜索控件接收的一个或多个搜索关键字的搜索请求。搜索请求可以指示一个或多个数据源,例如多个数据源。在一些示例中,搜索请求可以指示要被搜索的特定数据源或群组、类别、目录、或其它数据源布置。在一些示例中,搜索请求可经由向接收模块262指示哪些数据源应该被搜索的通道被传送。在一些示例中,搜索请求可以例如以LUCENE语法或另一种查询语法作为查询被传送,并且接收模块262可以解析查询以提取搜索关键字,例如使用正则语言解析器,诸如LL(k)或LR(k)解析器(例如,其中k=1)。
在一些示例中,加权模块264可以至少部分地基于多个数据源中的一些数据源(例如两个或更多个数据源)之间的生产者-消费者关系来确定数据源中的一些数据源的相应权重。例如,加权模块264可以至少部分地基于多个数据源中的至少两个数据源之间的生产者-消费者关系来确定多个数据源中的第一数据源的权重。如果来自特定的数据源的数据被存储在元数据储存库234中的一个或多个“消费者”作业使用,则可以将该数据源视为“生产者”。在一些示例中,正被搜索的数据源的权重(例如,如上所述在搜索请求中或由搜索请求指示的权重)可以是该数据源的消费者的计数,标准化为参考值(例如1.0)的计数,或者通过Softmax或其他斜坡函数标准化的计数。在一些示例中,特定数据源的权重可以至少部分地基于该特定数据源消费的其他数据源的权重。在一些示例中,加权模块264可以基于数据源的消费信息来确定数据源的权重。消费信息可以包括作业数量、用户、或访问或以其他方式使用由数据源提供的数据的其他下游依赖性的数据。
具体而言,在一些示例中,加权模块264可以对于数据源的第一数据源至少部分地基于各数据源的元数据确定第一数据源的消费者的数量;并且至少部分地基于消费者的数量并且在数学上与消费者的数量正相关地确定第一数据源的相应权重。在一些示例中,所确定的数据源的权重可以是计数(或上面提到的其他值)的函数,例如单调递增函数或非递减函数。这些函数可以包括例如单调递增或非递减多项式、指数或对数。
在一些示例中,加权模块264可以基于元数据中应该使用哪个元数据的指示来确定权重。例如,数据源的元数据可以指示该数据源的权重应当至少部分地基于(i)将该数据源引用为输入的作业规范308的数量;(ii)与数据源相关联的下游点击流计数;或者(iii)注释数据是否与数据源相关联来确定。在一些示例中,加权模块264可以基于元数据中或用户简档数据中应该使用哪个元数据的指示来确定权重。例如,可以基于第一用户的消费信息对特定数据源进行加权,并且基于不同的第二用户的注释数据对该特定数据源进行加权。这可以为用户提供与那些特定用户的需求更加相关的元数据搜索结果,从而允许用户更快速地定位相关数据源。
在一些示例中,搜索模块266可以使用搜索关键字和确定的权重来搜索数据源的元数据以标识各数据源中与搜索请求相对应的匹配的一些数据源。在一些示例中,搜索模块266可以使用搜索关键字来搜索与多个数据源中的至少一个数据源相关联的元数据,以标识该多个数据源中的匹配数据源。匹配数据源可以对应于搜索请求。在一些示例中,数据源可以用诸如APACHE LUCENE、ELASTICSEARCH或BING之类的搜索引擎来索引。索引可以至少基于数据记录、数据源元数据或确定的权重来执行。搜索模块266可以将搜索关键字和确定的权重提供给搜索引擎。然后搜索引擎可以提供对各数据源中的匹配数据源的标识,例如至少部分地基于确定的权重以相关性次序排序。
在一些示例中,搜索模块266可以将搜索关键字中的任何布尔条件应用于数据源或其元数据。例如,指示类别“music(音乐)”的搜索关键字可以对应于“CATEGORY='music'”或“CATEGORY LIKE'%music%'”的布尔查询(在本示例中用SQL表达)。这可以允许快速过滤掉与所指示的类别、区域、位置或其他选择不匹配的数据源。
在一些示例中,搜索模块266可以将搜索关键字中的全文搜索技术应用于数据源或其元数据,例如应用于匹配任何布尔条件的数据源或那些数据源的元数据。搜索模块266可以至少使用用于子串匹配、正则表达式匹配、模糊匹配、邻近搜索、或者在B树、尝试、倒排索引或其他索引结构中查找或从其中检索的算法。
相应地,在一些示例中,搜索模块266可以至少部分地基于至少数据源的类型来过滤数据源的元数据,例如使用如上所述的布尔准则,以标识各数据源中的候选数据源。搜索模块266可以至少部分地基于搜索关键字中的至少一些搜索关键字从候选数据源中选择匹配数据源。
在一些示例中,搜索模块266可以对数据源(例如匹配搜索关键字的数据源(为了简洁称为“匹配”))排名。例如,搜索模块266可以至少使用用于词频(TF)、逆文档频率(IDF)、TF-IDF或Okapi BM25排名的算法来确定各匹配的分数。搜索模块266然后可以例如按照分数的递减次序或递增次序将各匹配排名。在一些示例中,分数可以是对应于搜索关键字的术语专用分数的总和、加权总和、饱和总和、乘积、加权乘积或饱和乘积。在一些示例中,搜索模块266可至少部分地基于确定的权重来确定多个数据源中的至少第一数据源(为其确定权重)和第二数据源的排名信息。
在一些示例中,搜索模块266可以例如基于文档增强(document boost)、字段增强或术语增强来增强匹配数据源的排名。在一些示例中,从全文搜索引擎的角度来看,数据源被认为是“文档”。在一些示例中,可以为个体数据源分配等于、正相关于、或至少部分地基于这些数据源的各自确定的权重的文档增强。例如,如果数据源“A”具有数据源“B”的两倍多的消费者,则数据源“A”可以被赋予2.0的文档增强且数据源“B”可以被赋予1.0的文档增强。在另一示例中,文档增强可以被确定为相对权重或与相对权重相关,其中具有接近跨所有数据源的平均权重的权重的数据源被赋予接近1.0的文档增强。
在一些示例中,作为文档增强的替代或附加,可以将例如如上文针对文档增强所述而计算的字段增强添加到全文搜索字段、类别字段或用于匹配搜索关键字的其他字段。例如,特定搜索关键字的术语专用分数可以通过针对特定数据源的元数据中出现搜索关键字的字段的字段增强来增强。在一些示例中,个体搜索关键字可被赋予术语增强。例如,针对特定搜索关键字的术语专用分数可以通过针对该搜索关键字的术语增强来增强。按字段进行增强可以允许使用由数据库的用户提供的信息来确定更相关结果,例如使用本文所述的注释(通过增强注释字段)。按术语进行增强可以允许用户在涉及大量术语的搜索中容易地确定相关结果。
在一些示例中,搜索模块266可以例如从实体304的存储的简档或从元数据储存库234中检索关于对文档相关性的增强或其他调整的信息。这可以允许个体实体304或个体数据源所有者或发布者调整术语相关性,以为用户提供改进的搜索结果,从而减少用户找到相关数据源所需的时间。
在一些示例中,搜索模块266可以确定至少两个匹配数据源的排名信息。可以至少部分地基于确定的权重来确定匹配的排名信息。例如,可以按照匹配的权重的递减或递增次序来将匹配排名。在一些示例中,匹配之一的得分可以通过权重来增强,例如通过将权重添加到分数或将权重乘以分数。所述匹配可以按经增强的权重的递减或递增次序排名。如上所讨论的,可以例如至少每数据源、每字段或每项应用增强。
在一些示例中,传送模块268可以传送各数据源中的匹配数据源的标识信息和排名信息,或者可以传送匹配数据源的传送标识信息以及确定的排名信息。例如,传送模块268可以向数据库客户端302提供数据源中的至少一些匹配数据源(例如,前S个数据源)的XML、JSON、HTML或其他格式数据(在一些示例中,S=5或10,或大于1的整数或匹配数据源的数量)。在一些示例中,传送模块268可以提供例如按照排名的降序排序的标识信息记录,在这种情况下,排名信息可以隐含在所提供的次序中而不被明确地包括在内。在一些示例中,传送模块268可以提供与经编号排名(例如,第一,第二,...)或排名分数(例如,3.14159的排名高于2.71828)相关联的标识信息记录。在一些示例中,传送模块268可以传送匹配数据源或其他数据源中的数据源的排名信息。
在一些示例中,搜索模块266或传送模块268可以至少部分地基于数据源中的匹配数据源中的至少一些数据源中的类型或来源来对数据源中的匹配数据源的至少一些数据源进行编组以提供编组信息。例如,个体匹配数据源可以与类别标识符相关联。在一些示例中,搜索模块266或传送模块268可以例如通过类别、区域或另一元数据字段的值来对数据源中的匹配数据源中的至少一些数据源进行编组。这可以允许用户即使在用户不知道感兴趣的数据源与哪个类别、区域或其他值相关联时也容易地定位数据源。
在一些示例中,传送模块268可以将编组信息与标识信息和排名信息相关联地传送。接收模块272或呈现模块274然后可以呈现与编组信息相关联的匹配数据源,例如通过呈现按组划分或用它们的组标记的匹配数据源。特定匹配数据源可以是一个或多个组的成员。在一些示例中,传送模块268可以传送上述标识的可传送项中的至少一个,例如编组信息、排名信息或标识信息。传送模块268可以附加或替代地传送任何可传送项的元数据,例如,与各数据源中的所标识的匹配数据源相关联的消费者计数。
在一些示例中,数据库客户端302的接收模块272可以从传送模块268接收各数据源中的匹配数据源的标识信息和排名信息。接收模块272可以将至少一些接收到的标识或排名信息提供给呈现模块274,呈现模块274可以将结果呈现给实体304,例如以网页或诸如允许选择其一个或多个条目的列表框的搜索结果列表的形式。
在一示例中,数据库客户端302的传送模块276可以经由HTTP请求向图2的规范引擎210的接收模块262提供包括搜索关键字的AJAX查询。如上所述,加权模块264和搜索模块266可以定位匹配数据源。规范引擎210的传送模块268可以例如经由对HTTP请求的HTTP响应将标识信息和排名信息提供给数据库客户端302的接收模块272。呈现模块274然后可以更新网页的表单,div或其他元素以显示相关数据源中的至少一些。如本文所述的使用权重进行搜索可以允许用户容易地定位感兴趣的数据源,并且有效地过滤全文搜索结果以定位相关数据源。
可以查询数据库232中的数据或元数据储存库234中的元数据,例如用于数据挖掘或商业智能目的。例如,可以查询例如如上所述的使用搜索标识的一个或多个数据源。图2的构造引擎204的模块可以从作业规范准备查询。
操纵模块248可以对作业规范操作。在一些示例中,数据库客户端302的传送模块276可以例如以HTTP GET或POST请求的形式向操纵模块248传送作业规范。一个或多个数据源可以与作业规范相关联。例如,作业规范可以从如上所述接收的搜索结果中指示例如由实体304选择的数据源中的一些数据源。附加地或替代地,作业规范可以指示在没有如上所述的搜索过程的情况下选择的数据源中的一些数据源,例如,如由存储的配置数据或直接用户输入所指示的。作业规范可以包括各数据源中的相关联数据源的数据源标识符或其他标识信息。相关联数据源中的一个或多个可以为作业提供数据。
在一些示例中,例如存储在计算机可读介质228上的安全模块310可以存储关于或影响存储在计算机可读介质228上的一个或多个所示模块或其他模块的操作的信息。例如,安全模块310可以实现诸如Kerberos或MICROSOFT域认证的认证或授权技术。安全模块310可以例如至少部分地基于用户证书来限制对所解说模块中的一个或多个的输入、输出或功能的访问。安全模块310可以执行审计,例如以存储关于用户对数据或模块的访问的信息。安全模块310的功能可以与所解说模块中的一个或多个模块内的安全块协作地执行或唯一地由其执行。执行身份验证、授权和审计可以提高数据库的健壮性,并可以减少产生治理机构或过程所需报告的计算和数据库负载。
图4示出作业规范的示例数据流图400。数据流图对应于表2中的示例作业规范。示例作业规范是嵌套形式的,其可以用例如具有适当模式的XML来表达。
表2
在表2中,第1行提供了作业的名称(“OrdersByDay”)。此名称可以稍后用于将作业的输出作为其他作业的数据源来参考。在图4中,数据源402(第2行),例如RDBMS中的“OrderPlaced”表,将数据记录提供给过滤器404(第3行)。过滤器404将“PRODUCT”字段具有值“WINDOWS 10”的记录传递给提取器406和408。提取器406(第5行)从过滤器404提供的记录中提取“OrderTime”字段。运算符410(第7行)将“RoundToDay”函数应用于来自提取器406的值以将时间戳(例如2015-03-14T9:26:53.5)改变为日期(例如2015-03-14)。提取器408(第9行)从过滤器404提供的记录中提取“ComputerID”字段。运算符412(第11行)应用“CountDistinctValues”函数以忽略来自同一计算机的重复订单,这可能出现在例如到在线订购过程的网络服务中断的情况下。重命名器414(第6行)将来自运算符410的结果重命名为“Date”。重命名器416(第10行)将来自运算符412的结果重命名为“OrderCount”。合并器418提供包括一个或多个数据记录的结果数据集420,每个数据记录具有来自重命名器414的“Date”值和来自重命名器416的“OrderCount”值。下面的讨论参考图3和4。
在一些示例中,图3的操纵模块248可以至少部分地基于作业规范来确定一个或多个数据操纵。例如,操纵模块248可以确定与作业规范相对应的数据流图,诸如数据流图400,例如树或有向非循环图(DAG)。数据流图的各个体节点可以表示个体数据操纵。在一些示例中,数据操纵(例如,数据流图)可以根据作业的中间表示来表达或表示作业的中间表示。中间表示可以独立于一个或多个特定的查询语言,例如SQL或U-SQL。
示例数据操纵可至少包括表2和图4中所示的操纵,例如至少从数据源获取数据,过滤该数据,从数据提取字段,将函数应用于字段值,聚合字段值,在数据记录内或数据记录之间进行字段的值之间的比较,将字段值与常量或在作业运行期间保持固定的变量进行比较,重命名字段,合并字段以提供新数据记录,或其他操作,例如可用查询语言(诸如SQL,U-SQL,APACHE PIG或APACHE HIVE)表达的操作。
在一些示例中,操纵模块248可以包括对作业规范进行操作以生成数据流图的解析器、解释器或编译器。例如,作业规范可以符合预定义的LR(1)语言(或LL(1)或另一种正则语言、无上下文语言或上下文敏感语言),并且操纵模块248可以将作业规范作为输入来执行LR(1)(或其他)解析器,以便以作业规范的抽象语法树的形式产生数据流图。在一些示例中,作业规范可以符合固定模式,例如经由诸如图6的UI 600的固定用户界面中的控件输入的值。操纵模块248可以检索对应于UI的存储的数据流图,并且利用来自作业规范的值(例如,经由UI提供)或者至少部分地基于作业规范中的值确定的值来填充图中的值。
在一些示例中,指令模块250可以针对数据操纵中的个体数据操纵,至少部分地基于与作业规范相关联的数据源中的个体数据源的元数据来确定一个或多个数据处理指令。在一些示例中,指令模块250可以至少部分地基于至少一个数据操纵和至少一个数据源的至少一些元数据来确定数据处理指令。例如,指令模块250可以针对个体数据操纵(例如,数据流图的个体节点)来确定查询语言(例如SQL或U-SQL)中的表达式或语句,其在执行时将执行那些数据操纵的函数。
在一些示例中,指令模块250可以确定多个数据操纵,所述多个数据操纵包括该数据操纵,并且至少部分地基于多个数据操纵的相应数据操纵来确定多个数据处理指令,该多个数据处理指令包括该数据处理指令。这可以允许处理涉及多于一个数据操纵的查询。
在一些示例中,指令模块250可以为单个数据操纵或为数据操纵的所定义组合提供多个数据处理指令。例如,对于涉及两个子查询的连接的数据操纵,指令模块250可以为一个子查询提供第一数据处理指令,为另一子查询提供第二数据处理指令,并且为连接提供第三数据处理指令。为单个数据操纵或数据操纵组合提供多个数据处理指令可以允许执行对于特定数据库可能太复杂的查询,并且可以允许子查询的增加的并行性(因此增加查询吞吐量或减少查询等待时间)。如下所提及的,可以使用集合覆盖算法(诸如最大嵌入)来定位应该为其产生一个或多个数据处理指令的数据操纵的所定义组合。
在一些示例中,指令模块250可以访问用于各种类型的数据操纵(例如,“过滤”,“提取”,“运算”,“重命名”或“合并”)的存储的模板。模板可以包括要填充的槽,并且指令模块250可以至少部分地基于至少数据源的元数据,数据流图或与作业规范相关的其他元数据来在槽中填充槽值。示例SQL模板在表3中示出。在表3中,“Δk”表示要填充的槽k。
表3
在一些示例中,作业规范可以包括一个或多个数据流图或数据操纵。在一些示例中,作业规范可以包括从中检索一个或多个数据流图或数据操纵的位置,例如文件名或URL。例如,作业规范可以包括(例如由实体304提供的)U-SQL脚本(或引用U-SQL脚本的位置,且贯穿全文同样如此)。在一些示例中,操纵模块248或者指令模块250可以复制来自作业规范的数据流图或者数据操纵,或将作业规范中供应的数据流图或数据操纵与基于作业规范中的值确定的数据流图或数据操纵集成,例如如上所述。例如,用户提供的U-SQL脚本可作为模板的槽供应。从作业规范中检索数据流图或数据操纵可以允许实体304(例如高级用户)为某些或全部特定作业提供定制或优化的代码。
图5示出了用于表2和图4的示例查询的模板树500(或DAG,并且贯穿全文同样如此)。在一些示例中,操纵模块248或指令模块250可以例如通过遍历数据流图400或者通过解析作业规范来直接确定树500来提供树500的节点。在其中作业规范符合例如UI 600中的控件的值的固定模式的一些示例中,指令模块250可以检索存储的模板树和与固定模式相对应的存储的模板集合。指令模块250然后可以利用来自作业规范的值或者至少部分地基于作业规范中的值确定的值来填充模板,例如树中的叶模板。
在一些示例中,指令模块250可以填充与树500的节点相关联的模板(例如,从表3)。在树500的节点内,下划线(“___”)表示采用其他模板的那些Δk槽,在此示例中,这些槽中的黑色圆圈将槽连接到填充它们的槽值。例如,提取器406的查询模板是“Δ1”,如表3中所示。提取器406因此具有完成的模板“OrderTime”,即数据源中感兴趣的字段名称(表2第5行)。
在一些示例中,指令模块250可以检索对应于所选择的一个数据操纵的存储的模板。指令模块250然后可以至少部分地基于至少一个数据源(例如,与选择的一个数据操纵相对应的数据源)的元数据来填充存储的模板中的字段,以提供各数据处理指令中的至少一个数据处理指令。
在一些示例中,单个模板可以与树500的一个节点有关。在一些示例中,单个模板可以与树500的多于一个节点有关。在后面的示例中的一些示例中,指令模块250或查询模块252可以使用集合覆盖算法(诸如用于编译器的指令选择中的集合覆盖算法,例如最大适合(maximum munch))确定用于树500的适当模板。
在一些示例中,查询模块252可以例如通过组装数据处理指令来至少部分地基于作业规范来从数据处理指令中确定查询。在一些示例中,查询模块252可以确定至少一些数据操纵的相对次序,例如至少两个数据操纵的相对次序。数据处理指令中的至少两个数据处理指令可以分别对应于该至少两个数据操纵。查询模块252然后可以通过根据确定的相对次序组装数据处理指令(例如,数据处理指令中的至少两个)来确定查询。一些数据处理指令可能没有相对排序限制。查询模块252可以提供包括排列在查询中的这种数据处理指令的查询,例如以减少运行时。在一些示例中,查询模块252可以对用于提供查询的数据处理指令执行重排序,死代码消除,提升循环不变或查询不变表达式,展开循环或其他优化。
例如,运算符410的查询模板是Δ1(Δ2)。Δ1是从作业规范中检索的函数的名称,在本示例中为“RoundToDay”(表2,第7行)。Δ2是相关字段的模板,在本示例中为用于提取器406“OrderTime”的补全模板。因此,用于运算符410的补全的模板是“RoundToDay(OrderTime)”。查询模块252可遍历树500以提供用于合并器418的经补全模板。查询模块252可例如以深度优先后序来遍历树500,或以涉及确定任何给定槽的槽值并用确定的槽值填充模板的另一次序来遍历树500。在所解说示例中,用于合并器418的经补全模板是SQL语句"SELECT RoundToDate(OrderTime)AS Date,CountDistinctValues(ComputerID)asOrderCount FROM OrdersPlaced WHERE PRODUCT=‘WINDOWS 10’”.
如本文所述的根据作业规范构造查询(例如,使用数据操纵的树和用于数据处理指令的模板)可以允许用户运行查询而不需要学习查询语言的语法。各种示例可以允许协调多种脚本语言,例如SQL或U-SQL查询,或者JAVA源或二进制小程序来执行HADOOP Map-Reduce(映射-化简)作业。
在一些示例中,树500的一些节点可以具有以一种语言表达的模板,树500的其他节点可以具有以另一种语言表达的模板,并且树500的又一些节点可以具有执行这些语言之间的转换的模板。为该目的,树500中的节点的模板不仅可以包括文本替换,还(或者替代地)可以包括源或二进制代码以执行转换。在一些示例中,作为单个文本查询的附加或替代,查询可以包括在执行查询时要执行的一个或多个代码块。例如,查询可以包括用于获取数据的SQL语句,随后是JAVA应用,该JAVA应用获取从SQL语句输出的数据,并对来自SQL语句的输出执行HADOOP map-reduce(映射-化简)操作。
各示例允许可以提供模板的管理员指定在特定计算设备102或104或集群106上高效运行的查询模式。各种示例允许根据那些查询模式执行用户的查询,而不要求用户直接指定模式。这可以减少集群106上的负载并且可以允许在给定集群106上运行更多的并发作业或每天运行更多作业。这也可以允许在多个集群106上运行特定作业,因为作业规范和数据流图400可独立于特定集群106或其中的数据库232。
在一些示例中,查询模块252或向其提供数据的其他模块可以将安全属性应用于查询。例如,访问或运行查询的能力可被限制为具有有效凭证的用户,例如在WINDOWS安全域中。在一些示例中,作业规范或产生的查询可以包括指示何时(例如,在预定数据源提供新数据记录时)将执行查询的一个或多个触发器。在一些示例中,作业规范或产生的查询可以包括标识在指示先决条件或依赖性的作业或查询之前应该执行的其他作业或查询的先决条件或依赖性。
在一些示例中,执行模块254可以被配置为执行该查询,例如以提供期望的结果或分析。执行模块254可以例如至少部分地基于该查询来访问来自数据源中的至少一个或者各个体数据源的数据以提供查询结果。该查询可以以任何次序包括语言中的单个语句(例如单个SQL语句)或多个语句,或者一个或多个代码块或代码模块。
继续上面的SQL/JAVA示例,执行模块254可以将SQL语句传送到数据库232并从数据库232接收数据。执行模块然后可以将JAVA应用提交给HADOOP作业跟踪器,传递指示从SQL服务器检索的数据的位置的命令行或环境参数。替代地,执行模块254可将SQL语句传送到数据库232,并且将JAVA应用并行地提交给HADOOP作业追踪器。执行模块254可以提供允许JAVA应用直接检索SQL查询的结果的参数并将它们传递到map-reduce框架。执行模块254可以使用在诸如集群106的集群中使用的调度和作业管理技术,例如心跳检查和负载平衡。
在一些示例中,执行模块254可以执行该查询一次或多次,例如,如作业规范所指示的。在一些示例中,执行模块254可以按照例如作业规范中指示的时间表执行该查询。例如,表2中所解说的日常订单作业的作业规范可以包括该作业应该每天(例如在上午5:00)运行的指示。
在一些示例中,一个或多个数据记录可以包括指示例如那些记录何时被创建或更新的时间戳字段。检索模块240可以跟踪从特定数据源或数据流检索数据记录的时间。在各种时间,例如,至少当新记录变得可用时、定期地或按照时间表,检索模块240可以向数据源或数据流请求仅具有晚于追踪的检索时间的时间戳的记录,然后更新追踪的检索时间到例如当前时间或新检索的记录中的最新时间戳。在一些示例中,作为时间戳和追踪的检索时间的替代或补充,例如,如对于传输控制协议(TCP)序列号,可以使用单调递增的记录标识符和所检索的最后一个记录的追踪的标识符(并且贯穿全文同样如此)。
在其中数据记录包括时间戳字段或以其他方式与时间戳相关联的一些示例中,查询模块252或执行模块254可以例如基于作业规范中的及时性信息来添加用于数据的及时性的条件。继续表2的示例,作业规范可以包括指示前一天的数据应该用于查询的及时性信息。查询模块252或执行模块254然后可以添加过滤器,该过滤器仅选择前一天的上午0:00:00至下午11:59:59之间的数据以用于在上午5:00运行的查询。这可以提供五小时的时间让数据在运行作业前变得可用,并且可以为每日查询提供准确结果。在一些示例中,作业规范可以包括及时性信息,该及时性信息指示数据应该仅在特定时间范围内(例如,诸如特定日期之类的绝对时间或者诸如作业开始运行之前的特定小时数之类的相对时间)被加时间戳或者被添加到数据库232时才被使用。
在一些示例中,可以以各种格式提供输出。在一些示例中,执行模块254可以将结果直接提供给数据库客户端302。在其他示例中,来自执行模块254的结果可以在传送到客户端之前被变换。例如,结果可以以不同于数据库232本机提供的格式的格式被返回。在一些配置中,格式模块256或指令模块258的下面描述的功能由操纵模块248、指令模块250、或查询模块252中的一个或多个执行。在一些配置中,执行模块254执行下面描述的执行模块260的功能。
在一些示例中,数据库客户端302的传送模块276可以向格式模块256传送对作业输出的请求。在一些示例中,执行模块254可以触发格式模块256开始处理,例如,与查询的执行并行处理或者在执行查询之后开始处理。
在一些示例中,格式模块256可以至少部分地基于作业规范来确定输出格式。示例输出格式可以包括至少SQL数据库,SQL表,文本文件(诸如XML,JSON,制表符分隔值(TSV)或逗号分隔值(CSV)文件),MICROSOFT EXCEL或其他电子表格表格,到其他数据存储区或诸如MICROSOFT AZURE或MICROSOFT AZURE SQL,AZURE blob(二进制大对象)之类的集群106的上传,ELASTICSEARCH或其他索引,或可移植文档格式(PDF)文档,HTML页面或其他报告格式。输出可以以查询语言中的语句或网络传输的形式提供。例如,如下所讨论的,通过产生包括SQL INSERT语句的文本文件来加载数据,或通过直接连接到目标数据库并通过该连接传输数据插入命令,可以执行向SQL数据库或表的输出。
在一些示例中,指令模块258可以确定可执行以根据输出格式执行查询结果的复制、移动或变换中的至少一者的一个或多个第二数据处理指令。例如,对于来自SQL数据库232和CSV输出格式的结果,第二数据处理指令可以包括用于在每个字段内转义双引号、将每个字段括在双引号内,将每个记录的字段以逗号分隔,以及在文件的单行上输出每条记录的组合字段值的指令。例如,为了将结果馈送到例如云服务的RDBMS,第二数据处理指令可以包括用于制定SQL INSERT语句,建立到RDBMS的连接以及提供制定的SQL INSERT语句给RDBMS的指令。类似于上面参考查询模块252讨论的配置,第二数据处理指令可以包括可执行代码、查询语言中的语句或其任何组合;可以使用模板来构造;或者可以按顺序排列。
在一些示例中,第二数据处理指令可以包括用于例如通过覆写目标数据集来重新加载数据集的指令。这可以允许高效地更新不经常变化的数据集,例如列出世界的国家的表格。
在一些示例中,第二数据处理指令可以包括用于跟踪和维护上次运行时间戳的指令。这可以用于日期对齐的数据或作业,诸如在定期(例如每小时或每天)发生改变的事务性数据源上操作的作业。上次运行时间戳可以指示例如上个记录输出的时间戳。第二数据处理指令可以包括用于处理仅比上次运行时间戳更新的记录,然后更新上次运行时间戳的指令。跟踪上次运行时间戳可以提供保护以免于两次处理单个记录。
在一些示例中,第二数据处理指令可以包括用于将作业的结果与输出合并的指令。例如,输出格式可以包括SQL查询,且第二数据处理指令可以包括SQL UPDATE语句以更新现有记录。以上参考检索模块240和存储模块244讨论了覆写、时间戳追踪和合并的一些示例;相应的技术可以用于提供输出。
在一些示例中,执行模块260可以执行一个或多个第二数据处理指令以至少部分地基于输出格式来提供对应于查询结果的报告数据。例如,执行模块260可根据需要执行附加处理或查询以提供期望的输出。在一些示例中,执行模块260可以例如通过写入磁盘,通过运行SQL INSERT或其他数据库插入命令,或通过与客户端应用、插件或数据库客户端302上的其他模块进行通信来存储输出。例如,执行模块260可以例如经由分布式COM(DCOM)链路将结果提供给MICROSOFT EXCEL插件。这可以允许将结果直接加载到用户的应用,从而减少向用户提供数据的时间、存储器要求和网络带宽要求。
在一些示例中,执行模块260或报告引擎208的另一组件可以产生指示所报告的数据已被提供的通知。例如,执行模块260可以传送(或导致其传送,且贯穿全文同样如此)电子邮件、即时消息、文本消息、自动化电话呼叫或指示报告的数据已被提供的其他通信;更新RSS馈送;向在线网站张贴公告;或以其他方式通知至少实体304或其他感兴趣的实体(例如工作组的其他成员)已提供报告的数据。这样的通知可以包括例如由集群106的作业管理系统提供的任何通知或被包括在例如由集群106的作业管理系统提供的任何通知中,或者作为例如由集群106的作业管理系统提供的任何通知的替代或补充。传送通知可以允许用户迅速定位长时间运行或预定的作业的结果。传送的通知还可以用作用于将作业的输出用作另一作业的数据源的配置的推送或拉取通知。
图6是例如如以上参考规范引擎210和交互引擎214的模块所讨论的示例用户界面(UI)600的图形表示。UI 600(以及下面的图15-16中的示例UI)可以表示例如用于收集数据的对话框、网页或基于文本的输入屏幕。例如,UI600可以表示图1的UI 152。UI 600(以及图15-16中的示例UI)可由数据库客户端302的呈现模块274呈现。在图6中(也在图15-16中),所示的控件的数量和类型仅用于说明的目的,而不是限制性的。任何数量的任何类型的控件可被包括在特定用户界面中。所解说的控件还可以跨多个用户界面划分,例如,一个用户界面用于定位数据源,而另一用户界面用于一旦数据源定位就提供作业规范。
示例UI 600包括两个数据源搜索控件:全文搜索文本控件602和过滤下拉列表604。控件602和604可以接收随后被提供给加权模块264或搜索模块266的信息。然后,搜索模块266可以运行对匹配在控件602和604中提供的准则的数据源的搜索,如上所述。控件602可以接收要被全文搜索的关键字或术语,例如使用如上所述的倒序索引。控件604可以是可以将数据源彼此区分的类别、提供者或其他非全文本字段的下拉列表(由三角形指示)。当用户激活例如按钮的搜索控件606时可执行搜索,或者当用户在控件602和604中做出选择或者输入数据时可递增地执行搜索。在一些示例中,控件604或另一控件(为了简洁起见省略)可以允许实体304从由实体304指定的“最爱”或“加星标”数据源的列表中选择。
搜索结果控件608可以包括与控件602和604中提供的术语匹配的表格、网格、分层树、列表框,例如可滚动列表框、或其他数据源列表。搜索结果控件608可以用作数据源选择控件,从而允许用户点击、选择、核对或以其他方式指定要在作业中使用的一个或多个数据源。
注释控件610可以包括例如允许用户输入对作业(或数据源或目标,如上所述,且贯穿全文同样如此)的注释的自由形式多行文本区域。注释控件610可以附加或替代地允许添加非文本注释,例如描述作业目的的PDF文档。作业名称控件612可以包括例如允许用户输入作业的名称的文本输入控件。如上所讨论的,作业名称和注释可以被存储在元数据储存库234中并且被搜索以便促进使用作业结果作为另一作业的数据源。
示例UI 600包括针对两个准则中的每个准则的三个查询准则控件。控件和准则的数量是一个示例而不是限制性的。查询准则控件可以提供例如对于构建SQL语句中的WHERE子句有用的信息,例如,如上面参考过滤器404讨论的。解说的第一准则包括字段控件614、运算符控件616和值控件618。解说的第二准则包括字段控件620、运算符控件622和值控件624。字段控件614和620可以从数据源接收对字段的选择(例如字段的名称)。运算符控件616和622可以接收用于应用于各个字段中的值的运算符的选择,例如关系运算符。值控件618和624可以接收值,各个字段中的值应该与所接收的值进行比较。在表2的示例中,准则1可以在字段控件614中选择“PRODUCT”,在运算符控件616中选择“等于”,并且在值控件618中选择“WINDOWS 10”。
示例UI 600还包括两个结果字段中的每个结果字段的三个结果字段控件。结果字段控件可以提供例如指示作业意图提供的结果或分析的信息,例如,如上面参考提取器406和408、运算符410和412以及重命名器414和416所讨论的。所解说的第一结果控件包括源字段控件626、函数控件628和结果名称控件630。所解说的第二结果控件包括源字段控件632、函数控件634和结果名称控件636。源字段控件626和632可以接收数据源的字段的名称,例如,如上面参考提取器406和408所讨论的。函数控件628和634可以接收要应用于各个字段的值的函数的选择或名称,例如,如上参考运算符410和412所讨论的。结果名称控件630和636可以接收指示作业的所得到的输出值应承载的名称的文本。在表2的示例中,源字段控件626可以具有对“OrderTime”字段的选择,函数控件628可以具有对函数“RoundToDay”的选择或指示,并且结果名称控件630可以具有文本“Date”。
所解说的UI 600还包括查询显示控件638,在此示例中查询显示控件638是标记为“Show Query(显示查询)”的按钮。查询显示控件638可以经由UI 600呈现针对所提供的作业规范而产生的查询或者当被致动时导致该查询被呈现。例如,当实体304按下“显示查询”按钮时,呈现模块274可以在弹出窗口或其他用户界面控件中显示所产生的SQL、U-SQL、JAVA或其他脚本、程序或查询的部分。这可以允许用户以UI 600未提供的方式修改查询,或者学习对于在其中运行查询的特定数据库环境有用的查询技术。
在一些示例中,作业规范可以指定来自两个或更多数据源的查询数据,这被称为数据源之间的“连接”。连接可以包括例如SELECT语句中的SQL JOIN子句或用于从两个或更多数据源检索相关信息的其他技术。所解说的UI 600示出了用于指定连接的示例用户界面控件。
所解说的UI 600包括连接控件640-646。连接类型控件640可以接收连接的类型的选择,例如,SQL INNER JOIN(SQL内部连接)、LEFT OUTER JOIN(左外部连接)或RIGHTOUTER JOIN(右外部连接)。第一源字段控件642可以接收将用于定位相关数据记录的第一所选数据源的字段的选择。连接运算符控件644可以接收要用于定位相关数据记录的运算符的选择。第二源字段控件646可以接收将用于定位相关数据记录的第二所选数据源的字段的选择。然后作业规范可以指示过滤器404(或分开的连接模块,且在全文中同样如此)提供数据记录,其中控件642中指示的字段的值与控件646中指示的字段的值具有控件644中指示的关系。基于在控件640中指示的连接的类型,过滤器404可以仅提供那些数据记录,或者可以提供那些数据记录且附加地提供其他数据记录(例如,其中控件642或646中指示的字段的值为NULL(空)的记录)。
在所解说的UI 600和本文描述或示出的其它示例中,字段控件(例如,614或642)或值控件(例如,618,624)可以支持具有各种数据组织的字段。示例数据组织可以包括标量,例如单个字符串或数字值;具有命名子字段的记录类型;具有多个编号的子字段的数组类型,或其任何组合。例如,“汽车”字段的数据组织可以是具有用于颜色、引擎排量和立体声功率的字段的记录。汽车记录可以进一步包括具有用于每个车轮的轮胎压力的相应值的数组子字段。在一些示例中,字段控件或值控件可以允许用户在字段内指定特定子字段(或子子字段、...),或者为特定子字段(或子子字段、...)指定值。
说明性过程
图7是示出用于操作数据库的示例过程700的流程图。图7和本文中的其它流程图和示例过程所示的示例功能可以在一个或多个计算设备102或104(例如计算设备200)中实现或者以其它方式体现在这些计算设备中(例如,使用在这些设备上运行的软件)。出于解说的目的,以下参考可执行或参与该示例性方法的各步骤的图2的计算设备200的处理单元224和其它组件来描述示例过程700。然而,诸如处理单元112等其它处理单元和/或计算设备102或104的其它组件可执行诸如过程700等所描述的示例过程的各步骤。类似地,图8-14所示的示例性方法也不限于由任何特别标识的组件来执行。
每一示例流程图或过程中描述操作的次序并不旨在解释为限制,并且任何数量的所描述的操作可以按任何次序和/或并行组合以实现每一过程。如上所述,除了任何特别标识的项或任何给定项组中的其他项之外,上述操作中的任一操作可以对其他项执行。例如,下面讨论的框704可以使用少于所有所确定的数据操纵来操作或执行。
此外,图7-14中的每一者中的操作可以用硬件、软件和/或其组合来实现。在软件的上下文中,各个操作表示在由一个或多个处理器执行时使得一个或多个处理器执行既定操作的计算机可执行指令。在硬件的上下文中,操作表示在电路中实现的逻辑功能,例如数据路径控制和有限状态机定序功能。
在一些示例中,在框702处,可以至少部分地基于作业规范来确定一个或多个数据操纵。多个数据源中的一个或多个可以与作业规范相关联。以上参考操纵模块248描述了一些示例。
在一些示例中,在框704处,对于各数据操纵中的个体数据操纵,可以至少部分地基于与作业规范相关联的个体数据源的元数据来确定一个或多个数据处理指令。以上参考指令模块250描述了一些示例。
在一些示例中,在框706处,可以通过至少部分基于作业规范来组装数据处理指令来确定查询。以上参考查询模块252描述了一些示例。
在框708处,可以例如通过至少部分地基于查询来访问来自各数据源中的个体数据源的数据来执行查询以提供查询结果。以上参考执行模块254描述了一些示例。
图8是解说用于搜索数据库232的示例过程800的流程图。一些示例包括搜索元数据储存库234。
在框802处,可以接收搜索请求。搜索请求可以包括一个或多个搜索关键字,并可以指示多个数据源。以上参考接收模块262描述了一些示例。
在框804处,可以至少部分地基于多个数据源中的一些数据源之间的生产者-消费者关系来确定数据源中的一些数据源的相应权重。以上参考加权模块264描述了一些示例。
在框806处,可以使用搜索关键字和确定的权重来搜索数据源的元数据,以标识与搜索请求相对应的匹配数据源。以上参考搜索模块266描述了一些示例。
在框808处,可以至少部分地基于所确定的权重来确定匹配数据源(为了简洁将其称为“匹配”)中的至少两个匹配数据源的排名信息。以上参考搜索模块266描述了一些示例。
在框810处,可以传送数据源中的匹配数据源的标识信息。也可以传送排名。以上参考传送模块268描述了一些示例。
图9是解说用于搜索数据库232的示例过程900的流程图。一些示例包括搜索元数据储存库234。框804可以包括框902或者在框902之前。框810可以包括框906或者在框906之后或之前。
在框902处,可以至少部分地基于至少数据源的类型来过滤数据源的元数据以标识数据源中的候选数据源。以上参考搜索模块266描述了一些示例。
在一些示例中,框904可以包括至少部分地基于至少一些搜索关键字从候选数据源中选择匹配数据源。框904的其他功能可以如以上参考框806所讨论的。以上参考搜索模块266描述了一些示例。框904可以在框810之前。
在框906处,可以至少部分地基于数据源中的至少一些匹配数据源的类型或来源来对至少一些匹配数据源进行编组以提供编组信息。以上参考搜索模块266和传送模块268描述了一些示例。
在框908处,或者作为框810的部分,编组信息可以与标识信息和排名信息相关联地被传送。以上参考传送模块268描述了一些示例。
在一些示例中,框804可包括框910和912。
在框910处,对于数据源中的所选数据源,可以至少部分地基于数据源的元数据来确定所选数据源的消费者的数量。以上参考加权模块264描述了一些示例。
在框912处,可以至少部分地基于消费者的数量并且与消费者的数量正相关地确定所选数据源的相应权重。以上参考加权模块264描述了一些示例。可以针对一个或多个数据源中的每一个执行框910和912。
图10是解说用于更新数据库的示例过程1000的流程图。
在框1002处,可以从数据流接收数据记录。以上参考检索模块240描述了一些示例。
在框1004处,可以确定数据记录的结构信息和数据记录的内容信息。以上参考元数据模块242描述了一些示例。
在框1006处,可以至少部分地基于结构信息来确定数据源标识符。以上参考元数据模块242描述了一些示例。
在框1008处,可以将内容信息与数据源标识符相关联地存储到数据库232中。以上参考存储模块244描述了一些示例。
在一些示例中,框1008之后可以是框1002。以这种方式,当附加数据记录可用时,可以如框1002-1008中所述处理附加数据记录。相应地,在一些示例中,过程1000可以包括从数据流接收多个数据记录,所述多个记录包括该数据记录(框1002)。
在一些示例中,框1006或框1008可以在图7的框702、704、706或708中的至少一个之前或者可以包括图7的框702、704、706或708中的至少一个的功能。例如,来自框1006的数据源标识符可以被包括于在框702中处理的作业规范中。这可以允许针对新接收信息运行作业。在一些示例中,在框1006或框1008之后,数据操纵可以至少部分地基于作业规范来确定,其中通过在框1006中确定的数据源标识符标识的数据源与作业规范相关联(例如如在框702中)。数据处理指令可以至少部分地基于数据操纵和数据源的至少一些元数据来确定(例如,如在框704中)。可以至少部分基于作业规范从数据处理指令确定查询(例如,如在框706中)。该查询可以通过至少部分地基于该查询访问来自数据源的数据来执行,以提供查询结果(例如,如在框708中)。
在一些示例中,框1006或框1008可以在图8的框802、804、806、808或810中的至少一个之前或者可以包括图8的框802、804、806、808或810中的至少一个的功能。这可以允许搜索新到达记录,例如,在UI 600最初被呈现之后但在实体304完成作业规范之前到达的记录。在一些示例中,在框1006或框1008之后,可以接收搜索请求(例如,如在框802中)。搜索请求可以包括一个或多个搜索关键字,并可以指示多个数据源。该多个数据源可以包括由在框1006中确定的数据源标识符标识的第一数据源。第一数据源的权重可至少部分地基于该多个数据源中的至少两个数据源之间的生产者-消费者关系来确定(例如,如在框804中)。与该多个数据源中的至少一个数据源(例如,第一数据源)相关联的元数据可以使用搜索关键字来搜索以标识该多个数据源中的匹配数据源,其中所述匹配数据源对应于搜索请求(例如,如在框806中)。所述多个数据源的至少所述第一数据源和所述第二数据源的排名信息可至少部分地基于所确定的权重来确定(例如,如在框808中)。可以传送匹配数据源的标识信息和排名信息(如在框810中)。
图11是解说用于更新数据库的示例过程1100的流程图。在一些示例中,框1002可包括框1102或1104-1106。在一些示例中,框1004可包括框1108和1110。
在框1102处,可以向数据流请求数据记录。以上参考检索模块240描述了一些示例。
在框1104处,可以与数据流建立网络连接。以上参考检索模块240描述了一些示例。
在框1106处,可以经由网络连接来接收数据记录。以上参考检索模块240描述了一些示例。
在框1108处,可以解析接收的数据记录以定位接收的数据记录中的一个或多个字段名称和一个或多个字段关系。以上参考元数据模块242描述了一些示例。
在框1110处,可以组装字段名称和字段关系以提供结构信息。以上参考元数据模块242描述了一些示例。
如上所述,在一些示例中,框1008之后可以是框1002(图10),例如以处理多个数据记录。在一些示例中,过程1000或1100可以包括从数据流接收多个数据记录,所述多个记录包括该数据记录。这可以如以上参考框1002所描述的那样完成。相应地,框1004可以包括确定所述多个数据记录中的各个体数据记录的相应结构信息记录,所述相应结构信息记录中的一个结构信息记录包括所述数据记录的结构信息。
图12是解说用于更新数据库的示例过程1200的流程图。在一些示例中,框1006可包括框1202或框1204-1208。相应地,在图12上,框1006中的处理可以以框1202或框1204开始。框1006可以在框1210或框1212之前。
在框1202处,可以查询元数据储存库234中的与结构信息相对应的数据源标识符。以上参考元数据模块242描述了一些示例。
在框1204处,可以查询元数据储存库234以确定结构信息是否在元数据储存库234中被表示。以上参考元数据模块242描述了一些示例。如果结构信息没有在元数据储存库234中被表示,则框1204之后可以是框1206。如果结构信息在元数据储存库234中被表示,则框1204之后可以是框1208。
在框1206处,响应于在元数据储存库中缺少或未找到结构信息,可以将结构信息添加到元数据储存库。以上参考元数据模块242描述了一些示例。
在框1208处,可以从元数据储存库接收对应于结构信息的数据源标识符。以上参考元数据模块242描述了一些示例。在一些示例中,可以在单个框中执行框1206和框1208的功能。
在框1210处,可以存储内容信息,例如,如以上参考框1008所讨论的。框1210可以包括框1210或者在框1210之后或之前。如上所述,在一些示例中,框1008之后可以是框1002(图10),例如以处理多个数据记录。
在框1212处,可以确定各个结构信息记录的一个或多个代表性结构信息记录或从各个结构信息记录确定一个或多个代表性结构信息记录。各个体代表性结构信息记录(例如每个代表性结构信息记录)可以与相应的数据源标识符相关联并且可以对应于各个体数据记录中的一个或多个数据记录,例如,如上面参考元数据模块242所讨论的。在一示例中,从航空遥测数据流接收两种不同类型的数据记录:包含经度和纬度的位置记录,以及包括冷却剂温度和油压的引擎记录。位置记录可以与包括例如字段名称“纬度”和“经度”的第一代表性结构信息记录相关联。引擎记录可以与包括例如字段名称“温度”和“压强”的第二代表性结构信息记录相关联。
在框1212处或在框1212之后的框1210处,可以将各个体数据记录与相应代表性结构信息记录的数据源标识符相关联地存储到数据库中(例如,如在框1008中)。这可以允许将具有相同结构信息的记录与相同数据源标识符相关联地存储在数据库中,这可促成那些记录的搜索。
图13是解说用于更新元数据储存库234的示例过程1300的流程图。
在框1302处,可以呈现用户界面,例如网页或对话框。UI可以包括一个或多个查询准则控件和一个或多个结果字段控件。以上参考图6的UI 600描述了一些示例。以上参考呈现模块274描述了一些示例。
在框1304处,经由用户界面接收作业规范的信息。作业规范包括至少一个查询准则和至少一个结果字段规范。以上参考呈现模块274描述了一些示例。
在框1306处,可以在用户界面中呈现注释控件,例如注释控件610。以上参考呈现模块274描述了一些示例。
在框1308处,可以经由用户界面接收注释数据。以上参考呈现模块274描述了一些示例。
在框1310,作业规范的信息可以与注释数据相关联地存储在元数据储存库234中。以上参考传送模块276描述了一些示例。
图14是解说用于搜索元数据储存库234的示例过程1400的流程图。框1310之后可以是框1402。
在框1402处,可以在用户界面中呈现数据源搜索控件。以上参考呈现模块274描述了一些示例。
在框1404,可以经由用户界面接收一个或多个搜索关键字。以上参考呈现模块274描述了一些示例。
在框1406处,可以搜索元数据储存库以寻找匹配搜索关键字的数据源以提供匹配数据源。搜索可以至少包括搜索存储的注释数据。这可如例如以上参考图8或9讨论的那样完成。注释数据可以作为仅包含注释数据的不同元数据字段被存储或搜索,或者可以与其他元数据被一起存储或搜索。例如,在框1406处,可至少部分地基于数据源的至少两个数据源之间的生产者-消费者关系来确定各数据源中的数据源的权重,例如如在框804中。可以至少部分基于所确定的权重来确定匹配数据源中的至少两个匹配数据源的排名信息,例如如在框808中。可以在用户界面中呈现匹配数据源中的至少两个匹配数据源的排名信息。例如,匹配数据源中的至少两个匹配数据源可以呈现在图6的搜索结果控件608中,其中排名较高的数据源在视觉上位于排名较低的数据源之上。
在框1408处,可以经由用户界面呈现匹配数据源的标识信息。以上参考呈现模块274描述了一些示例。在一些示例中,匹配数据源中的一个匹配数据源可以是先前例如由实体304提供的作业规范。在这些示例中的一些示例中,框1408之后可以是框1410。
在框1410处,可以经由用户界面接收第二作业规范。第二作业规范可以包括作业规范作为数据源的指定。以上参考呈现模块274描述了一些示例。
解说性界面
图15是用于摄取作业的示例用户界面(UI)1500的图形表示,例如,如上面参考摄取引擎202、规范引擎210和交互引擎214的模块所讨论的。一些控件可以如上所讨论的参考图6,如由部件编号所指示的。示例UI 1500可以接收任何数量的字段的指示以摄取到数据库232中。
示例UI 1500的输入字段控件可以包括接收要放置到数据源中的字段的名称的字段名称控件1502、1504、1506和1508。尽管被示出为输入控件,但是控件1502-1508中的至少一些可以是选择控件,例如用于从提供数据记录的数据源使用的名称中进行选择。此示例中的输入字段控件还包括用于接收要分别应用于控件1502-1508中命名的字段的处理选项的选项控件1510、1512、1514和1516。示例选项至少可包括保留水印、去除水印、转义字段值(例如,添加引号或反斜杠)、消除字段值、更改文本编码(例如,规范化Unicode或在UTF-8和UTF-16之间转换)、压缩、解压缩、混淆、去混淆、加密或解密。
所解说的UI 1500还包括作业调度字段1518-1524。本文中的其他示例UI(例如UI600)可以包括作业调度字段1518-1524。尽管被示出为选择字段,但作业调度字段1518-1524中的至少一些可以是输入字段。可以使用比此处显示的更多、更少或不同的作业调度字段。
在所解说的示例中,作业类型字段1518可以接收作业是否例如尽可能快地运行一次、按时间表运行一次、或者按时间表运行多次的指示。作业频率字段1520可以接收作业应该多频繁地运行的指示,例如每小时、每天、每周、每隔一周或每第三个周四。作业持续时间字段1522可以接收作业应该何时停止运行的指示,例如在n次运行(n≥1)之后或者在特定日期之后。数据及时性字段1524可以接收作业的每次运行中应该使用哪些数据的指示,例如,昨天的数据、上个月的数据或直到作业开始运行的时间的数据。
运行控件1526在被致动时可以使传送模块276将作业规范传送到例如操纵模块248以用于作业规范的处理。本文中的其他UI(例如,UI 600)也可以具有运行控件1526。
图16是用于导出作业的示例用户界面(UI)1600的图形表示,例如,如上面参考交互引擎214和报告引擎208的模块所讨论的。一些控件可以如上所讨论的参考图6,如由部件编号所指示的。示例UI 1600可以接收任何数量的字段的指示以从数据库232导出。
在一些示例中,搜索控件1602或增量搜索可以搜索所有数据源,或者仅搜索分析作业的输出、或其组合。在一些示例中,即使该作业尚未被添加到元数据储存库234中作为数据源,搜索结果控件1604也可以接收要导出的分析作业的指示。上面参考搜索控件606讨论了搜索控件1602的其他功能,并且参考搜索结果控件608讨论了搜索结果控件1606的其他功能。
所解说的UI 1600的输出字段控件可以包括接收要放置到数据源中的字段的名称的字段名称控件1606、1608、1610和1612。尽管被示出为输入控件,但是控件1606-1612中的至少一些可以是选择控件,例如用于从提供数据记录的数据源或作业使用的名称中进行选择。此示例中的输出字段控件还包括用于接收要分别应用于控件1606-1612中命名的字段的选项的选项控件1614、1616、1618和1620。这些选项可以包括在导出之前应用于该字段的处理选项,例如上面参考选项控件1510-1516描述的任何选项。这些选项可以附加地或替代地包括专用于特定输出格式的选项,例如,要作为用于SQL导出的主键的一个或多个字段的指定、在输出中要被索引的一个或多个字段的指定、或者文本字段的对照序列或最大长度,诸如SQL VARCHAR字段。
所解说的UI 1600可以包括输出格式控件1622,例如选择或输入控件,其接收诸如SQL、CSV或上述其他格式的输出格式的选择。输出选项控件1624可以接收作为整体适用于输出的选项,例如分隔符(如逗号、制表符或管道)、行结束符(例如回车符、换行符或二者)、文本文件编码、或压缩。目的地控件1626可以接收存储输出数据的位置的指示,例如数据库连接字符串、统一资源定位符(URL)、文件名或路径、统一命名约定(UNC)路径、电子邮件地址、邮政地址或其他目的地标识符。
所解说的UI 1600可以包括添加最爱控件1628,如搜索结果控件1604中所示的星号所解说的。添加最爱控件1628在被操作时可以将搜索结果控件1604中的所选数据源添加到实体304或所解说的UI 1600的其他用户的“最爱”列表。所解说的UI 1600可以包括显示最爱控件1630,例如按钮或下拉列表。显示最爱控件1630在被操作时可以呈现实体304的最爱的列表,例如,使用添加最爱控件1628如此指定的。例如,当显示最爱控件1630被操作时可以在搜索结果控件1604中显示最爱。允许实体或其他用户指定和检索最爱可以允许实体或其他用户容易地从例如频繁使用数据源中进行选择。
示例条款
A:一种系统,包括:其上具有多个模块的至少一个计算机可读介质;以及至少一个处理单元,所述至少一个处理单元可操作地耦合到所述计算机可读介质中的一个或多个计算机可读介质,所述至少一个处理单元被配置为访问来自一个或多个数据源的数据,并且被适配成执行所述多个模块中的模块,所述多个模块包括:构造引擎的至少一个模块,其被配置为:至少部分地基于作业规范来确定数据操纵,其中所述一个或多个数据源中的至少一个数据源与所述作业规范相关联;至少部分地基于所述数据操纵和所述一个或多个数据源中的所述至少一个数据源的至少一些元数据来确定数据处理指令;以及至少部分地基于所述作业规范来确定来自所述数据处理指令的查询;以及执行引擎的至少一个模块,其被配置为:通过至少部分地基于所述查询来访问来自所述一个或多个数据源的至少一个数据源的数据而执行所述查询以提供查询结果。
B:如段落A所述的系统,其中所述构造引擎被进一步配置为:确定多个数据操纵,所述多个数据操纵包括所述数据操纵;至少部分地基于所述多个数据操纵中的各个数据操纵来确定多个数据处理指令,所述多个数据处理指令包括所述数据处理指令;确定所述多个数据操纵中的至少两个所述数据操纵的相对次序,其中所述数据处理指令中的至少两个数据处理指令分别对应于至少两个所述数据操纵;以及进一步通过根据所确定的相对次序组装至少两个所述数据处理指令来确定所述查询。
C:如段落A或B所述的系统,其中所述构造引擎被进一步配置为通过以下来确定所述数据处理指令:检索对应于所述数据操纵的存储的模板;以及至少部分地基于所述一个或多个数据源中的所述至少一个数据源的所述至少一些元数据填充所述存储的模板中的至少一个字段以提供所述数据处理指令中的所述至少一个数据处理指令。
D:如段落A-C中的任一项所述的系统,所述多个模块进一步包括摄取引擎的至少一个模块,其被配置为:检索数据记录;确定对应于所述数据记录的元数据,所述元数据包括指示所述一个或多个数据源中的至少一个数据源的数据源标识符;以及将所述元数据与所述数据源标识符相关联地存储在元数据储存库中。
E:如段落D所述的系统,其中所述摄取引擎被配置为通过从所述数据提取属性值或关系来确定所述元数据。
F:如段落A-E中的任一项所述的系统,所述多个模块进一步包括报告引擎的一个或多个模块,其被配置为:至少部分基于所述作业规范来确定输出格式;确定第二数据处理指令以根据所述输出格式执行查询结果的复制、移动或变换中的至少一者;以及至少部分地基于所述输出格式来执行所述第二数据处理指令以提供对应于所述查询结果的报告的数据。
G:如段落A-F中的任一项所述的系统,其中所述报告引擎被进一步配置为产生指示报告的数据已被提供的通知。
H:如段落A-G中任一项所述的系统,其特征在于,所述多个模块进一步包括至少一个模块,其被配置为:提供包括数据源选择控件、查询准则控件和结果字段控件的用户界面;以及经由所述用户界面接收所述作业规范。
I:如段落A-H中任一项所述的系统,其中所述执行模块被配置为根据所述作业规范中的信息多次执行所述查询。
J:如段落A-I中任一项所述的系统,其中所述执行模块被配置为根据所述作业规范中指示的时间表多次执行所述查询。
K:如段落A-J中任一项所述的系统,其中所述作业规范包括及时性信息,并且所述构造引擎或所述执行引擎中的至少一者被配置为至少部分地基于所述及时性信息过滤来自所述数据源中的至少一个数据源的数据。
L:一种计算机实现的方法,包括:接收包括一个或多个搜索关键字并指示多个数据源的搜索请求;至少部分地基于所述多个数据源中的至少两个数据源之间的生产者-消费者关系来确定所述多个数据源中的第一数据源的权重;使用所述搜索关键字来搜索与多个数据源中的至少一个数据源相关联的元数据以标识所述多个数据源中的匹配数据源,其中所述匹配数据源对应于所述搜索请求;至少部分地基于所确定的权重来确定所述多个数据源中的至少所述第一数据源和第二数据源的排名信息;以及传送所述匹配数据源的标识信息和所述排名信息。
M:如段落L所述的计算机实现的方法,其中确定所述权重包括:至少部分地基于所述数据源的所述元数据确定所述第一数据源的消费者的数量;以及至少部分地基于所述消费者的数量来确定所述第一数据源的权重,其中所确定的相应权重与所述消费者的数量正相关。
N:如段落L或M所述的计算机实现的方法,其中所述搜索进一步包括:至少部分地基于至少数据源的类型来过滤所述元数据以标识所述多个数据源中的候选数据源;以及至少部分地基于所述搜索关键字中的至少一些搜索关键字从所述候选数据源中选择匹配数据源。
O:如段落L-N中任一项所述的计算机实现的方法,进一步包括:至少部分地基于所述匹配数据源中的至少一些匹配数据源的至少类型或来源来将所述匹配数据源中的所述至少一些匹配数据源编组以提供编组信息;以及将所述编组信息与所述标识信息和所述排名信息相关联地传送。
P:一种其上具有计算机可执行指令的计算机可读介质,所述计算机可执行指令在执行之际将计算机配置成执行操作,所述操作包括:从数据流接收数据记录;确定所述数据记录的结构信息和所述数据记录的内容信息;至少部分地基于所述结构信息来确定数据源标识符;以及将所述内容信息与所述数据源标识符相关联地存储到数据库中。
Q:如段落P所述的计算机可读介质,用于确定所述数据源标识符的操作包括:确定所述结构信息是否在元数据储存库中被表示;响应于所述结构信息从所述元数据储存库中缺失,将所述结构信息添加到所述元数据储存库;以及从所述元数据储存库接收对应于所述结构信息的数据源标识符。
R:如段落P或Q所述的计算机可读介质,用于确定所述数据源标识符的操作包括向所述元数据储存库查询对应于所述结构信息的所述数据源标识符。
S:如段落P-R中任一项所述的计算机可读介质,用于接收所述数据记录的操作包括向所述数据流请求所述数据记录。
T:如段落P-S中的任一项所述的计算机可读介质,用于接收所述数据记录的操作包括:与所述数据流建立网络连接;以及经由所述网络连接接收所述数据记录。
U:如段落P-T中的任一项所述的计算机可读介质,用于确定所述结构信息的操作包括:解析所接收的数据记录以定位所接收的数据记录中的字段名称和字段关系;以及组装所述字段名称和所述字段关系以提供所述结构信息。
V:如段落P-U中的任一项所述的计算机可读介质,所述操作进一步包括:从所述数据流接收多个数据记录,所述多个记录包括所述数据记录;确定所述多个数据记录中的个体数据记录的相应结构信息记录,所述数据记录的所述相应结构信息记录包括所述结构信息;确定所述相应结构信息记录的代表性结构信息记录,所述代表性结构信息记录与相应数据源标识符相关联并对应于所述个体数据记录中的一个或多个数据记录;以及将所述个体数据记录中的至少一个数据记录与所述代表性结构信息记录的数据源标识符相关联地存储到所述数据库中。
W:如段落P-V中的任一项所述的计算机可读介质,所述操作进一步包括:至少部分地基于作业规范来确定数据操纵,其中由所述数据源标识符标识的数据源与所述作业规范相关联;至少部分地基于所述数据操纵和所述数据源中的至少一些元数据来确定数据处理指令;至少部分地基于所述作业规范来确定来自所述数据处理指令的查询;以及通过至少部分地基于所述查询来访问来自所述数据源的数据而执行所述查询以提供查询结果。
X:如段落P-W中的任一项所述的计算机可读介质,所述操作进一步包括:接收包括一个或多个搜索关键字并指示多个数据源的搜索请求,其中所述多个数据源包括由所述数据源标识符标识的第一数据源;至少部分地基于所述多个数据源中的至少两个数据源之间的生产者-消费者关系来确定所述第一数据源的权重;使用所述搜索关键字来搜索与多个数据源中的至少一个数据源相关联的元数据以标识所述多个数据源中的匹配数据源,其中所述匹配数据源对应于所述搜索请求;至少部分地基于所确定的权重来确定所述多个数据源中的至少所述第一数据源和第二数据源的排名信息;以及传送所述匹配数据源的标识信息和所述排名信息。
Y:一种计算机实现的方法,包括:呈现包括至少一个查询准则控件和至少一个结果字段控件的用户界面;经由所述用户界面接收作业规范的信息,所述作业规范包括查询准则和结果字段规范;在所述用户界面中呈现注释控件;经由所述用户界面接收注释数据;以及将所述作业规范的信息与所述注释数据相关联地存储在所述元数据储存库中。
Z:如段落Y所述的计算机实现的方法,进一步包括:在所述用户界面中呈现数据源搜索控件;经由所述用户界面接收搜索关键字;以及在所述元数据储存库中搜索与所述搜索关键字匹配的数据源以提供匹配数据源,其中所述搜索至少包括搜索存储的注释数据;以及在所述用户界面中呈现所述匹配数据源的标识信息。
AA:如段落Z所述的计算机实现的方法,其中所述匹配数据源包括所述作业规范,所述方法进一步包括:在呈现所述标识信息之后,经由所述用户界面接收包括所述作业规范作为数据源的指定的第二作业规范。
AB:如段落Z或AA所述的计算机实现的方法,进一步包括:至少部分地基于所述数据源中的至少两个数据源之间的生产者-消费者关系来确定所述数据源中的数据源的权重;至少部分地基于所确定的权重来确定至少两个所述匹配数据源的排名信息;以及在所述用户界面中呈现所述至少两个所述匹配数据源的所述排名信息。
AC:一种系统,包括:用于接收包括一个或多个搜索关键字并指示多个数据源的搜索请求的装置;用于至少部分地基于所述多个数据源中的至少两个数据源之间的生产者-消费者关系来确定所述多个数据源中的第一数据源的权重的装置;用于使用所述搜索关键字来搜索与多个数据源中的至少一个数据源相关联的元数据以标识所述多个数据源中的匹配数据源的装置,其中所述匹配数据源对应于所述搜索请求;用于至少部分地基于所确定的权重来确定所述多个数据源中的至少所述第一数据源和第二数据源的排名信息的装置;以及用于传送所述匹配数据源的标识信息和所述排名信息的装置。
AD:如段落AC所述的系统,其中用于确定权重的装置包括:用于至少部分地基于所述数据源的所述元数据确定所述第一数据源的消费者的数量的装置;以及用于至少部分地基于所述消费者的数量来确定所述第一数据源的权重的装置,其中所确定的相应权重与所述消费者的数量正相关。
AE:如段落AC或AD所述的系统,其中用于搜索的装置进一步包括:用于至少部分地基于至少数据源的类型来过滤所述元数据以标识所述多个数据源中的候选数据源的装置;以及用于至少部分地基于所述搜索关键字中的至少一些搜索关键字从所述候选数据源中选择匹配数据源的装置。
AF:如段落AC-AE中的任一项所述的系统,进一步包括:用于至少部分地基于所述匹配数据源中的至少一些匹配数据源的至少类型或来源来将所述匹配数据源中的所述至少一些匹配数据源编组以提供编组信息的装置;以及用于将所述编组信息与所述标识信息和所述排名信息相关联地传送的装置。
AG:一种系统,包括:用于呈现包括至少一个查询准则控件和至少一个结果字段控件的用户界面的装置;用于经由所述用户界面接收作业规范的信息的装置,所述作业规范包括查询准则和结果字段规范;用于在所述用户界面中呈现注释控件的装置;用于经由所述用户界面接收注释数据的装置;以及用于将所述作业规范的信息与所述注释数据相关联地存储在所述元数据储存库中的装置。
AH:如段落AG所述的系统,进一步包括:用于在所述用户界面中呈现数据源搜索控件的装置;用于经由所述用户界面接收搜索关键字的装置;以及用于在所述元数据储存库中搜索与所述搜索关键字匹配的数据源以提供匹配数据源的装置,其中所述搜索至少包括搜索存储的注释数据;以及用于在所述用户界面中呈现所述匹配数据源的标识信息的装置。
AI:如段落AH所述的系统,其中所述匹配数据源包括所述作业规范,所述系统进一步包括:用于在呈现所述标识信息之后,经由所述用户界面接收包括所述作业规范作为数据源的指定的第二作业规范的装置。
AJ:如段落AH或AI所述的系统,进一步包括:用于至少部分地基于所述数据源中的至少两个数据源之间的生产者-消费者关系来确定所述数据源中的数据源的权重的装置;用于至少部分地基于所确定的权重来确定至少两个所述匹配数据源的排名信息的装置;以及用于在所述用户界面中呈现所述至少两个所述匹配数据源的所述排名信息的装置。
AK:其上具有计算机可执行指令的计算机可读介质(例如,计算机存储介质),该计算机可执行指令在被执行时将计算机配置成执行段落L-O中的任一项所述的操作。
AL:一种设备,包括:处理器;以及其上具有计算机可执行指令的计算机可读介质(例如,计算机存储介质),该计算机可执行指令在由处理器执行时将该设备配置成执行段落L-O中的任一项所述的操作。
AM:一种系统,包括:用于处理的装置;以及用于在其上存储有计算机可执行指令的装置,这些计算机可执行指令包括用于将该系统配置成执行如段落L–O中的任一项所述的方法的装置。
AN:一种计算机实现的方法,包括执行如段落P-X中任一项所述的操作。
AO:一种设备,包括:处理器;以及如段落L-O中的任一项所述的计算机可读介质,其中所述处理器被配置为执行所述计算机可读介质上的所述计算机可执行指令。
AP:其上具有计算机可执行指令的计算机可读介质(例如,计算机存储介质),该计算机可执行指令在被执行时将计算机配置成执行段落Y-AB中的任一项所述的操作。
AQ:一种设备,包括:处理器;以及其上具有计算机可执行指令的计算机可读介质(例如,计算机存储介质),该计算机可执行指令在由处理器执行时将该设备配置成执行段落Y-AB中的任一项所述的操作。
AR:一种系统,包括:用于处理的装置;以及用于在其上存储有计算机可执行指令的装置,这些计算机可执行指令包括用于将该系统配置成执行如段落Y–AB中的任一项所述的方法的装置。
结语
本文描述的各种数据库操作技术可允许更高效地将数据存储在数据库中,指定或执行查询,或报告查询的结果。各个方面可以提供减少的计算和用户负担来定位感兴趣记录的数据源。即使用户不知道查询构造的最佳实践,各方面也可以高效地应用这些实践。各示例可以将数据直接提供给用户的数据库客户端,从而减少数据库系统的临时存储需求。
虽然已经用对结构特征和/或方法动作专用的语言描述了各项技术,但是应该理解,所附权利要求不必限于所述的特征或动作。相反,这些特征和动作是作为实现这些技术的示例形式而描述的。
示例过程的操作在单独的框中示出,并且参考这些框来概括。这些过程被示为逻辑框流,其每个框可表示可用硬件、软件或其组合实现的一个或多个操作。在软件的上下文中,这些操作表示储存在一个或多个计算机可读介质上的计算机可执行指令,这些指令在由一个或多个处理器执行时使得一个或多个处理器执行既定操作。一般而言,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、模块、组件、数据结构等。描述操作的次序并不旨在解释为限制,并且任何数量的所述操作可以按任何次序执行、按任何次序进行组合、细分成多个子操作、和/或并行执行,以实现所描述的过程。可由与一个或多个计算设备102、104或200相关联的资源(诸如一个或多个内部或外部CPU或GPU)和/或硬件逻辑的一个或多个片段(诸如FPGA、DSP或上述的其他类型)来执行所描述的过程。
上述所有方法和过程可以用由一个或多个通用计算机或处理器执行的软件代码模块来具体化,并且可经由这些软件代码模块来完全自动化。这些代码模块可以存储在任何类型的计算机可执行存储介质或其他计算机存储设备中。方法中的某些或全部可用专用计算机硬件来具体化。
除非另外具体声明,否则在上下文中可以理解条件语言(诸如“能”、“能够”、“可能”、或“可以”)表示特定示例包括而其他示例不包括特定特征、元素和/或步骤。因此,这样的条件语言一般并非旨在暗示某些特征、元素和/或步骤以任何方式对于一个或多个示例是必需的,或者一个或多个示例必然包括用于在有或没有用户输入或提示的情况下决定某些特征、元素和/或步骤是否包括在任何特定示例中或将在任何特定示例中被执行的逻辑。除非另外具体声明,应理解联合语言(诸如短语“X、Y或Z中至少一个”)表示项、词语等可以是X、Y或Z中的任一者、或其组合。
本文所述和/或附图中描述的流程图中任何例程描述、元素或框应当被理解成潜在地表示包括用于实现该例程中具体逻辑功能或元素的一个或多个可执行指令的代码的模块、片段或部分。替换实现被包括在本文描述的示例的范围内,其中各元素或功能可被删除,或与所示出或讨论的顺序不一致地执行,包括基本上同步地执行或按相反顺序执行,这取决于所涉及的功能,如本领域技术人也将理解的。所有这样的修改和变型本文旨在被包括在本公开的范围内并且由所附权利要求书保护。
Claims (6)
1.一种用于数据库操作的系统,包括:
其上具有多个模块的至少一个计算机可读介质;以及
至少一个处理单元,所述至少一个处理单元可操作地耦合到所述计算机可读介质中的一个或多个计算机可读介质,所述至少一个处理单元被配置为访问来自一个或多个数据源的数据,并且被适配成执行所述多个模块中的模块,所述多个模块包括:
构造引擎的至少一个模块,其被配置为:
至少部分地基于作业规范来确定数据操纵,其中所述一个或多个数据源中的至少一个数据源与所述作业规范相关联,所述作业规范指定从数据源检索数据的摄取作业,所述摄取作业将检索到的数据存储到数据库中,或对数据进行索引并将索引存储在数据库中,或将数据存储在文档存储中;
至少部分地基于所述数据操纵和所述一个或多个数据源中的所述至少一个数据源的至少一些元数据来确定数据处理指令;以及
至少部分地基于所述作业规范来确定来自所述数据处理指令的查询;以及
执行引擎的至少一个模块,其被配置为:
通过至少部分地基于所述查询来访问来自所述一个或多个数据源的至少一个数据源的数据而执行所述查询以提供查询结果;
所述多个模块进一步包括摄取引擎的至少一个模块,其被配置为:
检索数据记录;
确定对应于所述数据记录的元数据,所述元数据包括指示所述一个或多个数据源中的至少一个数据源的数据源标识符;以及
将所述元数据与所述数据源标识符相关联地存储在元数据储存库中。
2.如权利要求1所述的系统,其特征在于,所述构造引擎被进一步配置为:
确定多个数据操纵,所述多个数据操纵包括所述数据操纵;
至少部分地基于所述多个数据操纵中的各个数据操纵来确定多个数据处理指令,所述多个数据处理指令包括所述数据处理指令;
确定所述多个数据操纵中的至少两个所述数据操纵的相对次序,其中所述数据处理指令中的至少两个数据处理指令分别对应于至少两个所述数据操纵;以及
进一步通过根据所确定的相对次序组装至少两个所述数据处理指令来确定所述查询。
3.如权利要求1所述的系统,其特征在于,所述构造引擎被进一步配置为通过以下来确定所述数据处理指令:
检索对应于所述数据操纵的存储的模板;以及
至少部分地基于所述一个或多个数据源中的所述至少一个数据源的所述至少一些元数据填充所述存储的模板中的至少一个字段以提供所述数据处理指令中的所述至少一个数据处理指令。
4.如权利要求1所述的系统,其特征在于,所述摄取引擎被配置为通过从所述数据提取属性值或关系来确定所述元数据。
5.如权利要求1所述的系统,其特征在于,所述多个模块进一步包括报告引擎的一个或多个模块,其被配置为:
至少部分基于所述作业规范来确定输出格式;
确定第二数据处理指令以根据所述输出格式执行查询结果的复制、移动或变换中的至少一者;以及
至少部分地基于所述输出格式来执行所述第二数据处理指令以提供对应于所述查询结果的报告的数据。
6.如权利要求1所述的系统,其特征在于,所述多个模块进一步包括至少一个模块,其被配置为:
提供包括数据源选择控件、查询准则控件和结果字段控件的用户界面;以及
经由所述用户界面接收所述作业规范。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/991,388 US10579627B2 (en) | 2016-01-08 | 2016-01-08 | Database operation using metadata of data sources |
US14/991,388 | 2016-01-08 | ||
PCT/US2016/069058 WO2017120087A1 (en) | 2016-01-08 | 2016-12-29 | Database operation using metadata of data sources |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108292323A CN108292323A (zh) | 2018-07-17 |
CN108292323B true CN108292323B (zh) | 2022-02-15 |
Family
ID=57799931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680070437.XA Active CN108292323B (zh) | 2016-01-08 | 2016-12-29 | 使用数据源的元数据的数据库操作 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10579627B2 (zh) |
EP (1) | EP3400540B1 (zh) |
CN (1) | CN108292323B (zh) |
WO (1) | WO2017120087A1 (zh) |
Families Citing this family (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10579627B2 (en) * | 2016-01-08 | 2020-03-03 | Microsoft Technology Licensing, Llc | Database operation using metadata of data sources |
US10607150B2 (en) | 2016-02-23 | 2020-03-31 | Splunk Inc. | Machine-learning data analysis tool |
US10679142B2 (en) * | 2016-04-29 | 2020-06-09 | Splunk Inc. | Dynamic search guidance for machine data indexing and search system |
US10133782B2 (en) * | 2016-08-01 | 2018-11-20 | Palantir Technologies Inc. | Techniques for data extraction |
GB201615745D0 (en) * | 2016-09-15 | 2016-11-02 | Gb Gas Holdings Ltd | System for analysing data relationships to support query execution |
US10783183B2 (en) * | 2016-11-30 | 2020-09-22 | At&T Intellectual Property I, L.P. | Systems and methods for driving graph structure and behavior using models |
US10949440B2 (en) * | 2017-03-03 | 2021-03-16 | Next Pathway Inc. | Metadata-driven data management platform |
US10607271B1 (en) * | 2017-03-16 | 2020-03-31 | Walgreen Co. | Search platform with data driven search relevancy management |
US10095716B1 (en) * | 2017-04-02 | 2018-10-09 | Sas Institute Inc. | Methods, mediums, and systems for data harmonization and data harmonization and data mapping in specified domains |
US10817490B2 (en) * | 2017-04-28 | 2020-10-27 | Microsoft Technology Licensing, Llc | Parser for schema-free data exchange format |
US11348030B2 (en) * | 2017-05-10 | 2022-05-31 | Petuum Inc. | System and methods for distributed machine learning with multiple data sources, multiple programming languages or frameworks, and multiple devices or infrastructures |
US10210240B2 (en) * | 2017-06-30 | 2019-02-19 | Capital One Services, Llc | Systems and methods for code parsing and lineage detection |
US10223086B2 (en) * | 2017-06-30 | 2019-03-05 | Capital One Services, Llc | Systems and methods for code parsing and lineage detection |
US11250040B2 (en) * | 2017-10-19 | 2022-02-15 | Capital One Services, Llc | Systems and methods for extracting information from a text string generated in a distributed computing operation |
US11520922B2 (en) | 2018-01-22 | 2022-12-06 | Todd Jeremy Marlin | Method for personal data administration in a multi-actor environment |
US11294874B2 (en) * | 2018-07-25 | 2022-04-05 | Ab Initio Technology Llc | Structured record retrieval |
CN109241101B (zh) * | 2018-08-31 | 2020-06-30 | 阿里巴巴集团控股有限公司 | 一种数据库查询优化方法、装置、及计算机设备 |
CN109359160A (zh) * | 2018-10-12 | 2019-02-19 | 平安科技(深圳)有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN109669534B (zh) * | 2018-11-13 | 2022-07-15 | 北京灵犀微光科技有限公司 | 增强现实显示方法和装置 |
CA3061726A1 (en) * | 2018-11-15 | 2020-05-15 | Royal Bank Of Canada | System and method for verifying software data lineage |
CN109558392A (zh) * | 2018-11-20 | 2019-04-02 | 南京数睿数据科技有限公司 | 一种跨平台多引擎支持的海量数据迁移装置 |
TWI693525B (zh) * | 2018-12-21 | 2020-05-11 | 凌群電腦股份有限公司 | 雲端大數據資料庫快捷建立索引系統 |
US11163781B2 (en) * | 2019-01-14 | 2021-11-02 | Sap Se | Extended storage of text analysis source tables |
KR20200112386A (ko) * | 2019-03-22 | 2020-10-05 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
CN111949680A (zh) * | 2019-05-17 | 2020-11-17 | 杭州海康威视数字技术股份有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
US11188525B2 (en) | 2019-05-31 | 2021-11-30 | Walmart Apollo, Llc | Systems and methods of platform-agnostic metadata analysis |
US11238031B2 (en) * | 2019-05-31 | 2022-02-01 | Walmart Apollo, Llc | Systems and methods of metadata monitoring and analysis |
US11176149B2 (en) * | 2019-08-13 | 2021-11-16 | International Business Machines Corporation | Predicted data provisioning for analytic workflows |
US11120038B1 (en) * | 2019-08-28 | 2021-09-14 | Palantir Technologies Inc. | Systems and methods for creating a data layer based on content from data sources |
CN110795544B (zh) * | 2019-09-10 | 2023-07-21 | 腾讯科技(深圳)有限公司 | 内容搜索方法、装置、设备和存储介质 |
WO2021097474A1 (en) * | 2019-11-12 | 2021-05-20 | Exxonmobil Upstream Research Company | Machine analysis of hydrocarbon studies |
CN111125472B (zh) * | 2019-12-27 | 2023-05-02 | 北京明略软件系统有限公司 | 结果回溯方法、装置、电子设备及存储介质 |
CN111240733A (zh) * | 2020-01-21 | 2020-06-05 | 深圳市优必选科技股份有限公司 | 基于多个第三方接口的数据获取方法和装置 |
CN111381689A (zh) * | 2020-03-12 | 2020-07-07 | 北京字节跳动网络技术有限公司 | 一种小程序的输入方法、装置、电子设备及存储介质 |
US11360937B2 (en) * | 2020-03-20 | 2022-06-14 | Bank Of America Corporation | System for natural language processing-based electronic file scanning for processing database queries |
CN113468379A (zh) * | 2020-03-31 | 2021-10-01 | 上海依图网络科技有限公司 | 数据源的处理方法、装置及智能分析平台 |
CN113672611A (zh) * | 2020-05-13 | 2021-11-19 | 华晨宝马汽车有限公司 | 用于实现电子制表软件中的sql查询的方法和设备 |
US20210390109A1 (en) * | 2020-06-15 | 2021-12-16 | Sap Se | Extracting and posting data from an unstructured data file |
CN112434061B (zh) * | 2020-08-25 | 2024-04-16 | 上海幻电信息科技有限公司 | 支持循环依赖的任务调度方法和系统 |
CN112685446B (zh) * | 2020-12-31 | 2023-07-25 | 上海梦鱼信息科技有限公司 | 通过Elasticsearch数据库的复杂SQL查询方法、装置、处理器及存储介质 |
CN112860725A (zh) * | 2021-02-02 | 2021-05-28 | 浙江大华技术股份有限公司 | Sql自动生成方法和装置、存储介质及电子设备 |
CN112732747A (zh) * | 2021-03-30 | 2021-04-30 | 广州嘉为科技有限公司 | 在目标计算机上快速执行sql方法、系统、设备及介质 |
CN113485949B (zh) * | 2021-05-28 | 2023-06-20 | 浙江毫微米科技有限公司 | 数据处理方法、芯片及计算机可读存储介质 |
CN113377871B (zh) * | 2021-06-22 | 2024-03-22 | 特赞(上海)信息科技有限公司 | 数据同步方法、装置及存储介质 |
CN113590610B (zh) * | 2021-06-29 | 2023-06-20 | 四川新网银行股份有限公司 | 一种基于Elastic Search的血缘关系表示方法 |
CN113468873B (zh) * | 2021-07-09 | 2024-04-16 | 北京东方国信科技股份有限公司 | Pl/sql语言的语法解析方法及装置 |
CN113742360B (zh) * | 2021-08-09 | 2023-12-29 | 广州市易工品科技有限公司 | 基于元数据快速生成异构数据库sql脚本方法和装置 |
US20230055769A1 (en) * | 2021-08-23 | 2023-02-23 | International Business Machines Corporation | Specificity ranking of text elements and applications thereof |
CN113965608A (zh) * | 2021-08-31 | 2022-01-21 | 艾普工华科技(武汉)有限公司 | 一种数控设备数据收集及指令下发系统 |
CN113923209B (zh) * | 2021-09-29 | 2023-07-14 | 北京轻舟智航科技有限公司 | 一种基于LevelDB进行批量数据下载的处理方法 |
US11593415B1 (en) * | 2021-11-05 | 2023-02-28 | Validate Me LLC | Decision making analysis engine |
CN115017118A (zh) * | 2022-06-01 | 2022-09-06 | 深圳鳍源科技有限公司 | 作业数据记录方法、装置、设备及存储介质 |
US11847118B1 (en) * | 2022-06-22 | 2023-12-19 | Microsoft Technology Licensing, Llc | Query set optimization in a data analytics pipeline |
CN115484297B (zh) * | 2022-08-02 | 2023-09-08 | 深圳市旭联信息技术有限公司 | 一种基于储能设备的交互系统及方法 |
CN115563127B (zh) * | 2022-11-10 | 2023-02-24 | 神州医疗科技股份有限公司 | 基于大数据医疗通用检索索引构建的查询方法及系统 |
CN115659314B (zh) * | 2022-12-13 | 2023-04-07 | 合肥喆塔科技有限公司 | 一种基于混合数据的数据服务方法 |
CN115774767B (zh) * | 2023-02-10 | 2023-05-16 | 成都纵横自动化技术股份有限公司 | 一种地理信息元数据处理方法及装置 |
CN116795663B (zh) * | 2023-08-24 | 2023-12-08 | 云筑信息科技(成都)有限公司 | 一种跟踪分析trino引擎执行性能的方法 |
CN117290355B (zh) * | 2023-08-29 | 2024-05-14 | 云启智慧科技有限公司 | 一种元数据地图构建系统 |
CN116955416B (zh) * | 2023-09-18 | 2023-12-08 | 腾讯科技(深圳)有限公司 | 数据处理方法、系统、设备及存储介质 |
Family Cites Families (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5586311A (en) | 1994-02-14 | 1996-12-17 | American Airlines, Inc. | Object oriented data access and analysis system |
US6370537B1 (en) * | 1999-01-14 | 2002-04-09 | Altoweb, Inc. | System and method for the manipulation and display of structured data |
US6754214B1 (en) * | 1999-07-19 | 2004-06-22 | Dunti, Llc | Communication network having packetized security codes and a system for detecting security breach locations within the network |
US6915308B1 (en) | 2000-04-06 | 2005-07-05 | Claritech Corporation | Method and apparatus for information mining and filtering |
WO2001095123A1 (en) * | 2000-06-05 | 2001-12-13 | Altoweb Systems, Inc. | System and method for accessing, organizing, and presenting data |
US7149730B2 (en) * | 2002-05-03 | 2006-12-12 | Ward Mullins | Dynamic class inheritance and distributed caching with object relational mapping and cartesian model support in a database manipulation and mapping system |
EP1552501A4 (en) * | 2002-06-12 | 2009-07-01 | Jena Jordahl | TOOLS FOR STORAGE, EXTRACTION, HANDLING AND VISUALIZATION OF DATA, PROVIDING MULTIPLE VIEWPOINTS OF HIERARCHICAL PERCEIVES |
US7761461B2 (en) * | 2004-04-08 | 2010-07-20 | International Business Machines Corporation | Method and system for relationship building from XML |
US8442953B2 (en) * | 2004-07-02 | 2013-05-14 | Goldman, Sachs & Co. | Method, system, apparatus, program code and means for determining a redundancy of information |
US7831632B2 (en) * | 2004-07-29 | 2010-11-09 | International Business Machines Corporation | Method and system for reconstruction of object model data in a relational database |
US7496593B2 (en) * | 2004-09-03 | 2009-02-24 | Biowisdom Limited | Creating a multi-relational ontology having a predetermined structure |
US9390132B1 (en) * | 2009-10-16 | 2016-07-12 | Iqor Holdings, Inc. | Apparatuses, methods and systems for a universal data librarian |
US8347088B2 (en) * | 2005-02-01 | 2013-01-01 | Newsilike Media Group, Inc | Security systems and methods for use with structured and unstructured data |
US20070192318A1 (en) * | 2005-09-14 | 2007-08-16 | Jorey Ramer | Creation of a mobile search suggestion dictionary |
US20070198586A1 (en) * | 2006-02-22 | 2007-08-23 | Hardy Mark D | Methods and apparatus for providing a configurable geospatial data provisioning framework |
US7970746B2 (en) | 2006-06-13 | 2011-06-28 | Microsoft Corporation | Declarative management framework |
US8056821B2 (en) * | 2006-10-18 | 2011-11-15 | Xerox Corporation | Security marks simulating natural defects for embedding information in documents |
US8468244B2 (en) * | 2007-01-05 | 2013-06-18 | Digital Doors, Inc. | Digital information infrastructure and method for security designated data and with granular data stores |
US20110004622A1 (en) * | 2007-10-17 | 2011-01-06 | Blazent, Inc. | Method and apparatus for gathering and organizing information pertaining to an entity |
US9842204B2 (en) * | 2008-04-01 | 2017-12-12 | Nudata Security Inc. | Systems and methods for assessing security risk |
US9709965B2 (en) * | 2008-12-04 | 2017-07-18 | Baselayer Technology, Llc | Data center intelligent control and optimization |
US20110137959A1 (en) | 2009-12-07 | 2011-06-09 | Microsoft Corporation | Representing relational schema information using generic meta schemas |
US8874600B2 (en) | 2010-01-30 | 2014-10-28 | International Business Machines Corporation | System and method for building a cloud aware massive data analytics solution background |
CN101989304A (zh) * | 2010-11-03 | 2011-03-23 | 任一涛 | 计算机设定计分和评分矩阵系统的自动筛选搜索结果方法 |
CN102043866B (zh) * | 2011-01-25 | 2013-03-13 | 苏州普达新信息技术有限公司 | 基于表单特征的松弛搜索与优化排序方法 |
US20160284026A1 (en) * | 2011-02-05 | 2016-09-29 | Rohan Kulkarni | Investment advisor system and method |
US9886474B2 (en) | 2011-11-22 | 2018-02-06 | Microsoft Technology Licensing, Llc | Multidimensional grouping operators |
US8984003B2 (en) * | 2012-01-31 | 2015-03-17 | Bank Of America Corporation | System and method for processing, maintaining, and verifying data |
US9401904B1 (en) * | 2012-03-15 | 2016-07-26 | Motio, Inc. | Security migration in a business intelligence environment |
WO2013144980A2 (en) | 2012-03-29 | 2013-10-03 | Mu Sigma Business Solutions Pvt Ltd. | Data solutions system |
US20140156344A1 (en) | 2012-06-19 | 2014-06-05 | Edwin D'cruz | Auspicate system and method |
US9342353B2 (en) | 2012-10-06 | 2016-05-17 | International Business Machines Corporation | Techniques for implementing information services with tenant specific service level agreements |
US10423984B2 (en) * | 2012-10-16 | 2019-09-24 | Facebook, Inc. | Sponsored stories in notifications |
US10965775B2 (en) * | 2012-11-20 | 2021-03-30 | Airbnb, Inc. | Discovering signature of electronic social networks |
US9703833B2 (en) | 2012-11-30 | 2017-07-11 | Sap Se | Unification of search and analytics |
US20140164378A1 (en) * | 2012-12-11 | 2014-06-12 | International Business Machines Corporation | Source record management for master data |
US9418085B1 (en) * | 2013-03-13 | 2016-08-16 | Amazon Technologies, Inc. | Automatic table schema generation |
US9405794B2 (en) * | 2013-07-17 | 2016-08-02 | Thoughtspot, Inc. | Information retrieval system |
US9690840B2 (en) | 2013-07-23 | 2017-06-27 | Aware, Inc. | Data analysis engine |
US9507847B2 (en) * | 2013-09-27 | 2016-11-29 | International Business Machines Corporation | Automatic log sensor tuning |
US9798833B2 (en) * | 2013-12-30 | 2017-10-24 | Sap Ag | Accessing information content in a database platform using metadata |
US10705877B2 (en) * | 2014-05-29 | 2020-07-07 | Ab Initio Technology Llc | Workload automation and data lineage analysis |
US10169433B2 (en) * | 2014-07-29 | 2019-01-01 | Microsoft Technology Licensing, Llc | Systems and methods for an SQL-driven distributed operating system |
WO2016043700A1 (en) * | 2014-09-15 | 2016-03-24 | Demandware, Inc. | Secure storage and access to sensitive data |
US10061824B2 (en) * | 2015-01-30 | 2018-08-28 | Splunk Inc. | Cell-based table manipulation of event data |
US10255336B2 (en) * | 2015-05-07 | 2019-04-09 | Datometry, Inc. | Method and system for transparent interoperability between applications and data management systems |
WO2016181338A1 (en) * | 2015-05-13 | 2016-11-17 | Vinay Bawri | Computer implemented method for ranking, searching and managing contacts in electronic device |
US10083236B2 (en) * | 2015-05-29 | 2018-09-25 | Salesforce.Com, Inc. | Database searching using a graph of nodes and edges formed using log node pairs |
US9300554B1 (en) * | 2015-06-25 | 2016-03-29 | Extrahop Networks, Inc. | Heuristics for determining the layout of a procedurally generated user interface |
US10929417B2 (en) * | 2015-09-11 | 2021-02-23 | International Business Machines Corporation | Transforming and loading data utilizing in-memory processing |
US10579627B2 (en) * | 2016-01-08 | 2020-03-03 | Microsoft Technology Licensing, Llc | Database operation using metadata of data sources |
-
2016
- 2016-01-08 US US14/991,388 patent/US10579627B2/en active Active
- 2016-12-29 EP EP16826656.7A patent/EP3400540B1/en active Active
- 2016-12-29 WO PCT/US2016/069058 patent/WO2017120087A1/en unknown
- 2016-12-29 CN CN201680070437.XA patent/CN108292323B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US20170199875A1 (en) | 2017-07-13 |
WO2017120087A1 (en) | 2017-07-13 |
EP3400540A1 (en) | 2018-11-14 |
CN108292323A (zh) | 2018-07-17 |
US10579627B2 (en) | 2020-03-03 |
EP3400540B1 (en) | 2021-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108292323B (zh) | 使用数据源的元数据的数据库操作 | |
US11379506B2 (en) | Techniques for similarity analysis and data enrichment using knowledge sources | |
EP3726411B1 (en) | Data desensitising method, server, terminal, and computer-readable storage medium | |
US20210223947A1 (en) | Declarative external data source importation, exportation, and metadata reflection utilizing http and hdfs protocols | |
US10262045B2 (en) | Application representation for application editions | |
US10891272B2 (en) | Declarative language and visualization system for recommended data transformations and repairs | |
US9218427B1 (en) | Dynamic semantic models having multiple indices | |
US9535966B1 (en) | Techniques for aggregating data from multiple sources | |
US10929604B2 (en) | System and method for analyzing items and creating a data structure using lexicon analysis and filtering process | |
US20210382886A1 (en) | Multifaceted search with facet hierarchy | |
US11947595B2 (en) | Storing semi-structured data | |
US10936539B2 (en) | Source data assignment based on metadata | |
Pierce et al. | Using Web 2.0 for scientific applications and scientific communities | |
US10089081B2 (en) | Method and/or apparatus for generating signal processing pipelines | |
Tody et al. | Ivoa recommendation: Simple spectral access protocol version 1.1 | |
Peltomaa | Elasticsearch-based data management proof of concept for continuous integration | |
Anelli et al. | Querying deep web data sources as linked data | |
Yadav et al. | Querying Data with Hive |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |