Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Bases de datos de grafos, un recorrido conectado

Bases de datos de grafos, un recorrido conectado

Mi charla en T3chfest 2014.

Francisco Fernández Castaño

February 06, 2014
Tweet

More Decks by Francisco Fernández Castaño

Other Decks in Programming

Transcript

  1. Francisco Fernández Castaño! @fcofdezc Bases de datos de grafos !

    ! Un recorrido conectado Except where otherwise noted, this work is licensed under: http://creativecommons.org/ licenses/by-nc-sa/3.0/ Leganés! 6-7 Febrero 2014!
  2. Dado el mapa de Königsberg, con el río Pregolya dividiendo

    el plano en cuatro regiones distintas, que están unidas a través de los siete puentes, ¿es posible dar un paseo comenzando desde cualquiera de estas regiones, pasando por todos los puentes, recorriendo sólo una vez cada uno, y regresando al mismo punto de partida?
  3. Profundidad Tiempo MySQL(s) Tiempo Neo4j (s) Nº Resultados 2 0.016

    0.01 ~2500 3 30.267 0.168 ~110,000 4 1543.505 1.359 ~600,000 5 No Acaba 2.132 ~800,000 MySQL vs Neo4j * Neo4J in Action
  4. START startNode=node:node_auto_index(name = ‘Sol'), endNode=node:node_auto_index(name = ‘Cuzco') MATCH p =

    (startNode)-[rels:CONNECTED_TO]->(endNode) RETURN p AS shortestPath, reduce(weight=0, r in rels: weight + r.weight) as tWeight ORDER BY tWeight ASC LIMIT 1
  5. Red social de cine Usuarios puntúan películas Personas actúan en

    películas Personas dirigen películas Usuarios siguen a otros usuarios
  6. Red social de cine Puntúa {nota} Puntúa {nota} User 1

    Film PF Fran User 2 Puntúa {nota} Film Film Puntúa {nota} Puntúa {nota}
  7. Red social de cine Puntúa {nota} User 1 Film PF

    Fran Puntúa {nota} Film Sigue Puntúa {nota}
  8. Red social de cine START fran=node:Persona(name='Fran'), film=node:Peliculas(title=‘Pulp Fiction') MATCH fran-[or:PUNTUA]->film<-[:PUNTUA]-otro_user-[r:PUNTUA]->otras_pelis,

    film-[:PERTENECE:*3]->genero<-[:PERTENECE]-otras_pelis WHERE or.stars = r.stars RETURN distinct otras_pelis.title;
  9. Instead of just picking a relational database because everyone does,

    we need to understand the nature of the data we’re storing and how we want to manipulate it. Martin Fowler