En el marco de la maestría que estoy realizando, cursé en las últimas semanas un seminario de Bases de Datos de Grafos con foco en el uso de Neo4j. El seminario fue organizado por el Centro de Postgrados de la Facultad de Ingeniería: https://www.fing.edu.uy/cpap
Si bien ya había trabajado con otras bases no SQL, aún no había tenido la oportunidad de trabajar con bases de datos de grafos, y el seminario fue la excusa ideal para aprender un poquito sobre el tema.
Creo que lo más complejo, a la hora de enfrentarse a alguno de estos paradigmas no SQL , es lograr cambiar el enfoque estructurado al que venimos acostumbrados de las bases relacionales. Lograr pensar fuera de las estructuras típicas de las bases relacionales, siempre cuesta, tanto a la hora de modelar los datos, como al momento de hacer consultas.
Cómo que no hay esquemas? Cómo que no hay índices? Cómo puede ser que pueda insertar cualquier elemento, con cualquier formato? Qué pasa con las propiedades ACID?
En mi experiencia con el mundo no SQL (web semántica, bases documentales, y ahora Neo4j) siempre me ha costado, al principio, hacer el "cambio de chip" y no caer en la tentación de intentar "trasladar" los conceptos de las RDBMS.
Aprovechar las ventajas que proveen estos nuevos enfoques, está super relacionado con entender al máximo el paradigma y trabajar con foco en dicho enfoque.
En el caso particular de Neo4j, me pareció muy interesante el lenguaje de consultas Cypher. Una vez que comenzamos a pensar en términos de grafos, Cypher se convierte en un lenguaje super flexible, e intuitivo.
Si desean hacer sus primeros pasos en este mundo de Neo4j, les dejo algunos tips para que rápidamente puedan comenzar a jugar con una BD!
Descargar y ejecutar Neo4j Community Edition
Se baja desde https://neo4j.com/download-center/
La carpeta se descomprime en C:\neo4j-community-3.5.3, y para iniciarlo deben ir a C:\neo4j-community-3.5.3\bin y ejecutar en el command prompt>neo4j console
Esto ejecutará la UI web en http://localhost:7474/browser/
Desde esta UI podrán visualizar sus BDs y realizar las consultas.
Cargando un dataset
En la carpeta de instalación de Neo4j, dentro de la carpeta data\databases, copian el dataset que descargan desde aquí: https://github.com/sophiamaiolo/Neo4j.git
Este dataset fue obtenido desde: https://neo4j.com/developer/movie-database/#_download
Para comenzar a trabajar con la BD, en el archivo neo4j.conf que se encuentra en C:\neo4j-community-3.5.3\conf, se debe agregar la siguiente línea> dbms.active_database=movies.db
Desde la UI web, ya estamos listos para comenzar a hacer consultas!
Con call db.schema() pueden ver el grafo completo, y entender mejor los datos, y sus relaciones.
Consultando el dataset
Algunas consultas interesantes que se pueden hacer:
MATCH (a:Actor)-[:ACTS_IN]->(m1:Movie)<-[:DIRECTED]-(d:Director),(a)-[:ACTS_IN]->(m2:Movie)<-[:DIRECTED]-(d)
WHERE m1.title<>m2.title
RETURN a.name, m1.title,m2.title,d.name
MATCH (v1:Actor)-[r1:ACTS_IN]->(m1:Movie)<-[r2:ACTS_IN]-(v2:Actor)
WHERE v1.name = 'Kevin Bacon' AND v1.name <> v2.name
RETURN v1.name,v2.name,m1.title
MATCH (v1:Actor)-[r1:ACTS_IN]->(m1:Movie)<-[r2:ACTS_IN]-(v2:Actor)
WHERE v1.name <> v2.name
RETURN v1.name, collect(v2.name)
Si desean leer más sobre el tema, las lecturas obligadas son:
Next Generation Databases: NoSQL, NewSQL, and Big Data.
Guy Harrison
Apress, 2015. ISBN 978-1-4842-1330-8
Concise Guide to Databases: A Practical Introduction.
Peter Lake and Paul Crowther,
In Undergraduate Topics in Computer Science, Springer-Verlag London, 2013. ISBN 978-1-4471-5600-0
Hasta la próxima!
Comments