Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

How many directed graph nodes are typically represented in the browser? I'm working with some large data-sets with nodes and edges more then 400,000. I'm wondering if I am going down a fruitless path trying to represent them in the browser via arbor.js or similar JS libraries. What's the most effective way to allow a large number(large relative to my domain of real estate transactions, maybe 1-10,000) of users to visualize and browse a large directed graph of up to 500,000 records?

share|improve this question
add comment

3 Answers

up vote 3 down vote accepted

Limiting what is shown on screen is a necessity with that large of a graph, not only for performance reasons, but you would cause information overload for users. depending on how this information is used there are a few different way to determine what to display.

  1. If you need to show how to get from A to B.

    • Show only nodes and edges on the "best" path(s) however best is determined.
  2. If users need to navigate from node to node.

    • show only current node and connected nodes.

      • Optionally only show incoming/outgoing connections
share|improve this answer
add comment

You're asking way too much from JavaScript (an interpreted language), and the amount of data you're trying to transfer will take a while to load.

The Web is not really designed for this. Ryathal has the conventional Web solution, and if it's good enough you'll save yourself a lot of grief by using it instead of something fancier. The browser end shouldn't be too bad. You'll need a serious program on the server to locate and grab the right bits of the network, but you'll need that anyway.

I suspect what you want is a desktop app. Then you can devise a fancy display connected to megabytes of data. I'll state what I know about this approach and hopefully inspire people who know more to say something--or inspire you to stick with the conventional Web solution:

Java has its Web Start and Applets (though I've never heard of anyone doing anything big with applets), and there are ways to move an .exe over the web. Silverlight ought to work here theoretically, as either a slicker Applet or JavaScript-replaced-with-a-compiled-language, but I don't think Microsoft intended it to be used this way. A socket connection can move data faster than a normal web connection. None of this will be transparent to the user (though Silverlight would come close), it will all take time to start up, and, worse, all of it will cause security problems. If your clients are desperate for your solution you'll do okay here; your competitors have nothing better. If you're trying to lure people away from YouTube and Facebook, forget it.

share|improve this answer
    
I'm displaying a network of real estate transactions. I won't expect a lot of users, just a lot of data to each user. I'll focus on filtering what is sent to the browser. –  opensourcechris Jun 29 '12 at 18:58
add comment

I would tend to think that javascript has grown up to where it can handle these issues and SVG (finally) is getting real momentum.

Check out d3 and browse around. Directed graph might not be your best option. Be sure to check out hive plots and this example. Matrix, cord diagrams. Very cool stuff out there.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.