Uso de Neo4j como un sistema de base de datos orientado a grafos
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.
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.
ResponderBorrarhola¡¡ 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.
ResponderBorrarTeofilo es repelente y no habla con gente desconocida o anónima. Identifícate jejeje... jejejeje...
BorrarCould you please use a more recent version of Neo4j, current stable is 1.8.1 and milestone 1.9.M04 ?
ResponderBorrarOtherwise it just confuses people.
Thanks for the great blog post otherwise!
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.
BorrarActually 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.
hola Julio..
ResponderBorrarTe 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
Hola Katty,
ResponderBorrarHace 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.