2011-03-06 16 views
10

Estoy usando MySQL para almacenar informes desde una herramienta. Estoy muy contento con la velocidad y la flexibilidad con la que los usuarios pueden consultar los datos. La herramienta también tiene algunos datos que son un gráfico. Mi pregunta es, ¿es una buena idea almacenar el gráfico en MySQL? La cantidad de nodos y bordes en el gráfico es de millones y las consultas generalmente son cruces de gráficos.Es una buena idea guardar gráficos en MySQL?

+0

En general, diría que no. Pero depende de tus consultas. Mysql obviamente no tiene implementación de rutas de búsqueda, etc. que puede o no necesitar cuando se trabaja con gráficos. Si solo necesitas buscar en una profundidad limitada como 5-10, supongo que mysql está bien. Pero, de nuevo, realmente depende del tipo de * consultas * y * cambios dinámicos * que desee realizar con su gráfico. – vbence

+0

¿Puede representar su gráfico como una jerarquía? – orangepips

+0

No estoy seguro de qué quiere decir con el gráfico. Si tan solo algunos datos, y convertir a un gráfico cuando está buscando, almacene en mysql. Si almacena algún gráfico, diga archivos gif, que no solo depende de su gusto, sino también del lenguaje de programación. Delphi? ¿Java? Perl? php? Aplicación de escritorio.? Aplicación Web.? No es fácil darle sugerencias a menos que proporcione más información. – Weiyan

Respuesta

5

MySQL no se crea y optimiza como una base de datos de gráficos en particular. Es posible que desee probar Neo4J, que es una buena base de datos de gráficos.

+1

O bien, puede indexar el gráfico ... –

1

Las bases de datos SQL no manejan muy bien los datos de gráficos en general. El problema es que para hacer un recorrido de gráfico, o bien tiene que dibujar todo el gráfico en la memoria en una sola consulta, luego manipularlo y almacenar los cambios, o tiene que realizar grandes cantidades de combinaciones para atravesar el gráfico, un nodo a la vez. , que se vuelve prohibitivamente lento Con los gráficos de la escala que está viendo, probablemente sería mejor usar una base de datos de gráficos o usar una base de datos de memoria como REDIS como una capa de almacenamiento en caché rápida y luego persistir en segundo plano.

+1

O bien, puede indexar el gráfico ... –

3

SQL simple generalmente no es apto para manipular una estructura de datos de gráfico. Sin embargo, existen técnicas para indexarlo.

Por ejemplo, si el suyo no se actualiza con frecuencia, usar un GRIPP index le permitirá manejar las consultas de cruce de gráficos extremadamente bien. Este último le permite responder consultas padre-hijo y relacionadas con la profundidad en un tiempo más o menos fijo, independientemente del número de nodos o la densidad de los enlaces del gráfico.

+1

O bien, puede indexar el gráfico ... oh, espera.^_^+1 – Angad

Cuestiones relacionadas