Neo4j Graph Database: Introduction and Simple Example

25
8 июня 2015
  • Upload

    -
  • Category

    Software

  • view

    255
  • download

    0

Transcript of Neo4j Graph Database: Introduction and Simple Example

Page 1: Neo4j Graph Database: Introduction and Simple Example

8 июня 2015

Page 2: Neo4j Graph Database: Introduction and Simple Example

Темы лекции

• Что такое графы и графовые базы данных

• Что такое Neo4j и как это готовить

Page 3: Neo4j Graph Database: Introduction and Simple Example

Теория графов

• Леонард Эйлер, 1736 год, задача о семи мостах Кёнигсберга

Page 4: Neo4j Graph Database: Introduction and Simple Example
Page 5: Neo4j Graph Database: Introduction and Simple Example

→ →

• Число нечётных вершин (вершин, к которым ведёт нечётное число рёбер) графа должно быть чётно. Не может

существовать граф, который имел бы нечётное число нечётных вершин.

• Если все вершины графа чётные, то можно, не отрывая карандаша от бумаги, начертить граф, при этом можно

начинать с любой вершины графа и завершить его в той же вершине.

• Граф с более чем двумя нечётными вершинами невозможно начертить одним росчерком.

Page 6: Neo4j Graph Database: Introduction and Simple Example

Что такое граф?

• Основной объект изучения теории графов

• Совокупность непустого множества вершин и наборов пар вершин

Page 7: Neo4j Graph Database: Introduction and Simple Example
Page 8: Neo4j Graph Database: Introduction and Simple Example

Графовые БД

• Разновидность баз данных с реализацией сетевой модели в виде графа и его обобщений.

Page 9: Neo4j Graph Database: Introduction and Simple Example

Что такое Neo4j?

• Графовая СУБД, созданная в 2007 году

• Реализует работу с данными в виде орграфов (ориентированных графов)

Page 10: Neo4j Graph Database: Introduction and Simple Example

Графы - это наиболее эффективный и естественный способ работы с данными

Page 11: Neo4j Graph Database: Introduction and Simple Example
Page 12: Neo4j Graph Database: Introduction and Simple Example

Как выглядит граф в Neo4j

Page 13: Neo4j Graph Database: Introduction and Simple Example

Cypher (Neo4j graph query language)

• Язык запросов в Neo4j

• Похож на SQL

• ASCII-representation

Page 14: Neo4j Graph Database: Introduction and Simple Example

Пример на базе фильмов

• Выбор всех фильмов:

• SELECT * from movies;

• MATCH (movie:Movie) RETURN movie;

Page 15: Neo4j Graph Database: Introduction and Simple Example
Page 16: Neo4j Graph Database: Introduction and Simple Example

• Выбор всех фильмов с их режиссерами:

• SELECT * FROM movies m JOIN directed d ON d.movie_id = m.id JOIN person p ON p.id = d.person_id;

• MATCH (movie:Movie)<-[relation:DIRECTED]-(director:Person) RETURN movie, relation, director;

Page 17: Neo4j Graph Database: Introduction and Simple Example
Page 18: Neo4j Graph Database: Introduction and Simple Example

• Выбор фильма «Облачный атлас» и всех его рецензентов:

• SELECT * FROM movies m JOIN reviewed r ON r.movie_id = m.id JOIN person p ON p.id = d.person_id WHERE m.title = "Cloud Atlas";

• MATCH (movie:Movie {title: "Cloud Atlas"})<-[relation:REVIEWED]-(reviewer:Person) RETURN movie, relation, reviewer;

• MATCH (movie:Movie)<-[relation:REVIEWED]-(reviewer:Person) WHERE movie.title = "Cloud Atlas" RETURN movie, relation, reviewer;

Page 19: Neo4j Graph Database: Introduction and Simple Example
Page 20: Neo4j Graph Database: Introduction and Simple Example

• Выбор всех фильмов где Кинау Ривз играл Нео:

• SELECT * FROM person p JOIN acted a ON a.person_id = p.id AND a.roles IN ("Neo") JOIN movies m ON m.id = a.movie_id WHERE p.name = "Keanu Reeves"

• MATCH (keanu:Person {name: "Keanu Reeves"})-[:ACTED_IN {roles: ["Neo"]}]->(movie:Movie) RETURN keanu, movie;

Page 21: Neo4j Graph Database: Introduction and Simple Example
Page 22: Neo4j Graph Database: Introduction and Simple Example

• Выбор всех коллег Кинау Ривза (актеров которые играли с ним):

• SELECT * FROM person p JOIN acted a ON a.person_id = p.id JOIN movies m ON m.id = a.movie_id JOIN acted a2 ON a2.movie_id = m.id AND a2.person_id != p.id JOIN person p2 ON p2.id = a2.person_id WHERE p.name = "Keanu Reeves"

• MATCH (keanu:Person {name:"Keanu Reeves"})-[:ACTED_IN]->(movie:Movie)<-[:ACTED_IN]-(coActor:Person) RETURN keanu, movie, coActor;

Page 23: Neo4j Graph Database: Introduction and Simple Example
Page 24: Neo4j Graph Database: Introduction and Simple Example

Выбор городов с регионами

Page 25: Neo4j Graph Database: Introduction and Simple Example

Выбор городов в регионе