Upload
xsolve-software-house
View
425
Download
0
Embed Size (px)
Citation preview
Grafowa baza danych i integracja z Symfony
Adam Szaraniec
Software Developer - XSolve
Agenda● Wstęp i opis
● SQL way
● Demo
● Przykłady użycia w innych aplikacjach
● Integracja z SF
● Pytania?
Grafowa baza danychGrafowa baza danych -wykorzystuje struktury grafów z węzłami, krawędziami i
własnościami do przedstawiania i przechowywania danych.
● ACID - wszystkie operacje na strukturze bazy są wykonywane w ramach
atomowych transakcji.
● możliwość obsługi dużej ilości danych -dziesiątki miliardów węzłów oraz
krawędzi.
● wydajność - prędkość podążania po grafie jest stała, niezależna od ilości danych w
bazie.
● skalowalność - możliwość konfiguracji w klastrze w trybie master-slave.
Neo4jWęzeł w to struktura danych (Encja). Węzeł może opisywać osobę, przedmiot, jakaś rzecz. Cokolwiek co przeważnie określamy rzeczownikami.
Węzły mają trzy ważne cechy:
1. Identyfikator 2. Etykietę, która mówi nam czym jest dany węzeł3. Zestaw właściwości w postaci klucz-wartość.
Relacja to po prostu powiązanie między dwoma węzłami.
1. Typ relacji. Podobnie jak etykieta węzła.2. Zestaw właściwości, zupełnie jak w węzłach
SQL wayPrzeszukiwanie w szerz.
Znajomi posiadający 100 znajomych: 100^4 = 100 000 000
Demo http://graph.db:7474
Język zapytań:
● Gremlin
g.v(:osoby).out(osoba).filter{:osoba.contains(it.lastName)}
● Cypher
MATCH (osoba {lastName: "Adam"}) RETURN osoba
MATCH (Contacts:Contact)-[:TAGGED]->(tags) RETURN Contacts,tags
Demo 1● Jak połączeni są dwa kontakty: kontakt -> miasto -> przychodnia -> szpital ->
kontakt.
● Kontakt, który zobaczył najwięcej prezentacji -> jakie kategorie go interesują.● Wyszukiwanie relacji. Kontakt -> przychodnia -> najbardziej znany kontakt.
Demo 2● Podobne produkty, które są często sprzedawane do hurtowni z tego samego
miasta co konkurencyjna hurtownia.
● W których hurtowniach klient robi zakupy, rozróżnienie na kategorie produktu.
● Wspólne produkty danych hurtownii.
Demo 3● Jakie produkty zostały sprzedane z Cuttlery item# 2 - tworzenie bundla.
● Klient który kupił dany produkt, kupił również.● Co łączy ciebie z innym klientem (Produkt -> kategoria, -> adres )
Integracja z SFlphuberdeau/Neo4j-PHP-OGM
● Doctrine Entity Manager
● Brak implementacji interface’u (Object Manager)
● Brak Query Builder’a
● Brak form type
● Ostatnia aktualizacja 8 miesięcy temu
Pytania?