下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Neo4j批量更新数据的方法相比图形数据的查询,Neo4j更新图形数据的速度较慢,通常情况下,Neo4j更新数据的工作流程是:每次数据更新都会执行一次数据库连接,打开一个事务,在事务中更新数据。当数据量非常大时,这种做法非常耗时,大多数时间耗费在连接数据库和打开事务上, 高效的做法是利用 Neo4j提供的参数(Parameter )机制和UNWIND 子句:在一次数据 更新中,进行一次连接,打开一次事务,批量更新数据;参数用于提供列表格式的数据, UNWIND子句是把列表数据展开成一行一行的数据,每行数据都会执行结构相同的 Cypher语句。再批量更新图形数据之前,用户必须构造结构固定的、参数
2、化的Cypher语句。当Cypher语句的结构相同时,Neo4j数据库直接从缓存中复用已生成的执行计划,而不需要重新生成,这也能够提高查询性能。除了官方的Neo4j Driver 之外,本文分享使用 Neo4jClie nt 对图形数据批量更新, Neo4jClie nt提供的功能更强大,并支持参数和批量更新操作。一,参数和UNWIND 子句1,通过RESTful API传递参数Neo4j提供HTTP API处理Cypher语句和参数,在示例代码中,Neo4j的参数通过HTTP请求传递,statement 定义的是查询语句,parameters 定义的是参数。在批量更新数据时,没有必要发送多个
3、HTTP请求,通过参数,可以在一个HTTP请求(Request )中,开始一个事务,在事务中执行 Cypher语句批量更新数据,最后提交该 事务。在发送HTTP请求传递参数批量更新数据时,设置HTTP Request的参数如下:POST http:/localhost:7474/db/data/transaction/commitAccept: applicati on/json;charset=UTF-8Conten t-Type:applicati on/json注意:在HTTP API中,引用参数的格式是:param。"statements" : "stat
4、ement" : "CREATE (n props) RETURN n","parameters" : "props" : "name" : "My Node"2,展开(UNWIND )子句UNWIND 子句把列表式的数据展开成一行一行的数据,每一个行都包含更新所需要的全部信息,列表式的数据,可以通过参数来传递。例如,定义参数events,该参数是一个 JSON字符串,键events是参数名,其值是 一个数组,包含两个数组元素。"events" : "ye
5、ar" : 2014, "id" : 1, "year" : 2014, "id" : 2 通过$events引用参数,UNWIND子句把events数组中的两个元素展开,每个元素 执行一次Cypher语句,由于Cypher的语句结构固定,因此,执行计划被缓存起来,在执 行数据更新任务时,参数被 UNWIND 子句展开,复用执行计划,提高数据更新的速度。UNWIND $eve nts AS eve ntMERGE (y:Year year: event.year )MERGE (y)v-:IN-(e:Event id: ev
6、ent.id )RETURN e.id AS xORDER BY x二,在Neo4j Browser中使用参数Neo4j Browser 是Neo4j内置的浏览器,用于管理数据库,更新数据库和查询数据, 再命令窗体中,通过“:”能够引用内置的命令,例如,通过 ":param"能够定义参数,并能 够在下一个Cypher语句中引用参数。1,通过:param命令定义参数在Neo4j Browser中,输入第一个命令,通过:param 命令定义参数,:param events: (year: 2014, id: 1, year: 2014, id: 22,通过$param引用参数紧
7、接着,输入 Cypher语句,通过$param引用参数UNWIND Sevents AS eventMERGE (y:Year year: eventTyear )MERGEIN-(e:Event id: event*id )RETURN e.id AS xORDER BY x3,查看创建的图形参数是一个列表格式的数据,在参数 events中,两个eve nt的year属性都是2014 , 因此,MERGE子句只会创建一个 Year节点;由于两个eve nt的id属性不同,因此MERGE 子句会创建两个 Eve nt节点,并创建 Year节点和Event节点之间的关系,图形如下图:$ matc
8、h(n) return nEvent(2)GraphYear(1)2J14三,使用Neo4jClient批量更新数据在工程(Projects )中输入命令安装 Neo4jClient,Package-I nstall Neo4jClie nt1,连接Neo4j数据库创建客户端,连接到数据库,创建的Uri的格式是:http:/host_name:7474/db/data,并输入用户名和密码,然后创建图形客户端,并连接到Neo4j数据库。private GraphClie nt _clie nt;public Neo4jClie ntProvider()_client = new GraphCli
9、ent(newUri("http:/localhost:7474/db/data"),"user_name","password");_clie nt.C onn ect();2,批量创建节点传递List<T>参数,通过Unwind 函数引用List,并为参数命名为"ns",在Cypher语句中引用参数"ns"public void CreateNodes(List<DataModel> no des)_clie nt.Cypher.Unwind(no des,"
10、;n s").Create("( n:NodeLable)").Set(" n.NodelD=ns.NodelD").Set(" n.Name=ns.Name").ExecuteWithoutResults();2,批量创建关系在List<T>参数中,传递两个节点的映射,在Neo4j数据库中,关系必须具有类型,因此,在把参数传递到Neo4j数据中时,需要确定两个节点和关系类型,以创建关系public bool CreateRelati on ships(List<Relati on shipModel>no des)_clie nt.Cypher.Unwind(no des,"n s").Match("( n:Lable
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 温故知新 2026-2027学年第一学期初三历史人教版第五单元单元检测卷(含答案)
- 巅峰对决 2027届广东省道德与法治中考鲁教版高分冲刺模拟卷(含答案)
- 2027届陕西省语文初三仿真模拟卷(含答案)
- 巩固提高 2026-2027学年第一学期九年级道德与法治部编版第八单元单元检测卷(含答案)
- 2027年广东省道德与法治中考考前保温卷(含答案)
- 2027年江西省语文九年级考前抢分卷(含答案)
- 2027年山西省道德与法治九年级华师大版仿真模拟卷(含答案)
- 2027年宁夏回族自治区语文中考基础过关卷(含答案)
- 儿童间质性肺疾病指南总结2026
- 2026综合岗面试真题汇编 题库含解析
- 2025年医疗质量安全核心制度考试试题(附答案)
- 2027届上海市西南位育初三语文9月月考试卷及答案
- 2026年卫生高级职称面审答辩(康复医学科)副高经典试题及答案
- 血液肿瘤相关肠梗阻护理专家共识(2026年版)
- 2026年电机学考试复习题库及答案详解
- QMS新版标准讲解新旧比照
- 预制桩沉桩专项施工方案
- 第5课《中国人民站起来了》第二课时(教学课件)
- 《培养德智体美劳全面发展的社会主义建设者和接班人》教学设计2
- 四年级英语阅读理解20篇
- DB11-T 2556-2026 城市轨道交通既有线改造技术要求
评论
0/150
提交评论