Lo stack di Tinkerpop è un progetto molto ambizioso il cui obiettivo è quello di fornire un insieme di risorse dedicate ai Graph DB: essenzialmente un server (Rexter), implementazioni di algoritmi e componenti per il dataflow (Furnace e Pipes), un linguaggio di nuova generazione orientato ai grafi (Gremlin), e in particolare una api standardizzata per l'accesso ai graphdb (Blueprints). Nelle scorse settimane il progetto ha visto non solo l'approdo sui repositori maven ufficiali, ma anche una congrua rifattorizzazione delle API, che introducono alcune sostanziali novità .
Con la versione 2.0 di Blueprints arriva certamente una maggiore maturità del progetto, ed una maggiore stabilità delle scelte implementative. Già dalle primissime versioni questa api offre ai programmatori Java (ma più in generale a chi programma su JVM) la possibilità di relazionarsi in maniera molto semplice ad un database a grafo, senza preoccuparsi delle implementazioni concrete utilizzate e delle loro differenze (neo4j, OrientDB, e gli RDF store basati sull'interfaccia Sail di sesame tanto per citarne alcune).
Le principali caratteristiche di questa nuova versione sono in particolare:
- il definitivo (ufficiale) abbandono delle interfacce legate ad Object/Document, e l'adozione quindi del Property Graph Model come unico modello "ufficiale" del progetto.
- L'introduzione dell'interfaccia KeyIndexableGraph per gestire indici di tipo chiave/valore sulle proprietà dei nodi (Vertex)
- migliorata gestione della semantica per la direzione degli archi (edge)
- Vertex Query: ovvero una api fluent per interrogare velocemente sequenze di nodi (senza dimenticare il già citato Gremlin che merita approfondimenti a parte, ovviamente)
- una gestione delle Transazioni semplificata, frutto del costante lavoro sulla mailing list insieme agli implementors coinvolti
- infine le interfacce WrapperGraph e MetaGraph, che hanno lo scopo di semplificare l'estendibilità delle funzioni, così come l'adozione delle api al di sopra di api native proprietarie
E voi, che esperienze avete con questo genere di tecnologie?