0
tracerouteに関連するNeo4jデータに挿入しようとしています。私は約55Kのユニークなノードを持っており、トレースルートは約80Kです。私はPythonとneo4jrestclientを使ってdbと通信しています。トレースルートでファイルの構文は次のとおりです。大量のデータをNeo4jに挿入する方法
83.212.7.42 ;; 83.212.7.41 ;; 62.217.100.63 ;; 83.97.88.69 62.40.112.215 ;; ;; ;; 62.40.98.150
私のコードは次のとおりです。
from neo4jrestclient.client import GraphDatabase
from neo4jrestclient import client
db = GraphDatabase("...")
node = db.labels.create("ipNode")
with open("traceroutes") as input:
for line in input:
l= zip(line.split(';;'))
i=len(l)
try:
prev=l[0][0]
queryProbe = 'MERGE (a:ipNode7 {ip:"' + prev + '"})'
db.query(queryProbe, returns=(client.Node, str, client.Node))
for counter in range(1,i-1):
next = l[counter][0]
queryMergeNode = 'MERGE (b:ipNode7 {ip:"' + next + '"})'
db.query(queryMergeNode, returns=(client.Node, str, client.Node))
queryUpdateRelationship= 'MATCH (a:ipNode7 {ip:"' + prev + '"}),(b:ipNode7 {ip:"' + next + '"}) WHERE NOT (a)-[:precede]-(b) WITH a,b CREATE (a)-[:precede]->(b)'
db.query(queryUpdateRelationship, returns=(client.Node, str, client.Node))
prev=next
except Exception:
print "error"
問題が正しく挿入20Kノードを取得した後、挿入速度が速く遅くなり、私は何か他のものを置くことができないということです。
ような何か: UQ =は 'CONSTRAINT ON(:ipNode7)CREATE ASSERTのa.ipを一意である' db.query(UQ、=(client.Node、STR、client.Node)を返す) それが十分ですopen( "traceroutes")を入力する前に一度入れる: – RamsesXVII
私はそれがあなたの他のクエリとは別のものでなければならないと思う、あなたはdbのために一度制約を作成する必要がある、そしてそれはdbの寿命の間自動的に使用されます。 – InverseFalcon