谱系图数据库

2024-05-06 13:48:52 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能给我指出一个谱系图数据库的有效用途吗?我想学习neo4j,我使用python,所以我想为自己制作一个谱系图数据库来学习graph db。我搜索了一些可以模仿和学习的例子(任何图形数据库,任何语言),但我惊讶地发现自己发现的很少。在

注意,我指的是图形数据库,它的结构与关系数据库不同。见http://en.m.wikipedia.org/wiki/Graph_database。在

我在寻找一个系谱的范例模式。在


Tags: org语言数据库http图形dbwikipedia结构
2条回答

如果您想使用一个没有服务器(也没有JVM)的快速数据库。我建议您尝试全新的Sparksee(formly Dex)python绑定。然而,原始API是不可移植的。然而,性能是数量级更快。在

第二个选项是使用通过restapi运行在Neo4j之上的Bulbs,它还支持任何rexster服务器。查询语言是Gremlin(Cypher也可以)。好的一点是,如果后端更适合您的需要,您可以切换到另一个后端。在

关于您的数据库方案,您至少有1个节点和1个边缘:

1节点:人(姓名、出生、死亡),是索引字段。在

1人与人之间的定向限制边缘:孩子或父母。在

可以在节点之间添加更多边,例如:兄弟姐妹、已婚者等等

如果你想学习graphdb,你不需要使用任何软件。铅笔、纸和大脑就可以了。设计时你需要记住的是:

  • 什么是图形:顶点和边
  • graphdb数据结构的具体特点是:顶点和边与python(如dict)相关联
  • 要解决我手头的问题,需要在graphdb中提供什么信息。列出您希望对图形执行的所有查询。在

在下面的图表中,您将看到一个可以作为您的设计基础的图表。在

{1美元^

你必须想象每个节点都有一个名字,出生日期,等等。。。以及唯一标识符。在

它代表两个断开连接的家庭,左边一个有两个孩子,右边一个有三个孩子。在

利用上述图表,您可以计算:

  • 谁是X的父母?在
  • 这个大家庭的父亲叫什么名字?在

另外,由于只有两个家庭只有父母和子女,没有外祖父母或孙儿,您可能无法理解实际上您也可以计算以下查询:

  • 以X为祖先的人还活着吗?在

现在,如果您想尝试使用Python,您可以从更简单的设置开始选择:

纯Python:

  • 创建继承dict的Vertex类和Edge类
  • 用Python代码从实际数据或其他方面构建一个谱系图。在
  • 尝试查询。在

Python and BerkleyDB

  • 免责声明:这是我的一个项目
  • 与纯Python版本相同,只是图形保存在数据库中。API类似于neo4jpython绑定。在

它们是其他解决方案,但是如果没有更多关于目标应用程序(例如web或桌面)的上下文,我就不能列出它们。它们是关于neo4j website的一些有用的信息。在

也就是说,最好的解决方案可能涉及neo4j,但是如果您想轻松地在几个数据库之间切换,以便为您的用例找到性能最佳的数据库,则需要使用Rexster对于网络应用程序或{a4}。直接使用neo4j服务器的唯一原因是能够使用cypher query language。在

如果我必须创建一个谱系网络应用程序,并在此基础上建立一个业务,我会使用我已经构建的软件,即:

这些还没有准备好生产。但我会这么做的。在

相关问题 更多 >