U časopisu VIDI već smo više puta pisali o različitim proizvodima s područja baza podataka, uglavnom o najpopularnijoj vrsti (relacijskim bazama podataka), a ponekad smo ponešto napisali i o noSQL bazama podataka, najčešće bazama dokumenata (na primjer, o MongoDB prije dva broja).
Ovaj put ćemo se pozabaviti nečim drugačijim – graf bazama podataka, odnosno jednim njihovim predstavnikom – Memgraphom. Da bi čitava stvar bila još zanimljivija, riječ je o rijetkom proizvodu čiji su osnivači „domaći dečki” Marko Budiselić i Dominik Tomičević! Budući da se cijela priča oko nastanka proizvoda može pročitati u pratećem intervjuu s jednim od osnivača poduzeća (Dominikom), na ovom ćemo se mjestu prije svega pozabaviti samim proizvodom.
Četiri osnovna pojma koja se susreću kod graf baza nabrojena su u nastavku. Pri tome prva dva pojma predstavljaju najvažnije osnove ovakvog modela baza podataka, dok se druga dva koriste za proširivanje osnovnih mogućnosti modela.
Čvorovi (Nodes)
Oni su temeljni element u graf modelu namijenjen predstavljanju podataka. Svaki čvor može sadržavati veći broj različitih svojstava predstavljenih u obliku dobro poznatog para ključ/vrijednost (key/value). Na taj se način vrlo fleksibilno mogu predstaviti najrazličitiji podaci koji su nam potrebni kod rješavanja određenog problema.
Odnosi (Relationships)
Čvorovi u modelu mogu biti u međusobnim odnosima što je predstavljeno linijom između njih. Ako je sam smjer odnosa između čvorova važan u razumijevanju podataka, onda se takav odnos smatra izravnim. U slučaju da smjer nije bitan, onda je neizravan. Kao i sami čvorovi, tako i odnosi među čvorovima mogu imati pridružen veći broj različitih svojstava čime se dodatno povećava fleksibilnost graf modela.
Svojstva (Properties)
Kako bi se što preciznije upravljalo spremanjem i korištenjem različitih vrsta podataka, svojstva podržavaju uobičajene tipove podataka (Integer, Float, Boolean, String, List, Map i Null). Pri tome se isti naziv svojstva može koristiti na različitim čvorovima, ali mora biti jedinstven na svakom pojedinom čvoru.
Oznake (Labels)
Veći broj čvorova može se uz pomoć oznaka međusobno grupirati u skupove ili kategorije. Svi čvorovi s istom oznakom spadaju u isti skup. Najvažnija prednost takvog grupiranja jest u tome što kod izvođenja različitih operacija nad podacima više nije potrebno koristiti cijeli graf nego samo njegov točno određeni dio.
Graf baze podataka: Prikaz osnovnih elemenata u ovom modelu baza podataka.
Za rukovanje s podacima spremljenim u graf bazi podataka može se koristiti posebno razvijeni deklarativni jezik za upite pod nazivom Cypher. Cypher je zamišljen tako da se pomoću njegovih upita definira što se u stvari želi dobiti iz baze podataka, a ne kako se to izvodi (kao što je to slučaj kod SQL-a). Tako se pojednostavljuje pisanje vrlo složenih upita kakvi se u pravilu koriste u analizama podataka.
Evo i nekoliko primjera jednostavnijih upita napisanih u Cypheru preuzetih iz Memgraph online uputa.
// This is a Cypher comment
CREATE (p1:Person {name: ‘Harry’}), (p2:Person name: ‘Anna’})
CREATE (p1)-[r:MARRIED_TO]->(p2)
RETURN r;
MATCH (c:Country)
WHERE c.name CONTAINS ‘United’ AND c.population > 9000000
RETURN c AS Country;
//Indent 2 spaces on lines with ON CREATE or ON MATCH subqueries
MATCH (p:Person {name: ‘Helga’})
MERGE (c:Country {name: ‘UK’})
MERGE (p)-[l:LIVES_IN]->(c)
ON CREATE SET l.movedIn = date({year: 2020})
ON MATCH SET l.modified = date()
RETURN p, l, c
„Igralište” za Cypher: Dostupno je na adresi https://playground.memgraph.com/
Zbog važnosti koje Cypher ima u rukovanju s podacima, na stranicama proizvođača može se pronaći i kratka škola ovog jezika (https://memgraph.com/learn-cypher-query-language) Alternativni način za upoznavanje s Cypherom jest korištenje svojevrsnog „igrališta” koje također podržava proizvođač (https://playground.memgraph.com/).
Ako želite koristiti Memgraph na nešto tradicionalniji način, a ne samo u njegovom igralištu, onda ga možete besplatno (kao Community Edition) preuzeti i instalirati na svoje vlastito desktop računalo (https://memgraph.com/docs/memgraph/installation). Memgraph je trenutno dostupan za sve najvažnije operativne sustave uz pomoć dodatnog paketa Docker.
Za korisnike koji namjeravaju ozbiljnije koristiti Memgraph u vlastitim projektima, na raspolaganju je i Enterprise izdanje. Za uvjete oko njegovog korištenja treba kontaktirati proizvođača. Uskoro bi na raspolaganju trebala biti i Cloud verzija za koju se već sad moguće predbilježiti.
Interetska adresa za preuzimanje baze podataka na vlastito računalo: https://memgraph.com/docs/memgraph/installation
Iako je za postavljanje različitih upita na bazu podataka zadužen Cypher, za svako ozbiljnije korištenje u praksi potrebna je podrška za korištenje u različitim programskim jezicima. Trenutno se Memgraph uz pomoć odgovarajućeg upravljačkog programa može koristiti u većini popularnih programskih jezika kao što su Python, C/C++, Rust, Node.js, C#, Go, Haskell, Java, JavaScript, PHP i Ruby.
Evo i proizvođačeva primjera kako bi to izgledalo u alatu Visual Studio C#:
using System;
using System.Linq;
using Neo4j.Driver;
namespace MemgraphApp
{
public class Program
{
public static void Main()
{
string message = “Hello, World!”;
using var _driver = GraphDatabase.Driver(“bolt://localhost:7687”, AuthTokens.None);
using var session = _driver.Session();
var greeting = session.WriteTransaction(tx =>
{
var result = tx.Run(“CREATE (n:FirstNode) “ +
“SET n.message = $message “ +
“RETURN ‘Node ‘ + id(n) + ‘: ‘ + n.message”,
new { message });
return result.Single()[0].As<string>();
});
Console.WriteLine(greeting);
}
}
}
Iako je riječ o relativno novom proizvodu, Memgraph se već poprilično koristi u praksi. Na primjer, koriste ga developeri iz Intela, NASA-e, Pfizera, Porschea, Huaweija, SpaceX-a i mnogih drugih kompanija.
Ako vas je sve do sada napisano zainteresiralo za korištenje ovakve vrste baza podataka u vlastitim projektima, onda se možete pridružiti redovitim sastancima korisnika graf baza podataka (koji će se održavati svake prve srijede u mjesecu). Prvi takav sastanak održan je 2. ožujka, a za buduće se možete prijaviti na adresi: https://www.meetup.com/graph-data-zagreb/.
Druženje korisnika graf baza podataka: https://memgraph.com/blog/graph-data-zagreb-meetup-summary
VIDI: Kako, kada i zašto je uopće došlo do izrade ovog proizvoda?
Marko i ja smo se upoznali tijekom studija na FER-u u Zagrebu. Vrlo smo brzo shvatili da dijelimo strast prema teoriji grafova te smo odlučili zajedno raditi kao konzultanti gdje smo sa svojim klijentima (nerijetko i većim kompanijama) radili na implementaciji teorija grafova u njihove tehnologije i procese.
Već smo se tada susreli s nedostacima koje su imala postojeća rješenja za graf baze podataka. Tijekom razvoja aplikacija s Neo4j-om naišli smo na velike probleme s performansama kada se radi o većim bazama podataka. Pokušali smo optimizirati i unaprijediti performanse s Neo4j rješenjima, no ubrzo smo došli do zaključka da Neo4j jednostavno ima svoja ograničenja.
Još se jedan problem pojavio tijekom tog razdoblja, baza Neo4j-a jest Java, tako da se custom-coded graf algoritmi u C/C++ jeziku nisu mogli pokretati u Neo4j, zahtijevali su potpuno novu arhitekturu. Tada smo Marko i ja razvili prvu verziju real-time storage i computation enginea koji je postao osnova Memgrapha.
Danas Memgraph pomaže developerima koristiti napredne graf algoritme poput PageRanka, Community Detectiona, BFS-a, DFS-a i drugih bez potrebe za proširenjem vlastitih timova s podatkovnim inženjerima, nerijetko i doktorima podatkovne znanosti. S Memgraphom, developeri razvijaju vlastite aplikacije poput dashboarda, vizualizacije, modeliranja određenih permisija, sustava predlaganja i identifikacija prevara, i to uz licencu otvorenog koda.
VIDI: Kako se uspoređujete s glavnim konkurentima u smislu pozicioniranja na tržištu?
Iako je Memgraph temeljen na graf bazi podataka kao jezgri svoje tehnologije, u njemu se križaju tehnologije temeljene na graf algoritmima i tijekovima podataka. S jedne strane, u graf tehnologiji najveći su konkurenti Neo4j i TigerGraph, a druge strane (tijekovima podataka) Spark (Databricks) i Materialize.
Upravo zbog Memgraphove mogućnosti spajanja tehnologija temeljenih na graf algoritmima i bazama tijekova podataka, Memgraph može pružati vrlo napredne analitike temeljene na brzoj C/C++ graf bazi podataka te pred-optimiziranim graf algoritmima koji koriste streaming kao izvor podataka. Pri tome omogućuju developerima da dođu do insighta putem kojih grade aplikacije.
VIDI: Što je bilo najteže kod pokretanja?
Marko i ja smo bili svjesni da moramo razviti Memgraph iz nule. U to vrijeme nismo znali puno o startupovima, tako da smo se vrlo brzo odlučili prijavili na Techstars London akceleracijski program u koji smo ušli sredinom ljeta 2016. godine.
Za ulazak u Techstars akceleracijski program, morali smo obaviti više intervjua nego drugi timovi, niti Marko niti ja, kao inženjeri s FER-a, nismo mogli dobro opisati što točno radimo i zašto je to korisno. Mislili smo da je svima jasno kako su grafovi dobri, no vrlo smo brzo shvatili da to nije baš tako. Ukupno smo imali 18 intervjua te smo naposljetku ipak uspjeli objasniti zašto je Memgraph potreban.
Od otprilike 1600 prijava te godine, odabrano je samo 11 timova, a među njima i Memgraph tim. Techstars program održavao se u Londonu i trajao 3 (vrlo intenzivna) mjeseca. Upravo nam je akceleracijski program pomogao da kao dva inženjera s FER-a bez iskustva sa startupima dovedemo Memgraph na razinu na kojoj je danas.
Osnivači Memgrapha su domaći dečki Marko Budiselić i Dominik Tomičević koji nam je odgovorio na nekoliko pitanja vezanih uz nastanak, sadašnjost i budućnost Memgrapha.
VIDI: Koji su najvažniji trenutni korisnici i zašto su se odlučili za proizvod?
S obzirom na to da je Memgraph dostupan putem otvorenog koda, vidimo da Memgraph trenutno koriste inženjeri iz kompanija poput Intela, Samsunga, Porschea, Pfizera, General Motorsa, NASA-e i mnogih drugih.
Izdvojio bih primjer LSI-a, globalnog lidera u kemijskoj industriji koji koristi Memgraph da bi optimizirao svoje R&D procese te proizvodnju, od upravljanja zalihama do praćenja kritičnih procesa unutar proizvodnje te tako donosio brže odluke.
Ovdje bih citirao i Tobiasa Merza, direktora globalnih operacija LSI-a koji je za Memgraph rekao: „Memgraphova mogućnost da napravi model cijele proizvodnje koristeći graf baze podataka za nas je bila velika inovacija u poslovanju. Uz Memgraph, naši kontinuirani izazovi proizvodnje i nabave postaju jednostavniji. Memgraphova analitika omogućila nam je da bolje shvatimo svoje poslovne procese te donosimo brže i kvalitetnije odluke u ključnim trenucima te na kraju našim klijentima omogućimo bolju i pouzdaniju uslugu.”
VIDI: Kako je organiziran interni razvoj – broj ljudi koji rade na razvoju, korišteni razvojni alati, testiranje i slično?
U Memgraphu danas imamo 30 zaposlenika diljem Europe, u Belgiji, Nizozemskoj, Grčkoj, Srbiji i UK-u, ali i Hrvatskoj. Kao i u svakom startupu, timovi su manji, ali agilni i efikasni. U Memgraphu je atmosfera odlična, ekipa je mlada i ambiciozna te spremna na izlazak iz zone komfora i motivirana za rješavanje najtežih tehnoloških problema.
Većina zaposlenika i dalje radi na razvoju, prije svega na razvoju funkcionalnosti glavne Memgraph i Memgraph Cloud platforme. Osim toga, s obzirom na to da Memgraph radi s klijentima, Memgraph ima i tim koji direktno radi i pomaže klijentima integrirati i iskoristiti Memgraph na najbolji način. Također, Memgraph trenutno zapošljava i traži inženjere koji će se priključiti timu i sudjelovati u razvoju dodatnih funkcionalnosti Memgrapha. Memgraph je također full remote kompanija, što znači da zaposlenici mogu raditi i živjeti gdje njima najviše odgovara.
VIDI: Koji su vam planovi za budućnost – primjerice, planirate li podršku za druge operativne sustave, nove mogućnosti u samom proizvodu i slično?
Memgraph je trenutno podržan na skoro svim važnim operativnim sustavima, od Windowsa, Mac OS-a, do Linux distribucija poput Debian, Ubuntu i CentOS te ga se može preuzeti i isprobati. Također, Memgraph će u skorom periodu biti dostupan i na Cloud platformi, tako da će svaki developer moći pokrenuti Memgraph u Cloudu bez lokalne instalacije i administracije.
U budućnosti planiramo stvoriti Memgraph ekosustav, a u sljedeće dvije godine primarni nam je cilj privući što veći broj developera da saznaju za Memgraph, isprobaju ga i koriste. Kada developeri počnu koristiti Memgraph za privatne i poslovne projekte, očekujemo da će sve veći broj kompanija biti zainteresiran za našu Enterprise licencu što naravno omogućuje dodatne značajke koje su posebno atraktivne za velike kompanije.
VIDI: Kako, kada i zašto je uopće došlo do izrade ovog proizvoda?
Marko i ja smo se upoznali tijekom studija na FER-u u Zagrebu. Vrlo smo brzo shvatili da dijelimo strast prema teoriji grafova te smo odlučili zajedno raditi kao konzultanti gdje smo sa svojim klijentima (nerijetko i većim kompanijama) radili na implementaciji teorija grafova u njihove tehnologije i procese.
Već smo se tada susreli s nedostacima koje su imala postojeća rješenja za graf baze podataka. Tijekom razvoja aplikacija s Neo4j-om naišli smo na velike probleme s performansama kada se radi o većim bazama podataka. Pokušali smo optimizirati i unaprijediti performanse s Neo4j rješenjima, no ubrzo smo došli do zaključka da Neo4j jednostavno ima svoja ograničenja.
Još se jedan problem pojavio tijekom tog razdoblja, baza Neo4j-a jest Java, tako da se custom-coded graf algoritmi u C/C++ jeziku nisu mogli pokretati u Neo4j, zahtijevali su potpuno novu arhitekturu. Tada smo Marko i ja razvili prvu verziju real-time storage i computation enginea koji je postao osnova Memgrapha.
Danas Memgraph pomaže developerima koristiti napredne graf algoritme poput PageRanka, Community Detectiona, BFS-a, DFS-a i drugih bez potrebe za proširenjem vlastitih timova s podatkovnim inženjerima, nerijetko i doktorima podatkovne znanosti. S Memgraphom, developeri razvijaju vlastite aplikacije poput dashboarda, vizualizacije, modeliranja određenih permisija, sustava predlaganja i identifikacija prevara, i to uz licencu otvorenog koda.
VIDI: Kako se uspoređujete s glavnim konkurentima u smislu pozicioniranja na tržištu?
Iako je Memgraph temeljen na graf bazi podataka kao jezgri svoje tehnologije, u njemu se križaju tehnologije temeljene na graf algoritmima i tijekovima podataka. S jedne strane, u graf tehnologiji najveći su konkurenti Neo4j i TigerGraph, a druge strane (tijekovima podataka) Spark (Databricks) i Materialize.
Upravo zbog Memgraphove mogućnosti spajanja tehnologija temeljenih na graf algoritmima i bazama tijekova podataka, Memgraph može pružati vrlo napredne analitike temeljene na brzoj C/C++ graf bazi podataka te pred-optimiziranim graf algoritmima koji koriste streaming kao izvor podataka. Pri tome omogućuju developerima da dođu do insighta putem kojih grade aplikacije.
VIDI: Što je bilo najteže kod pokretanja?
Marko i ja smo bili svjesni da moramo razviti Memgraph iz nule. U to vrijeme nismo znali puno o startupovima, tako da smo se vrlo brzo odlučili prijavili na Techstars London akceleracijski program u koji smo ušli sredinom ljeta 2016. godine.
Za ulazak u Techstars akceleracijski program, morali smo obaviti više intervjua nego drugi timovi, niti Marko niti ja, kao inženjeri s FER-a, nismo mogli dobro opisati što točno radimo i zašto je to korisno. Mislili smo da je svima jasno kako su grafovi dobri, no vrlo smo brzo shvatili da to nije baš tako. Ukupno smo imali 18 intervjua te smo naposljetku ipak uspjeli objasniti zašto je Memgraph potreban.
Od otprilike 1600 prijava te godine, odabrano je samo 11 timova, a među njima i Memgraph tim. Techstars program održavao se u Londonu i trajao 3 (vrlo intenzivna) mjeseca.
Upravo nam je akceleracijski program pomogao da kao dva inženjera s FER-a bez iskustva sa startupima dovedemo Memgraph na razinu na kojoj je danas.
Dominik Tomičević: “U sljedeće dvije godine primarni nam je cilj privući što veći broj developera”.
VIDI: Koji su najvažniji trenutni korisnici i zašto su se odlučili za proizvod?
S obzirom na to da je Memgraph dostupan putem otvorenog koda, vidimo da Memgraph trenutno koriste inženjeri iz kompanija poput Intela, Samsunga, Porschea, Pfizera, General Motorsa, NASA-e i mnogih drugih.
Izdvojio bih primjer LSI-a, globalnog lidera u kemijskoj industriji koji koristi Memgraph da bi optimizirao svoje R&D procese te proizvodnju, od upravljanja zalihama do praćenja kritičnih procesa unutar proizvodnje te tako donosio brže odluke.
Ovdje bih citirao i Tobiasa Merza, direktora globalnih operacija LSI-a koji je za Memgraph rekao: „Memgraphova mogućnost da napravi model cijele proizvodnje koristeći graf baze podataka za nas je bila velika inovacija u poslovanju. Uz Memgraph, naši kontinuirani izazovi proizvodnje i nabave postaju jednostavniji. Memgraphova analitika omogućila nam je da bolje shvatimo svoje poslovne procese te donosimo brže i kvalitetnije odluke u ključnim trenucima te na kraju našim klijentima omogućimo bolju i pouzdaniju uslugu.”
VIDI: Kako je organiziran interni razvoj – broj ljudi koji rade na razvoju, korišteni razvojni alati, testiranje i slično?
U Memgraphu danas imamo 30 zaposlenika diljem Europe, u Belgiji, Nizozemskoj, Grčkoj, Srbiji i UK-u, ali i Hrvatskoj. Kao i u svakom startupu, timovi su manji, ali agilni i efikasni. U Memgraphu je atmosfera odlična, ekipa je mlada i ambiciozna te spremna na izlazak iz zone komfora i motivirana za rješavanje najtežih tehnoloških problema.
Većina zaposlenika i dalje radi na razvoju, prije svega na razvoju funkcionalnosti glavne Memgraph i Memgraph Cloud platforme. Osim toga, s obzirom na to da Memgraph radi s klijentima, Memgraph ima i tim koji direktno radi i pomaže klijentima integrirati i iskoristiti Memgraph na najbolji način. Također, Memgraph trenutno zapošljava i traži inženjere koji će se priključiti timu i sudjelovati u razvoju dodatnih funkcionalnosti Memgrapha. Memgraph je također full remote kompanija, što znači da zaposlenici mogu raditi i živjeti gdje njima najviše odgovara.
VIDI: Koji su vam planovi za budućnost – primjerice, planirate li podršku za druge operativne sustave, nove mogućnosti u samom proizvodu i slično?
Memgraph je trenutno podržan na skoro svim važnim operativnim sustavima, od Windowsa, Mac OS-a, do Linux distribucija poput Debian, Ubuntu i CentOS te ga se može preuzeti i isprobati. Također, Memgraph će u skorom periodu biti dostupan i na Cloud platformi, tako da će svaki developer moći pokrenuti Memgraph u Cloudu bez lokalne instalacije i administracije.
U budućnosti planiramo stvoriti Memgraph ekosustav, a u sljedeće dvije godine primarni nam je cilj privući što veći broj developera da saznaju za Memgraph, isprobaju ga i koriste. Kada developeri počnu koristiti Memgraph za privatne i poslovne projekte, očekujemo da će sve veći broj kompanija biti zainteresiran za našu Enterprise licencu što naravno omogućuje dodatne značajke koje su posebno atraktivne za velike kompanije.
S obzirom na to da je Memgraph dostupan putem otvorenog koda, vidimo da ga trenutno koriste inženjeri iz kompanija poput Intela, Samsunga, Porschea, Pfizera, General Motorsa, NASA-e i mnogih drugih.