Neo4J, una base de datos de grafos

En turisLAB hace tiempo que le dedicamos atención a las bases de datos no-SQL. El caso del que más hemos hablado son las triple stores, en las que se registran tripletas <sujeto, predicado, valor> siguiendo directrices de la web semántica. La ventaja más destacada de este tipo de repositorio es su flexibilidad, no siendo un requisito definir una estructura o modelo de datos que condicione su uso. Los modelos relacionales del tipo SQL, sin cuestionar su utilidad y prestaciones, hacen conveniente un buen conocimiento a priori de la estructura de información que van a contener. Si esta estructura cambia se puede volver muy engorroso modificar el modelo para dar respuesta a las nuevas necesidades. Esto no sucede con las bases de datos no-SQL.

Hemos utilizado satisfactoriamente en nuestro proyectos el framework Sesame, con el que creamos triple stores semánticas en Mashup-TV, Al4Tour y FotoID. También hemos utilizado el lenguaje de consulta SPARQL, el cual con una sintaxis muy similar a la de consultas SQL permite extraer vistas de estos respositorios semánticos. Sin embargo, somos conscientes de la limitación en cuanto a rendimiento de las triple stores así como aumenta su carga en tripletas.

La semana pasada busqué información sobre otro tipo de base de datos no-SQL, Neo4J, la cual es específica para la gestión de grafos y pudiera ser una opción interesante en el proyecto OpenProfilePro. En éste, la información con la que se va tratar serán redes de colaboración, en las que nodos (personas o instituciones), se relacionan entre sí (en proyectos, en ventas, en publicaciones) y tienen propiedades (nombre, dirección, página web, etc…). Neo4J está optimizado para la gestión de este tipo de datos y de hecho se presenta como 1000 veces más eficaz en ello que las bases de datos relacionales.

Una de las ventajas de Neo4J es su capacidad de gestionar grandes números de datos de forma eficiente. Su capacidad se acerca a los 34.000 millones de nodos, 34.000 millones de relaciones, 68.000 millones de propiedades y 32.000 tipos de relaciones. Valores prometedores frente a los que se extraen de estudios de benchmarking de triple stores, según los cuales cargas de datos superiores a los 1000 millones de tripletas (statements) el rendimiento se convierte en un grave problema. Aunque se puedan buscar estrategias para salvar el problema, es una cuestión a tener en cuenta en el diseño de la capa de datos de cualquier proyecto en el que se espere trabajar con importantes volúmenes de datos.

El lenguaje de consulta base en Neo4J es Cypher y se basa en la navegación entre nodos (traversal), ofreciendo la posibilidad de calcular el camino más corto entre dos nodos. Esta propiedad también hace interesante el uso de Neo4J en OpenProfilePro ya que permitirá responder a preguntas clave como el “¿quién conoce a quién?” dentro de la red, uno de los usos de más valor de la herramienta de análisis de redes de colaboración . Las consultas en estos repositorios se realizan a gran velocidad pudiendo realizar millones de traversals o saltos entre nodos en segundos.

En resumen, la escalabilidad, capacidad y alto rendimiento de Neo4J la convierten en una tecnología candidata en OpenProfilePro. El siguiente paso será realizar una serie de pruebas de concepto con ella para tomar la decisión final sobre si usarla o no como capa de datos del software.

Share

2 comments to Neo4J, una base de datos de grafos

  • Hola Oscar,
    Només fer-vos saber que si us preocupa el rendiment per tractar grans grafs (de milers de milions d’objectes), podeu considerar DEX.
    DEX és un graph database management system desenvolupat per la Universitat Politècnica de Catalunya (UPC) – el grup DAMA-UPC (www.dama.upc.edu)- i la seva spin-off Sparsity Technologies (www.sparsity-technologies.com).
    Us podeu baixar una versió d’avaluació lliure fins 1 milió d’objectes i els hi podeu demanar una llicència temporal d’avaluació/desenvolupament.
    DEX té actualment API per JAVA, .NET i C++ i funciona sota Windows, Linux i MacOS tant 32 com 64 bits
    Podeu veure una comparativa amb Neo4j a:
    http://sparsity-technologies.com/blog/?p=228

    Salutacions cordials
    Pere Baleta
    DAMA-UPC / Sparsity Technologies co-founder

  • avatar omoya

    Interessant apunt el que fas Pere,

    els resultats de rendiment que he vist a l’enllaç són realment favorables a DEX. Des de qüestions tan rellevants com l’espai en disc fins als temps de resposta en les queries de prova. Aquests temps els trob una dada molt interessant, perquè encara que no tenguem una previsió precisa del volum de dades que s’arribarà a manejar a OpenProfilePro, la rapidesa en la resposta a queries serà clau.

    Ara, els primers experiments que estam fent van en la línia de conèixer el funcionament i prestacions de les bases de dades de grafs en general, les que sens dubte són molt adients en estudis de Social Network Analysis. Entenc que bastant més que les semàntiques. Una cosa que no descartam és l’ús combinat d’ambdues.

    M’apunt DEX per al banc de proves. Moltes gràcies per la teva aportació.