本文實(shí)例講述了Python使用py2neo操作圖數(shù)據(jù)庫neo4j的方法。分享給大家供大家參考,具體如下:
圖:數(shù)據(jù)結(jié)構(gòu)中的圖由節(jié)點(diǎn)和其之間的邊組成。節(jié)點(diǎn)表示一個(gè)實(shí)體,邊表示實(shí)體之間的聯(lián)系。
圖數(shù)據(jù)庫:以圖的結(jié)構(gòu)存儲(chǔ)管理數(shù)據(jù)的數(shù)據(jù)庫。其中一些數(shù)據(jù)庫將原生的圖結(jié)構(gòu)經(jīng)過優(yōu)化后直接存儲(chǔ),即原生圖存儲(chǔ)。還有一些圖數(shù)據(jù)庫將圖數(shù)據(jù)序列化后保存到關(guān)系型或其他數(shù)據(jù)庫中。
之所以使用圖數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù)是因?yàn)樗谔幚韺?shí)體之間存在復(fù)雜關(guān)系的數(shù)據(jù)具有很大的優(yōu)勢(shì)。使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫在處理數(shù)據(jù)之間的關(guān)系時(shí)其實(shí)很不方便。例如查詢選修一個(gè)課程的同學(xué)時(shí)需要join兩個(gè)表,查詢選修某個(gè)課程的同學(xué)還選修什么課程,這就需要兩次join操作,當(dāng)涉及到十分復(fù)雜的關(guān)系以及龐大的數(shù)據(jù)量時(shí),關(guān)系型數(shù)據(jù)庫效率十分低下。而通過圖存儲(chǔ),可以通過節(jié)點(diǎn)之間的邊十分便捷地查詢到結(jié)果。
圖模型:
節(jié)點(diǎn)(Node)是主要的數(shù)據(jù)元素,表示一個(gè)實(shí)體。
屬性(Properties)用于描述實(shí)體的特征,以鍵值對(duì)的方式表示,其中鍵是字符串,可以對(duì)屬性創(chuàng)建索引和約束。
關(guān)系(Relationships)表示實(shí)體之間的聯(lián)系,關(guān)系具有方向,實(shí)體之間可以有多個(gè)關(guān)系,關(guān)系也可以具有屬性
標(biāo)簽(Label)用于將實(shí)體分類,一個(gè)實(shí)體可以具有多個(gè)標(biāo)簽,對(duì)標(biāo)簽進(jìn)行索引可以加速查找
Neo4j是目前最流行的圖數(shù)據(jù)庫,它采用原生圖存儲(chǔ),在windows中下載安裝訪問如下地址https://neo4j.com/download/community-edition/。在Linux下通過如下命令下載解壓
curl -O http://dist.neo4j.org/neo4j-community-3.4.5-unix.tar.gztar -axvf neo4j-community-3.4.5-unix.tar.gz
修改配置文件conf/neo4j.conf
# 修改第22行l(wèi)oad csv時(shí)l路徑,在前面加個(gè)#,可從任意路徑讀取文件#dbms.directories.import=import# 修改35行和36行,設(shè)置JVM初始堆內(nèi)存和JVM最大堆內(nèi)存# 生產(chǎn)環(huán)境給的JVM最大堆內(nèi)存越大越好,但是要小于機(jī)器的物理內(nèi)存dbms.memory.heap.initial_size=5gdbms.memory.heap.max_size=10g# 修改46行,可以認(rèn)為這個(gè)是緩存,如果機(jī)器配置高,這個(gè)越大越好dbms.memory.pagecache.size=10g# 修改54行,去掉改行的#,可以遠(yuǎn)程通過ip訪問neo4j數(shù)據(jù)庫dbms.connectors.default_listen_address=0.0.0.0# 默認(rèn) bolt端口是7687,http端口是7474,https關(guān)口是7473,不修改下面3項(xiàng)也可以# 修改71行,去掉#,設(shè)置http端口為7687,端口可以自定義,只要不和其他端口沖突就行#dbms.connector.bolt.listen_address=:7687# 修改75行,去掉#,設(shè)置http端口為7474,端口可以自定義,只要不和其他端口沖突就行dbms.connector.http.listen_address=:7474# 修改79行,去掉#,設(shè)置http端口為7473,端口可以自定義,只要不和其他端口沖突就行dbms.connector.https.listen_address=:7473# 去掉#,允許從遠(yuǎn)程url來load csvdbms.security.allow_csv_import_from_file_urls=true# 修改250行,去掉#,設(shè)置neo4j-shell端口,端口可以自定義,只要不和其他端口沖突就行dbms.shell.port=1337# 修改254行,設(shè)置neo4j可讀可寫dbms.read_only=false
在bin目錄下執(zhí)行 ./neo4j start,啟動(dòng)服務(wù),在瀏覽器http://服務(wù)器ip地址:7474/browser/可以看到neo4j的可視化界面
py2neo是一個(gè)社區(qū)第三方庫,通過它可以更為便捷地使用python來操作neo4j
安裝py2neo:pip install py2neo
,我安裝的版本是4.3.0
創(chuàng)建節(jié)點(diǎn)和它們之間的關(guān)系,注意在使用下面的py2neo相關(guān)類之前首先需要import導(dǎo)入:
新聞熱點(diǎn)
疑難解答
圖片精選