Export to a new Neo4j database
This feature is not available in AuraDS. |
This feature is not available in GDS Sessions. |
We can create new Neo4j databases from projected graphs stored in the graph catalog.
All nodes, relationships and properties present in the projected graph are written to a new Neo4j database.
This includes data that has been projected in gds.graph.project
and data that has been added by running algorithms in mutate
mode.
The newly created database will be stored in the Neo4j databases
directory using a given database name.
The feature is useful in the following, exemplary scenarios:
-
Avoid heavy write load on the operational system by exporting the data instead of writing back.
-
Create an analytical view of the operational system that can be used as a basis for running algorithms.
-
Produce snapshots of analytical results and persistent them for archiving and inspection.
-
Share analytical results within the organization.
Syntax
CALL gds.graph.export(graphName: String, configuration: Map)
YIELD
dbName: String,
graphName: String,
nodeCount: Integer,
nodePropertyCount: Integer,
relationshipCount: Integer,
relationshipTypeCount: Integer,
relationshipPropertyCount: Integer,
writeMillis: Integer
Name | Type | Optional | Description |
---|---|---|---|
graphName |
String |
no |
The name under which the graph is stored in the catalog. |
configuration |
Map |
no |
Additional parameters to configure the database export. |
Name | Type | Default | Optional | Description |
---|---|---|---|---|
dbName |
String |
|
No |
The name of the exported Neo4j database. |
dbFormat |
String |
|
yes |
Database format. Valid values are blank (no value, default), |
writeConcurrency |
Boolean |
|
yes |
The number of concurrent threads used for writing the database. |
enableDebugLog |
Boolean |
|
yes |
Prints debug information to Neo4j log files (deprecated). |
batchSize |
Integer |
|
yes |
Number of entities processed by one single thread at a time. |
defaultRelationshipType |
String |
|
yes |
Relationship type used for |
additionalNodeProperties |
String, List or Map |
|
yes |
Allows for exporting additional node properties from the original graph backing the in-memory graph. |
Name | Type | Description |
---|---|---|
dbName |
String |
The name of the exported Neo4j database. |
graphName |
String |
The name under which the graph is stored in the catalog. |
nodeCount |
Integer |
The number of nodes exported. |
nodePropertyCount |
Integer |
The number of node properties exported. |
relationshipCount |
Integer |
The number of relationships exported. |
relationshipTypeCount |
Integer |
The number of relationship types exported. |
relationshipPropertyCount |
Integer |
The number of relationship properties exported. |
writeMillis |
Integer |
Milliseconds for writing the graph into the new database. |
Example
my-graph
from GDS into a Neo4j database called mydatabase
:CALL gds.graph.export('my-graph', { dbName: 'mydatabase' })
The new database can be started using databases management commands.
The database must not exist when using the export procedure. It needs to be created manually using the following commands. |
:use system
CREATE DATABASE mydatabase;
:use mydatabase
MATCH (n) RETURN n;
Example with additional node properties
Suppose we have a graph my-db-graph
in the Neo4j database that has a string node property myproperty
, and that we have a corresponding in-memory graph called my-in-memory-graph
which does not have the myproperty
node property.
If we want to export my-in-memory-graph
but additionally add the myproperty
properties from my-db-graph
we can use the additionalProperties
configuration parameter.
my-in-memory-graph
from GDS with myproperty
from my-db-graph
into a Neo4j database called mydatabase
:CALL gds.graph.export('my-graph', { dbName: 'mydatabase', additionalNodeProperties: ['myproperty']})
The new database can be started using databases management commands.
The original database ( |
The additionalNodeProperties
parameter uses the same syntax as nodeProperties
of the graph project procedure.
So we could for instance define a default value for our myproperty
.
my-in-memory-graph
from GDS with myproperty
from my-db-graph
with default value into a Neo4j database called mydatabase
:CALL gds.graph.export('my-graph', { dbName: 'mydatabase', additionalNodeProperties: [{ myproperty: {defaultValue: 'my-default-value'}}] })