network library python database graph family-tree

library - network graph python



base de datos de gráficos para genealogía (2)

Si desea utilizar una base de datos rápida sin un servidor (y sin una JVM) . Te sugiero que pruebes la nueva unión de pitón Sparksee (Formely Dex). Sin embargo, la API sin procesar no es portátil. Sin embargo, el rendimiento es un orden de magnitudes más rápido.

La segunda opción es usar Bulbs que se ejecuta en la parte superior de Neo4j a través de su API REST, también es compatible con cualquier servidor Rexsters. El lenguaje de consulta es Gremlin (Cypher también funciona). El punto bueno es que puedes cambiar por un backend diferente si se adapta mejor a tus necesidades.

En cuanto a su esquema de base de datos, tiene al menos 1 nodo y 1 límite:

1 nodo: PERSON (nombre, nacimiento, muerte) que son campos indexados.

1 dirigió el borde restringido de PERSONA a PERSONA llamada: CHILD_OF o PARENT_OF.

Puede agregar más bordes entre los nodos, como SIBLINGS, MARRIED_TO, etc.

¿alguien podría indicarme un uso práctico de una base de datos de gráficos para la genealogía? Me gustaría aprender neo4j y usar Python, así que estaba buscando hacer una gráfica de genealogía db para aprender gráficos db. Busqué ejemplos para emular y aprender de (cualquier gráfico db, cualquier idioma) pero me sorprendió lo poco que encontré.

Nota: me refiero a la gráfica db que tiene una estructura diferente a la de una db relacional. Ver http://en.m.wikipedia.org/wiki/Graph_database .

Estoy buscando un esquema de ejemplo para la genealogía.


Si quieres aprender a hacer graphdb, no necesitas usar ningún software. Lápiz, papel y cerebro servirán. Las cosas que debes tener en cuenta para crear un diseño son:

  • Qué es un gráfico: vértice y bordes
  • Qué es específico sobre la estructura de datos graphdb: vertex y bordes están asociados con un dict similar a python.
  • Qué información debe estar en el graphdb para resolver el problema que tengo a mano. Haga una lista de todas las consultas que desea hacer frente al gráfico.

En el siguiente diagrama, verá un gráfico que puede ser la base de su diseño.

Tienes que imaginar que cada nodo tiene un nombre, fecha de nacimiento, etc. ... y un identificador único.

Representa a dos familias desconectadas, a la izquierda una con dos niños, a la derecha con tres niños.

Con el gráfico anterior puedes calcular:

  • ¿Quién es el padre de X?
  • ¿Cuál es el nombre del padre parte de la familia más grande?

Y otros, dado que solo hay dos familias con solo padre e hijo, sin abuelos o nietos representados, es posible que no puedas entender que en realidad también puedes calcular la siguiente consulta:

  • ¿Quiénes son las personas que tienen X como antepasado que aún están vivos?

Ahora, si quieres ir a experimentar con Python, tienes varias opciones que comienzan con la configuración más sencilla:

Pitón puro:

  • Crea una clase Vertex y una clase Edge que herede dict.
  • Construya un gráfico genealógico con código Python a partir de datos reales o de lo contrario.
  • Experimentar con consultas.

Python y BerkleyDB

  • descargo de responsabilidad: este es un proyecto mío
  • Lo mismo que la versión pura de Python, excepto que el gráfico se guarda en una base de datos. La API es similar a las vinculaciones de python neo4j.

Son otras soluciones, pero sin más contexto sobre la aplicación de destino (por ejemplo, web o escritorio) no puedo enumerarlas todas. Son algunas informaciones en el sitio web neo4j que pueden ser útiles.

Dicho esto, la mejor solución podría ser neo4j, pero Rexster para una aplicación en red o Blueprints para otros son necesarios si desea cambiar fácilmente entre varias bases de datos para encontrar la mejor base de datos en términos de rendimiento para su caso de uso. La única razón para usar directamente un servidor neo4j es poder usar el lenguaje de consulta de cifrado .

Si tuviera que crear una aplicación web de genealogía y construir un negocio con ella, usaría los softwares que he creado, a saber:

Esos no están listos para la producción tal como está. Pero eso es lo que haría.