关系型数据库数据探索器/可视化工具?

16

有没有一种工具可以让人们将关系型数据作为连接节点的图形进行浏览?

例如,我需要清洗一些异常数据。我可以从两个有问题的行开始。在这个特定的例子中,根据业务规则,TransactionID 应该是表中唯一的,但我发现了一个违反该规则的事务:

SELECT * FROM LCTTrans
WHERE TransactionID = 1075048

LCTID      TransactionID
=========  =============
4358       1075048
4359       1075048

2 row(s) affected

但实际上我想开始搜寻所有相关的数据,试图看出哪一个是正确的。因此,这个假设的软件将首先显示给我这两行:

alt text

接下来,我想看到与此表相关联的交易:

alt text

现在该交易指向一个MAL,所以展示给我它:

alt text

现在我们把那两个交易所在的LCT加起来,这笔交易只能在一个LCT上,但这个交易指向了两个LCT:

alt text

好了,计算机,这两个LCT都指向一个MAL和创建它们的交易,展示给我:

alt text

这最后两个交易,它们也指向一个MAL,并且它们本身指向一个LCT,展示给我:

alt text

好了,现在有没有在LCTTrans中指向LCTs 4358或4359的条目?...

依此类推。

现在我手动完成了所有这些操作,运行单个查询,复制和粘贴唯一标识符键并将其转换为友好的ID号码,以便我可以轻松地查看关系。


是否有软件可以做到这一点?


SELECT 是最好的数据库浏览器/可视化工具,编写一个存储过程来实现您的逻辑以显示“有问题的行”。 - KM.
2
@KM:找出有问题的行不是问题。问题在于弄清楚这些值应该是什么。这需要查询所有相关行,看看哪些属性链接在一起,哪些是错误的。对于人类来说,“当所有点都连接在一起”很容易看出来,但编写算法并不容易,因为逻辑数据不一致可能存在于不同的位置,程度也不同。 - Ian Boyd
1
@Lucas B:我考虑过写一个。唯一真正的难点是节点图箭头绘制和布局引擎。它相当于企业管理器的关系图,只不过我将展示来自列值而不是列名的数据。有人知道一个节点箭头布局引擎吗?它可以绘制漂亮的曲线和箭头,并组织一切以最小化交叉箭头的数量? - Ian Boyd
首先,对于这个想法我要给你点赞。我自己也需要类似的东西。 其次,如果你想自己做的话,我会建议你使用基于Eclipse的Java来实现。你可以找到一个非常简单易用的图形引擎叫做Zest,它非常适合这个任务。 - zvikico
首先,这些图画得真棒!我今天需要它们,所以搜索看看是否有人已经制作了它们。这正是我所构思的。我不知道它是否可以绘制曲线,但“dot”是一种图形描述语言,可以用其他工具进行可视化:http://en.wikipedia.org/wiki/DOT_(graph_description_language)。 - Swoogan
8个回答

15

好的,我非常喜欢这个想法,所以我已经写了出来。

虽然它还没有发布,但一旦发布,它将是免费的。

编辑

好的,现在已经发布了。 免费关系型数据库探索工具 @ http://www.atlantis-interactive.co.uk/products/datasurf/default.aspx

进入图像描述

编辑

尽管最初是免费的,但现在它是Pragmatic Works' DBA xPress软件包的一部分。


1
我终于找时间看了一下。两个月的“噢,这可能很酷”的工作非常令人印象深刻。需要一种定义自己的“外键”的方法(因为并不是所有关系都有一个FK,例如对视图的FK)。另一个功能是在浏览器中显示每一行,但只显示一个代表性的“名称”(例如Person.Firstname,Person.MiddleInitial,Person.Lastname)。但UI,强制定向/水平层次结构,非常流畅和动画化。而且有很多工作是为我完成的,所以它可以快速启动和运行。 - Ian Boyd
很高兴你有机会试用它 :) 我曾经想过在surf图表中显示行,但它是基于Winforms的,我不想影响性能,而且我也在想如果最终有数百行会如何运作... 但我经常遇到“我能定义自己的键吗”的问题。很快就要开始新工作了,希望能有时间更深入地研究它... - Matt Whitfield

3

DBeauty是一个强大的数据浏览器(类似于Matt Whitfield出色的DataSurf但更强大)。它基于Java,因此需要下载JDBC驱动程序。我发现这个工具在快速浏览数据方面非常有用(我曾经爱上了微软的Quadrant,但他们取消了它,从那以后一直在寻找替代品)。


1

1

是的,我建议您看一下 DbSchema,它是一个非常棒的数据库管理工具,可以帮助您。


0

对于关系数据,我可以想到一些浏览器(如RDF、主题图和概念图),但没有针对SQL的。您可以尝试将查询转换为浏览器理解的关系语言。您还可以尝试在 skyrails上构建一些东西。我在 delicious上标记的大多数可视化都是针对图形或关系数据,但通常是无模式而不是SQL。


0

基本上,您需要编写一个去重工具,在屏幕上并排显示两个记录,并能够选择要保留的记录,但也可以检查其他记录中的单个数据以进行保留。由于去重在不同的数据库中非常不同,并且高度依赖于特定的表结构和业务规则(以及对于您正在执行的去重类型必须查看哪些内容的知识,因为它们通常只在屏幕上显示最重要的关系表),我从未见过没有内部构建的去重工具。

但是,如果您想快速查看所有数据,请编写一个查询,将其左连接到所有子表,并显示两个交易ID的所有字段。然后仔细阅读结果。

更重要的是,如果您有一个业务规则要求transactionid是唯一的,那么您是如何出现重复的?您是否忘记了所有这些类型的规则都必须通过数据库而不是应用程序来执行?为什么该字段上没有唯一索引?


我可以编写一个工具来探索这两个重复项,但这并不能帮助我处理其他情况。比如,当我调查恐怖分子时,需要找到他所做的一切;或者探索两个客户之间可能存在的关系。 - Ian Boyd

0

我曾经寻找过能够进行这种链接分析的开源软件,但并没有太大的成功。如果您有足够的预算去购买专有软件,您可以考虑与Palantir Technologies、Centrifuge Systems、i2等公司联系,了解他们的分析平台和可视化技术。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接