Использование графовых БД / Андрей Синицын (itrustore)
TRANSCRIPT
![Page 1: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/1.jpg)
Использование графовых БДпри разработке социальных сетей
Андрей Синицын
![Page 2: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/2.jpg)
Rate'N'Goods
● Рекомендательный сервис + соцсеть
● Пользовательские связи
● Много связей внутри проекта
http://ratengoods.com
![Page 3: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/3.jpg)
Связи между сущностями
● Рекомендации по кругам
● Геоданные
● ACL
![Page 4: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/4.jpg)
Поиск решения: RDBMS● Большие таблицы со связями
● No JOIN
● No sharding
● Add property → ALTER TABLE
![Page 5: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/5.jpg)
Поиск решения: Doc-Based● No relations
● Нет связей — нет выборок
● Consistency?
![Page 6: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/6.jpg)
Поиск решения: Key-value
![Page 7: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/7.jpg)
Graph Databases● Вершины или узлы
● Рёбра или связи
● Направления связей
● Вершина → Ребро → Вершина
![Page 8: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/8.jpg)
Graph Databases● Вершины или узлы
● Рёбра или связи
● Направления связей
● Вершина → Ребро → Вершина
Whiteboard friendly
![Page 9: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/9.jpg)
Queries? Ok! ● SparQL
SELECT ?name ?emailWHERE { ?person a foaf:Person. ?person foaf:name ?name. ?person foaf:mbox ?email.}
![Page 10: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/10.jpg)
Queries? Ok! ● Cypher
START john=node:node_auto_index(name = 'John')MATCH john-[:friend]->()-[:friend]->fofRETURN john, fof
![Page 11: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/11.jpg)
Traversal? WTF? ● Just a JOIN?
● No! It is PATH
![Page 12: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/12.jpg)
Use-cases● Выборки связей внутри сущностей
● Выборки связей между сущностями
● Хранение геоданных — Spatial
● Access Control Lists
● Analitycs data
![Page 13: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/13.jpg)
SoftwareOpen Graph Api
Facebook Graph Search API
FlockDB
No traversals :(
![Page 14: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/14.jpg)
Software
![Page 15: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/15.jpg)
Software stack: TinkerPop
← Like *DBC but for graph
← Like *Nix-pipes but for graph
← Traversal your graph
← Collect your objects
← Algo implementations
← Protocols: HTTP, Rest API, etc
![Page 16: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/16.jpg)
Neo4j: software● Java
● Web Interface
● Data Console
● REST API
● Python bindings
![Page 17: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/17.jpg)
Neo4j: REST API● Any language
● HTTP Overhead
● Libs: py2neo, bulbs
![Page 18: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/18.jpg)
Neo4j: Embedded● Native support for Java
● Python support via JPype
● Other (ruby, Scala, js)
![Page 19: Использование графовых БД / Андрей Синицын (ItRuStore)](https://reader034.vdocuments.pub/reader034/viewer/2022051016/558a4323d8b42a85578b4667/html5/thumbnails/19.jpg)
Neo4j: Bonus● No backup and clustering in
community version
● Tornado-based server
● Replication like MySQL (query log)
● Scalability
● Backup and restore