Uso de Neo4j como un sistema de base de datos orientado a grafos

visitas.

Esta vez Teofilo quiere dejar algo nuevo en la cancha, para ello su propósito es dar a conocer a muchos que no han tenido la oportunidad de ver este concepto y paradigma que si bien en algún lado lo han escuchado o de una manera u otra han mencionado, lo que si es cierto es que pocos han tocado con la fría seguridad de conocer lo que esto sugiere y representa.


El tema de este post se relaciona con el uso de Sistemas de Bases de Datos orientados a grafos. Las ventajas que este tipo de sistema de almacenamiento persistente de información ofrecen son importantes. Se sustentan bajo la flexibilidad de modelar, manipular y proveer la información; y el principio relacionado con que no se necesitan índices para las búsquedas, sino que por el contrario la informaciòn se encuentra interconectada por apuntadores directos. Las desventaja que me llamo más la atención aparte del considerable consumo de memoria es la implicación que necesita el ser humano para hacer a un lado lo que conoce de bases de datos y manejar este nuevo paradigma.

El concepto de este tipo de sistemas se fundamenta en modelar la información a través de un grafo, y yendo de la mano con el concepto de las ontologias, los entes o seres se representan con nodos en el grafo, los cuales se caracterizan con una serie de atributos o propiedades. Y las relaciones entre dos de ellos se concretizan en el grafo como las aristas, para armar una tripleta (de alli el concepto de triple-store).

En esta oportunidad haré uso de un sistema opensource llamado Neo4j para generar una base de datos alusiva al Junior de Barranquilla.

Para ello descargamos e instalamos Neo4j como sigue

wget http://dist.neo4j.org/neo4j-community-1.6.1-unix.tar.gz
tar -zxvf neo4j-community-1.6.1-unix.tar.gz
cd neo4j-community-1.6.1/
sudo ./bin/neo4j install

Con el motor instalado iniciamos el servicio que nos crea asi:
sudo /etc/init.d/neo4j-service start

Listo ya hemos instalado e iniciado el motor Neo4j. Ahora podemos administrarlo via web y definir nuestra base de datos, o si somos amantes de la consola con el cliente ./bin/neo4j-shell

Para el uso interactivo de la Web ingresamos a la URL http://localhost:7474. Alli podemos encontrar estadisticas del motor, una serie de shells para manipularlo, un data browser (con una representacion gráfica del grafo de nuestra base de datos que trabajemos).


Para nuestras aplicaciones existe un sin número de interfaces disponibles para el uso de este sistema de base de datos. (Python, Java, HTTP requests, entre otros más)

Con la interfaz Web o con la consola se pueden crear los nodos y las relaciones. Tras una buena serie de comandos éste es el grafo que he creado dedicado al Junior de Barranquilla.



A continuación imágenes de la navegación del grafo en la consola.



Próximamente si mi tiempo y flojera me lo permite, publicaré algo sobre los lenguajes para realizar consultas en un motor de este tipo.

Comentarios

  1. Pronto cuando tenga time y la pereza me lo permita estaré mostrando como realizar queries y uno de los lenguajes para hacerlo como es Cypher.

    ResponderBorrar
  2. hola¡¡ veras acabo de empezar en el mundo de las bases de datos nosql y sobre todo con neo4j. Tengo neo4j instalado y funcionando pero no se como crear una base de datos. Por lo que he leido por ahi, usan EmbeddedGraphDatabase neodb = new EmbeddedGraphDatabase("/tmp/prueba");, por ejemplo, pero al ejecutar esa orden en el shell, me dice unknown command 'EmbeddedGraphDatabase', es decir, comando desconocido. ¿Podrías decirme como has creado la base de datos? Muchas gracias de antemano.

    ResponderBorrar
    Respuestas
    1. Teofilo es repelente y no habla con gente desconocida o anónima. Identifícate jejeje... jejejeje...

      Borrar
  3. Could you please use a more recent version of Neo4j, current stable is 1.8.1 and milestone 1.9.M04 ?

    Otherwise it just confuses people.

    Thanks for the great blog post otherwise!

    ResponderBorrar
    Respuestas
    1. Hey man, I have installed the stable version "neo4j-community-1.8.1". And I have developed an application using neo4django that dinamically create nodes and relationships between them. It's like a kind of TeofiBook (it is inspired on Facebook). You register, then you can add friends from a suggested list. Also you can post and like your posts and other people's posts.

      Actually my graph contains more than 100 nodes and many relashionships between them.

      When I posted, 1.6.1 was the version available. And i don't understand why do you say it can be confusing. I don't think so. 1.8.1 is just a new release and using it was also simple for me.

      This post was intended to get my followers meet a NoSQL database, oriented to graphs. I invite you to check a post where I use Cypher languange to query the database.

      Borrar
  4. hola Julio..

    Te saluda Katty desde Ecuador...

    Ahora estoy desarrollando un proyecto con neo4j, python y neo4django... pero no he podido ejecutar para crear los nodos con el interprete..Estoy utilizando este manual https://neo4django.readthedocs.org/en/latest/

    Talvez me podrias ayudar con un ejemplo trabajando con neo4django que me ayude a orientarme en mi error...

    Te agradezco mucho tu ayuda.
    Saludos, Katty Landacay

    ResponderBorrar
  5. Hola Katty,

    Hace un tiempo desarrolle con neo-django una especie de red social que llame TeofiBook donde mis amigos podían registrarse y relacionarse entre si al volverse amigos entre ellos. Incluso habían notificaciones de correo cuando una persona se volvía amigo de un contacto de tus amigos, así podías conocer gente nueva de la lista de sugerencias de personas conocidas.

    Como resultado poblé un grafo con una gran cantidad de nodos y aristas.

    Voy a buscar los fuentes de esa aplicación y en lo posible te lo haré llegar. No te prometo que encuentre la versión final de esa app puesto que la tenía desplegada en un antiguo PC que ya no lo uso, pero quizás tenga algunos fuentes de alguna versión previa en el correo.

    Podrías contactarme por chat y así podría saber puntualmente en que necesitas ayuda.


    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

Un par de cuadrados para todos

Dominós para todos. Parte I.

Crocancia de cuadrados en abundancia