Gráf adatbázisok NoSql, neo4j. Gombos Gergő

Hasonló dokumentumok
Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Gráfok mindenhol. x $ SZENDI-VARGA JÁNOS IOT SOCIAL NETWORKS FRAUD DETECTION MASTER DATA MANAGEMENT RECOMMENDATION ENGINES. Internet of Things

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte

Virtuális Obszervatórium. Gombos Gergő

Adatbázis rendszerek 7. előadás State of the art

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

Alternatív adatbázisok Gráfadatbázisok

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

Indexek és SQL hangolás

GENERÁCIÓS ADATBÁZISOK A BIG DATA KÜLÖNBÖZŐ TERÜLETEIN

Adatbázis-kezelés. Harmadik előadás

Adatbázis-kezelés alapok Adatbázisok című tárgyhoz, ismétlés kapcsán

Adatbázis kezelés Delphiben. SQL lekérdezések

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

LOGISZTIKAI ADATBÁZIS RENDSZEREK UNIÓ, ALLEKÉRDEZÉSEK

Adatbázis rendszerek SQL nyomkövetés

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) október október 22. Adatbázisok 1 / 14

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

SQL parancsok feldolgozása

Adatbázisok* tulajdonságai

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP /1/A

SQL gyakorló feladatok. 6. Adatbázis gyakorlat április 5.

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

Spatial a gyakorlatban

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

BEVEZETÉS Az objektum fogalma

Készítette: Szabóné Nacsa Rozália

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Webfejlesztés 4. alkalom

A könyv tartalomjegyzéke

API tervezése mobil környezetbe. gyakorlat

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

Adatbázis rendszerek tervezése

A szürke háttérrel jelölt fejezet/alfejezet szövege a CD-mellékleten található. A CD-melléklet használata. 1. Elméleti áttekintés 1

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

Vizuális programozás gyakorlat

5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Az SQL adatbázisnyelv: DML

SELECT DISTINCT deptno FROM emp; (distinct) SELECT STATEMENT HASH UNIQUE TABLE ACCESS FULL EMP

SQL DDL-1: táblák és megszorítások

Informatikai alapismeretek Földtudományi BSC számára

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Az adatok a vállalat kulcsfontosságú erőforrásai. Az információs rendszer adatai kezelésének két alapvető változata:

Marton József BME-TMIT. Adatbázisok VITMAB november 11.

Adatbázis Rendszerek

Relációsémák létrehozása SQL nyelvben

8.Előadás Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Adatbázisok (relációs, objektum relációs, NoSQL) Adatbáziskezelő rendszerek Adatbázisok felépítése Adatbázisok tervezése

Adatbázisok biztonsága

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

SELECT. SELECT(projekció) FROM(forrás) WHERE(szűrés) GROUPBY(csoportosítás) HAVING(csoportok szűrése) ORDERBY(rendezés)

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

LOGISZTIKAI ADATBÁZIS RENDSZEREK EXCEL ALAPOK

Java és web programozás

Adatbázisok II. rész

SQL DDL-2 (aktív elemek) triggerek

SQLServer. DB Recovery modes

WHERE záradék (további lehetıségek) SQL specialitások, nem írhatók át relációs algebrába: LIKE. NULL értékek. Az ismeretlen (unknown) igazságérték

Csima Judit szeptember 6.

Adatbázisok elmélete

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

Elemi alkalmazások fejlesztése IV.

Adatbázis rendszerek 7. Matematikai rendszer amely foglal magában:

Adatbázis tartalmának módosítása

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Adatbázis, adatbázis-kezelő

Bevezetés: az SQL-be

MySQL. Elektronikus jegyzet Széchenyi István Egyetem Távközlési tanszék

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

30 MB INFORMATIKAI PROJEKTELLENŐR ADATBÁZISOK MEGVALÓSÍTÁSA (ADATBÁZISOK, ADATBÁZISKEZELŐK, ADATBÁZISOK FELÉPÍTÉSE, ADATBÁZISOK TERVEZÉSE)

Adatbázis használat I. 2. gyakorlat

LEKÉRDEZÉSEK SQL-BEN. A relációs algebra A SELECT utasítás Összesítés és csoportosítás Speciális feltételek

Adatbázisok elmélete 9. előadás

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Programozás. Adatbázis-kezelés (alapok) Fodor Attila

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Adatbázisok tavaszi félév Vizsgatételsor

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

Lekérdezések feldolgozása és optimalizálása

A relációs algebra egy speciális algebra, amely néhány egyszerű, de hathatós. operandusok. Egy reláció megadható a nevével vagy közvetlenül, sorainak

Adatbázis rendszerek. dr. Siki Zoltán

Adatbázisok elmélete 9. előadás

Átírás:

Gráf adatbázisok NoSql, neo4j Gombos Gergő

Áttekintés Miért használjunk gráfot? Mi a gráf? Hogy dolgozzunk gráfadatbázisokkal (neo4j) Korszerű adatbázisok Gráfadatbázisok 2

Gráf az egész világ Közösségi hálók Korszerű adatbázisok Gráfadatbázisok 3

Gráf az egész világ Útvonal tervezés Korszerű adatbázisok Gráfadatbázisok 4

Gráf az egész világ Ajánló rendszerek Korszerű adatbázisok Gráfadatbázisok 5

Gráf az egész világ Logisztika Korszerű adatbázisok Gráfadatbázisok 6

Gráf az egész világ Hozzáférések Korszerű adatbázisok Gráfadatbázisok 7

Gráf az egész világ Csalás detektálás Korszerű adatbázisok Gráfadatbázisok 8

Mi is a gráf? Korszerű adatbázisok Gráfadatbázisok 9

Property gráfok Építő elemei: Csúcsok Élek Entitások Kapcsolatok az entitások között Tulajdonságok Attribútumok és metainformációk Címkék Csoportosítás Korszerű adatbázisok Gráfadatbázisok 10

Példa Property gráf Korszerű adatbázisok Gráfadatbázisok 11

Csúcsok Korszerű adatbázisok Gráfadatbázisok 12

Élek Korszerű adatbázisok Gráfadatbázisok 13

Élek Egy csúcsnak több éle is lehet Lehetnek párhuzamos élek hurokélek Korszerű adatbázisok Gráfadatbázisok 14

Címkék Korszerű adatbázisok Gráfadatbázisok 15

A gráfok könnyen ábrázolhatóak Korszerű adatbázisok Gráfadatbázisok 16

Egyszerű modell tervezés Korszerű adatbázisok Gráfadatbázisok 17

Egyszerű modell tervezés Korszerű adatbázisok Gráfadatbázisok 18

Information connectivity Trend Social networks RDFa Tagging Wikis UGC Feeds Blogs Text Documents Hypertext Korszerű adatbázisok Gráfadatbázisok 19

RDBMS teljesítmény Korszerű adatbázisok Gráfadatbázisok 20

Négy NOSQL kategória

Max De Marzi- Introduction to Graph Database Korszerű adatbázisok Gráfadatbázisok 22

Kik használnak? Facebook Gráf keresés, közös témák keresése Google Tudás gráf, keresésekhez Twitter Felhasználó ajánlás További Ajánlás, logisztika, stb. Korszerű adatbázisok Gráfadatbázisok 23

RDBMS vs. Gráfadatbázisok Relációs adatbázisok Kapcsolatok a táblák elemei között: foreign-keys Kötött séma Az összekapcsolások a lekérdezéskor számítódnak ki Több-a-többhöz kapcsolatok: kapcsoló táblák Gráfadatbázisok Minden csúcs explicit össze van kapcsolva a szomszédaival Korszerű adatbázisok Forrás: http://neo4j.com/developer/graph-db-vs-rdbms/ Gráfadatbázisok 24

RDBMS vs. Gráf Korszerű adatbázisok Gráfadatbázisok 25

RDBMS vs Gráf Korszerű adatbázisok Gráfadatbázisok 26

RDBMS vs Gráf Korszerű adatbázisok Gráfadatbázisok 27

RDBMS vs Gráf Korszerű adatbázisok Gráfadatbázisok 28

RDBMS vs Gráf Korszerű adatbázisok Gráfadatbázisok 29

RDBMS vs Gráf További kapcsolatokkal nagyobb gráf keletkezik. További személyek. További számlák. Korszerű adatbázisok Gráfadatbázisok 30

Közösségi Hálózat kapcsolat Teljesítmény Mérés: ~1000 személy Átlag 50 barát emberenként pathexists(a,b) úthossz limit 4 Relációs adatbázis # személyek futásidő 1000 2000ms Korszerű adatbázisok Gráfadatbázisok 31

Közösségi Hálózat kapcsolat Teljesítmény Mérés: ~1000 személy Átlag 50 barát emberenként pathexists(a,b) úthossz limit 4 Relációs adatbázis # személyek futásidő 1000 2000ms Neo4j 1000 2ms Korszerű adatbázisok Gráfadatbázisok 32

Közösségi Hálózat kapcsolat Teljesítmény Mérés: ~1000 személy Átlag 50 barát emberenként pathexists(a,b) úthossz limit 4 Relációs adatbázis # személyek futásidő 1000 2000ms Neo4j 1000 2ms Neo4j 1000000 2ms Korszerű adatbázisok Gráfadatbázisok 33

MySQL vs Neo4j SELECT a.inv FROM graph as a WHERE a.outv=? SELECT b.inv FROM graph as a, graph as b WHERE a.inv=b.outv and a.outv=? Korszerű adatbázisok Gráfadatbázisok Forrás: http://java.dzone.com/articles/mysql-vs-neo4j-large-scale 34

Gráfadatbázisok klaszterben A NoSql adatbázisok klasztereken futnak Klaszter: Számítógépek összekapcsolt csoportja Egy klaszter skálázható új node-okkal Hogyan tároljunk gráfot a klaszterben? Korszerű adatbázisok Gráfadatbázisok 35

Fekete lyuk server Előny: Kevés kommunikáció a node-ok között Hátrány: Túlterhelt szerver Korszerű adatbázisok Gráfadatbázisok 36

Csevegő hálózat Előny: Egyenletes terhelés eloszlás Hátrány: Sok kommunikáció a node-ok között Korszerű adatbázisok Gráfadatbázisok 37

Minimális vágás Legjobb megoldás: Terhelés eloszlik Kevés kommunikáció a node-ok között Korszerű adatbázisok Gráfadatbázisok 38

Neo4j Gráfadatbázis Sémafüggetlen ACID tranzakciós modell Skálázható Java, beágyazható Magas rendelkezésre állás (commercial) Deklaratív lekérdezőnyelv REST API Korszerű adatbázisok Gráfadatbázisok 39

Előny Gráfadatbázisok: Előnyök és Hátrányok Erős adatmodellezés, általánosabb mint az RDBMS Gyorsabb lekérdezés összekapcsolt adatokra mint az RDBMS-ben Könnyű lekérdezhetőség Hátrány: Gráfos gondolkodás Globális lekérdezés / csúcsszintű számítás Bináris adatok tárolása Korszerű adatbázisok Gráfadatbázisok 40

Egyszerű kapcsolatok Nodes (a) actors (m) movies ( ) anonymous node Relationships -[r]-> (a)-[r]->(m) -[:ACTED_IN]-> (a)-[:acted_in]->(m) (d)-[:directed]->(m) "r kapcsolat actors "r" kapcsolatban a movies-zal ACTED_IN típusú kapcsolat actors ACTED_IN kapcsolatban director DIRECTED kapcsolatban Korszerű adatbázisok Gráfadatbázisok 41

Egyszerű kapcsolatok Korszerű adatbázisok Gráfadatbázisok 42

Attribútumok Node-oknak, kapcsolatoknak lehetnek attribútumai. Az attribútumok kulcs-érték párok. Pl: actor, név Node attribútunok (m {title:"the Matrix"}) Movie title attribútummal (a {name:"keanu Reeves",born:1964}) Relationship with Properties (a)-[:acted_in {roles:["neo"]}]->(m) Kapcsolat (ACTED_IN) roles attribútummal Korszerű adatbázisok Gráfadatbázisok 43

Címkék A címkék segítenek különbséget tenni a nodeok között. Egy node rendelkezhet több címkével is. Pl: Clint Eastwood: Actor, Director. Címkék (a:person) (a:person {name:"keanu Reeves"}) (a:person)-[:acted_in]->(m:movie) Korszerű adatbázisok Gráfadatbázisok 44

Cypher Cypher a Neo4j lekérdező nyelve Cypher dekleratív SQL inspirált Korszerű adatbázisok Gráfadatbázisok 45

Cypher Lekérdezés MATCH: Az adott gráfminta keresése a gráfban. WHERE: Lekérdezés szűrése. RETURN: Visszatérési érték, projekció, aggregálás. ORDER BY: Rendezzük az eredményt. SKIP/LIMIT: Lapozás. Korszerű adatbázisok Gráfadatbázisok 46

Cypher Update utasítás CREATE: Csúcs és él létrehozás. MERGE: Egyedi node létrehozás. CREATE UNIQUE: Eygedi kapcsolat létrehozás. DELETE: Csúcsok, kapcsolatok törlése. SET: Cimkék és tulajdonságok beállítása. REMOVE: Címkék és tulajdonságok törlése. FOREACH: Egy adott listában lévő elemeken való módosítás. WITH: A lekérdezés felosztása különböző részekre és az eredmény átadása a következő lekérdezésnek. Korszerű adatbázisok Gráfadatbázisok 47

Cypher Korszerű adatbázisok Gráfadatbázisok 48

Példa gráf Korszerű adatbázisok Gráfadatbázisok 49

Kérdezzük le az összes Matrix karaktert MATCH (m:movie)<-[r:acted_in]-(a:person) WHERE m.title= The Matrix RETURN r.roles, actor.name Korszerű adatbázisok Gráfadatbázisok 50

Paths Több utat is írhatunk egyszerre MATCH (a)-[:acted_in]->(m)<-[:directed]-(director) RETURN a.name, m.title, d.name Ha túl sok van, akkor olvashatatlan MATCH (a)-[:acted_in]->(m), (m)<-[:directed]-(director) RETURN a.name, m.title, d.name Korszerű adatbázisok Gráfadatbázisok 51

Paths Utakat el lehet nevezni, és eredményként visszakapni MATCH p=(a)-[:acted_in]->(m)<-[:directed]- (director) RETURN p; Ill. az uton lévő csomópontokat MATCH p=(a)-[:acted_in]->(m)<-[:directed]- (director) RETURN nodes(p); Korszerű adatbázisok Gráfadatbázisok 52

Egyszerűsítés Példa lekérdezés MATCH (p:person) WHERE p.name= Tom Hanks RETURN p; Egyszerűsítve MATCH (p:person {name= Tom Hanks }) RETURN p; Korszerű adatbázisok Gráfadatbázisok 53

Limit, Skip, Disttinct, Order by Skip: eredmények kihagyása MATCH (a)-[:acted_in]->(m) RETURN a.name, m.title SKIP 10 LIMIT 10; Rendezés MATCH (p:person) RETURN p.name ORDER BY p.born LIMIT 10; Distinct MATCH (a)-[:acted_in]->() RETURN distinct a ORDER BY a.born LIMIT 10; Korszerű adatbázisok Gráfadatbázisok 54

Complex lekérdezés, Index Komplex lekérdezés MATCH (g:person {name: Gene Hackman })-[:ACTED_IN]->(movie), (other)-[:acted_in]->(movie), (robin:person {name: Robin Williams }) WHERE NOT (robin)-[:acted_in]->(movie) RETURN DISTINCT other; Index CREATE INDEX ON :Movie(title); CREATE INDEX ON :Person(name); Korszerű adatbázisok Gráfadatbázisok 55

Aggregáció Aggregációk Count Min, Max Avg Collect: összegyűjtés MATCH (a:person)-[:acted_in]->(m) RETURN a.name, collect(m.title); Korszerű adatbázisok Gráfadatbázisok 56

Gráf módosítás Mivel sémafüggetlen, bármely csúcshoz és élhez adhatunk bármilyen attribútumot MATCH (m:movie) WHERE m.title= Mystic River SET M.TAGLINE= BLABLA RETURN m; Módosítani is tudunk attribútumot MATCH (m:movie) WHERE m.title= Mystic River SET M.released= 2003 RETURN m; Korszerű adatbázisok Gráfadatbázisok 57

Merge Élek logikai vagy kapcsolata MATCH (a)-[:acted_in DRECTED]->()<-[:ACTED_IN DIRECTED]-(b) RETURN a,b; Élek egyesítése MATCH (a)-[:acted_in DRECTED]->()<-[:ACTED_IN DIRECTED]-(b) WHERE NOT a-[:knows]-(b) MERGE (a)-[:knows]->(b); Korszerű adatbázisok Gráfadatbázisok 58

Optional Töröljük magunkat, és kapcsolatainkat! MATCH (me:person {name= My Name }) OPTIONAL MATCH (me)-[r]-() DELETE me, r; Korszerű adatbázisok Gráfadatbázisok 59

Változó úthossz Korszerű adatbázisok Gráfadatbázisok 60

shortestpath Legrövidebb út függvény MATCH p=shortestpath( (keanu:person)-[:knows*]->(kevin:person) ) WHERE keanu.name= Keanu Reeves and kevin.name= Kevin Bacon RETURN length(p); MATCH (keanu:person {name= Keanu Reeves }), (kevin:person {name= Kevin Bacon }), MATCH p=shortestpath( (keanu)-[:knows*]->(kevin) ) RETURN length(p); Korszerű adatbázisok Gráfadatbázisok 61

Köszönöm a Figyelmet! Korszerű adatbázisok Gráfadatbázisok 62