图数据库与具有 link/bridge 个表的 RDB

Graph database vs. RDB with link/bridge tables

我在 fraud/AML(反洗钱)领域工作,我们正在探索使用图形数据库挖掘隐藏的联系和 links。我最近阅读了大量关于图形数据库的文章(主要是 neo4j,但我认为不同产品的概念相似?),据我所知,它们似乎非常适合这个领域。问题是我很难从技术管理那里获得支持,因为他们似乎认为我们可以用我们现有的数据报告模型做同样的事情,它在 Hadoop 中,本质上是一个数据仓库有在核心表之间提供多对多 link 表的特定表(我相信 Kimball 称它们为 'bridge' 表?)。

在某种程度上,它们似乎提供与图形数据库中的关系表相同的功能。鉴于我们已经在 Hadoop 中构建了 link 表,图数据库是否会为我们可能想要做的事情提供任何性能优势(例如,客户 A 如何连接到客户 B),或者我们是否在很大程度上否定了通过构建所有 link 个表,图形数据库有什么性能优势?

在类似的硬件平台上,关系数据库在执行“路径之间”查询时永远无法跟上构造良好的图形数据库。从来没有。

每个图数据库产品都有自己的内部存储表示,但它们从根本上都是为了存储节点和边并支持跨这些节点和边的导航查询而设计的。如果不添加新的图形支持功能,关系数据库将难以提供类似图形的功能。

使用原生图形数据库的另一个优势是图形查询语言专门设计用于支持路径查询。在 Objectivity/DB 一个大规模可扩展和可分发的 object/graph 数据库中,我们可以使用 DO 查询语言来查找两个实体之间的所有路径,以毫秒或秒为单位相隔指定的度数。 DO 查询可能如下所示:

Match p = (:Account { accountId = "1234"})
          -[*..100]->
          (:Account { accountId = "5678"})
          return p;

在这里,我们说:找到从帐户 1234 到帐户 5678 的所有路径 (p),它们之间的夹角在 1 到 100 度之间。

在关系数据库中创建和执行相同的查询会复杂得多(如果不向数据库添加图形功能)并且在关系数据库中执行这样的查询会占用更多资源(内存,cpu,I/O)。

如果您有机会为您的项目探索图形数据库,请确保您了解您的可扩展性和数据分布要求。该信息将是选择正确产品的关键。

免责声明:我是客观性现场运营总监。