A graph database is a database that uses graph structures with nodes, edges, and properties to represent and store data. By definition, a graph database is any storage system that provides index-free adjacency. This means that every element contains a direct pointer to its adjacent element and no index lookups are necessary. General graph databases that can store any graph are distinct from specialized graph databases such as triplestores and network databases.
Nodes represent entities such as people, businesses, accounts, or any other item you might want to keep track of.
Properties are pertinent information that relate to nodes. For instance, if "Wikipedia" were one of the nodes, one might have it tied to properties such as "website", "reference material", or "word that starts with the letter 'w'", depending on which aspects of "Wikipedia" are pertinent to the particular database.
Edges are the lines that connect nodes to nodes or nodes to properties and they represent the relationship between the two. Most of the important information is really stored in the edges. Meaningful patterns emerge when one examines the connections and interconnections of nodes, properties, and edges.
Compared with relational databases, graph databases are often faster for associative data sets, and map more directly to the structure of object-oriented applications. They can scale more naturally to large data sets as they do not typically require expensive join operations. As they depend less on a rigid schema, they are more suitable to manage ad-hoc and changing data with evolving schemas. Conversely, relational databases are typically faster at performing the same operation on large numbers of data elements.
Graph databases are a powerful tool for graph-like queries, for example computing the shortest path between two nodes in the graph. Other graph-like queries can be performed over a graph database in a natural way (for example graph's diameter computations or community detection).
The following is a list of several well-known graph database projects:
|AllegroGraph||4.9 (2012?)||Proprietary||A RDF and graph database.|
|Bigdata||GPL||Java||A RDF/graph database capable of clustered deployment.|
|Bitsy||1.0 beta||AGPL, Enterprise license (annual/perpetual)||Java||A small, embeddable, durable in-memory graph database|
|BrightstarDB||MIT License ||C#||An embeddable NoSQL database for the .NET platform with code-first data model generation.|
|DEX||4.7 (2012)||Dual-licensed: personal evaluation use / commercial use||C++||A graph database from Sparsity Technologies, a technology transition company from DAMA-UPC.|
|Filament||BSD||Java||A graph persistence framework and associated toolkits based on a navigational query style.|
|GraphBase||1.0||Proprietary||Java||A customizable, distributed, small-footprint graph store with a rich tool set from FactNexus.|
|Graphd||Proprietary||The proprietary back-end of Freebase.|
|Horton||A graph database from Microsoft Research Extreme Computing Group (XCG) based on the cloud programming infrastructure Orleans.|
|HyperGraphDB||1.2 (2012)||LGPL||Java||A graph database supporting generalized hypergraphs where edges can point to other edges.|
|InfiniteGraph||3.0 (January 2013)||GPLv3||Java||A distributed and cloud-enabled commercial product with flexible licensing.|
|InfoGrid||2.9.5 (2011)||AGPLv3, free for small entities||Java||A graph database with web front end and configurable storage engines (MySQL, PostgreSQL, Files, Hadoop).|
|jCoreDB Graph||An extensible database engine with a graph database subproject.|
|Neo4j||1.8.2 (Feb 2013)||GPLv3 community edition, AGPLv3 advanced and enterprise edition||Java|
|OpenLink Virtuoso||A RDF graph database server, deployable as a local embedded instance (as used in the Nepomuk Semantic Desktop), a single-instance network server, or a shared-nothing network cluster instance.|
|Oracle Spatial and Graph||11.2 (2012)||Oracle||Java||1) RDF Semantic Graph: comprehensive W3C RDF graph management in Oracle Database with native reasoning and triple-level label security. 2) Network Data Model Graph(NDM): for physical/logical networks with persistent storage and a Java API for in-memory graph analytics.|
|OrientDB||1.3 (2012)||Apache 2||Java||A document-graph database.|
|OQGRAPH||GPLv2||A graph computation engine for MySQL, MariaDB and Drizzle.|
|R2DF||R2DF framework for ranked path queries over weighted RDF graphs.|
|ROIS||Freeware||Modula-2||A programmable knowledge server that supports inheritance and transitivity. Used in OpenGALEN as a Terminology Server.|
|sones GraphDB||AGPLv3||C#||A graph database and universal access layer (funded by Deutsche Telekom).|
|Titan||0.3 (2013)||Apache 2||Java||A distributed, real-time, transactional graph database developed by Aurelius.|
|VertexDB||Revised BSD||C||A graph database server that supports automatic garbage collection.|
The following table compares the features of the above graph databases.
|Name||Graph Model||API||Query Methods||Visualizer||Consistency||Backend||Scalability|
|Bitsy||Property Graph||Blueprints||Gremlin||ACID with optimistic concurrency control||Human-readable JSON-encoded text files with checksums and markers for recovery|
|DEX||Labeled and directed attributed multigraph||Java, C++, .NET||Native Java, C# and C++ APIs, Blueprints, Gremlin||Exporting functionality to visualization formats||Consistency, durability and partial isolation and atomicity||Native graph. light and independent data structures with a small memory footprint for storage||Master/Slave replication|
|GraphBase||Property Graph||GraphPad, BoundsPad|
|HyperGraphDB||Object-oriented multi-relational labeled hypergraph||Custom,Java||MVCC/STM|
|InfiniteGraph||Labeled and directed multi-property graph||Java, Blueprints||Java (with parallel, distributed queries), Gremlin||Graph browser for developers. Plugins to allow use of external libraries.||ACID. There is also a parallel, loosely synchronized batch loader.||Objectivity/DB on standard filesystems||Distributed & Sharded. Objectivity/DB was the first DBMS to store a Petabyte of objects.|
|InfoGrid||Dynamically typed, object-oriented graph, multigraphs, semantic models|
|Oracle Spatial and Graph||RDF graph and Network Data Model graph||Java, PL/SQL||SPARQL 1.1, SQL||Open source and 3rd party products||ACID||Efficient, compressed, partitioned graph storage; Parallel load, query, inference; Native persisted in-database inferencing; SPARQL & SQL integration; triple-level label security.||Scales from PC to Oracle Exadata Machine. Supports Oracle Real Application Clusters and Oracle Database 8 exabyte limit.|
|OrientDB||Property Graph||Java Traverser API, Blueprints, Rexster||Own SQL-like Query Language, Gremlin||ACID, MVCC||Custom on disc or in memory|
|Titan||Property Graph||Java, Blueprints, REST, RexPro binary protocol (any language)||Gremlin, SPARQL||Integrates with 3rd party tools||ACID or Eventually Consistent||Cassandra, HBase, Berkeley DB||Distributed cluster (120 billion+ edges) or single server.|
Here you can share your comments or contribute with more information, content, resources or links about this topic.