Skip to content

Latest commit

 

History

History
205 lines (150 loc) · 4.03 KB

File metadata and controls

205 lines (150 loc) · 4.03 KB

Data Import/Export Guide

Neo4j compatible data migration and backup


Overview

NornicDB is fully compatible with Neo4j data formats, making migration seamless. This guide covers importing data from Neo4j and exporting data for backup or migration.


Importing from Neo4j

Using Neo4j Driver

from neo4j import GraphDatabase

# Connect to NornicDB (same as Neo4j)
driver = GraphDatabase.driver(
    "bolt://localhost:7687",
    auth=("admin", "admin")
)

# Run Cypher queries - identical syntax
with driver.session() as session:
    session.run("""
        CREATE (n:Person {name: 'Alice', age: 30})
        CREATE (m:Person {name: 'Bob', age: 25})
        CREATE (n)-[:KNOWS {since: 2020}]->(m)
    """)

Bulk Import via Cypher

-- Create multiple nodes
UNWIND $nodes AS nodeData
CREATE (n:Person)
SET n = nodeData

-- Create relationships
UNWIND $relationships AS relData
MATCH (a:Person {id: relData.from})
MATCH (b:Person {id: relData.to})
CREATE (a)-[:KNOWS {since: relData.since}]->(b)

JSON Import

# Import nodes from JSON
curl -X POST http://localhost:7474/db/nornicdb/tx/commit \
  -H "Content-Type: application/json" \
  -d '{
    "statements": [{
      "statement": "UNWIND $nodes AS n CREATE (:Person) SET p = n",
      "parameters": {
        "nodes": [
          {"name": "Alice", "age": 30},
          {"name": "Bob", "age": 25}
        ]
      }
    }]
  }'

Exporting Data

Export via Cypher

-- Export all nodes as JSON
MATCH (n)
RETURN labels(n) AS labels, properties(n) AS properties

-- Export with relationships
MATCH (n)-[r]->(m)
RETURN 
  labels(n) AS fromLabels,
  properties(n) AS fromProps,
  type(r) AS relType,
  properties(r) AS relProps,
  labels(m) AS toLabels,
  properties(m) AS toProps

Export via HTTP API

# Export query results
curl -X POST http://localhost:7474/db/nornicdb/tx/commit \
  -H "Content-Type: application/json" \
  -d '{
    "statements": [{
      "statement": "MATCH (n:Person) RETURN n"
    }]
  }' | jq '.results[0].data'

Neo4j Compatibility

Supported Features

Feature Status Notes
Cypher Queries ✅ Full All standard Cypher
Bolt Protocol ✅ Full v4.4 compatible
HTTP API ✅ Full Neo4j REST API
Transactions ✅ Full ACID compliant
Indexes ✅ Full B-tree and vector
Constraints ✅ Full Unique, exists

Driver Compatibility

All official Neo4j drivers work with NornicDB:

  • Python: neo4j package
  • JavaScript: neo4j-driver
  • Java: Neo4j Java Driver
  • Go: neo4j-go-driver
  • .NET: Neo4j.Driver

Migration Steps

From Neo4j to NornicDB

  1. Export from Neo4j:

    CALL apoc.export.json.all("export.json", {})
  2. Start NornicDB:

    docker run -d -p 7474:7474 -p 7687:7687 nornicdb
  3. Import to NornicDB:

    # Use same driver/queries - just change connection URL

From NornicDB to Neo4j

Same process in reverse - the formats are identical.


Backup & Restore

Creating Backups

# Stop writes, create snapshot
docker exec nornicdb nornicdb backup /data/backup/

# Or via HTTP API
curl -X POST http://localhost:7474/admin/backup

Restoring Backups

# Restore from backup
docker exec nornicdb nornicdb restore /data/backup/snapshot-20240101/

GDPR Compliance

Data Export (Right to Access)

curl -X POST http://localhost:7474/gdpr/export \
  -H "Content-Type: application/json" \
  -d '{"userId": "user123"}'

Data Deletion (Right to Erasure)

curl -X POST http://localhost:7474/gdpr/delete \
  -H "Content-Type: application/json" \
  -d '{"userId": "user123"}'

Related Documentation


Ready to migrate?Getting Started