Neo4j批量更新数据的技巧_第1页
Neo4j批量更新数据的技巧_第2页
Neo4j批量更新数据的技巧_第3页
Neo4j批量更新数据的技巧_第4页
Neo4j批量更新数据的技巧_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Neo4j批量更新数据的方法相比图形数据的查询,Neo4j更新图形数据的速度较慢,通常情况下r Neo4j更新数据的工作流程是:每次数据更新都会执行一次数据库连接,打开一个事务,在事务中更新数据。当高效的做法是利用Neo4j提供的参数(Parameter)机制和UNWIND子句:在一次数据 更新中,进行一次连接,打开一次事务,批量更新数据;参数用于提供列表格式的数据,UNWIND子句是把列表1展开成一行一行的数据,每行数据都会执行结构相同的Cypher语句。再批量更新图形爰之前,用户必须构造结构固走的、参数化的Cypher语句。当Cypher语句的结构相同时 Neo4j数据库直接从缓存中复用已

2、生成的执行计划,而 不需要重新生成.这也能够提高查询性能。除了官方的Neo4j Driver之外f本文分享使用Neo4jClient对图形爰Neo4jClient提供的功能更强大,并支持参数和批呈更新操作。,参数和UNWIND子句1,通过RESTful API传递参数Neo4j提供HTTP API处理Cypher语句和参数,在示例代码中,Neo4j的参数通过HTTP请求传递,statement走义的是查询语句,parameters定义的是参数。在批星更新蠅时,没有必要发送多个HTTP请求,通过参数,可以在一个HTTP请 求(Request)中,开始一个事务r在事务中执行Cyphe语句批量更新数

3、据f最后提交该 事务。在发送HTTP请求传递参数批呈更新数据时f设置HTTP Request的参数如下:POST http:/localhost:7474/db/data/transaction/commitAccept: application/jsono charset=UTF-8Content-Tjpe: application/json注意:在HTTP API中f引用参敎的格式是:param。Statements1* : ,statementM : CREATE (n props) RETURN n”,parameters” : props” : name” : ”My Node】2,

4、展开(UNWIND)子句UNWIND子句把列表式的数据展开成一行一行的:,每一个行都包含更新所需要的全部信息,列表式的数据,可以通过参数来传递。例如,定义参数events ,该参数是一个JSON字符串,键events是参数名,其值是 个数组,包含两个数组元素。events11 : HyearH : 2014, id : 1, “year : 2014, “id” : 2 通过$events引用参数,UNWIND子句把events数组中的两个元素展开,每个元素 执行一次Cypher语句,由于Cypher的语句结构固定,因此,执行计划被缓存起来,在执 行数据更新任务时,参数被UNWIND子句展开,

5、复用执行计划,提高数据更新的速度。UNWIND $events AS eventMERGE (y:Year year: event.year )MERGE (y)-:IN-(e:Event id: event.id )RETURN e.id AS xORDER BY x二/在Neo4j Browser中使用参数Neo4j Browser是Neo4j内置的浏览器,用于管理数据库,更新数据库W查询:再命令窗体中,通过罗能够引用内置的命令,例如,通过SaranT能够定义参数,并能 够在下一个Cypher语句中弓I用参数。1 通过:param命令定义参数在Neo4j Browser中,输入第一个命令,

6、通过:param命令走义参数f:param events: year: 2014, id: 1, year; 2014, id; 22,通过$卩32引用参数紧接着,输入Cypher语句,通过$卩3心口引用参数UNWIND events AS eventMERGE (y:Year ( year: event.year )MERGE (y)-:IN-(e:Event id: event.id )RETURN e.id AS xORDER BY x3,查看创建的圏形参数是一个列表格式的数据,在参数events中,两个event的year属性都是2014 , 因此,MERGE子句只会创建一个Year节

7、点;由于两个event的id属性不同,因此MERGE 子句会创建两个Event节点,并创建Year节点和Event节点之间的关系,图形如下图:$ match(eturn nText三,使用Neo4jClient批量更新数据在工程(Projects )中输入命令安装Neo4jClient,Package-Install Neo4jClient连接Neo4j数据库创建客户端,连接到数据库创建的Uri的格式是:http:/hosLname:7474/db/data,并输入用户名和密码,然后创建图形客户端,并连接到Neo4jprivate GraphClient _clientopublic Neo4

8、jClientProvider().client = new GraphClient(new Uri(Mhttp:/localhost:7474/db/data), username*, password*%_client. Connect ()。2,批量创建节点传递List参数,通过Unwind函数引用List,并为参数命名为ns,在Cypher语句中引用参数nspublic void CreateNodes(List nodes)_cli ent. Cypher.Unwind(nodes, ns) .CreateCniNodeLable).Set(n.NodeID=ns.NodeID).Set(nn.Name=ns.NameM).Execut eWithoutResultsO。2,批量创建关系在List参数中,传递两个节点的映射,在Neo4j数据库中,关系必须具有类型,因此,在把参数传递到Neo4j数据中时,需要确定两个节点和关系类型,以创建关系public bool CreateRelationships(List nodes)_cli ent. Cypher.Unwind(nodes, ”ns”)M atch(H(n:Lable

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论