tutorial source open graphdb cases database graph storage persistent neo4j

database - source - ¿Cuáles son las mejores formas de almacenar gráficos en almacenamiento persistente?



neo4j vs (4)

Me pregunto cuáles son las mejores formas de almacenar gráficos en el almacenamiento persistente, para análisis posterior, búsqueda, agrupamiento, etc.

Veo que neo4j es una opción, tengo curiosidad si también hay otras bases de datos de gráficos disponibles. ¿Alguien tiene alguna idea de cómo las redes sociales más grandes almacenan sus datos basados ​​en gráficos (u otros sitios que requieren el almacenamiento de gráficos como modelos, por ejemplo, RDF).

¿Qué pasa con opciones como Cassandra o MySQL?


No hay una respuesta absolutamente correcta aquí; hay una gran variedad de opciones, la elección de las cuales depende seriamente de sus necesidades. Con recuperaciones / recorridos a gran escala (por ejemplo, redes sociales y back-ends similares), rápidamente se encontrará con el cuello de botella de I / O aleatorio; Creo que almacenar tu gráfica en RAM es actualmente el único curso de acción práctico. Las aplicaciones menos sensibles a la latencia tienen una amplia variedad de opciones, incluyendo neo4j (código abierto con un sabor comercial) y Allegrograph (comercial con una edición limitada limitada).

En Delver terminamos implementando nuestro propio modelo de datos desnormalizados (esencialmente una lista de adyacencia para representar el gráfico) en la RAM en la parte superior de GigaSpaces (se puede encontrar información en esta presentación ), con un código personalizado de reducción de mapas para consultas y análisis de datos. Si sigues esta ruta, Cassandra parece ser una plataforma viable de código abierto para construir.


Podrías mirar InfiniteGraph, que será lanzado para beta muy pronto ( http://www.infinitegraph.com/ )

Si esto es para uso comercial, verá que está dirigido a sitios que tendrán gráficos más grandes. Los sitios de redes sociales construyeron soluciones personalizadas, que funcionaron para ellos en ese momento. Pero son soluciones internas que son más limitantes que el uso de algo como InfiniteGraph. Productos como Cassandra o MySQL no fueron diseñados para este conjunto de problemas de muchos a muchos. ¿Puedes hacerlo? Claro, pero es una gran cantidad de codificación escrita a mano, y no escalable. Háganos saber si tiene un proyecto real, podemos ayudarlo a descubrir los requisitos de su gráfica. Gracias, Warren [email protected]


Bases de datos de gráficos:

  1. HyperGraphDB : un mecanismo de almacenamiento de datos de código abierto, extensible, portátil, distribuible, integrable y de propósito general.
  2. InfoGrid : una base de datos de gráficos de Internet con muchos componentes de software adicionales que facilitan el desarrollo de aplicaciones web REST-ful en una base gráfica.
  3. vertexdb : un servidor de base de datos de gráficos de alto rendimiento que admite la recolección automática de basura.

Fuente: http://nosql.mypopescu.com/post/498705278/quick-review-of-existing-graph-databases

Bibliotecas de Gráficos:

  1. WebGraph es un marco para estudiar el gráfico web. Desde su página: "Proporciona formas simples de administrar gráficos muy grandes, explotando técnicas de compresión modernas".
  2. Dex es una biblioteca de alto rendimiento para administrar gráficos o redes muy grandes.
  3. Esta publicación de blog - Sobre la creación de una base de datos de gráficos estúpidamente rápida - proporciona algunas pautas sobre la creación de una base de datos de gráficos: la técnica que utilizan es "E / S con memoria asignada, hashing lineal basado en disco".

Descargo de responsabilidad : estoy hablando desde el punto de vista del análisis de gráficos.

Hay varios formatos de archivo para almacenar datos de gráficos: GraphML , GXL y muchos otros. Pero el almacenamiento generalmente no es un problema. Trabajar con los gráficos sin cargarlos completamente en la RAM es la parte difícil.

El modelo RDF es demasiado genérico para hacer cosas serias de análisis de gráficos. Si no le molesta que su análisis sea lento y la programación de los algoritmos usted mismo, vaya con las bases de datos de gráficos existentes; consulte wikipedia en este.

Para un análisis real, cargue todos los datos en la memoria RAM utilizando las bibliotecas de análisis de gráficos existentes, como SNAP o vea esta pregunta .