17

Ich bin ein CS Research Student an der UW, und meine Gruppe ist gerade dabei, den spezifischen Netzwerkverkehr zu visualisieren, der in ein Neo4j-Diagramm eingefügt wird DB in Echtzeit.Ist D3.js die richtige Wahl für die Echtzeit-Visualisierung von Neo4j Graph DB-Daten

Ich habe über viele verschiedene Werkzeuge wie gephi, cytoscape, Rikscha (basierend auf D3.js), einige andere, und D3.js gelesen.

Wir gehen so weit mit D3.js, aber wollten die Meinung der Community bekommen. Wir können cytoscape nicht wegen neo4j verwenden und glauben, dass D3.js in einer schnellen Echtzeitumgebung am besten mit halbgroßen Daten arbeiten würde.

Vorschläge?

Vielleicht für eine andere Frage, aber auch fühlen Sie sich frei zu geben: Die beste Art, um neo4j zu implementieren? Java, Ruby, node.js?

Vielen Dank!

Antwort

9

Mein Verständnis: Gephi ist nicht gut mit Echtzeit-Updates; Es wird normalerweise für statische Daten verwendet.

Eine wichtige Überlegung - was ist die Visualisierung, die Sie präsentieren möchten? Ist es ein gerichteter Graph? Zyklisch? Gewichtet? Zusätzliche Etiketten?

Einige Toolkits sind in der Anzeige "fixiert", aber es ist einfach, eine Grafik darzustellen. Andere (wie d3) sind sehr erweiterbar, so dass Sie fast alles erstellen können.

Für die Zwecke des Stackoverflow-Format, können Sie bessere Antworten bekommen, wenn Sie die Einschränkungen und Anforderungen Ihres Systems festzunageln können (tatsächliche Datenrate, dünn/Thick-Client, der Art der nämlich, usw.)

+0

Die Daten wären Netzwerkverkehr, insbesondere TCP-Verkehr. Wir wollen sowohl Zeitreihen (Rickshaw leiht dazu wohl, glaube ich) als auch gerichtete Graphen ausprobieren. Vielen Dank für Ihre Antwort, besonders mit Ihrem Kommentar zu Gephi. – jhanna0188

+0

Kannst du etwas vorschlagen, das zyklische gerichtete Grafik in 3d mit webgl anzeigen kann? : D – inf3rno

7

Ich denke, D3 ist großartig, aber vor kurzem gab es eine Rede auf Sigma.js bei FOSDEM, erklären, dass Skalen besser für größere Graphen ist. Siehe auch http://thewhyaxis.info/hairball/

+0

Ja, ich glaube, dass es in diesem Fall auf Sigma.js vs D3.js ankommt. Was an sich eine Canvas vs SVG-Situation ist. Ich habe jetzt viel über beide gelesen und bin wirklich auf D3 mit JRuby Neo4j Implementierung gelehnt. Danke für Ihre Antwort! – jhanna0188

+1

@ jhanna0188 Wie war deine Erfahrung mit D3 mit JRuby/Neo4j? Haben Sie am Ende etwas mit SigmaJS versucht? – emecas

8

Scheck out vivagraph, das webgl für das Rendering verwendet und auch für größere Netzwerke sehr gut skaliert. Sie haben einige schöne Beispiele für wirklich große (FB, Amazon).

http://github.com/anvaka/VivaGraphJS

+0

hat einige Benchmarks gemacht und VivaGraphJS schneidet besser ab als nGraph (sein Nachfolger) – pcamelo

12

Es gibt kein Allheilmittel Lösung für diese Art von Problem und die meisten abhängig von dem, was Sie im Kopf haben zu tun, das Team und das Budget (Zeit und Geld) Sie haben.

Ich würde Sie D3 nicht empfehlen, es sei denn, Sie eine der folgenden erfüllt haben:

  • Sie wollen eine ganz neue Art und Weise erstellen, Ihre Daten zu visualisieren
  • Sie haben qualifizierte Leute in Ihrem Team - das kann man sein - mit D3
  • Sie bereits andere D3 widgets/viz

zu integrieren Wenn Sie alle Einträge erfüllt nicht über ich auf einer Seite gelegt D3 würde, und sagen Sie Sieh dir an:

  • SigmaJS, Open Source und kostenlose Javascript-Bibliothek.
  • KeyLines, kommerzielles Javascript Toolkit.
  • VivaGraphJS, Open Source und freie JS-Bibliothek.
  • Haftungsausschluss: Ich bin einer der KeyLines-Entwickler.

    Abhängig von der Größe der Daten, die Sie haben, kann sich die Auswahl der Bibliothek ändern: Wenn Sie nicht mehr als 3/400 Knoten in Ihrem Diagramm haben und keine besonderen Styling/Animationen benötigen, dann ist SigmaJS meiner Meinung nach mehr als gut; Wenn Sie nach etwas fortgeschritteneren für Styling oder Animation suchen, würde ich KeyLines empfehlen, weil es für diese Art von Situationen entwickelt wurde (bietet ein inkrementelles Layout) und es skaliert bis zu 2000 Knoten ohne Probleme - obwohl ich vorschlagen könnte einen Filter auf einer Seite mit dieser Größe haben.

    Ich würde VivaGraph als letzten Ausweg nennen: SigmaJS hat auch einen WebGL Renderer und bietet ein viel schöneres Rendering IMHO.
    VivaGraphJS wird bald mit ngraph ersetzt werden, die Agnostiker aproach verwenden für macht: Sie PIXI, Stoff verwenden können, oder was auch immer Sie wollen ....

    einen WebGL Renderer macht Sinn, wenn Sie Ihr Vermögen einmal und Wiederverwendung laden Sie haben immer die gleichen Möglichkeiten: Wenn Sie Ihre Diagrammelemente in einem Echtzeitszenario formatieren, haben Sie auf Canvas IMHO keinen Vorteil.