Přejít k navigační liště

Zdroják » Databáze » Přehled grafových databází

Přehled grafových databází

Články Databáze

Předtím, než se pustíme do instalace grafové databáze, tak si ještě představíme jejich základní přehled. Ač nám je nabízeno kolem dvou desítek možností, pro rozhled nám postačí níže zmíněná pětice. Na konci kapitoly si vyhodnotíme nejvhodnější databázi, kterou můžeme využít zdarma v projektu postaveném na jazyku PHP.

Sones GraphDB

Sones GraphDB je vyvíjena v jazyku C# německou společností Sones. Navrženou strukturou se přirovnává k váženému grafu. Jinými slovy se jedná o graf s hranami ohodnocenými reálnými čísly.

Databázi lze provozovat jak na platformě běžící pod Microsoft .NET frameworkem, tak Mono, která zajistí její multiplatformnost. Nadále i jako SaaS (Software as a Service) na cloudové platformě Microsoft Azure nebo Amazon S3, což přináší mnohonásobně větší výkon. Pro přístup k datům je možné využít jedno z mnoha rozhraní (např. Java, C#, WebShell, WebDAV), k nimž se řadí i REST API (Representational State Transfer Application Programming Interface), které nám zaručí nekomplikovaný přístup vzhledem ke zvoleným technologiím aplikace.

Při výběru máme možnost volby ze dvou licencí, pod kterými je GraphDB dostupná. První z nich je open source AGPLv3 (Affero General Public License, version 3) komunitní verze, která nemá tak širokou škálu nabízené funkčnosti jako enterprise verze.

AllegroGraph

AllegroGraph je proprietární produkt tvořený vývojáři Franz, Inc. Návrh databáze je uzpůsoben tak, aby splňoval standardy W3C (World Wide Web Consortium) pro Resource Description Framework, neboli je určen pro manipulaci s propojenými daty a sémantickým webem.

Nabízí početný seznam knihoven pro komunikaci přes REST API s aplikacemi psanými např. v C#, Perl, Ruby a Scala.

Licenční politika popisuje tři verze — Free, Developer a Enterprise, kde první dvě jsou omezeny počtem záznamů v databázi. Mezi širokou klientelu se řadí velikáni jako Ford, Kodak a NASA (National Aeronautics and Space Administration).

Neo4j

Neo4j je jedna z nejpopulárnějších grafových databází ve své kategorii, což implikuje open source řešení, které je implementované v Javě. Pochází z dílny společnosti Neo Technology, kde byla první verze vydána v roce 2007 a od té doby získala celkem velké zastoupení ve vývojářské komunitě, která se nejenom zapojuje do běžných diskuzí https://groups.google.com/group/neo4j, ale i do samotného vývoje https://github.com/neo4j.

Ukládání grafové struktury je v podobě vrcholů, hran a vlastností, pro něž platí limity v řádech desítek miliard. Properties jsou další přidanou hodnotou, kterou může obsahovat každý vrchol nebo hrana v podobě klíč–hodnota. Mluvíme o tzv. property graph database.

Neo4j může být použita buď jako embedded mode (Java, JAR) (Java Archive), nebo jako standalone mode, pomocí kterého můžeme k databázi plnohodnotně přistupovat skrze REST API rozhraní.

FlockDB

FlockDB je tvořena Twitterem pod licencí Apache License, Version 2.0 pro účely analytiky souvisejících vztahů, přičemž doposavad nebyl vyvinut stabilní release. Michael Marr shrnul hlavní rysy FlockDB ve svém článku pro portál DevWebPro:

The biggest difference between FlockDB and other graph databases like Neo4j and OrientDB is graph traversal. Twitter’s model has no need for traversing the social graph. Instead, Twitter is only concerned about the direct edges (relationships) on a given node (account). For example, Twitter doesn’t want to know who follows a person you follow. Instead, it is only interested in the people you follow. By trimming off graph traversal functions, FlockDB is able to allocate resources elsewhere.

Načež mu hned bylo oponováno, že bez traverzování se nejedná o grafovou databázi, ale pouze o tzv. persisted graph.

Ať už se podle definic jedná o cokoliv, od FlockDB můžeme čekat velké věci. Mimo zmiňované cíle se profiluje dalšími, jako je maximální podpora pro operace add/update/remove. Nadále také obsažnost množiny aritmetických funkcí je další atypičností v prostředí grafových databází. Kromě toho dokáže stránkovat výsledky dotazů, které obsahují miliony záznamů. A v neposlední řadě podporuje horizontální škálování s replikací či online migrací dat.

InfiniteGraph

Grafová databáze je implementovaná v jazyce Java (mimo jádro v C++) od Objectivity, kde samotný název společnosti koreluje se strukturou databáze, která je objektově orientovaná. Skládá se z objektů (v grafové terminologii považován za vrchol) a hran pro jejich vzájemné propojení. Prozatím bohužel není možné přistupovat k databázi skrze REST API a je nám nabízeno pouze rozhraní v Javě.

Licence pro použití databáze jsou nabízeny ve dvou variantách. Bezplatná s sebou nese značné limity, jako omezení počtu hran a vrcholů po uplynutí 60denní zkušební verze. Nicméně mezi jedny z hlavních klientů patří vláda Spojených států amerických a poradenská společnost Deloitte.

Shrnutí

Výběr se může zdát „uměle zkreslený“ při pohledu na název seriálu, ale přeci jen svými vlastnostmi nejvíce vyhovuje Neo4j, která mimo jiné přesvědčila i značnou komunitou v pozadí a jejím agilním vývojem. Také podpora REST API, které nám umožní snadnou integraci do projektu vyvíjeného v PHP, se jeví jako ideální řešení.

Zdroje:

Článek původně vyššel na webu neo4j.cz.

Komentáře

Subscribe
Upozornit na
guest
3 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
Flajs

Myslím, že by v seznamu rozhodně neměla chybět ani OrientDB.

Karel

neo4j jsme pár týdnů testoval a zkoušel v něm provázat pár milionů entit a jejich vztahů. Nepodařilo se mi vyladit výkon, tak aby dotaz netrval vteřiny. Máte někdo lepší zkušenosti? Provozujete někdo neo4j v produkci?

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.

Pocta C64

Za prvopočátek své programátorské kariéry vděčím počítači Commodore 64. Tehdy jsem genialitu návrhu nemohl docenit. Dnes dokážu lehce nahlédnout pod pokličku. Chtěl bych se o to s vámi podělit a vzdát mu hold.