Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how much can d3 js scale

I am trying to build a network graph (like a network for brain) to display millions of nodes. I would like to know to what extent I can push the d3 js to in terms of adding more network nodes on one graph?

Like for example, http://linkedjazz.org/network/ and http://fatiherikli.github.io/programming-language-network/#foundation:Cappuccino

I am not that familiar with d3.js (though I am a JS dev), I just want to know if d3.js is the right tool to build a massive network visualization (one million nodes +) before I start looking at some other tools.

My requirements are simply: build a interactive web based network visualization that can scale

like image 218
amulllb Avatar asked Dec 19 '22 10:12

amulllb


2 Answers

Doing a little searching myself, I found the following D3 Performance Test.

Be Careful, I locked up a few of my browser tabs trying to push this to the limit.

Some further searching led me to a possible solution where you can pre-render the d3.js charts server side, but I'm not sure this will help depending on your level of interaction desired.

That can be found here.

like image 81
McTalian Avatar answered Jan 04 '23 04:01

McTalian


"Scaling" is not really an abstract question, it's all about how much you want to do and what kind of hardware you have available. You've defined one variable: "millions of nodes". So, the next question is what kind of hardware will this run on? If the answer is "anything that hits my website", the answer is "no, it will not scale". Not with d3 and probably not with anything. Low cost smartphones will not handle millions of nodes. If the answer is "high end workstations" the answer is "maybe".

The only way to know for sure is to take the lowest-end hardware profile you plan to support and test it. Can you guarantee users have access to a 64GB 16 core workstation? An 8GB 2 core laptop? Whatever it is, load up a page with whatever the maximum number of nodes is and sketch in something to simulate the demands of the type of interaction you want and see if it works.

like image 22
zanerock Avatar answered Jan 04 '23 05:01

zanerock