2009-07-21 10 views
20

Hay algunos hype around graph databases. Me pregunto por qué.Explosión de bases de datos de gráficos ... ¿por qué?

¿Cuáles son los posibles problemas que se pueden enfrentar en el entorno web actual que se pueden resolver usando bases de datos de gráficos? ¿Y las bases de datos de gráficos son adecuadas para aplicaciones clásicas, es decir, se pueden usar como reemplazo directo para una Base de datos relacional? Entonces, de hecho, son dos preguntas en una.

relacionadas:Has anyone used Graph-based Databases (http://neo4j.org/)?

Respuesta

20

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.

+0

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

+3

De seguro; pero tener que escribir consultas ad-hoc como procedimientos almacenados puede poner un engarce en su estilo. –

+3

@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

3

En mi opinión, los sitios de redes sociales pueden beneficiarse de las bases de datos de gráficos porque el gráfico es una forma natural de almacenar las conexiones entre los usuarios.

2

Answwer a Q1: enrutamiento

Cuestiones relacionadas