neo4j

1.Neo4j简介(Neo4j系列)

房东的猫 提交于 2020-02-07 11:44:06
简介   Neo4j是一个 高性能 、 高可靠性 、 可扩展 、 支持ACID事务 的图数据库,它基本由Java语言实现,支持数据平台的平滑扩展和过渡,同时能够在多种系统上完成部署,它使用Cypher查询语言对数据进行增删查改。Neo4j采用属性图模型对数据进行建模,能够以相同的速度遍历结点与边,其遍历速度与构成图形的数据量没有任何关系。 同类软件对比     我们将Neo4j与同类软件进行对比,发现其是最适合我们的也是目前最受欢迎的图数据库。   DB Engines排名 https://db-engines.com/en/ranking/graph+dbms 通过排名我们可以看出来neo4j的受欢迎程度远远超过了同类软件。 优缺点比对   优点   Neo4j图数据库是一个能够适应业务需求不断变化和大规模数据增长而产生的数据库,它不但具有很强的适应能力,而且能够自始至终保持高效的查询性能,并且具有坚如磐石般的事务管理特性等特点 闪电般的读/写速度,无与伦比的高性能表现。 非结构化数据存储方式,在数据库设计上具有很大的灵活性。 很容易使用,可以用嵌入式、服务器模式、分布式模式等方式来使用数据库。 使用简单框图就可以设计数据模型,方便建模。 图数据的结构特点可以提供更多更优秀的算法设计。 完全支持ACID完整的事务管理特性。 提供分布式高可用模式,可以支持大规模的数据增长。

Error in inserting a string parameter to a cypher query in a java code

懵懂的女人 提交于 2020-02-07 07:09:04
问题 I want to insert a string parameter to a cypher query in Java. Below is the code I used and I have a person node named 'piyumi' and I want to make relationship with an activity node. The name of the activity node is 'walking'. When I execute the code I get http status code 400. Can anyone help me to modify the cypher query so that I can insert the string variable s without error. import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey

Spring Boot Test using Neo4j embedded database with JDBC Bolt driver

你离开我真会死。 提交于 2020-02-06 10:49:19
问题 Is it possible to connect to an embedded Neo4j database the same way you would do with an H2 in-memory database to mock an Oracle database? I've tried to do this: final BoltConnector boltConnector = new BoltConnector("bolt"); graphDb = new GraphDatabaseFactory() .newEmbeddedDatabaseBuilder(DB_PATH) .setConfig(boltConnector.type, BOLT.name()) .setConfig(boltConnector.enabled, TRUE) .setConfig(boltConnector.listen_address, listenAddress("127.0.0.1", 7688)) .setConfig(boltConnector.encryption

How to store social network's actions in NEO4J?

喜夏-厌秋 提交于 2020-02-06 05:06:26
问题 We are going to use NEO4J for our social network database and we have common social networks actions such as following, link, comment, posts and so on... . Now I want to know is this correct, we are doing: Comment: user_comment is a node and has a relation with post node, relation name is comment Like: Like is a relation, the relation name is like and a post has a relation with a user, the relation name is like Location: Each post can have a location, then post node has a where relation with

Neo4j CQL -(15)- LIMIT和SKIP子句

左心房为你撑大大i 提交于 2020-02-06 02:56:25
Neo4j CQL LIMIT子句 Neo4j CQL已提供“LIMIT”子句来过滤或限制查询返回的行数。 它修剪CQL查询结果集底部的结果。 如果我们要修整CQL查询结果集顶部的结果,那么我们应该使用CQL SKIP子句。 请参考本章的下一节CQL SKIP子句。 LIMIT子句语法 LIMIT <number> 语法说明: 示例: 演示如何使用CQL LIMIT子句减少MATCH + RETURN查询返回的记录数。 步骤1 -打开Neo4j数据浏览器 步骤2 -在没有LIMIT子句的数据浏览器上键入以下命令 MATCH (emp:Employee) RETURN emp 结果表格图: 步骤3 -使用LIMIT子句在数据浏览器上键入以下命令 MATCH (emp:Employee) RETURN emp LIMIT 2 它只返回Top的两个结果,因为我们定义了limit = 2。这意味着前两行。 接下来 示例 :演示如何使用CQL SKIP子句减少MATCH + RETURN查询返回的记录数。 步骤1 -打开Neo4j数据浏览器 步骤2 -在没有SKIP子句的数据浏览器上键入以下命令 MATCH (emp:Employee) RETURN emp SKIP 1 结果返回为最后3行,那么,咱们可以知道,skip的作用呢就是忽略前几行,从而可以实现咱们想要的显示后几行的功能~

关于neo4j初入门(3)

♀尐吖头ヾ 提交于 2020-02-06 02:55:42
这一章主要是函数的部分 UPPER 它需要一个字符串作为输入并转换为大写字母。 UPPER (<input-string>)<input-string>可以是来自Neo4J数据库的节点或关系的属性名称。例如 MATCH (e:Employee) RETURN e.id,UPPER(e.name),e.sal,e.deptno LOWER 它需要一个字符串作为输入并转换为小写字母。 函数语法 LOWER (<input-string>) <input-string>可以是来自Neo4J数据库的节点或关系的属性名称。 RETURN e.id,LOWER(e.name),e.sal,e.deptno SUBSTRING 它接受一个字符串作为输入和两个索引:一个是索引的开始,另一个是索引的结束,并返回从StartInded到EndIndex-1的子字符串。 SUBSTRING(<input-string>,<startIndex> ,<endIndex>) 在Neo4J CQL中,如果一个字符串包含n个字母,则它的长度为n,索引从0开始,到n-1结束。 <startIndex>是SUBSTRING函数的索引值。 <endIndex>是可选的。 如果我们省略它,那么它返回给定字符串的子串从startIndex到字符串的结尾。 RETURN e.id,SUBSTRING(e.name,0,2)

Neo4j CQL-(18)IN操作符

烂漫一生 提交于 2020-02-06 02:53:03
与SQL一样,Neo4j CQL提供了一个IN运算符,以便为CQL命令提供值的集合。 IN操作符语法: IN[<Collection-of-values>] 语法说明: 示例: 演示如何使用IN运算符检索Employee节点详细信息。 步骤1 -打开Neo4j数据浏览器 步骤2 -在数据浏览器中的dollar提示符下键入以下命令。 MATCH (e:Employee) RETURN e.id,e.name,e.sal,e.deptno 步骤3 -键入以下命令,然后单击执行按钮。 MATCH (e:Employee) WHERE e.deptno IN [10,30] RETURN e.id,e.name,e.sal,e.deptno 结果如图: 可见,IN 的作用就是,匹配与name一致 的内容,然后返回在IN运算符中指定的name匹配的两行。 本文参考: https://www.w3cschool.cn/neo4j/neo4j_cql_in_operator.html 来源: https://www.cnblogs.com/DeepRunning/p/9205930.html

Neo4j CQL - (12)-SET子句

只谈情不闲聊 提交于 2020-02-06 02:47:55
有时,根据我们的客户端要求,我们需要向现有节点或关系添加新属性。 要做到这一点,Neo4j CQL提供了一个SET子句。 Neo4j CQL已提供SET子句来执行以下操作。 向现有节点或关系添加新属性 添加或更新属性值 SET子句语法 : SET <property-name-list> <属性名称列表>语法: <node-label-name>.<property1-name>, <node-label-name>.<property2-name>, .... <node-label-name>.<propertyn-name> 语法说明: 注意 - 我们应该使用逗号(,)运算符来分隔属性名列表。 示例: 演示如何向现有DebitCard节点添加新属性。 步骤1 -打开Neo4j数据浏览器 步骤2 -在数据浏览器上键入以下命令 MATCH (book:Book) RETURN book 步骤3 -在数据浏览器上键入以下命令然后查询。 MATCH (book:Book) SET book.title = 'superstar' RETURN book 这里我们可以观察到新的属性被添加到“book”节点。 本文参考: https://www.w3cschool.cn/neo4j/neo4j_cql_set.html 来源: https://www.cnblogs.com

Neo4j CQL - (2)-MATCH命令

☆樱花仙子☆ 提交于 2020-02-06 02:47:05
Neo4j CQL MATCH命令用于 - 从数据库获取有关节点和属性的数据 从数据库获取有关节点,关系和属性的数据 MATCH命令语法: MATCH ( <node-name>:<label-name> ) 语法说明 注意事项 - Neo4j数据库服务器使用此将此节点详细信息存储在Database.As中作为Neo4j DBA或Developer,我们不能使用它来访问节点详细信息。 Neo4j数据库服务器创建一个作为内部节点名称的别名。作为Neo4j DBA或Developer,我们应该使用此标签名称来访问节点详细信息。 注意-我们不能单独使用MATCH Command从数据库检索数据。 如果我们单独使用它,那么我们将InvalidSyntax错误。 例如:这个例子演示了“如果我们单独使用MATCH命令从数据库检索数据会发生什么”。 按照下面给出的步骤 - 步骤1 -打开Neo4j的数据浏览器。 步骤2 -在数据浏览器的dollar提示符处键入以下命令。 MATCH (dept:Dept) 这里 - dept是节点名称 Dept是emp节点的标签名称 咱们看到的是错误的消息,其实,MATCH 经常需要与其他的语句配合才可以使用. 如:match (n) return n 本文参考: https://www.w3cschool.cn/neo4j/neo4j_cql_match

Neo4j CQL -(17)- NULL值

佐手、 提交于 2020-02-06 02:46:07
Neo4j CQL将空值视为对节点或关系的属性的缺失值或未定义值。 当我们创建一个具有现有节点标签名称但未指定其属性值的节点时,它将创建一个具有NULL属性值的新节点。 示例: 演示CREATE命令如何将NULL值设置为未定义属性。 如何检索没有NULL行的节点的所有行。 步骤1 - 打开Neo4j数据浏览器 步骤2 -在数据浏览器中的美元提示符下键入以下命令。 MATCH (e:Employee) RETURN e.id,e.name,e.sal,e.deptno 观察结果: 步骤3 -键入以下命令,然后单击执行按钮 CREATE (e:Employee) 如果我们观察到上面的成功消息,它没有创建任何属性到Employee节点。 步骤4 -键入以下命令,然后单击执行按钮 MATCH (e:Employee) RETURN e.id,e.name,e.sal,e.deptno) 如果我们观察这些结果,则以前的CREATE命令通过将其所有属性值设置为NULL来插入Employee节点。 步骤5 -键入以下命令并单击执行按钮 MATCH (e:Employee) WHERE e.name IS NOT NULL RETURN e.id,e.name,e.sal,e.deptno 如果我们观察这些结果,它不返回NULL值行,因为我们提供了一个WHERE子句来过滤该行