Workshops
neo4j og-cs workshop

Neo4j Workshop – Graf baze podataka

Na nedavno održanom Neo4j workshopu, naš zaposlenik Ivan Tomić održao je radionicu s temom graf baze podataka, s posebnim naglaskom na Neo4j.

Cilj radionice bio je pokazati ključne koncepte, razlike u odnosu na tradicionalne baze podataka, te predstaviti praktične primjere rada s Cypher jezikom.

Razlike između Graf i Relacijske baze podataka

Relacijske baze podataka koriste tabličnu strukturu i dobro su prilagođene podacima s jednostavnim vezama. Graf baze podataka, s druge strane, dizajnirane su za rad s podacima koji su prirodno povezani ili imaju kompliciranu povezanost, kao što su društvene mreže, sustavi za preporuku sadržaja i sl.

Sastoje se od entiteta i veza (odnosa):

neo4j

Za razliku od relacijskih baza podataka, graf baze podataka mogu direktno pohranjivati podatke u vezama, što omogućava intuitivnije i učinkovitije pretraživanje kompleksnih veza.

ACID principi

Kao i svaki puta kada se razgovara o bazama podataka, važno je spomenuti ACID principe koje i Neo4j prati:

  • Atomicity – Svaka transakcija se u potpunosti izvršava ili se vraća na početno stanje u slučaju pogreške
  • Consistency – Podaci ostaju validni prema unaprijed definiranim pravilima (npr. NOT NULL, ograničenja tipova podataka) prije i nakon svake transakcije
  • Isolation – Transakcije se odvijaju neovisno jedna o drugoj, bez utjecaja na međusobne rezultate
  • Durability – Podaci ostaju trajno pohranjeni nakon uspješne transakcije, čak i u slučaju kvara

Cypher Query jezik

U praktičnom dijelu radionice demonstriran je jednostavan primjer modeliranja društvene mreže te upotreba Cypher jezika za pretraživanje i manipulaciju podacima u Neo4j bazi. Cypher omogućava intuitivno kreiranje, ažuriranje i pretraživanje grafova.

U nastavku možete vidjeti jedan jednostavan dio primjera Cypher izraza za izradu i traženje podataka:

// Izrada entiteta User: Ana i Marko
CREATE (a:User {name: 'Ana'}), (b:User {name: 'Marko'})

// Izrada veze između entiteta User: Ana je prijatelj s Markom od 1.10.2024.
CREATE (a)-[:FRIENDS_WITH: {since: datetime("2024-10-01")}]->(b)

// Pretraživanje veza između entiteta User: Tko su Anini prijatelji?
MATCH (a)-[:FRIENDS_WITH]->(b)
RETURN b.name

Autor

Ivan Tomić

Ova stranica koristi kolačiće da bi poboljšalo korisničko iskustvo, više o tome možete saznajte na našoj stranici "politika privatnosti"

Politika privatnosti