Tengo una aplicación que almacena información de relaciones en una tabla MySQL (contact_id, other_contact_id, strength, recorded_at). Esto está bien si todo lo que necesito hacer es mostrar quiénes son las relaciones de un contacto o incluso generar una lista de contactos mutuos para dos contactos.Almacenamiento de múltiples gráficos en Neo4J
Pero ahora necesito generar estadísticas como: '¿Cuál fue el número total de conexiones bidireccionales de fuerza 3 o superior en enero de 2011' o (suponiendo que cada contacto es parte de un grupo) 'qué grupo tiene la la mayoría de las conexiones a otros grupos, etc.
Descubrí rápidamente que el SQL para generar estas estadísticas se volvía muy rápido.
Así que escribí un script que para cualquier fecha determinada generará un gráfico en la memoria. Entonces podría ejecutar cualquier estadística que quisiera contra ese gráfico. Mucho más fácil de entender y, en general, mucho más eficiente también, excepto en la generación de la parte gráfica.
Mi siguiente pensamiento fue almacenar esos gráficos en caché para poder invocarlos cada vez que necesitaba ejecutar una nueva estadística (o generar un gráfico posterior; por ejemplo, para el gráfico de hoy tomo el gráfico de ayer y aplico los cambios que ocurrieron ayer) . Probé Memcached, que funcionó muy bien hasta que los gráficos crecieron> 1 MB.
Así que ahora estoy pensando en usar una base de datos de gráficos como Neo4J.
El único problema es que no tengo un solo gráfico. O lo hago, pero es uno que cambia con el tiempo y necesito poder consultarlo con diferentes tiempos de referencia.
Por lo tanto, puedo:
- almacenar múltiples gráficos en Neo4J y rertrieve/interactuar con ellos por separado? Entonces crearía y almacenaría gráficos sociales separados para cada fecha.
o
- añadir válida desde y hacia las marcas de tiempo a cada borde y el filtro de la gráfica adecuada: así que si quería un gráfico para "1er puede" yo sólo seguir el borde más reciente entre dos noeds que se creó antes del "1 de mayo" (y si todos los bordes se crearon después del 1 de mayo, entonces esos nodos no se conectarían).
Soy bastante nuevo en las bases de datos de gráficos por lo que cualquier ayuda/indicaciones/sugerencias serán apreciadas.
después de hacer algunas lecturas me pregunto si los nodos de referencia son la clave? Podría crear un nodo de referencia para cada día y luego construir el gráfico de ese día fuera de su nodo de referencia ... – emh
Hola, creo que usar nodos externos para los gráficos, y tal vez indexarlos con alguna propiedad para que pueda encontrarlos no solo un nodo de referencia pero por búsqueda de índice puede ayudar aquí. ¿La indexación de ciertas propiedades de "metadatos" de los nodos de entrada de su subgráfico le daría los puntos de partida correctos? –