标签: neo4j

CYPHER查询中的LIKE子句

Cypher查询似乎不支持LIKE.

是否有任何其他构造可以执行相同的任务?

例如:

start n = node(*) where n.Name LIKE('%SUBSTRING%') return n.Name, n;
Run Code Online (Sandbox Code Playgroud)

neo4j cypher

52
推荐指数
4
解决办法
4万
查看次数

将MySQL和Neo4j一起使用是一个好主意吗?

我将使用许多类似的项目(数百万)创建一个应用程序,我想将它们存储在MySQL数据库中,因为我想做大量的统计信息并搜索特定列的特定值.

但与此同时,我将存储所有项目之间的关系,这些项目在许多连接的二叉树结构(传递闭包)中相关,而关系数据库并不擅长这种结构,所以我想存储Neo4j中的所有关系都具有良好的性能.

我的计划是将所有数据除了MySQL数据库中的关系以及item_id存储在Neo4j数据库中的所有关系.当我想查找树时,我首先在Neo4j中搜索树中的所有item_id:s,然后在MySQL数据库中搜索查询中的所有指定项,如下所示:

SELECT * FROM items WHERE item_id = 45 OR item_id = 345435 OR item_id = 343 OR item_id = 78 OR item_id = 4522 OR item_id = 676 OR item_id = 443 OR item_id = 4255 OR item_id = 4345

这是个好主意,还是我错了?我之前没有使用过图形数据库.有没有更好的方法解决我的问题?在这种情况下,MySQL查询将如何执行?

mysql architecture hierarchical-data neo4j graph-databases

51
推荐指数
3
解决办法
1万
查看次数

图表数据库与三重商店 - 何时使用哪个?

我知道Stackoverflow上有类似的问题,但我觉得他们没有回答以下问题.

图表数据库对我的理解存储数据主要遵循以下模式:

Table/Collection 1: store nodes with UID
Table/Collection 2: store relations referencing nodes via UID
Run Code Online (Sandbox Code Playgroud)

这允许存储任意类型的图形.现在据我所知,三重商店只存储三元组:

Triple/Collection 1: store triples (2 nodes, 1 relation)
Run Code Online (Sandbox Code Playgroud)

现在我将看到有关用例的以下区别:

  • 图形数据库:当您知道静态连接时
  • 三重存储:当您有松散连接的节点并且经常寻找新连接时

我很困惑的是,人们似乎根据这些标准没有讨论使用哪一个.我发现的大多数文章都在谈论速度或兼容性等论点.但这不是最重要的一点吗?

反过来说:

  • 想象一下,有一个清晰连接,用户定义的图形.为什么你只想将它存储为三元组,丢失所有关于连接的信息?或者必须实现在三元组中存储ID的一些自定义解决方案subject.
  • 想象一下,使用SPARQL松散地收集了要查询未知关系的节点.图数据库支持这一点.但为此,他们必须建立另一个我认为会更慢的指数吗?

编辑:我看到"失去关于连接的信息"是错误的方式.如果您按照接受的答案中所示执行操作并为2个节点+ 1个关系插入多个三元组,那么您将保留所有信息,特别是信息确切的节点连接的信息.

sparql triplestore neo4j graph-databases orientdb

50
推荐指数
1
解决办法
1万
查看次数

49
推荐指数
3
解决办法
1万
查看次数

neo4j如何用Cypher返回所有节点标签?

我找不到如何用Cypher返回节点标签.

有谁知道这个操作的语法?

neo4j cypher

48
推荐指数
5
解决办法
3万
查看次数

使用Neo4j在一台服务器上创建多个数据库

如何使用neo4j在一台服务器上创建多个数据库?我有多个客户端,我想将所有客户端信息分成不同的数据库,以避免数据泄漏.

database neo4j

47
推荐指数
3
解决办法
2万
查看次数

Neo4j警告:允许最多1024个打开文件,建议最少40 000个.请参阅Neo4j手册

我使用这些说明在Ubuntu 12.04上安装了Neo4j:http://www.neo4j.org/download/linux

wget -O - http://debian.neo4j.org/neotechnology.gpg.key | apt-key add - 
echo 'deb http://debian.neo4j.org/repo stable/' > /etc/apt/sources.list.d/neo4j.list
apt-get update
apt-get install neo4j
Run Code Online (Sandbox Code Playgroud)

我确保有正确的jdk:

root@precise64:~# java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
Run Code Online (Sandbox Code Playgroud)

当我启动neo4j时,我收到此错误:

警告:允许最多1024个打开文件,建议最少40 000个.请参阅Neo4j手册.

所以我按照这里的说明操作:http://docs.neo4j.org/chunked/1.6.2/configuration-linux-notes.html

并将这些内容添加到 /etc/security/limits.conf

neo4j   soft    nofile  40000
neo4j   hard    nofile  40000
Run Code Online (Sandbox Code Playgroud)

并取消注释这一行 /etc/pam.d/su

session    required   pam_limits.so
Run Code Online (Sandbox Code Playgroud)

重新启动服务器后,我验证了新的限制

neo4j@precise64:~$ ulimit -n
40000
Run Code Online (Sandbox Code Playgroud)

然后我重启我的服务器.启动时我仍然遇到同样的错误.

root@precise64:~# service neo4j-service start
WARNING: Max …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu neo4j

46
推荐指数
5
解决办法
2万
查看次数

Neo4j:匹配多个标签(2个或更多)

我想做一个搜索,我想开始遍历2个标签(OR条件).例如,我需要找出所有标记为"男性"或"女性"且其属性名称为"〜"的节点.AIL.".

neo4j cypher

45
推荐指数
6
解决办法
3万
查看次数

MongoDB + Neo4J与OrientDB对比ArangoDB

我目前正处于MMO浏览器游戏的设计阶段,游戏将包括一些实时位置的瓦片地图(因此每个单元格的瓦片数据)和一般世界地图.我更喜欢使用MongoDB进行持久数据世界的游戏引擎.

我还将实现一个运输模拟(我将在下面详细解释),它基本上是一个Dijkstra模块,我已经决定使用图形数据库,希望它能让事情变得更容易,因为它很受欢迎.

我对MongoDB + Neo4J设置感到满意,但后来注意到了OrientDB,它看起来像MongoDB和Neo4J(两者都是最好的?),甚至还有MongoDB和Neo4J的VS页面.

重点是,我听到一些关于MongoDB丢失数据的恐怖故事(尽管不确定它仍然存在)并且我没有这样的奢侈品.而对于Neo4J,我不是每年12K€的"忠实启动"成本的忠实粉丝,尽管我可能没有数百万的顶点数据库.OrientDB似乎是一个可行的选择,因为可能还有一些使用一个数据库解决方案的机会.

在这种情况下,一个逻辑移动可能会跳转到OrientDB,但它有一个小社区,并且没有找到很多关于它的评论,MongoDB和Neo4J是广泛使用的流行工具,我担心如果OrientDB是冒险.

我的第一个问题是,如果您对这些数据库有任何经验/意见.

第二个问题是其图形数据库是一个航运仿真更好.使用数据库有望计算从任何顶点到任何顶点的最便宜路线并遍历它(经典Dijkstra).但也必须根据"国家B对国家A禁运的情况改变权重,因此任何来自A国的物品都不能通过B,在XYZ地区有洪水,因此无法进行陆路运输"等.此外,该数据库预计会缓存结果.我希望不超过1000个顶点,但边缘很多.

如果问题有点含糊,请提前致谢并提前道歉

PS:我在标题上添加了ArangoDB,但是没有太多机会去看看.


截至2016年4月18日的后期编辑:在评估了对我的问题和发展策略的反应之后,我决定使用ArangoDB,因为他们的路线图对我来说更有希望,因为他们显然没有尝试添加大量半炒的炒作功能.

dijkstra mongodb neo4j orientdb arangodb

45
推荐指数
3
解决办法
3万
查看次数

为什么Neo4J告诉我没有勺子?

我用Neo4J代表文本; 在最简单的情况下,文本是由关系LEMMA_TEXT连接的一系列单词.

我试图找到一个已知单词之后的第N个单词,查询看起来像这样.

MATCH (anchor)-[:LEMMA_TEXT*32]->(word) 
WHERE id(anchor) = 3275 
RETURN word
Run Code Online (Sandbox Code Playgroud)

在一个特定的情况下,如果我将路径长度增加到33,我会收到此错误:

Neo.DatabaseError.Statement.ExecutionFailure: There is no spoon.
Run Code Online (Sandbox Code Playgroud)

然而,以下查询返回正确的结果.

MATCH (anchor)-[:LEMMA_TEXT*32]->(word)-[:LEMMA_TEXT]->(next) 
WHERE id(anchor) = 3275 
RETURN next
Run Code Online (Sandbox Code Playgroud)

这表明我想要的节点存在且可以访问.

手册的哪一部分告诉我如何用心灵弯曲勺子?更重要的是,这究竟意味着什么?!

neo4j cypher

45
推荐指数
1
解决办法
874
查看次数