繁体   English   中英

在Rails应用程序下将Neo4j与PostgreSQL相结合

[英]Combining Neo4j with PostgreSQL under Rails application

我们正在构建一个应该使用Neo4j数据库和标准postgresql的Rails 3应用程序。

将这些组合在一起的最佳方法是什么? 我们需要它们兼容ORM,并且它们需要彼此良好地相互作用(彼此之间的关系等)。

谢谢

像往常一样使用ActiveRecord for Postgresql。 向调用Neo4j并返回ID的模型添加方法。

举个简单的例子:

用户标签 用户模型将具有“ 标签 ”方法。 它会调用一个cypher查询或rest查询,从图形数据库中返回标签的ID([2,3,5])。 然后我会用postgres从postgres加载正确的标签对象

Tag.find_all_by_id([2, 3, 5])

我认为neoid提供了Max在他的回答中提到的方法。

来自GitHub回购:

使您的ActiveRecords在Neo4j图形数据库上存储和搜索,以便进行MySQL在执行时可以抓取的快速图形查询。

对Neo4j来说,Neoid就像Sunspot到Solr。 您可以获得Neo4j速度的优势,同时将模式保留在普通的旧RDBMS上。

您的应用程序需要协调数据库之间的活动。

使用多个DB可能很有价值,因为你需要不同的功能,但是这会有很大的复杂性,而且你会失去像外键这样的基本功能。

从PostgreSQL方面,理论上可以实现外键关系的一方,防止在远程端仍然存在时从PostgreSQL中删除记录,并防止在远程端不存在的PostgreSQL中插入记录。 您需要查看neo4j是否具有类似灵活的用户定义触发器。

即使有可能,外键执行的表现也可能是绝对可怕的。

对我来说,选择通过公共抽象层使用多个数据库是没有意义的。 您选择同时使用多个DB的主要原因是从每个DB的不同功能中受益,而像ORM这样的抽象层往往会妨碍它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM