GDS Algorithms on a Composite Database

I am trying to execute various GDS algorithms like WCC and nodeSimilarity algorithms (including syntax stream, mutate and write) on a composite database in Neo4j desktop version 5.13.0. However, I constantly encounter errors like:

  1. "Unable to inject component to field facade, please ensure it is public and non-final: What's a virtual database anyway?'
  2. "Transaction operations are not supported on composite databases."

What does these error mean and what should be the workaround them?

Additionally, is there a possibility composite database does not support such GDS algorithms?

Any thoughts/help around the topic GDS algorithms on a composite database will be extremely helpful.

Hello @Kchat,
thanks, for raising this. Could you give an example on what you are exactly trying to do, i.e. where your GDS is deployed in the composite database and so on.
Generally GDS should be supported on composite databases with a few caveats. We have a page in our documentation around composite databases: Using GDS and composite databases (formerly known as Fabric) - Neo4j Graph Data Science
Cheers

Thank you for your reply!

We have combined two graphs in Neo4j to form a composite database. Since, there is no common node in both the databases, we intend to connect both the databases by a common property. Below are the steps that we performed to fulfil our objective:

STEP 1 - To perform analysis, we created an In-Memory Graph ('Graph') on the composite DB comprising of both the databases.

STEP 2 - Tried to execute WCC algorithm on the in-memory graph to find sets of connected nodes using the following query:
CALL gds.wcc.stream('Graph')
YIELD nodeId, componentId
RETURN nodeID, componentId

STEP 3 - We also tried executing nodeSimilarity with the following query:
CALL gds.nodeSimilarity.stream('Graph')
YIELD node1, node2, similarity
RETURN node1, node2, similarity

NOTE: We also tried the mutate and write syntax other than stream.

But, we constantly encountered errors like:

  1. "Unable to inject component to field facade, please ensure it is public and non-final: What's a virtual database anyway?'
  2. "Transaction operations are not supported on composite databases."

It would be great if you could guide us through this as we want to perform clustering and nodeSimilarity like algorithms on our composite database.

Hello,
I investigated your setup a bit and could reproduce the issue: We accidentally block all procedures from executing when running on a composite db. We are currently looking into a fix, but that will be rolled out earliest with the next GDS releases.
However please note that write modes will not be supported when GDS is hosted on a composite databse as we currently have no means of identifying the host db of a particular node.

One workaround for you might be to use an unlicensed GDS, as the check I mentioned above is only performed for the enterprise code path. But switching to the community version might come with other limitations.

edit: Using community GDS will also not work as we only allow running on a plain single Neo4j instance

Hello,
some update from our side:
Starting the upcoming 2.6 release of GDS non-write procedures should be possible to execute on composite databases.
Greetings

Thankyou so much for the update! Much appreciated