【问题标题】:Data Correlation in large Databases大型数据库中的数据关联
【发布时间】:2010-12-22 04:24:39
【问题描述】:

我们正在尝试确定存储在我们企业中的某些信息的位置,以使其符合我们的数据政策。在文件端,我们使用 Nessus 搜索不同的文件,但我想知道在数据库端。

使用 Nessus 似乎在很大程度上毫无意义,因为它会输出原始数据并且不会告诉我们它在哪个表或行中,或者给我们很多有用的信息,特别是考虑到这些数据库非常大(数百 GB)。

另外值得注意的是,这个系统需要能够进行基于模式的匹配(例如使用正则表达式)。不仅仅是一个“愚蠢的搜索”引擎。

我研究了使用数据挖掘和数据仓库来查找这些数据,但似乎它们更多地用于数据分析,而不仅仅是查找数据。

有没有更好的方法来搜索数据库中的大量数据以尝试找到这些信息?我们同时使用 Oracle 11g 和 SQL Server 2008 并且需要在两者上执行搜索,所以我想远离特定于服务器的范例(尽管如果我必须重写一些代码以从 T-SQL 转换为 PL /SQL,反之亦然,我不介意)

【问题讨论】:

  • 你没有说你正在寻找什么样的数据(姓名、信用卡号、密码),你的数据库是关于什么的,它们是否包含结构化或非结构化数据,甚至可能是多媒体诸如图像和音频之类的东西...
  • 个人身份信息。它之所以说相关性,是因为某些信息只有在与识别我们安全范围之外的人的信息相关时才是危险

标签: sql-server oracle sql-server-2008 oracle11g


【解决方案1】:

在用于搜索大量文本的 SQL Server 上,您可以查看全文搜索。

在此处阅读更多信息http://msdn.microsoft.com/en-us/library/ms142559.aspx

但是,如果我没看错的话,您希望以类似于网络搜索引擎蜘蛛网站和网页的方式来抓取您的数据库。

您可以使用一组全文查询来返回跨多个表的结果。

【讨论】:

  • SQL Server 的全文搜索功能是否也提供基于模式的匹配,例如正则表达式?
  • 在 Oracle 方面,该功能称为“Oracle Text”:download.oracle.com/docs/cd/B28359_01/server.111/b28318/…
  • 我相信全文搜索确实支持正则表达式
  • 不,SQL Server 不支持完整的正则表达式;只是字符串结尾的通配符、布尔值、接近度和各种单词形式。
  • 您可以使用 SQL Server 2005 及更高版本执行 CLR 存储过程来执行正则表达式搜索。阅读这里msdn.microsoft.com/en-us/magazine/cc163473.aspx
【解决方案2】:

Oracle 使用 RegExp_Like() 函数支持正则表达式,它应该相当简单,可以根据系统元数据自动生成所需的代码(例如,查找超过一定长度的所有文本列,并包含它们在该表的谓词中查找与您的正则表达式匹配的行和值)。听起来真的不太具有挑战性。从理论上讲,您可以检查约束列以防止插入与正则表达式匹配的值,但这可能是矫枉过正。

【讨论】:

    【解决方案3】:

    Oracle Text 适用于在数据库中保存的大量文本(例如 PDF、HTML、TXT 或 DOC)中搜索单词/短语。有一些有限的模糊搜索,但不是正则表达式本身。

    您并没有真正深入了解您要查找的数据类型或数据库中的内容。 Nessus 表明您正在寻找安全问题,但“数据相关性”的标题暗示了完全不同的东西。

    确实,数据结构应该提供有关查找内容和位置的信息。这就是数据库的意义——为可访问性构建数据。支持 CMS、论坛软件或类似软件的数据库将是另一回事。

    【讨论】:

    • 我稍微研究了一下 Oracle Text,这是一个不错的选择,但就像我提到的,我正在尝试进行基于模式的匹配等。挑战在于我专门寻找不符合我们标准数据存储策略的异常数据。
    • 看起来 Oracle 有一个名为“regexp_like()”的 PL/SQL 指令,它可以在核心级别完成所需的功能。
    猜你喜欢
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    相关资源
    最近更新 更多