使用 tinkerpop 工具将数据库数据转换为图表

Convert database data into graph with tinkerpop tools

我正在寻找可以自动从数据库创建图表的图表软件。在浏览 tinkerpop 文档后,提供的教程讨论了查询现成的图形,但没有太多关于从数据库创建图形的内容。是否可以使用 tinkerpop 套件中的任何工具将数据从数据库自动转换为图形以供查询?

假设我们有一个这样的事件流:

event_type=create_file name="filename.txt" handle=1
event_type=read handle=1 data="file content"
event_type=write handle=1 data="new file content"
event_type=close handle=1

有没有一种方法可以通过指定创建边时遵循的属性来自动将事件流转换为图形?例如,通过选择“handle”属性 我应该得到:

create_file-->read-->write-->close

我能找到的所有例子都教我如何做一些activity,比如

add_node create_file
add_node read
add_node write
add_node close

然后手动添加所有需要的边。

感谢您的帮助。

你的建议根本不可能。图数据库与传统的关系数据库有很大不同。最大的区别是图表自然是非结构化的,允许更多的灵活性和操作。另一方面,传统的关系或表格数据库结构更严格,灵活性较低,但更容易控制和查询。

如所提供的答案所述here,您还表明您没有使用原始数据库作为参考框架。相反,您应该考虑如何将数据处理成图形以便利用图形。

例如,与表格数据库中的 query 相比,图表中的 traversal 更加灵活(并且可以说强大)但更难构造和形式化。

有很多很好的 material 提供了如何解决这个问题的指南 [1] [2] [3] [4]。不幸的是,目前还没有 good 自动迁移。

我刚刚发现 http://neo4j-contrib.github.io/neo4j-etl-components/ 这是一个非常有趣的工具。它采用 RDBMS 模式并生成图形表示,将外键和连接表转换为关系,并将(其他)表转换为图形中的节点。然后它生成 CSV 文件以加载到图形数据库中,用于批发或增量更新。

我不知道是否有适用于 Tinkerpop 的等效工具。但我希望在这个开源项目中完成大部分工作(阅读 SQL 模式,将带有外键的表映射到顶点和边),也许它是一个很好的起点?

该工具的输出看起来依赖于一个干净的源数据模型,并且可能是幼稚的。它看起来是可配置的,所以当它错误地猜测哪些表是顶点,哪些是边时,我认为你可以覆盖它。