什么是圖數(shù)據(jù)庫Neo4j
所謂的圖數(shù)據(jù)庫一般由節(jié)點和關(guān)系構(gòu)成,neo4j是其中的一種
在尋求數(shù)據(jù)的關(guān)聯(lián)性中優(yōu)于傳統(tǒng)數(shù)據(jù)庫mysql
且neo4j支持上億級別的節(jié)點和關(guān)系
傳統(tǒng)圖運算一般在內(nèi)存中進行,無法處理整個知識圖譜,neo4j可以在磁盤中完成圖運算
因此在問答系統(tǒng)中常常使用neo4j作為數(shù)據(jù)的載體,用于快速搜索關(guān)鍵詞信息
創(chuàng)建節(jié)點:
create (n:人名{name:小明了)-[p:年齡{name:'年齡了]->(m:年齡{name:183)
展示一級關(guān)系
match p-(n)-[ ] ->(m) where n.name ='小明’return n,m
展示一級至二級間的關(guān)系
match p=(n)-[*1…2]->(m) where n.name ='習近’return n,m
刪除節(jié)點
match p=(n) where nname =’ ’ detach delete n
在結(jié)點和關(guān)系數(shù)量龐大的圖中,有更快的數(shù)據(jù)庫操作速度
支持分布式存取,能夠利用集群來擴展內(nèi)存和磁盤容量
支持分布式高可用性,可以支持大規(guī)模的
數(shù)據(jù)增長數(shù)據(jù)安全可靠,支持數(shù)據(jù)的實時備份
通過Cypher語句,使得圖數(shù)據(jù)的操作與展示更加直觀
構(gòu)建Neo4j支持格式的數(shù)據(jù)
一般數(shù)據(jù)導入至Neo4j有兩種方式:
1、使用固定格式的csv進行數(shù)據(jù)加載
2、使用代碼的方式將數(shù)據(jù)進行導入
兩種方式各有優(yōu)缺點,使用CS進行數(shù)據(jù)導入更加迅速,但相對固定:使用代碼方式導入則更加靈活,相對處理速度有一定瓶頸。
使用Csv進行導入的話,一般需要兩份數(shù)據(jù),分別是entity.csv用來定義實體;relationship.csv用來描述關(guān)系,因此需要對于現(xiàn)有數(shù)據(jù)進行再處理。
此為entity.csv的樣例
此為relationship.csv的樣例文章來源:http://www.zghlxwxcb.cn/news/detail-432533.html
數(shù)據(jù)處理前的準備
import csv
from tqdm import tqdm
entity = open(‘entity.csv’,w’encoding=utf-8newline=“)
relationship =open(relationship.csv,wencoding='utf-8newline=”)
#開啟2個記錄器
entity writer = csv.writer(entity)
relationship writer = csv.writer(relationship)
#以下是neo4i所接受的兩個csv,所需的列名
entity writer.writerow([:IDname:LABELT)relationship writer.writerow([:START IDname:ENDIDTYPET)文章來源地址http://www.zghlxwxcb.cn/news/detail-432533.html
正式寫數(shù)據(jù)
data = pdread csv(file name,chunksize=100000)
for ind,i in enumerate(data):
for d in tqdm(range(len(0)):
d = i.loc[d]
entity writer.writerow([hash(d.實體)d.實體ENTITY)
entity writer.writerow([hash(d.值)d值ENTITYT)
relationship writer.writerow([hash(d.實體)d.屬性hash(d.值)RELATIONSHIPT)
break
到了這里,關(guān)于什么是圖數(shù)據(jù)庫Neo4j的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!