จะลบ / สร้างฐานข้อมูลใน Neo4j ได้อย่างไร?


104

เป็นไปได้หรือไม่ที่จะสร้าง / ลบฐานข้อมูลต่างๆในฐานข้อมูลกราฟNeo4jเหมือนใน MySQL หรืออย่างน้อยวิธีการลบโหนดและความสัมพันธ์ทั้งหมดของกราฟที่มีอยู่เพื่อตั้งค่าใหม่ทั้งหมดสำหรับการทดสอบเช่นการใช้คำสั่งเชลล์ที่คล้ายกับrmrelหรือrm?

คำตอบ:


99

คุณสามารถลบไดเร็กทอรีกราฟทั้งหมดออกได้rm -rfเนื่องจาก Neo4j ไม่ได้จัดเก็บอะไรไว้ภายนอก:

rm -rf data/*

นอกจากนี้คุณยังสามารถทำซ้ำผ่านโหนดทั้งหมดและลบความสัมพันธ์และโหนดของพวกเขาเองได้ แต่อาจมีค่าใช้จ่ายสูงเกินไปสำหรับการทดสอบ ...


7
และถ้าคุณวนซ้ำบนโหนดทั้งหมดอาจเป็นความคิดที่ดีที่จะปล่อยให้โหนดอ้างอิงอยู่
nawroth

6
ไดเร็กทอรีกราฟอยู่ที่ไหน
ปราโมทย์

3
@Pramod อยู่ในไดเร็กทอรีข้อมูลของไดเร็กทอรี neo4j คุณไม่ควรพลาด
devshorts

7
บน MacOSX พร้อม homebrew: /usr/local/Cellar/neo4j/community-1.9.2-unix/libexec/data
Ashley

5
อาจเป็นความคิดที่ดีที่จะหยุดเซิร์ฟเวอร์ neo4j ของคุณก่อนที่จะทำคำสั่งนี้
John Bachir

98

คำสั่งที่ง่ายยิ่งขึ้นในการลบโหนดและความสัมพันธ์ทั้งหมด:

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

11
+1 สำหรับคำสั่ง แต่โปรดทราบว่าเพียงเพราะคุณลบโหนดทั้งหมดไม่ได้หมายความว่าป้ายกำกับที่คุณใช้จะถูกลืมไปโดยสิ้นเชิง เบราว์เซอร์จะยังคงแสดงป้ายกำกับทั้งหมด Ditto สำหรับคุณสมบัติโหนดและเลเบลความสัมพันธ์
Dilum Ranatunga

@DilumRanatunga 1. คุณรู้วิธีทำให้นีโอลืมป้ายหรือไม่? 2. คุณสมบัติของโหนดจะคงอยู่ได้อย่างไรหากโหนดถูกลบหรือเลเบลความสัมพันธ์ยังคงอยู่ของความสัมพันธ์จะถูกลบ
John Bachir

1
ฉันไม่ได้หมายถึงค่าที่แท้จริง ฉันหมายถึงคุณสมบัติตั้งชื่อตัวเอง
Dilum Ranatunga

5
อาจมีโหนดและขอบไม่เพียงเท่านั้น แต่ยังรวมถึงดัชนีในฐานข้อมูลด้วยและการกำจัดสิ่งเหล่านั้นทำได้ยากกว่า นอกจากนี้ฉันเพิ่งจัดการเพื่อทำลายอินสแตนซ์ DB โดยการทดสอบซ้ำ ๆ จำนวนมากรวมถึงการลบและดูเหมือนว่าการลบไฟล์ DB ทางกายภาพและการให้ Neo4J สร้างขึ้นใหม่เมื่อรีสตาร์ททำให้ประสิทธิภาพการทำงานดีขึ้นอย่างชัดเจน
ไหล

ฉันมีหน่วยความจำบน neo4j ใน Docker container ไม่เพียงพอ
bolec_kolec

52

จาก Neo4j 2.3,

เราสามารถลบโหนดทั้งหมดกับความสัมพันธ์ ,

MATCH (n)
DETACH DELETE n

ขณะนี้ไม่มีตัวเลือกใด ๆ ในการสร้างฐานข้อมูลจำนวนมากใน Noe4j คุณต้องสร้างร้านค้าข้อมูล Neo4j หลายแห่ง ดูอ้างอิง


3
คำตอบที่ดีที่สุดหากคุณไม่ต้องการใช้ระบบไฟล์
ThomasH

ปัญหาของแนวทางนี้คือจะไม่ลบข้อ จำกัด หรือดัชนี
Davide

47

การสร้างฐานข้อมูลใหม่ใน Neo4j

ก่อนเริ่มชุมชน neo4j ให้คลิกตัวเลือกเรียกดู

ป้อนคำอธิบายภาพที่นี่

และเลือกไดเรกทอรีอื่น

ป้อนคำอธิบายภาพที่นี่

ป้อนคำอธิบายภาพที่นี่

แล้วคลิกปุ่มเริ่ม

ป้อนคำอธิบายภาพที่นี่

ฐานข้อมูลใหม่ที่สร้างขึ้นบนไดเร็กทอรีนั้น



11

สำหรับใครก็ตามที่ต้องการกราฟที่สะอาดเพื่อเรียกใช้ชุดทดสอบ - https://github.com/jexp/neo4j-clean-remote-db-addonเป็นส่วนขยายที่ยอดเยี่ยมสำหรับการล้างฐานข้อมูลผ่านการเรียก REST เห็นได้ชัดว่าห้ามใช้ในการผลิต!


ดูเหมือนว่าจะลบโหนด 0 ฉันจะสร้างใหม่ได้อย่างไร
จะ

1
จริงๆแล้วมันข้ามโหนดอ้างอิง ( github.com/jexp/neo4j-clean-remote-db-addon/blob/master/src/… ) แต่ถ้าโหนดอ้างอิงของคุณหายไป (และคุณต้องการ) คุณจะต้องเริ่มต้นด้วย data dir ที่สะอาดเนื่องจากยังไม่มีการsetRefenceNode()โทร ( stackoverflow.com/questions/7186832/… )
Matt Luongo

7

รันโค้ดทดสอบของคุณบนอินสแตนซ์ neo4j อื่น

  1. คัดลอกไดเร็กทอรี neo4j ของคุณไปยังตำแหน่งใหม่ ใช้สำหรับการทดสอบ cd ลงในไดเร็กทอรีใหม่
  2. เปลี่ยนพอร์ตเพื่อให้คุณสามารถรันการทดสอบและใช้งานได้ตามปกติพร้อมกัน เพื่อเปลี่ยนพอร์ตที่เปิดconf/neo4j-server.propertiesและตั้งค่าorg.neo4j.server.webserver.portเป็นพอร์ตที่ไม่ได้ใช้
  3. เริ่มเซิร์ฟเวอร์ทดสอบในการตั้งค่า ทำ./neo4j stopและrm -rf data/graph.dbฉีกขาด

ดูรายละเอียดเพิ่มเติมได้ที่neo4j: How to Switch Database? และเอกสาร



6

คำตอบที่ง่ายที่สุดคือ: ไม่

วิธีที่ดีที่สุดในการ "เริ่มต้นใหม่" คือ

  • ย้ายไปยังโฟลเดอร์ข้อมูลว่างอื่น

หรือ

  • ปิด Neo4j อย่างสมบูรณ์
  • ล้างโฟลเดอร์ข้อมูลเก่า
  • รีสตาร์ท Neo4j และตั้งค่าโฟลเดอร์ว่างเป็นโฟลเดอร์ข้อมูล

มีวิธีลบโหนดและความสัมพันธ์ทั้งหมด (ตามที่อธิบายไว้ที่นี่ )

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

1

ใน 2.0.0 -M6 คุณสามารถรันสคริปต์ Cypher ต่อไปนี้เพื่อลบโหนดและความสัมพันธ์ทั้งหมด:

start n=node(*)
match (n)-[r?]-()
delete n,r

2
น่าเสียดายที่สิ่งนี้ก่อให้เกิดข้อผิดพลาดในเวอร์ชัน 2.0.0 ล่าสุด: SyntaxException: ไม่มีการใช้เครื่องหมายคำถามสำหรับรูปแบบที่เป็นทางเลือกอีกต่อไป - ใช้ OPTIONAL MATCH แทน (บรรทัดที่ 1 คอลัมน์ 26) ==> "start n = node (*) match (n ) - [r?] - () delete n, r "
richj

ฉันไม่เข้าใจการลงคะแนนเนื่องจากคำตอบระบุไว้อย่างชัดเจนใน 2.0.0 -M6ซึ่งเป็นเวอร์ชันล่าสุดเมื่อฉันตอบคำถามในขณะที่คำตอบอื่น ๆ ให้คำตอบที่ถูกต้องสำหรับรุ่นล่าสุดในปัจจุบัน
Martin Seeler

1

สำหรับเวอร์ชัน 3 ฉันเชื่อว่าตอนนี้สามารถสร้างอินสแตนซ์ฐานข้อมูลแยกกันได้แล้วดังนั้นตำแหน่งของพวกเขาจึงแตกต่างกันเล็กน้อย

อ้างถึง: https://neo4j.com/developer/guide-import-csv/

เห็นได้ชัดว่า --into retail.db เป็นฐานข้อมูลเป้าหมายซึ่งต้องไม่มีฐานข้อมูลที่มีอยู่

ในกล่อง Ubuntu ของฉันตำแหน่งอยู่ใน:

/var/lib/neo4j/data/databasesซึ่งปัจจุบันฉันเห็นเฉพาะgraph.dbที่ฉันเชื่อว่าต้องเป็นค่าเริ่มต้น


0

คุณสามารถลบไฟล์ข้อมูลของคุณและหากคุณต้องการดำเนินการด้วยวิธีนี้ฉันขอแนะนำให้ลบเฉพาะ graph.db ของคุณเช่น มิฉะนั้นคุณจะทำให้ข้อมูลการรับรองความถูกต้องของคุณยุ่งเหยิง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.