web-dev-qa-db-fra.com

Visualisation des mégadonnées utilisant le concept «rechercher, afficher le contexte et étendre à la demande»

J'essaie de visualiser un réseau vraiment énorme (nœuds 3M et bords 13M) stocké dans une base de données. Pour l'interactivité en temps réel, je prévois de n'afficher qu'une partie du graphique en fonction des requêtes des utilisateurs et de l'étendre à la demande. Par exemple, lorsqu'un utilisateur clique sur un nœud, j'étends son voisinage. (C'est ce qu'on appelle "Rechercher, afficher le contexte, développer à la demande" sur ce document ).

J'ai examiné plusieurs outils de visualisation, notamment Gephi , D , etc. Ils prennent un fichier texte en entrée, mais je ne sais pas comment ils peuvent connecter un base de données et mettre à jour le graphique en fonction de l'interaction des utilisateurs.

Le document lié implémentait un système comme celui-ci, mais ils ne décrivaient pas les outils qu'ils utilisaient.

Comment puis-je visualiser ces données avec les critères ci-dessus?

32
Yang

Il existe plusieurs solutions, mais fondamentalement, chacune utilise la même approche:

  1. créer une couche au-dessus de votre source pour vous permettre d'interroger à un niveau élevé
  2. créer une couche frontale pour parler avec le niveau expliqué ci-dessus
  3. utilisez l'outil de visualisation que vous souhaitez

Comme miro marchi l'a souligné, il existe plusieurs solutions pour atteindre cet objectif, certaines d'entre elles étant verrouillées sur des sources de données particulières, d'autres avec beaucoup plus de liberté, mais cela nécessiterait certaines compétences en codage.

La source de données

Je commencerais par le choix du type de source: parmi le type de données, je choisirais probablement Neo4J, Titan ou OrientDB (si vous avez envie de quelque chose de plus exotique avec une sorte de flexibilité). Tous offrent une API JSON REST, la première avec un système et un langage propriétaires (Cypher) et les deux autres utilisant le système Blueprint/Rexster. Neo4J prend également en charge la pile Blueprint si vous le souhaitez. Gremlin sur Cypher.

Pour d'autres solutions, telles que d'autres bases de données NoSQL ou SQL, vous devez probablement coder une couche ci-dessus avec l'API relative REST, mais cela fonctionnera également - je ne recommanderais pas cela pour le type de les données que vous avez cependant.

Maintenant, il ne reste que le troisième point et ici vous avez plusieurs choix.

Outils de visualisation génériques

  • Sigma.js c'est un outil gratuit et open source pour la visualisation de graphes assez sympa. Linkurious en utilise une version fork pour autant que je sache dans leur produit.

  • Keylines c'est un outil de visualisation graphique commercial, avec des styles, des analyses et des mises en page avancés, et ils fournissent des démos copier/coller si vous utilisez Neo4J ou Titan . Ce n'est pas gratuit, mais il prend en charge les navigateurs encore plus anciens - à partir d'IE7 ...

  • VivaGraph c'est un autre outil gratuit et open source pour l'outil de visualisation de graphiques - mais il a une communauté plus petite que SigmaJS.

  • D3.js c'est le factotum pour la visualisation des données, vous pouvez faire pratiquement tous les types de visualisation basés sur cela, mais la courbe d'apprentissage est assez raide.

  • Gephi est une autre solution de bureau open source gratuite, vous devez probablement utiliser un plugin externe avec cela mais il supporte la plupart des formats disponibles - graphML, CSV, Neo4J , etc...

Spécifique au fournisseur

  • Linkurious c'est un outil complet commercial spécifique Neo4J pour rechercher/enquêter sur les données.

  • Neo4J web-admin console - même si c'est basique, ils se sont beaucoup améliorés avec la nouvelle version 2.x.x, basé sur D3.js.

Il y a aussi d'autres solutions que j'ai probablement oublié de mentionner, mais celles ci-dessus devraient offrir une bonne variété.

Autres nœuds

Les outils JS ci-dessus visualiseront bien jusqu'à 1500/2000 nœuds à la fois, en raison des limites JS.
Si vous voulez visualiser des choses plus grandes - tout en développant - je recommanderais des solutions de bureau telles que Gephi.

Avertissement

Je fais partie de l'équipe de développement Keylines .

33
MarcoL