Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is D3.js the right choice for real-time visualization of Neo4j Graph DB data [closed]

I am a CS Research student at UW, and my group is at the point of trying to visualize specific network traffic that is put into a neo4j graph DB in real time.

I have read about many different tools such as gephi, cytoscape, rickshaw (based on D3.js), some others, and D3.js.

We are so far going forward with D3.js, but wanted to get the community opinion. We can't use cytoscape because of neo4j, and feel that D3.js would work the best with semi-large data in a fast real-time environment.

Suggestions?

Perhaps for another question, but also feel free to input: Best way to implement neo4j? Java, Ruby, node.js?

Thank you!

like image 204
jhanna0188 Avatar asked Feb 14 '13 03:02

jhanna0188


People also ask

Does Neo4j use d3?

Neo4j's movie example applications use d3. js, and you can find a variety of other projects using Neo4j and d3.

What provides data visualization of Neo4j graphs?

yWorks. With “yFiles”, a family of high-quality, commercial software programming libraries, yWorks provides sophisticated solutions for the visualization of graphs, diagrams, and networks. The yFiles libraries enable you to easily create sophisticated graph-based applications powered by Neo4j.

What are the weaknesses of Neo4j?

Neo4j has some upper bound limit for the graph size and can support tens of billions of nodes, properties, and relationships in a single graph. No security is provided at the data level and there is no data encryption. Security auditing is not available in Neo4j.

Is Neo4j real-time?

By switching from MySQL to Neo4j, they were able to provide powerful, real-time recommendations on both the back and front-end of the user experience.


3 Answers

There's not a silver bullet solution for this kind of problem and most depends from what you have in mind to do, the team and the budget (of money and time) you have.

I wouldn't recommend you D3, unless you have to met one of the following:

  • you want to create a brand new way to visualize your data
  • you have skilled people in your team - that can be you - with D3
  • you have already other D3 widgets/viz to integrate

If you don't met any of the entries above I would put D3 on a side, and tell you to have a look at:

  • SigmaJS, Open Source and free Javascript library.
  • KeyLines, Commercial Javascript Toolkit.
  • VivaGraphJS, Open Source and free JS library.

Disclaimer: I'm one of the KeyLines developers.

Depending on the size of the data you have, the choice of the library can change: if you plan to have no more than 3/400 nodes on your chart and not need particular styling/animations then SigmaJS I think is more than fine; if you're looking for something more advanced for styling or animation I would recommend KeyLines, because it is designed to handle this kind of situations (providing an incremental layout) and it does scale up to 2000 nodes with no problems - although I might suggest to have a filter on a side with this size.

I would name VivaGraph as last resort: SigmaJS has a WebGL renderer as well and provide a much nicer rendering IMHO.
VivaGraphJS will be soon replaced with ngraph that will use an agnostic aproach for renders: you can use PIXI, Fabric or whatever you want....

Using a WebGL renderer makes sense when you load your assets once and reuse them all the time: if you're styling your chart elements in a real-time scenario there's not advantage on Canvas IMHO.

like image 150
MarcoL Avatar answered Oct 05 '22 18:10

MarcoL


My understanding: Gephi doesn't do well with real-time updates; it's usually used on static data.

One major consideration - what is the visualization you wish to present? Is it a directed graph? Cyclic? Weighted? Additional labels?

Some toolkits are 'fixed' in what they can display, but make it easy to present a graph. Others (like d3) are very extensible, so you could create just about anything.

For the purposes of the StackOverflow format, you might get better answers if you can pin down the limitations and needs of your system (actual data rate, thin/thick client, type of viz, etc)

like image 29
cmonkey Avatar answered Oct 05 '22 16:10

cmonkey


check out vivagraph which uses webgl for the rendering and scales really well also for larger networks. They have some nice examples for really large ones (FB, Amazon).

http://github.com/anvaka/VivaGraphJS

like image 9
Michael Hunger Avatar answered Oct 05 '22 17:10

Michael Hunger