Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

PFC

No description
by

Jose Daniel

on 29 July 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of PFC

NEO4J:

UNA BASE DE DATOS NOSQL
ORIENTADA A GRAFOS

UNIVERSIDAD DE ALMERÍA
INGENIERÍA INFORMÁTICA
AUTOR: José Daniel Ruiz Sanchez
DIRECTOR: Dr. Manuel Torres Gil
Bases de datos NoSQL
Bases datos
orientadas a grafos
Introducción
Estudio/uso ->

Bases de datos orientadas a grafos
Objetivos
Introducción
Objetivos
Aspectos
teoricos

Problemas y
Conclusiones
Tecnologia
usada
Descripción
proyecto
Tecnología usada
Tecnología usada
Descripción
proyecto
Descripción
proyecto
Conclusiones
Tráfico centros datos (2011-2016)
1,8 Zettabyte -> 6,6 Zettabyte
PROBLEMAS
ALMACENAMIENTO
PROCESAMIENTO
RELEVANCIA
mediante
Aspectos teóricos
Aspectos teóricos
Objetivos
Desarrollo

Aplicación Web ->
Colección Datos Cinematográficos
Tecnología secundaria usada
Descripción
proyecto
Tecnología usada
Proyecciones
futuras
Problemas
Proyecciones
futuras
No modelo relacional
Características
Distribuida
Escalabilidad horizontal
Dinámica
Cuellos de botella
+ Rendimiento VS relacionales ->
Entornos datos masivos
Escalar sistemas (Cluster)
Sencilla y facil de usar para el desarrollador
API gráfica pontente
Perfecta para modelos en forma de grafos, muy relacionados ->
redes sociales
Lenguaje consulta completo y intuitivo
Elección de la base de datos
Framework con soporte
Repositorios
Dependecias
Versiones
Base de datos externa
Familiarización de las tecnologias
Evaluador de tuits para generar puntos de interés.
Analizador semántico comentarios para obtener estadísticas
Modelado
relaciones
Organización datos grafo
<nodo> - <relaciones>
Dinámica
Adaptabilidad
Recorrido rápido
sin gran coste
Aspectos teóricos
Tipos -> + conocidas
Orientadas a documentos
->
MongoDB, couchDB
Clave/valor
->
Cassandra(Apache), BigTable(Google), SimpleDB(Amazon)
Orientada a grafos
->
Neo4j
Orientada a objetos
->
ObjetivityDB
Multivalor
->
OpenQM
Framework -> programar java Neo4j
Amplios repositorios
Apoyo y soporte
para Neo4j:
Indexación
Acceso API REST, ejecucion del servidor
Grafos con propiedad
Consultas cypher
Traverser (Recorridos a traves del grafo)
Esquema funcional
Declarativo
Simple y poderoso
basado sintaxis SQL
cypher vs SQL
SELECT *
FROM "Persona"
WHERE nombre = 'Juan'
START persona=node:Persona
(nombre = 'Juan')
RETURN persona
Node[0]{nombre:"Juan",id:1,
edad:20,pelo:"rubio"}
|nombre|id|edad|pelo |
|Juan | 1 | 20 |rubio |
Grafo
BDGrafos VS BDRelacional
VS Relaciales
Entornos almacenamiento
masivo datos
Escalar sistemas (Clúster)->
mayor potencia y balance de carga
Consistencia eventual
Gestor almacenamiento nativo
Alto rendimiento busquedas datos relacionados
Escalable
Integración con aplicaciones java
Lenguaje cosulta propio (Cypher)
Soporta transacciones ACID
API java gran motor gráfico
Servidor/ base de datos integrada
Gran soporte y comunidad
NoSQL
BBDDG
+ Rendimiento datos muy relacinados
Neo4j
PRESENTACIÓN.
1.
Según Cisco y su informe anual Cisco Global Cloud Index, prevé que el tráfico de los centros de datos a nivel mundial aumentara considerablemente años tras año, estimando llegar a los 6.6 Zetabytes en 2016.
Este aumento conlleva a una serie de problemas:
- El almacenamiento de esa gran cantidad de datos.
- El procesamiento eficiente de esos datos.
- Extracción de información relevante de esos datos.
2.
Por los motivos señalados, las bases de datos NoSQL están teniendo una importancia considerable frente a las relacionales, ya que, estas intentan solventar las limitaciones con las que se encuentra los modelos relacional frente a entornos de almacenamiento masivo de datos, y a la necesidad de escalar los sistemas para tener mayor potencia y balaceo de carga.
Las características más destacables de las base de datos NoSQL son:
• No siguen el modelo relacional, esto quiere decir, que sus datos no están estructurados en tablas o JOINs.
• Tiene consistencia eventual, esto significa que cuando se produzca un cambio no hay una comunicación inmediata hacia todos los nodos que lo repliquen como ocurren con las SQL. Sino que se da cuando no se hayan modificado los datos durante un periodo de tiempo. Esto se conoce también como BASE (Basically Available Soft-state Eventual Consistency, o coherencia eventual flexible básicamente disponible), en contraposición a ACID, su analogía en las bases de datos relacionales.
• Estructura dinámica: ya que no utilizando esquemas definidos de antemano (datos no estructurados). Esto permite a los usuarios añadir información y hacer cambios en cualquier momento sin interrumpir el sistema.
• Tienen un gran escalabilidad horizontal, ya que se pueden escalar a través de clusters de máquinas de coste reducido, debido a que no necesitan de grandes maquinas de computación sino más bien un mayor número de maquinas.
• Estructura distribuida: Los sistemas NoSQL emplean una arquitectura distribuida, manteniendo los datos de forma redundante en varios servidores, de esta forma si se produce algún fallo en un servidor puede ser tolerado.
• No generan cuellos de botella en el rendimiento con en los sistemas SQL, ya que para las sentencias se genera un punto de entrada común, único y conflictivo en base a rendimiento.

Con todo esto, tenemos unas BBDD capaces de manejar enormes cantidades de información, que podemos escalar fácilmente ejecutándolas en clusters de servidores de PCs baratos y que además, no tienen problemas de rendimiento ni cuellos de botellas como las BBDD relacionales.
3.
Los principales tipos de las bases de datos NoSQL son:
• Basadas en documentos: son bases de datos donde los documentos son datos no estructurados normalmente escritos en Json, se accede a ellos en clave/valor. MONGODB o CouchDB.
• Key-Value (clave/valor): estas son las más comunes, se usa para almacenar y recuperar objetos cuya estructura interna es opaca a la aplicación. Recupero con la clave el valor y tengo que tratar la información desde el cliente. No puedo acceder a ella como las documentales. CASSANDRA, BigTable(google), SimpleDB (Amazon), Voldemort(linkenlin).
• Orientadas a grafos: Almacenan la información en forma de grafo. NEO4J, infogrid, virtuoso.
• Orientadas a objetos: la información se representa mediante objetos. No hay diferencia a la hora de programa y la base de datos, por lo que no hay necesidad de un framework. ZOPE, GEMSTONE, DB4O El lenguaje de programación maneja objetos y la base de datos maneja objeto, sin necesidad de utilizar un framework (como yo uso Sprint neo4j)no hay ninguna discrepancia.
• Multivalor: almacenan cadenas gigantescas de datos, fáciles de manipular para HTML y XML. OPENQM

4.
Para el desarrollo de nuestro proyecto se ha elegido las bases de datos orientadas a grafos.
• La principal característica que hacen a las bases de datos orientadas a grafos únicas, es que cualquier cosa se puede modelar como una relación, aunque sea una relación entre objetos, e incluso cualquier propiedad de los objetos.
• Eso es lo que la hace tan dinámica, que todo al final se puede modelar como una relación. Este dinamismo es lo que convierte a estas bases de datos tan potentes frente a las relacionales.
• Si la base de datos esta muy relacionada el recorrido será rápido y sin gran coste. VS relacional principal característica.
• Tienen una gran adaptabilidad, ya que a diferencias de las relacionales que si quieres que una fila tenga una propiedad mas, tienes que añadir una columna a la tabla, y en las orientadas a grafos seria añadir una fila más.
• Su estructura es en forma de grafo, con un nodo donde entremos los datos y las aristas que tendremos las relaciones de los nodos.

5.
El objetivo principal del proyecto es el estudio y uso de las bases de datos orientadas a grafos. Mediante el uso de Neo4j.
6.
Para lograr esto se ha creado una aplicación web de consulta sobre datos cinematográficos.
7.
Neo4j
Es una base de datos NoSQL orientada a grafos, que almacena los datos en forma de grafo y este está formado nodos y relaciones, los cuales pueden contener propiedades en forma clave/valor.
• Permite un alto rendimiento en la búsqueda de grandes volúmenes de datos relacionados, pero sin dejar de ser intuitivo y sencillo parar el desarrollador.
• Es escalable, ya que, puede manejar grafos con muchos miles de millones de nodos/relaciones/propiedades en un solo equipo
• Tiene un lenguaje propio de consulta, Cypher.
• Tiene alta disponibilidad, pudiendo instalarse en diferentes maquinas con balanceador de carga.
• Tiene una API Java central.
• Transacciones ACID
• Posee un gestor de almacenamiento nativo (native graph storage) basado en disco optimizado para el almacenamiento de estructuras en forma de grafo, con el máximo rendimiento y escalabilidad. Hay ficheros para nodos, relaciones y propiedades. Al estar las propiedades de cada nodo y relación almacenado en un fichero diferente, el almacenamiento de nodos y relaciones se preocupa sólo de la estructura del grafo. Los tamaños son fijos y se puede obtener rápidamente en memoria nodos en base a su id, porque se sabe exactamente en que posición se encuentra este. Por este motivo neo4j es muy válido para soluciones tipo red social, sistemas de recomendación, mapas topográficos, averiguar camino mas corto entre dos puntos, donde la necesidad es la navegación óptima por los datos independientemente del volumen total.
• Posee un modelo gráfico muy rico para la representación de datos.
• Persistencia duradera
• Control de concurrencia
• Recuperación de transacciones
8.
Spring data Neo4j
Para poder realizar el desarrollo en java se ha utilizado un framework llamado Spring data Neo4j. Este framework da el soporte y el apoyo, para toda la interacción del código y la base de datos, como puede ser indexación, grafos con propiedad, consultas con Cypher, api neo4j, servidor…..
Es el framework que usa neo4j para poder ser programado desde java. Spring soporta grafos con propiedades, consultas con Cypher, API de Neo4j, servidor, indexaciones, ect. En definitiva hace la conversión entre el programa y la base de datos.

9.
Tecnología secundaria usada:
Maven: herramienta que se ha usado para la administración del proyecto
Jetty:
Json: Lo hemos usado para guardar los datos en forma de listado.
Lucene: Para la indexación de los datos.
Hibernate: Para mapear los atributos de la base de datos mediante beans, apoyo de spring data.
Jsp:





10.
Cypher
• Declarativo
• Sintaxis basada en SQL
• Simple y poderoso

11.
Esquema funcional
12.
Estructura del grafo
13.
BBDDG VS BBDDRelacional
14.
Problemas
15.
Conclusiones
16.
Proyectos futuros.
• Evaluar los tuits generados en eventos para crear puntos de interés o puntos calientes. Como por ejemplo manifestaciones, eventos culturales, turismo, etc.
• Ofrecer un contenido personalizado a través de un perfil más general del usuario y no solo de la aplicación que se accede.
• Analizar semánticamente tuits/hashtags en grandes acontecimientos, sacar estadísticas de opiniones. Como pueden ser elecciones.
• Ofrecer a través del análisis de las redes sociales, contenido publicitario más focal al público que está consumiendo ciertos entretenimientos. Como puede ser conciertos, eventos televisivos a través de la interacción con el público.
• Mapeo y prevenir sobrecargas móviles, con mayor eficacia.
• Optimizar redes eléctricas/agua.

Full transcript