Скачать презентацию Графовые базы данных или связи решают все 1 Скачать презентацию Графовые базы данных или связи решают все 1

2. Графовые СУБД.pptx

  • Количество слайдов: 33

Графовые базы данных или связи решают все! 1 Графовые базы данных или связи решают все! 1

Что такое граф ? Математическая модель: Граф, или неориентированный граф G — это упорядоченная Что такое граф ? Математическая модель: Граф, или неориентированный граф G — это упорядоченная пара G : = (V, E), где V — это непустое множество вершин или узлов, а E — множество пар (в случае неориентированного графа — неупорядоченных) вершин, называемых рёбрами. Ориентированный граф (сокращённо орграф) G — это упорядоченная пара G : = (V, A), где V — непустое множество вершин или узлов, и A — множество (упорядоченных) пар различных вершин, называемых дугами или ориентированными рёбрами. 2

РБД -> ГБД 3 РБД -> ГБД 3

4 4

5 5

время выполнения запроса Уменьшение производительности кол-во данных 6 время выполнения запроса Уменьшение производительности кол-во данных 6

Сложность/размер 7 Сложность/размер 7

Задача: проверить связность Дорожная сеть Москвы 8 Задача: проверить связность Дорожная сеть Москвы 8

Решение задачи 9 Решение задачи 9

Решение на RDMS 1) ● ● ● Закачать весь граф в память быстрый обход Решение на RDMS 1) ● ● ● Закачать весь граф в память быстрый обход графа ограничены памятью после изменения структуры грузим заново 2) Работать непосредственно в СУБД (рекурсивные sql запросы) ● не ограничены памятью ● очень медленный обход графа 10

Обход графа в таблице 11 Обход графа в таблице 11

Решение с Graph. Db (neo 4 j) 12 Решение с Graph. Db (neo 4 j) 12

13 13

Пионеры ГБД Facebook Graph Search Google Knowledge Graph Twitter 14 Пионеры ГБД Facebook Graph Search Google Knowledge Graph Twitter 14

Эволюция WEB поиска Web indexing до 1999 Дискретные данные Google Page Rank 1999 -2012 Эволюция WEB поиска Web indexing до 1999 Дискретные данные Google Page Rank 1999 -2012 Связанные данные(simple) Google Knowledge Graph, FB Graph 2012 - ? ? Связанные ориентированные данные 15

Социальные сети Facebook, VK, Twitter … Вершины: люди. Ребра: дружу , служу, смотрю, состою… Социальные сети Facebook, VK, Twitter … Вершины: люди. Ребра: дружу , служу, смотрю, состою… Алгоритмы рекомендации: “Вы дружите с Иваном , Иван с Петром. Не хотите ли вы дружить с Петром ? ” “Ваши друзья обедают в … “ Теория 6 рукопожатии. Twitter 3. 43 Facebook 4. 1 16

17 17

Полная поддержка ACID Atomicity — Атомарность гарантирует, что никакая транзакция не будет зафиксирована в Полная поддержка ACID Atomicity — Атомарность гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Consistency — Согласованность Каждая успешная транзакция по определению фиксирует только допустимые результаты. Isolation — Изолированность Во время выполнения транзакции параллельные транзакции не должны оказывать влияние на её результат. Durability — Надежность Независимо от проблем на нижних уровнях (к примеру, обесточивание системы или сбои в оборудовании) изменения, сделанные успешно завершённой транзакцией, должны остаться сохранёнными после возвращения системы в работу. 18

Недостатки ● ● нет горизонтального масштабирования после удаления нодов не освобождается место на диске Недостатки ● ● нет горизонтального масштабирования после удаления нодов не освобождается место на диске не для каждой предметной области нет схемы 19

20 20

Модель от Neo 4 j Вершины (nodes), отношения (relationships) + типы отношении (relationship. Types) Модель от Neo 4 j Вершины (nodes), отношения (relationships) + типы отношении (relationship. Types) и свойства (properties) 21

Пример создания графа CREATE (matrix 1: Movie { title : 'The Matrix', year : Пример создания графа CREATE (matrix 1: Movie { title : 'The Matrix', year : '1999 -03 -31' }) CREATE (matrix 2: Movie { title : 'The Matrix Reloaded', year : '2003 -05 -07' }) CREATE (matrix 3: Movie { title : 'The Matrix Revolutions', year : '2003 -10 -27' }) CREATE (keanu: Actor { name: 'Keanu Reeves' }) CREATE (laurence: Actor { name: 'Laurence Fishburne' }) CREATE (carrieanne: Actor { name: 'Carrie-Anne Moss' }) CREATE (keanu)-[: ACTS_IN { role : 'Neo' }]->(matrix 1) CREATE (keanu)-[: ACTS_IN { role : 'Neo' }]->(matrix 2) CREATE (keanu)-[: ACTS_IN { role : 'Neo' }]->(matrix 3) CREATE (laurence)-[: ACTS_IN { role : 'Morpheus' }]->(matrix 1) CREATE (laurence)-[: ACTS_IN { role : 'Morpheus' }]->(matrix 2) CREATE (laurence)-[: ACTS_IN { role : 'Morpheus' }]->(matrix 3) CREATE (carrieanne)-[: ACTS_IN { role : 'Trinity' }]->(matrix 1) CREATE (carrieanne)-[: ACTS_IN { role : 'Trinity' }]->(matrix 2) CREATE (carrieanne)-[: ACTS_IN { role : 'Trinity' }]->(matrix 3) 22

Cypher 23 Cypher 23

Cypher MATCH (john {name: 'John'})-[: friend]->()[: friend]->(fof) RETURN john. name, fof. name Результат: Cypher MATCH (john {name: 'John'})-[: friend]->()[: friend]->(fof) RETURN john. name, fof. name Результат: "John" "Maria" "John""Steve" MATCH (user)-[: friend]->(follower) WHERE user. name IN ['Joe', 'John', 'Sara', 'Maria', 'Steve'] AND follower. name =~ 'S. *' RETURN user. name, follower. name Результат: "John" "Sara" "Joe" "Steve" 24

Java(только в монопольном!!!) private static enum Rel. Types implements Relationship. Type { KNOWS } Java(только в монопольном!!!) private static enum Rel. Types implements Relationship. Type { KNOWS } Graph. Database. Service graph. Db; Node first. Node; Node second. Node; Relationship relationship; try ( Transaction tx = graph. Db. begin. Tx() ) { graph. Db = new Graph. Database. Factory(). new. Embedded. Database( DB_PATH ); first. Node = graph. Db. create. Node(); first. Node. set. Property( "message", "Hello, " ); second. Node = graph. Db. create. Node(); second. Node. set. Property( "message", "World!" ); relationship = first. Node. create. Relationship. To( second. Node, Rel. Types. KNOWS ); relationship. set. Property( "message", "brave Neo 4 j " ); tx. success(); } 25

Rest Api (Apache) 26 Rest Api (Apache) 26

Rest Api 1) Нет авторизации 2) Только для атомарных задач графовых СУБД 27 Rest Api 1) Нет авторизации 2) Только для атомарных задач графовых СУБД 27

Драйвера Все на основе REST API ● Java ● . NET ● Java. Script Драйвера Все на основе REST API ● Java ● . NET ● Java. Script ● Python ● Ruby ● PHP ● All Neo 4 j Language Drivers 28

Хочешь свои методы в Rest. Api ? Плагины! @Description( Хочешь свои методы в Rest. Api ? Плагины! @Description( "An extension to the Neo 4 j Server for getting all nodes or relationships" ) public class Get. All extends Server. Plugin { @Name( "get_all_nodes" ) @Description( "Get all nodes from the Neo 4 j graph database" ) @Plugin. Target( Graph. Database. Service. class ) public Iterable get. All. Nodes( @Source Graph. Database. Service graph. Db ) http: //localhost: 7474/db/data/ext/Get. All/graphdb/get_all_nodes 29

Транзакции Индексы FTS Индексы 30 Транзакции Индексы FTS Индексы 30

Для чего использовать? Если модель предметной области множество узлов с разнородными данными и большим Для чего использовать? Если модель предметной области множество узлов с разнородными данными и большим количеством разнородных связей между ними иначе удобнее RDMS Если все данные физически помещаются на одной машине иначе другое No. Sql Если подойдет лицензия …. 31

У нас где используется: 1) Contacts. webmoney. ru 2) events. webmoney. ru 3) подсчет У нас где используется: 1) Contacts. webmoney. ru 2) events. webmoney. ru 3) подсчет скоринга… 4) …. 32

Спасибо за внимание! Вопросы ? 33 Спасибо за внимание! Вопросы ? 33