Ste*_*ini 19 python database graph graph-databases
我需要在python中开发一个图形数据库(我很乐意,如果有人可以加入我的开发.我已经有了一些代码,但我很乐意讨论它).
我在互联网上做了我的研究.在Java中,neo4j是候选者,但我无法找到任何有关实际磁盘存储的信息.在python中,有许多图形数据模型(参见此PEP前提议,但它们都不能满足我从磁盘存储和检索的需要.
不过,我确实知道三重商店.triplestores基本上都是RDF数据库,所以图形数据模型可以在RDF映射和存储,但我一般不安(主要是由于缺乏经验)对这一解决办法.一个例子是芝麻.事实是,在任何情况下,你必须在内存中的图形表示转换为RDF表示,反之亦然,除非客户端代码想要直接破解RDF文档,这几乎是不可能的.这就像直接处理DB元组,而不是创建一个对象.
什么是国家的最先进的用于存储和检索(一拉在python图形数据的DBMS),此刻?是否有意义开始开发实现,希望在有兴趣的人的帮助下,以及与Graph API PEP的提议者合作?请注意,这将是我未来几个月工作的一部分,所以我对这个最终项目的贡献非常严重;)
编辑:发现也是directededge,但它似乎是一个商业产品
我使用过Jena(一个Java框架)和Allegrograph(Lisp,Java,Python绑定).耶拿有姊妹项目用于存储图表数据,并且已经存在了很长时间.Allegrograph是相当不错的并且有免费版本,我想我会建议这个因为它易于安装,免费,快速,你可以立即上手.学习一点RDF和SPARQL所获得的功能可能非常值得您花时间.如果您已经了解SQL,那么您将有一个良好的开端.能够使用SPARQL查询图形将为您带来一些巨大的好处.序列化为RDF三元组很容易,一些文件格式非常容易(例如NT).我举个例子.假设您有以下图节点边缘节点ID:
Run Code Online (Sandbox Code Playgroud)1 <- 2 -> 3 3 <- 4 -> 5
这些已经是主题谓词对象形式,所以只需在它上面写一些URI表示法,将其加载到三重存储中并通过SPARQL随意查询.这是NT格式:
Run Code Online (Sandbox Code Playgroud)<http://mycompany.com#1> <http://mycompany.com#2> <http://mycompany.com#3> . <http://mycompany.com#3> <http://mycompany.com#4> <http://mycompany.com#5> .
现在从节点1查询所有节点两跳:
Run Code Online (Sandbox Code Playgroud)SELECT ?node WHERE { <http://mycompany.com#1> ?p1 ?o1 . ?o1 ?p2 ?node . }
这当然会产生< http://mycompany.com#5 >.
另一位候选人是Mulgara,用纯Java编写.既然你似乎对Python更感兴趣,我认为你应该首先看一下Allegrograph.