Super nodes performance issue while running community detection algorithms

(Mlo) #1

I run community detection algorithms(unionFind, Louvain) to partition my graph database.

However, I recently encountered some performance problem because of super nodes.

I have the linking structure like below.


and other similar structures.

Basically, we want to use the property node(like device node) the users shared to link them.

Majority(99%) of the property nodes are only linked to ONE user.

However, some extreme ones link to 10K+ users which form super nodes.

Any suggested way to solve the super node performance issue?

(Michael Hunger) #2

Can you share your concrete model?
Not sure if you always need property nodes.

Which procedures did you run the one in graph algorithms?

The ones in APOC are deprecated and shouldn't be used anymore.

(Mlo) #3


Basically, I use these four models to link users.

I ran algo.unionFind and algo.louvain to partition the graph.


CALL algo.unionFind(
'MATCH (u1:User)
RETURN id(u1) as id',
WHERE id(u1) < id(u2)
RETURN id(u1) as source, id(u2) as target',
{graph:'cypher', write: true, partitionProperty: 'group_label', concurrency: 16}

(Mark Needham) #4


When you say performance issue do you mean that the algorithm isn't returning a result or it's taking longer than you expect or something else? If it's slow do you know where exactly the problem is occurring?

Is it in the running of the algorithm or in the Cypher projection? How long does it take to run this query:

WHERE id(u1) < id(u2)
RETURN count(*)

(Mehdi Ajroud) #5

Is there any news about this topic ? I am having the same issue ! or sall I create a new issue ?

(Mlo) #6

I changed the way I model the data to avoid supernodes.

@mehdi.ajroud, you should create a new issue on that. If they can solve the supernode issue in community detection algorithm that will be wonderful.

(Mehdi Ajroud) #7

ok ! I will recreate it since I didn't find any explanation

(Mehdi Ajroud) #8

@mlo here is the link where I created the new issue , in case you want to follow the answer that I will get ;)

(Michael Hunger) #9

Better use label propagation or louvain, they are better at substructuring the graph.

(Mehdi Ajroud) #10

I will try those ones and I will let you know about the final results ! Thanks Micheal :)