In computing, a graph database is a database that uses graph structures with nodes, edges,
and properties to represent and store data.
A graph database is any storage system that provides index-free adjacency.
This means that every element contains a direct pointer to its adjacent elements 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.
Structure Graph databases are based on graph theory.
Graph databases employ nodes, properties, and edges.
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 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.
Graph database projects The following is a list of several well-known
graph database projects: Graph database features
The following table compares the features of the above graph databases.
Distributed Graph Processing Angrapa - graph package in Hama, a bulk synchronous
parallel platform Apache Hama - a pure BSP(Bulk Synchronous
Parallel) computing framework on top of HDFS for massive scientific computations such as
matrix, graph and network algorithms.
Bigdata - A RDF/graph database capable of clustered deployment.
Bigdata supports high availability mode, embedded mode, single server mode and has available
commercial licenses.
As of version 1.3.1, it supports the Blueprints API and Reification Done Right.
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 FlockDB on GitHub.
Giraph - a Graph processing infrastructure that runs on Hadoop.
GraphBase - Enterprise Edition supports embedding of callable Java Agents within the vertices
of a distributed graph.
GoldenOrb - Pregel implementation built on top of Apache Hadoop
GraphLab - A framework for machine learning and data mining in the cloud
GraphX - GraphLab built on the Spark cluster computing system.
Dr. Joseph Gonzalez is the project lead, the creator of GraphLab.
HipG - a library for high-level parallel processing of large-scale graphs.
HipG is implemented in Java and is designed for distributed-memory machine
IBM System G Graph Analytics Toolkit - A comprehensive graph analytics library consisted of network
topological analysis tools, graph matching and search tools, and graph path and flow
tools.
It has been applied to various use cases and industry solutions.
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.
OpenLink Virtuoso - the shared-nothing Cluster Edition supports distributed graph data processing.
Oracle Spatial and Graph - loading, inferencing, and querying workloads are automatically and
transparently distributed across the nodes in an Oracle Real Application Cluster, Oracle
Exadata Database Machine, and Oracle Database Appliance.
Phoebus - Pregel implementation written in Erlang
Pregel - Google's internal graph processing platform, released details in ACM paper.
Powergraph - Distributed graph-parallel computation on natural graphs.
PowerLyra - A distributed graph analytics based on GraphLab using differentiated graph
computation and partitioning on skewed graphs.
Cyclops - A computation and communication efficient graph processing system with significantly
low communication cost.
Imitator - A reliable distributed graph processing system with replication-based fault-tolerance.
Sedge - A framework for distributed large graph processing and graph partition management
Signal/Collect - a framework for parallel graph processing written in Scala
Sqrrl Enterprise - distributed graph processing utilizing Apache Accumulo and featuring cell-level
security, massive scalability, and JSON support 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 - a C++ library for graph processing on distributed machines,
part of Boost framework.
Mizan - An optimized Pregel clone that can be deployed easily on Amazon EC2, local clusters,
stand-alone Linux systems and supercomputers.
It utilizes runtime graph repartitioning between iterations to provide dynamic load balancing
for better algorithm performance.
Medusa - A framework for graph processing using Graphics Processing Units on both shared
memory and distributed environments.
APIs and Graph Query/Programming Languages Bounds Language - terse C-style syntax which
initiates concurrent traversals in GraphBase and supports interaction between them.
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 Query Language - a declarative graph query language for Neo4j that enables ad hoc
as well as programmatic access to the graph Gremlin - an open-source graph programming
language that works over various graph database systems.
Neo4jClient - a .NET client for accessing Neo4j.
Neography - a thin Ruby wrapper that provides access to Neo4j via REST.
Neo4jPHP - a PHP library wrapping the Neo4j graph database.
NodeNeo4j - a Node.js driver for Neo4j that provides access to Neo4j via REST
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.
Pixy - a declarative graph query language that works on any Blueprints-compatible graph
database 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.
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
Spring Data Neo4j - an extension to Spring Data, providing direct/native access to Neo4j
Oracle SQL and PL/SQL APIs - have graph extensions for Oracle Spatial and Graph.
Styx - 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 NoSQL
Document-oriented database Structured storage
Object database Resource Description Framework - framework
to express node-edge graphs Graph transformation for a complementary topic.
RDF Database References
External links NoSQL Frankfurt 2010 - The GraphDB Landscape
and sones Graph Databases and the Future of Large-Scale
Knowledge Management Top Graph Databases
Social networks in the database: using a graph database
Scaling Online Social Networks without Pains Large-scale Graph Computing at Google
Eric Lai..
No to SQL?
Anti-database movement gains steam Renzo Angles, Claudio Gutierrez.
Survey of graph database models.
ACM Computing Surveys, Feb. 2008.
InfoGrid - an open-source application platform including a graph database
Rodriguez, M.A., Neubauer, P, The Graph Traversal Pattern article.
Optimizing Schema-Last Tuple-Store Queries in Graphd SIGMOD 2010
IBM System G Native Graph Store