数据流探索的制作方法_3

文档序号:9932628阅读:来源:国知局
索客户端(例如104)处的用户可将零个或更多个脚本附连到每一个 事件,并且当运类事件发生时,自动化模块214可执行所有附连的脚本(如果有的话)。
[0082] 为了避免由过多脚本同时触发导致的并发执行和资源过度使用,自动化模块214 所触发的脚本可被排队W供数据流探索系统200执行。数据流探索系统200进而可一次仅执 行一个触发发起的脚本。对于一些实施例,脚本执行可产生输出,并且所产生的输出可被丢 弃或存储在笔记中(例如,存储在数据流数据存储206中)。
[0083] 在一些实施例中,自动化模块214可呈现所有脚本执行的列表并且还可提供到每 一个脚本(如果有的话)的输出的链接。在脚本被配置成发出通知(例如,短文本消息)的情 况下,脚本执行的列表可包括接在运类发出该通知的脚本执行之后的特殊标记(例如,惊叹 号标记)。
[0084] 对于一些实施例,自动化模块214可促成不需要对脚本进行显式编码的自动化执 行。例如,自动化模块214可将数据流探索系统200提供的任何表或可视化(例如,Sank巧示 图)转换成脚本,该脚本可随后被附连到从一组选项(诸如每天、每周、或每月)中选取的基 于时间的触发。得到的脚本在被触发时可重新生成或W其它方式提供相关联的表或可视 化。在表或可视化包括任何数据的情况下,脚本可发出通知并且将该表或可视化捕捉到笔 记中。通过该特征,自动化模块214可在每当可疑数据流出现时警告用户(例如,管理员)。
[0085] 协作模块216可被配置成促进从不同数据流探索客户端访问数据流探索系统(例 如200)的两个或更多个用户之间的协作。为了帮助协作,协作模块216可维护对于数据流探 索系统(例如200)提供给其用户的用户界面的逐用户的定制。在数据流探索系统(例如200) 的一些或全部通过基于web的界面来实现的情况下,到运些基于web的界面的链接(例如 URL)可被分享W进一步促进对数据流探索系统(例如200)的特征和服务的协作式访问。例 如,到数据流的可视化或制表的链接(第一用户可经由该链接来访问)可被提供给第二用户 并且由第二用户使用W访问同一可视化或制表。
[0086] 图3示出了根据本发明的一个实施例的示例数据流探索客户端300。对于一些实施 例,数据流探索客户端300可类似于W上结合图1描述的数据流探索客户端104。相应地,数 据流探索客户端300可被配置成访问由数据流探索系统(例如106)提供的特征或服务。如本 文中描述的,数据流探索客户端300可包括能够为数据流探索客户端300处的用户提供促进 用户对数据流探索系统的访问的图形或非图形用户界面的计算设备。为此,数据流探索客 户端300可包括被配置成访问基于web的用户界面的web浏览器应用302,该用户界面由数据 流探索系统提供W促进对其数据流特征或服务(例如,数据流分析的可视化)的访问。在其 它实施例中,数据流探索客户端300可包括被配置成提供与数据流探索系统通信的用户界 面(例如,GUI)。
[0087] 图4示出了根据本发明的一个实施例的示例数据流捕捉模块400。对于一些实施 例,数据流捕捉模块400可类似于W上结合图2描述的数据流捕捉模块204。如所示的,数据 流捕捉模块400包括数据流推送模块402、数据流抽取模块404、数据流代理模块406、W及别 名模块408。根据一些实施例,数据流捕捉模块400可被配置成捕捉数据源(例如102)和数据 客户端(例如108)之间的数据流。
[0088] 数据流推送模块402可被配置成使用推送方法来捕捉数据流。例如,数据流推送模 块402可实施一种通过提供外部软件系统(即数据源)可用来通知数据流推送模块402数据 流中的数据流事务的一个或多个API来捕捉数据流的推送方法。响应于接收到运一通知,数 据流推送模块402可从外部软件系统检索数据流事务中的一些或全部数据。在一些实施例 中,数据流推送模块402可被配置成自动从外部软件系统接收数据流事务中的一些或全部 数据,而无需通知/检索方法。在各实施例中,外部软件系统可通过在可由数据流推送模块 402和外部软件系统访问的数据库中添加行来推送该数据(其中每个新的行表示一个数据 流事务)。
[0089] 数据流抽取模块404可被配置成使用抽取方法来捕捉数据流。例如,数据流抽取模 块404可监视存储的数据(例如,日志文件或数据库表)、可监视网络活动、或者可W其它方 式被动地"监听"外部软件系统实施的数据源操作。在观察到数据流中的数据流事务之际, 数据流抽取模块404可检索数据流事务中的一些或全部数据。
[0090] 数据流代理模块406可被配置成通过干预数据流并运行将来自数据流的数据源的 信息运送到数据流的数据客户端的代理来捕捉数据流。数据流代理模块406可实现或促成 被配置成不对数据流作任何改动的被动式代理,或者被配置成通过重新路由、阻挡、或W其 它方式改变数据流来改动(例如优化)数据流的主动代理。例如,在数据流是用户尝试访问 机密数据的数据流的情况下,用户定义的脚本(例如,由数据流探索系统200的管理员用户 所写的脚本)可检测运类访问并指令数据流代理模块406拒绝用户代理访问该数据源。为了 实现对数据流的干预,数据源可包括用作数据流代理模块406的对应模块并且向(数据流捕 捉模块400处的)数据流代理模块406提供所捕捉的数据流中的一些或全部数据的模块。
[0091] 在某些实施例中,可使用运种代理,该代理是一个独立软件系统,其一端处展现类 似于数据源的API并在另一端处展现类似于数据客户端的API。对于数据客户端,代理可看 上去与任何其它数据源没有区别。对于数据源,代理可看上去与任何其它数据客户端没有 区别。W此方式,代理可工作为真实数据源和客户端之间的中介。例如,客户端可递送其请 求给代理,就像该代理是源一样;代理可随后转发该客户端的请求给源,就像该代理是客户 端自己一样;而响应可沿着相反的路径。运一机制不需要真实数据源包括用作代理的对应 模块的模块。在一些实施例中,用于监听数据流的方法可W独立于数据流系统的部署。
[0092] 对于一些实施例,捕捉数据流可能偶尔导致不完整或损坏的捕捉。例如,考虑包括 查询和表但是不包括用户的被截短了的日志文件。数据流捕捉模块400可将内部伪用户指 派给该查询,诸如"未知用户"。数据流捕捉模块400可具有类似的针对未知查询或表的替 身。在一些实施例中,触发可被配置成执行针对那些情况的专用逻辑。
[0093] 别名模块408可被配置成自动标识数据流捕捉模块400所捕捉的一个或多个数据 流中所设及的实体的一个或多个别名。如本文中所使用的"别名"可W是同一实体在数据流 中被观察到的替代形式。例如,同一数据库表可被称为"tr或者在一区分大小写的数据库 系统中被称为"Tl"。在另一示例中,经由两种不同登录都可指代用户Bob:在针对 Microsof倾SQL Server数据库的查询内的"bobster" W及在针对Oracle化数据库的查询 内的"bobby"。别名模块408可在数据流被数据流捕捉模块400捕捉到之后监视数据流,并且 可将别名与所监视的数据流中观察到的实体相关联(例如,将"tr和"Tl"与表"tr相关联, 并且将别名"bobster"和"bobby"与"Bob"相关联)。在一些实施例中,可被提取的信息可W 是逐记录的,使得从数据流捕捉和提取信息是接近的但是在逻辑上是不同的。
[0094] 在数据流设及数据库数据流(与电子邮件数据流相对)的情况下,别名模块408可 使用针对数据库查询的别名来标识语义上相同的查询。如本文中描述的,语义上共同的含 义可通过使用数据主题来与数据流相关联。通过使用针对数据库查询的别名,数据库性能 分析可被促进。
[00巧]作为别名数据库查询的示例,考虑其中第一 S化查询包括"S化ECT tl. Cl, tl.c2 FROM tl W肥RE 15< = tl.cr,而第二SQL查询包括"沈LECT tl.c2,tl.cl FROM tl WHERE tl. cl〉= 15"的情况。第一和第二SQL查询不会导致相同的数据流,因为它们的列(即tl. Cl 和tl.c2)被交换了。然而,第一和第二SQL查询可被视为语义上相等的,因为它们都:访问同 一张表(即tl)、相同的列(即tl .Cl和tl .c2)、W及相同的行(i .e. ,15< = tl .Cl等同于tl .Cl 〉=15);并且返回相同的数据(仅仅是稍微重新排序)。出于数据库性能分析的目的,第一和 第二S化查询可能需要被视为语义上相同的。由于第一和第二S化查询可被视为语义上相同 的,它们可与单个数据主题(例如"沈LECT tl.cl,tl.c2 FROM tl W肥RE tl.cl〉= 15")相 关联,运可被称为"正则查询")。在一些实施例中,被正则化的两个或更多个查询具有不同 主题名称(例如,由于不同列顺序的结果)。另外,在一些实施例中,用户可选择将查询文本 视为实体,而无需进一步正则化。
[0096] 别名模块408所使用的数据库查询别名算法可通过解析和构建数据库查询的语法 树来根据数据库查询确定正则查询。构建语法树可包括在语法树中插入可选数据库查询关 键词(例如乂 0LUMNS"),并且同义关键词可被准许,但是可被转换成它们的标准形式(例如, 德语的"UND"是英语的"AND"的同义词)。
[0097] 例如,对于"SELECT tl.c2,tl.ClFROM tl WHERE 15< = tl.cr,别名模块408可生 成类似于W下的语法树:
[009引
[0099] 出于对运些节点的数据库性能分析的目的,别名模块408所使用的数据库查询别 名算法可进一步标识子节点排序在语义上是不重要的那些节点(排序可能对于通用SQL语 义仍然是重要的)。对于所标识的那些节点,别名模块408可按照字母顺序对子节点重新排 序;对于名称相同的子节点,运一重新排序使用其自己的子节点作为辅助排序键,依此类 推。运正是W上的示例中对于COLUMNS节点所发生的。
[0100] 别名模块408所使用的数据库查询别名算法可进一步标识被重新映射到保留通用 S化语义的规范或标准形式。在W上的示例中,运正是对"<="节点发生的,该"<="节点被 重新映射到其子节点被交换的"〉="节点。在一些情况下,子查询可被转化成连结节点。
[0101] 别名模块408所使用的数据库查询别名算法可进一步标识被重新映射到数据流探 索系统200所识别的等价语义的某些公共占位符节点(不一定被通用S化语义所识别)的节 点。例如,是COLUMNS节点的后代的所有的MAX和MIN节点可被重新映射到MAXMIN占位符,因 为运两个节点的计算成本实际上是相同的。在另一示例中,针对小表操作的子查询 。沈LECT 2*t2.c2 FROM 可被重新映射成"SELECT 1 FROM t2",由此仅捕捉到子查询访 问表的事实(并因此外层查询具有作为其间接源或表之一),但是未捕捉到任何细 节。因此,其可被考虑为等价于诸如"沈LECT 3*t2.c2 FROM 之类的子查询。
[0102] 别名模块408所使用的数据库查询别名算法可进一步标识别名模块408视为语义 上不相关的节点,并丢弃它们。例如,别名模块408可丢弃查询中的其表具有小尺寸的LIMIT 节点。
[0103] 继续Pi h的示例语巧树,由Pi h極化所导致的语法树可W如下:
[0104]
[0105] 如本文中描述的,在各实施例中可生成和使用粗略或精细的解析树,并且可取决 于具体的应用。因此,一些实施例的系统可处理针对W某种方式恶意形成的查询的数据流。
[0106] 别名模块408所使用的数据库查询别名算法可最终将语法树转换成串。转换可通 过"走查"语法树来生成正则查询来促进。继续W上的示例语法树的最新版本,所得到的正 则查询可类似于"沈LECT tl.cl,tl.c2 FROM tl W肥RE tl.cl〉= 15"。
[0107] 通过使用(例如由别名模块408所生成的)正则查询来对一组数据库查询分组,运 组数据库查询可被恰当地与对应于该正则查询的数据主题相关联。如本文中讨论的,数据 主题可定义用于分析数据库数据流的目的的等价类。
[0108] 在替代实施例中,别名模块408可执行W上所描述的查询别名算法的变体,借此对 被视为在分组中无关的列的引用可被丢弃。
[0109] 为了执行数据库查询别名,别名模块408可使用没有传统5(^1解析器那样严格的 S化解析器。采用较不严格的SQL解析器,别名模块408可能够理解一系列SQL方言的更多种 类的数据流。根据一些实施例,别名模块408的SQL解析器可首先尝试经由对于数据库数据 流所捕捉的数据库查询的第一遍历来定位所有S化查询中存在的宽泛元素(例如,表和列)。 随后,当需要时,S化解析器可执行深入细节的一个或多个精细遍历(例如,WHERE语句的子 句)。分层次的粗略和精细解析可提供可被独立开发的并且可被保持较低成本的组件化解 析器。
[0110] 定位查询的某些部分的失败不一定导致别名模块408的SQL解析器的总体失败。例 如,如果数据库查询的不能被解析的部分被认为发生在不具有语义值(例如,当正则化算法 的选择是使得具体的常数值被丢弃时的常数文字)的上下文中,则解析仍被认为是成功的, 因为语义上相关的信息已被成功检索。运样做,别名模块408的SQL解析器可在机密的内部 S化方言(可能具有S化解析器不知晓的定制扩展)可能被使用的环境下弹性地工作。
[0111] 别名模块408的SQL解析器还可被自动配置成标识适用于数据库数据流的数据库 查询的S化方言。运一标识可在S化解析器所执行的粗略或精细遍历期间进行。一旦S化方言 被标识,则该信息可由S化解析器用来重新解析数据库查询中的在最初的、符合标准的解析 遍历中失败的那些部分。另外地或替代地,一旦S化方言被标识,该信息可由S化解析器用来 分辨数据库查询的其它部分中存在的语义模糊(例如,当非标准关键词被两种不同方言使 用,其中每种方言为该同一关键词指派了一个不同的含义)。例如,如果SQL解析器检测到对 于DB2S化方言唯一的构造,则它可将运一构造标注为DB2专用并且随后在完全考虑DB2S化 方言的任何其它细节的情况下重新解析数据库数据流的数据库查询。DB2标签还可留存到 被监视的数据库连接,使得别名模块408随后可在假设DB2S化方言适用于同一连接上的其 它数据库数据流的将来的数据库查询之后解析运些将来的数据库查询,从而提高成功和准 确解析的概率。数据流探索客户端(例如104)处的用户还可为别名模块408的SQL解析器提 供关于哪个(哪些)方言适用于特定连接的提示。
[0112] 图5示出了根据本发明的一个实施例的示例数据流分析模块500。对于一些实施 例,数据流分析模块500可类似于W上结合图2描述的数据流分析模块208。如所示的,数据 流分析模块500包括数据流可视化模块502、数据流制表模块504、数据流标记模块506、数据 流注释模块508、W及命令行接口( CLI)模块510。
[0113] 数据流可视化模块502可被配置成生成、提供、或W其他方式促进数据流探索系统 (例如200)所捕捉和分析的数据流的视觉表示。在一些实施例中,视觉表示可W是图表(诸 如流程图)的形式。例如,数据流可视化模块502可生成Sankey示图来视觉地表示捕捉和分 析的数据流。在一些实施例中,Sank巧示图可通过由数据流探索系统(例如106)提供的图形 用户界面呈现给数据流探索客户端(例如104)处的用户。根据各实施例,Sank巧示图包括各 Sankey节点之间的线,其中线表示数据流,并且每一个Sankey节点表示与一公共标记(例 如,与一组数据源、数据客户端、或数据主题相关联的公共标记)相关联的数据流元素的一 个分组。相应地,每个Sankey节点可将多个数据源(例如,表或数据库)、数据流(例如,数据 库查询或数据库查询结果)、W及数据客户端(例如,用户)视为Sankey示图中的单个节点。 Sankey示图可允许用户交互,使得用户对标记(被表示为Sankey节点)的选择(例如,点击) 导致将该标记扩展为子标记(根据相关联的标记分层结构)。在一些实施例中,当标记具有 不止预定数目个子标记时,所呈现的Sankey示图可自动将那些子标记折叠成单个临时分组 节点W改善其它节点的可见性,并因此改善示图的清楚性。通过使用Sankey示图可视地表 示数据流,数据流的量可通过将数据源连接到数据流主题再到数据客户端的线的厚度或者 它们各自的基于标记的或者临时的分组来可视地表示。数据流可视化模块502可准许用户 在若干个统计或度量中选择感兴趣的量,包括例如针对数据库数据流的量、查询的数目、查 询的执行时间、或者数据流中设及的行的数目。数据流的针对任意度量的量可通过基于它 们的名字或其它准则包括或排除Sankey节点下的子标记或实体来调整。采用单个标记分层 结构来表示多个概念分层结构,所得到的单个Sankey示图将概念上不同(且互补)的选择准 则组合。
[0114] 在各实施例中,数据流可视化模块502可使用将Sankey示图的可视性限制为分析 信息的一部分的机制来加速可视化的生成,尤其是针对复杂
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1