Grafowa baza danych i integracja z symfony

Post on 22-Jan-2018

425 views 0 download

Transcript of Grafowa baza danych i integracja z symfony

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?