Muchas representaciones relacionales de los gráficos no son particularmente eficientes para todas las operaciones es posible que desee realizar.
Por ejemplo, si uno quiere el conjunto conectado de todos los nodos donde los bordes satisfacen un predicado dado, comenzando desde un nodo dado, no hay forma natural en SQL para expresar eso. Es probable que realice una consulta de bordes con el predicado, y luego tenga que excluir bordes desconectados localmente, o tenga una conversación muy detallada con el servidor de base de datos siguiendo un conjunto de enlaces al siguiente en consultas iteradas.
Los gráficos no son un reemplazo general para las bases de datos relacionales. Los RDB se ocupan principalmente de conjuntos (tablas), mientras que los gráficos son principalmente interesantes debido a la "forma" de las interconexiones. Con DB relacionales, sigue enlaces de una profundidad predeterminada (un número fijo de uniones) entre conjuntos, con resultados progresivamente filtrados y agrupados, mientras que los gráficos generalmente se navegan hacia profundidad arbitraria y recursivamente definida (es decir, no un número predeterminado de "uniones") . Puedes abusar para que coincida con las características del otro, pero tendrán diferentes puntos fuertes.
El cierre transitorio puede no ser parte del estándar SQL (y es presumiblemente difícil de implementar en el caso general, o más proveedores lo habrían hecho) pero no es difícil de implementar para una aplicación específica utilizando procedimientos almacenados. – finnw
De seguro; pero tener que escribir consultas ad-hoc como procedimientos almacenados puede poner un engarce en su estilo. –
@finnw El problema no es poder hacerlo, los problemas son la eficiencia y el rendimiento. Para obtener un buen rendimiento de lectura, debe sacrificar el rendimiento de la inserción y perder mucho espacio en el disco. Este artículo: http://www.codeproject.com/KB/database/Modeling_DAGs_on_SQL_DBs.aspx describe cómo se puede hacer esto usando procedimientos almacenados para inserciones y SQL común para lecturas. – nawroth