2 BD Orientadas a Grafos
Jathinson Meneses Mendoza
Henry A. Jimenez Herrera
Neo4j
●
Qué es
●
Un almacén de datos grafos nativos creado desde cero para aprovechar no
solo los datos, sino también las relaciones entre los datos. A diferencia de
otros tipos de bases de datos, Neo4j conecta los datos a medida que se
almacenan, lo que permite consultas nunca antes.
Bases de datos Orientadas a Grafos
●
Que es
●
Neo4j es un software libre de Base base de datos orientada a grafos,
creada por Neo Technology Inc e implementado en Java. Neo4j almacena
datos estructurados en grafos en lugar de en tablas, es decir,la información
se almacena de forma relacionada formando un grafo dirigido entre los
nodos y las relaciones entre ellos.
●
Neo4j está disponible en sistemas operativos de las familias Windows,
Linux y OS X, y tambientambién . Neo4j está disponible a través de una
versión gratuita y una versión de pago. (Esta última permite replicación,
monitorización y alta disponibilidad.).
●
Bases de datos Orientadas a Grafos
●
Historia
●
Bases de datos Orientadas a Grafos
●
Bases de datos orientadas a Grafos vs Relacionales
●
Bases de datos Orientadas a Grafos
●
Ventajas de Neo4j
●
Modelo de datos flexible: Neo4j proporciona un modelo de datos flexible,
simple pero potente,que se puede cambiar fácilmente según las
aplicaciones y las industrias.
●
Información en tiempo real: Neo4j proporciona resultados basados en datos
en tiempo real.
●
Alta disponibilidad: Neo4j tiene una alta disponibilidad para aplicaciones en
tiempo real de grandes empresas con garantías transaccionales.
●
Datos conectados y semiestructurados: con Neo4j, puede representar
fácilmente datos conectados y semiestructurados.
Bases de datos Orientadas a Grafos
●
Ventajas de Neo4j
●
Fácil recuperación: al usar Neo4j, no solo puede representar sino también
recuperar fácilmente (atravesar/navegar) datos conectados más rápido en
comparación con otras bases de datos.
●
Lenguaje de consulta de Cypher: Neo4j proporciona un lenguaje de
consulta declarativo para representar el gráfico visualmente, usando una
sintaxis ascii-art. Los comandos de este lenguaje están en formato legible
por humanos y muy fácil de aprender.
●
Sin Joins: al usar Neo4j, NO requiere uniones complejas para recuperar
datos conectados/relacionados ya que es muy fácil recuperar su relación o
nodo adyacente detalles sin uniones o índices.
Bases de datos Orientadas a Grafos
●
Características de Neo4j
●
Modelo de datos (esquema flexible): Neo4j sigue un modelo de datos
llamado propiedad nativa modelo gráfico. Aquí, el gráfico contiene nodos
(entidades) y estos nodos están conectados entre sí (representado por las
relaciones). Los nodos y las relaciones almacenan datos en claves. pares
de valores conocidos como propiedades.
●
Propiedades ACID: Neo4j admite ACID completo (Atomicidad, Consistencia,
Aislamiento y Durabilidad) reglas.
Bases de datos Orientadas a Grafos
●
Características de Neo4j
●
Escalabilidad y confiabilidad: puede escalar la base de datos aumentando el
número de lecturas/escrituras y el volumen sin afectar la velocidad de
procesamiento de consultas y los datos integridad. Neo4j también brinda
soporte para la replicación para la seguridad y confiabilidad de los datos.
●
Cypher Query Language: Neo4j proporciona un poderoso lenguaje de
consulta declarativo conocido como Cypher. Utiliza arte ASCII para
representar gráficos. Cypher es fácil de aprender y se puede usar para
crear y recuperar relaciones entre datos sin usar el complejo consultas
como Joins.
Bases de datos Orientadas a Grafos
●
Características de Neo4j
●
Aplicación web integrada: Neo4j proporciona una aplicación web de
navegador Neo4j integrada. Con esto, puede crear y consultar los datos de
su gráfico.
●
Indexación: Neo4j admite índices mediante el uso de Apache Lucence.
●
Drivers: Neo4j puede funcionar con Rest API, Java Script y admite API
cifrado y API nativa de Java para desarrolladores.
Bases de datos Orientadas a Grafos
●
Propiedades del Modelo de datos Neo4j
●
El modelo representa datos en Nodos, Relaciones y Propiedades
●
Las propiedades son pares clave-valor
●
Los nodos se representan con un círculo y las relaciones se representan
con las teclas de flecha
●
Las relaciones tienen direcciones: Unidireccional y Bidireccional
●
Cada relación contiene "Nodo de inicio" o "Nodo de origen" y "Nodo de
destino" o "Nodo final"
●
Ambos nodos y relaciones contienen propiedades
●
Relaciones conecta nodos
Bases de datos Orientadas a Grafos
●
Instalacion del Servidor Neo4J
Realice los siguientes pasos para comenzar con esta receta:
●
Descargue el instalador de Neo4J para Windows de 32 o 64 en
[Link]
Compruebe si Java está instalado para el sistema operativo o no
escribiendo esto en el indicador de cmd:
●
echo %JAVA_HOME%
●
Si no esta recuerde que este Instalación requiere JRE (Java Runtime
Environment) para correr neo4j. Y también establezca la ruta
JAVA_HOME.
Bases de datos Orientadas a Grafos
●
Instalacion del Servidor Neo4J
●
Ahora, instalemos Neo4j sobre el sistema operativo Windows, que es
simple
●
1 Corra el installer descargado:
Bases de datos Orientadas a Grafos
●
Instalacion del Servidor Neo4J
2 Una vez completada la instalación, cuando ejecute el software, le pedirá
la ubicación de la base de datos. Elija la ubicación con cuidado, ya que
toda la base de datos de gráficos se almacenará en esta carpeta:
Bases de datos Orientadas a Grafos
●
Instalacion del Servidor Neo4J
3 El Neo4j browser se puede abrir ingresando [Link] en el
navegador. La siguiente captura de pantalla muestra el inicio de Neo4j en
la plataforma Windows:
Bases de datos Orientadas a Grafos
●
Neo4J AuraDB
Neo4j AuraDB y AuraDS facilitan la creación de aplicaciones rápidas,
escalables e inteligentes en la nube, sin administrar una infraestructura
compleja. Las soluciones Aura ofrecen:
●
Rendimiento de consultas ultrarrápido
●
Actualizaciones y parches totalmente administrados
●
Fácil escalabilidad, bajo demanda
●
Sólida seguridad, confiabilidad y cumplimiento ACID
●
Herramientas integradas para aprender, construir y visualizar
Bases de datos Orientadas a Grafos
●
Neo4j AuraDB
●
Login [Link]
●
Bases de datos Orientadas a Grafos
●
Neo4j AuraDB
●
Seleccione la Continue whit Google,
●
o haga la inscripción
●
Bases de datos Orientadas a Grafos
●
Neo4j AuraDB
●
Se creara una consola donde podra crear una instacia de la base de
datos gratis con New Instance.
●
Bases de datos Orientadas a Grafos
●
Neo4j AuraDB
●
Podras crear una instacia limpia o un ejemplo para explorar los
modelos.
●
Bases de datos Orientadas a Grafos
●
Neo4j AuraDB
●
Es importante que siempre tenga presente la clave ya que esta no se
puede recuperar o cambiar despues de la generación
●
Bases de datos Orientadas a Grafos
●
Neo4j AuraDB
●
La generacion de la instacia se creara y estaran las siguientes
opciones activas
●
Bases de datos Orientadas a Grafos
●
Neo4j AuraDB
●
Coloque el usuario neo4j y el password que se coloco en la instancia
●
Bases de datos Orientadas a Grafos
●
Neo4j AuraDB
●
Al entrar al browser tendra la siguientes opciones
●
Bases de datos Orientadas a Grafos
●
Neo4j AuraDB
●
En la seccion de DataBase puede acceder
a los labels, relaciones, propiedades del
grafo
●
Bases de datos Orientadas a Grafos
●
Neo4j AuraDB
●
En la seccion de Favorites puede acceder
Ejemplos de los Scripts realizables en la
base de datos. Si la selecciona puede
accederlas en el ejecutor del query. Como
por ejemplo Hello World.
●
Bases de datos Orientadas a Grafos
●
Neo4j AuraDB
●
Al seleccionar la opcion Hello World y ejecutar debe aparecer
●
Bases de datos Orientadas a Grafos
●
Neo4j Es
●
●
Bases de datos Orientadas a Grafos
●
Neo4j Cypher Query Language
●
Cypher es el lenguaje de consulta de gráficos de Neo4j que le permite
recuperar datos del gráfico y se inspiró en SQL, por lo que le permite
concentrarse en los datos que desea obtener del gráfico.
●
●
Bases de datos Orientadas a Grafos
●
Neo4j Cypher Query Language
●
Cypher es único porque proporciona una forma visual de hacer coincidir
patrones y relaciones. Cypher usa un tipo de sintaxis de arte ASCII donde
●
●
(nodos)-[:ESTÁN_CONECTADOS_A]->(otrosNodos)
●
●
usando corchetes redondeados para (nodos) circulares, y -[:FLECHAS]->
para relaciones. Cuando escribe una consulta, dibuja un patrón gráfico a
través de sus datos.
●
Bases de datos Orientadas a Grafos
●
Neo4j Cypher Query Language
●
Las propiedades de los nodos o las relaciones se indican con una
estructura parecida a un diccionario:
●
●
(nodo {name:'Oscar', surname:'Garcia'})
●
las etiquetas se indican después de definir la variable:
●
●
(nodo:Person {name:'Oscar', surname:'Garcia'})
●
Bases de datos Orientadas a Grafos
●
Neo4j Cypher Query Language
●
Las propiedades de los nodos o las relaciones se indican con una
estructura parecida a un diccionario:
●
●
(nodo {name:'Oscar', surname:'Garcia'})
●
las etiquetas se indican después de definir la variable:
●
●
(nodo:Person {name:'Oscar', surname:'Garcia'})
●
Bases de datos Orientadas a Grafos
●
Neo4j Cypher Query Language
●
Bases de datos Orientadas a Grafos
●
Neo4j Cypher Query Language
●
CREATE Insertar los datos: para manipular una base de datos, introducir
información, se utiliza.
●
CREATE (n:DiosRomano {nombre:'Marte', dominio:'Guerra'})
●
CREATE (n:DiosRomano {nombre:'Juno', dominio:'Reina'})
●
CREATE (n:DiosRomano {nombre:'Jupiter', dominio:'Rey'})
●
CREATE (n:DiosRomano {nombre:'Neptuno', dominio:'Mares'})
●
CREATE (n:DiosRomano {nombre:'Minerva', dominio:'Inteligencia'})
●
CREATE (n:DiosRomano {nombre:'Mercurio', dominio:'Comercio'})
●
Bases de datos Orientadas a Grafos
●
Neo4j Cypher Query Language
●
Si quisiéramos crear una relación entre dos nodos ya existentes en nuestra
base de datos, lo podríamos hacer así. Primero buscaríamos los dos nodos a
relacionar, y después crearíamos la relación entre ellos.
●
MATCH (a:DiosRomano),(b:DiosRomano)
●
WHERE [Link] = 'Juno' AND [Link] = 'Marte'
●
CREATE (a)-[r:MADRE_DE]->(b)
●
RETURN a,b,r
●
O para todos
●
MATCH (p:DiosRomano), (f:DiosRomano)
●
CREATE (p)-[:AmigosDioses]->(f)
Bases de datos Orientadas a Grafos
●
Neo4j Cypher Query Language
●
MATCH
●
la sentencia Selección determina qué columnas de las diferentes tablas
de tu modelo relacional deben estar incluidas en el conjunto de resultados
de tu consulta. MATCH.
●
MATCH (n:DiosRomano) WHERE [Link]='Marte' RETURN [Link],
[Link]
●
MATCH (n:DiosRomano {nombre:'Marte'}) RETURN [Link], [Link]
●
Bases de datos Orientadas a Grafos
●
Neo4j Cypher Query Language
●
Si queremos consultar templos dónde se rendía culto a Juno.
●
●
MATCH (n:Templo)-[rel:CULTO_A]->(d:DiosRomano{nombre:"Juno"})
●
RETURN [Link], [Link]
●
●
MATCH (n:Templo)-[rel:CULTO_A]->(d:DiosRomano)
●
WHERE [Link]="Juno"
●
RETURN [Link], [Link]
●
Bases de datos Orientadas a Grafos
●
Neo4j Cypher Query Language
●
El comando Actulizacion se utiliza para modificar registros en las tablas de
base de datos. Por ejemplo, si quisiéramos cambiar el dominio de la diosa
Juno, del matrimonio al amor,
●
●
MATCH (n:DiosRomano { nombre: 'Juno' })
●
SET [Link] = 'amor'
●
RETURN [Link], [Link]
Bases de datos Orientadas a Grafos
●
Neo4j Cypher Query Language
●
El comando Actulizacion se utiliza para modificar registros en las tablas de
base de datos. Por ejemplo, si quisiéramos cambiar el dominio de la diosa
Juno, del matrimonio al amor,
●
●
MATCH (n:DiosRomano { nombre: 'Juno' })
●
SET [Link] = 'amor'
●
RETURN [Link], [Link]
Bases de datos Orientadas a Grafos
●
Neo4j Cypher Query Language
●
El equivalente en cypher sería borrar nodos y relaciones. La sintaxis es
muy parecida al SQL. Se pueden dar estas casuísticas:
●
●
Borrar únicamente un nodo, en este caso el nodo del dios Marte:
●
MATCH (n:DiosRomano { name: 'Marte' })
●
DELETE n
Bases de datos Orientadas a Grafos
●
Neo4j Cypher Query Language
●
El equivalente en cypher sería borrar nodos y relaciones. La sintaxis es
muy parecida al SQL. Se pueden dar estas casuísticas:
●
●
Borrar una relación, en este caso la relación MADRE_DE entre el nodo
del dios Marte y el nodo de la diosa Juno:
●
MATCH ([Link] { nombre: 'Juno' })-[r:MADRE_DE]-
>([Link] {nombre: 'Marte' })
●
DELETE r
Bases de datos Orientadas a Grafos
●
Neo4j Cypher Query Language
●
El equivalente en cypher sería borrar nodos y relaciones. La sintaxis es
muy parecida al SQL. Se pueden dar estas casuísticas:
●
●
Borrar un nodo y todas sus relaciones, en este caso el nodo del dios
Marte y todas sus relaciones:
●
●
MATCH ([Link] { nombre: 'Marte' })
●
DETACH DELETE n
Bases de datos Orientadas a Grafos
●
Neo4j Cypher Query Language
●
El equivalente en cypher sería borrar nodos y relaciones. La sintaxis es
muy parecida al SQL. Se pueden dar estas casuísticas:
●
●
Borrar todos los nodos y relaciones. Esta consulta solo es útil para
eliminar datasets pequeños.
●
MATCH (n)
●
DETACH DELETE n
[Link]