Share on Facebook

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.

Contents

Structure [edit]

Graph databases are based on graph theory. Graph databases employ nodes, properties, and edges. Nodes are very similar in nature to the objects that object-oriented programmers will be familiar with.

GraphDatabase PropertyGraph.png

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.

Properties [edit]

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).

Graph database projects [edit]

The following is a list of several well-known graph database projects:[1]

Name Version License Language Description
AllegroGraph 4.9 (2012?) Proprietary A RDF and graph database.
ArangoDB 1.3.0 (May 2013) Apache 2 C, C++ & Javascript A multi-model document store 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 [2] C# An embeddable NoSQL database for the .NET platform with code-first data model generation.
DEX[3] 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[4] 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[5] 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[6] 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.

Graph database features [edit]

The following table compares the features of the above graph databases.

Name Graph Model API Query Methods Visualizer Consistency Backend Scalability
AllegroGraph RDF
ArangoDB Property Graph JavaScript, Blueprints, REST Graph Traversals via JavaScript, Gremlin MVCC/ACID native C/C++
Bigdata
Bitsy Property Graph Blueprints Gremlin ACID with optimistic concurrency control Human-readable JSON-encoded text files with checksums and markers for recovery
DEX[7] 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
Filament
GraphBase Property Graph GraphPad, BoundsPad
Graphd
Horton
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
jCoreDB Graph
Neo4j Property Graph Java, REST, JPython, JRuby, JavaScript (Node.js), PHP, .NET, Django, Clojure Cypher query language, Native Java APIs, Traverser API, REST, Blueprints, Gremlin Data Browser included ACID Native graph storage with native graph processing engine MySQL style master/slave replication
OpenLink
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
OQGRAPH
R2DF
ROIS
sones GraphDB
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.
VertexDB

Distributed Graph Processing [edit]

  • Angrapa - graph package in Hama, a bulk synchronous parallel (BSP) platform
  • Apache Hama - a pure BSP(Bulk Synchronous Parallel) computing framework on top of HDFS (Hadoop Distributed File System) for massive scientific computations such as matrix, graph and network algorithms.
  • Bigdata - a RDF/graph database capable of clustered deployment.
  • Faunus - a Hadoop-based graph computing framework that uses Gremlin as its query language. Faunus provides connectivity to Titan, Rexster-fronted graph databases, and to text/binary graph formats stored in HDFS. Faunus is developed by Aurelius.
  • FlockDB - an open source distributed, fault-tolerant graph database based on MySQL and the Gizzard framework for managing Twitter-like graph data (single-hop relationships) FlockDB on GitHub.
  • Giraph - a Graph processing infrastructure that runs on Hadoop (see Pregel).
  • GoldenOrb - Pregel implementation built on top of Apache Hadoop
  • HipG - a library for high-level parallel processing of large-scale graphs. HipG is implemented in Java and is designed for distributed-memory machine
  • InfiniteGraph - a commercially available distributed graph database that supports parallel load and parallel queries.
  • JPregel - In-memory java based Pregel implementation
  • KDT - An open-source distributed graph library with a Python front-end and C++/MPI backend (Combinatorial BLAS).
  • OpenLink Virtuoso - the shared-nothing Cluster Edition supports distributed graph data processing.
  • Phoebus - Pregel implementation written in Erlang
  • Pregel - Google's internal graph processing platform, released details in ACM paper.
  • Sedge - A framework for distributed large graph processing and graph partition management (including an open source version of Google's Pregel)
  • Signal/Collect - a framework for parallel graph processing written in Scala
  • Titan - A distributed, disk-based graph database developed by Aurelius.
  • Trinity - Distributed in-memory graph engine under development at Microsoft Research Labs.
  • Parallel Boost Graph Library (PBGL) - a C++ library for graph processing on distributed machines, part of Boost framework.

APIs and Graph Query/Programming Languages [edit]

  • Blueprints - a Java API for Property Graphs from TinkerPop and supported by a few graph database vendors.
  • Blueprints.NET - a C#/.NET API for generic Property Graphs.
  • Bulbflow - a Python persistence framework for Rexster, Titan, and Neo4j Server.
  • Cypher - a Property Graph Query Language developed by Neo4j.
  • Gremlin - an open-source graph programming language that works over various graph database systems.
  • Neo4jPHP - a PHP library wrapping the Neo4j graph database.
  • Pacer - a Ruby dialect/implementation of the Gremlin graph traversal language.
  • Pipes - a lazy dataflow framework written in Java that forms the foundation for various property graph traversal languages.
  • PYBlueprints - a Python API for Property Graphs.
  • Pygr - a Python API for large-scale analysis of biological sequences and genomes, with alignments represented as graphs.
  • Rexster - a graph database server that provides a REST or binary protocol API (RexPro). Supports Titan, Neo4j, OrientDB, Dex, and any TinkerPop/Blueprints-enabled graph.
  • SPARQL - a query language for databases, able to retrieve and manipulate data stored in Resource Description Framework format.
  • SPASQL - an extension of the SQL standard, allowing execution of SPARQL queries within SQL statements, typically by treating them as subquery or function clauses. This also allows SPARQL queries to be issued through "traditional" data access APIs (ODBC, JDBC, OLE DB, ADO.NET, etc.)
  • Styx (previously named Pipes.Net) - a data flow framework for C#/.NET for processing generic graphs and Property Graphs.
  • Thunderdome - a Titan Rexster Object-Graph Mapper for Python

See also [edit]

References [edit]

External links [edit]

Wikipedia content is licensed under the GNU Free Document License or Creative Commons CC-BY-SA
Loading...
Loading...
Top Videos
Latest Videos
Images Source: Flickr. Images licensed under the Creative Commons CC-BY-SA

Here you can share your comments or contribute with more information, content, resources or links about this topic.