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.