El aumento de las necesidades de análisis basado en relaciones hace que el uso de grafos esté aumentando. La existencia de bases de datos orientadas a grafos no es nueva ya que en los años 90 existían alternativas maduras pero que han tenido un uso relativamente marginal hasta ahora. Estas bases de datos se caracterizan por su flexibilidad de esquema en lo que a las relaciones entre entidades se refiere. El concepto de triples compuestos por un sujeto, un predicado o verbo y un objeto es la base de almacenamiento de estas bases de datos. El lenguaje de consulta para este tipo de bases de datos también es propio (SPARQL) y tiene ciertas similitudes con el SQL. Podéis obtener más información https://www.w3.org/RDF/ y en https://www.w3.org/TR/sparql11-query/.
En SQL Server 2017 aparece como novedad el soporte nativo para objetos de tipo nodo y aristas que nos permitirán modelar grafos dentro de nuestra base de datos de forma integrada con el resto de objetos tradicionales. Desde el punto de vista de sintaxis se añade la cláusula MATCH (traída del lenguaje Cypher) para facilitar la expresión de las relaciones de forma más natural. Al tratarse de una primera versión nos encontramos con bastantes limitaciones como por ejemplo la necesidad de convertir los updates en inserts+deletes si queremos modificar una arista que relaciona dos nodos. También tendremos limitaciones a la hora de referenciar tablas derivadas en la cláusula MATCH, lo cual nos condicionará, por ejemplo, en el uso de CTEs recursivas.
Desgraciadamente si comparamos funcionalmente la implementación de grafos en SQL Server 2017 con la de Neo4j, por ejemplo, veremos que a nivel de algoritmia estamos a años luz, teniendo que implementar de forma manual aquellos algoritmos típicos de grafos, como son el cálculo del camino más corto entre nodos, la cláusula transitiva, etc.
Finalmente bajaremos a bajo nivel para entender las «tripas» de los grafos, su estructura interna, cómo se enlazan los nodos con las aristas, etc. Esto es importante para entender desde el punto de vista de rendimiento si sería competitivo respecto a una alternativa tradicional basada en relaciones entre tablas.
A continuación, puedes ver la presentación de la charla ‘Demos la bienvenida a los grafos en SQL Server 2017’ del SolidQ Summit 2018: