Further considerations

This section presents considerations about Fabric that developers and administrators must be aware of.

DBMS mode

The DBMS hosting the Fabric virtual database cannot be part of a Causal Cluster: it can only be a DBMS with dbms.mode=SINGLE.

Sharding an existing database

An existing database can be sharded with the help of the neo4j-admin copy command. See Sharding data with the copy command for an example.

Database compatibility

Fabric is part of Neo4j DBMS and does not require any special installation or plugin. Fabric graphs can be associated to databases available on Neo4j DBMS version 4.1 or 4.2.

Fabric configuration

The Neo4j DBMSs that host the same Fabric virtual database must have the same configuration settings. The configuration must be kept in-sync and applied by the Database Administrator.

Security credentials

The Neo4j DBMSs that host the same Fabric virtual database must have the same user credentials. Any change of password on a machine that is part of Fabric, must be kept in-sync and applied to all the Neo4j DBMSs that are part of Fabric.

Transactions in Fabric

In Fabric, ACID compliance is guaranteed only within a single graph. This means, that the current version of Fabric does not support transactions that span across multiple graphs. To avoid common mistakes that may lead to data corruption, Fabric does not allow write operations on more than one graph within the same transaction. Transactions with queries that read from multiple graphs, or read from multiple graphs and write to a single graph, are allowed.

Administration commands

Fabric does not support issuing Cypher administration commands, on, or through the Fabric virtual database. Any database management commands, index and constraint management commands or user and security management commands must be issued directly to the DBMSs and databases that are part of the Fabric setup.

Neo4j embedded

Fabric is not available when Neo4j is used as an embedded database in Java applications. Fabric can be used only in a typical client/server mode, when users connect to a Neo4j DBMS from their client application or tool, via Bolt or HTTP protocol.