




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
龍圖教育,全球游戲50強(qiáng)教育品牌Neo4j批量更新數(shù)據(jù)的方法相比圖形數(shù)據(jù)的查詢,Neo4j更新圖形數(shù)據(jù)的速度較慢,通常情況下,Neo4j更新數(shù)據(jù)的工作流程是:每次數(shù)據(jù)更新都會執(zhí)行一次數(shù)據(jù)庫連接,打開一個事務(wù),在事務(wù)中更新數(shù)據(jù)。當(dāng)數(shù)據(jù)量非常大時(shí),這種做法非常耗時(shí),大多數(shù)時(shí)間耗費(fèi)在連接數(shù)據(jù)庫和打開事務(wù)上,高效的做法是利用Neo4j提供的參數(shù)(Parameter)機(jī)制和UNWIND子句:在一次數(shù)據(jù)更新中,進(jìn)行一次連接,打開一次事務(wù),批量更新數(shù)據(jù);參數(shù)用于提供列表格式的數(shù)據(jù),UNWIND子句是把列表數(shù)據(jù)展開成一行一行的數(shù)據(jù),每行數(shù)據(jù)都會執(zhí)行結(jié)構(gòu)相同的Cypher語句。再批量更新圖形數(shù)據(jù)之前,用戶必須構(gòu)造結(jié)構(gòu)固定的、參數(shù)化的Cypher語句。當(dāng)Cypher語句的結(jié)構(gòu)相同時(shí),Neo4j數(shù)據(jù)庫直接從緩存中復(fù)用已生成的執(zhí)行計(jì)劃,而不需要重新生成,這也能夠提高查詢性能。除了官方的Neo4jDriver之外,本文分享使用Neo4jClient對圖形數(shù)據(jù)批量更新,Neo4jClient提供的功能更強(qiáng)大,并支持參數(shù)和批量更新操作。―,參數(shù)和UNWIND子句1,通過RESTfulAPI傳遞參數(shù)Neo4j提供HTTPAPI處理Cypher語句和參數(shù),在示例代碼中,Neo4j的參數(shù)通過HTTP請求傳遞,statement定義的是查詢語句,parameters定義的是參數(shù)。龍圖教育,全球游戲龍圖教育,全球游戲50強(qiáng)教育品牌www.Io在批量更新數(shù)據(jù)時(shí),沒有必要發(fā)送多個HTTP請求,通過參數(shù),可以在一個HTTP請求(Request)中,開始一個事務(wù),在事務(wù)中執(zhí)行Cypher語句批量更新數(shù)據(jù),最后提交該事務(wù)。在發(fā)送HTTP請求傳遞參數(shù)批量更新數(shù)據(jù)時(shí),設(shè)置HTTPRequest的參數(shù)如下:POSThttp://localhost:7474/db/data/transaction/commitAccept:application/json;charset=UTF-8Content-Type:application/json注意:在HTTPAPI中,引用參數(shù)的格式是:{param}。{"statements":[{"statement":"CREATE(n{props})RETURNn","parameters":{"props":{"name":"MyNode"}}}]}2,展開(UNWIND)子句UNWIND子句把列表式的數(shù)據(jù)展開成一行一行的數(shù)據(jù),每一個行都包含更新所需要的全部信息,列表式的數(shù)據(jù),可以通過參數(shù)來傳遞。
龍圖教育,全球游戲50龍圖教育,全球游戲50強(qiáng)教育品牌www.Io例如,定義參數(shù)events,該參數(shù)是一個JSON字符串,鍵events是參數(shù)名,其值是一個數(shù)組,包含兩個數(shù)組元素。{"events":[{"year":2014,"id":1},{"year":2014,"id":2}]}通過$events弓I用參數(shù),UNWIND子句把events數(shù)組中的兩個元素展開,每個元素執(zhí)行一次Cypher語句,由于Cypher的語句結(jié)構(gòu)固定,因此,執(zhí)行計(jì)劃被緩存起來,在執(zhí)行數(shù)據(jù)更新任務(wù)時(shí),參數(shù)被UNWIND子句展開,復(fù)用執(zhí)行計(jì)劃,提高數(shù)據(jù)更新的速度。UNWIND$eventsASeventMERGE(y:Year{year:event.year})MERGE(y)<-[:IN]-(e:Event{id:event.id})RETURNe.idASxORDERBYx二,在Neo4jBrowser中使用參數(shù)Neo4jBrowser是Neo4j內(nèi)置的瀏覽器,用于管理數(shù)據(jù)庫,更新數(shù)據(jù)庫和查詢數(shù)據(jù),再命令窗體中,通過“:”能夠引用內(nèi)置的命令,例如,通過":param"能夠定義參數(shù),并能夠在下一個Cypher語句中引用參數(shù)。1,通過:param命令定義參在Neo4jBrowser中,輸入第一個命令,通過:param命令定義參數(shù),
www」owww」o龍圖教育,全球游戲50強(qiáng)教育品牌www.Io:paramevents:[{year::2014,id:1}』{year:2014,id:2}Z2,通過$param引用參緊接著,輸入Cypher語句,通過$param引用參數(shù)'1--建3,看創(chuàng)'1--建3,看創(chuàng)的圖形參數(shù)是一個列表格式的數(shù)據(jù),在參數(shù)events中,兩個event的year屬性都是2014,因此,MERGE子句只會創(chuàng)建一個Year節(jié)點(diǎn);由于兩個event的id屬性不同,因此MERGE子句會創(chuàng)建兩個Event節(jié)點(diǎn),并創(chuàng)建Year節(jié)點(diǎn)和Event節(jié)點(diǎn)之間的關(guān)系,圖形如下圖:$matcli(n)returnnTes1
$matcli(n)returnnTes1& 龍圖教育,全球游戲50強(qiáng)教育品牌三,使用Neo4jClient批量更新數(shù)據(jù)在工程(Projects)中輸入命令安裝Neo4jClient,Package-InstallNeo4jClient1,連接Neo4j數(shù)據(jù)庫創(chuàng)建客戶端,連接到數(shù)據(jù)庫,創(chuàng)建的Uri的格式是:http://host_name:7474/db/data,并輸入用戶名和密碼,然后創(chuàng)建圖形客戶端,并連接到Neo4j數(shù)據(jù)庫。privateGraphClient_client;publicNeo4jClientProvider()_client=newGraphClient(newUri("http://localhost:7474/db/data"),"user_name","password");_client.Connect();2,批量創(chuàng)建節(jié)點(diǎn)傳遞List<T>參數(shù),通過Unwind函數(shù)引用List,并為參數(shù)命名為"ns",在Cypher語句中引用參數(shù)"ns"publicvoidCreateNodes(List<DataModel>nodes)_client.Cypher.Unwind(nodes,"ns")
www.Io龍圖教育,全球游戲www.Io.Create("(n:NodeLable)").Set("n.NodeID=ns.NodeID").Set("n.Name=ns.Name").ExecuteWithoutResults();2批量創(chuàng)建關(guān)系在List<T>參數(shù)中,傳遞兩個節(jié)點(diǎn)的映射,在Neo4j數(shù)據(jù)庫中,關(guān)系必須具有類型,因此,在把參數(shù)傳遞到Neo4j數(shù)據(jù)中時(shí),需要確定兩個節(jié)點(diǎn)和關(guān)系類型,以創(chuàng)建關(guān)系publicboolCreateRelationships(List<RelationshipModel>nodes){_client.Cypher.Unwind(n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 充電樁服務(wù)合同范本
- 中藥飲獨(dú)家購銷合同范本
- 2025山西省建筑安全員B證考試題庫及答案
- 三年級數(shù)學(xué)口算練習(xí)1000道
- 衛(wèi)浴潔具銷售合同范本
- 勞務(wù)派遣合同范本 博客
- 2025山西省安全員A證考試題庫附答案
- 辦公室人員工作總結(jié)范文
- 個人過賬協(xié)議合同范本
- 公路車進(jìn)貨合同范本
- 回文詩課件完整版
- 成人學(xué)士學(xué)位英語1000個高頻必考詞匯匯總
- 高中英語 Smartphone a smart choice 課件
- VTE相關(guān)知識考核試題及答案
- YY/T 1537-2017放射治療用激光定位系統(tǒng)性能和試驗(yàn)方法
- SB/T 10752-2012馬鈴薯雪花全粉
- 高中語文教學(xué)課例《沁園春長沙》課程思政核心素養(yǎng)教學(xué)設(shè)計(jì)及總結(jié)反思
- 三生公司獎金制度
- 復(fù)變函數(shù)與積分變換全套課件
- 濕型砂中煤粉作用及檢測全解析
- 最新部編版語文五年級下冊教材分析及教學(xué)建議課件
評論
0/150
提交評論