Database Assessment

Gaffer – The Versatile Graph Database Framework

Gaffer is a graph database framework. It allows the storage of very large graphs containing rich properties on the nodes and edges.

Several storage options are available, including Accumulo and an in-memory Java Map Store.

It is designed to be as flexible, scalable and extensible as possible, allowing for rapid prototyping and transition to production systems.

Gaffer Offers:

  • Rapid query across very large numbers of nodes and edges
  • Continual ingest of data at very high data rates, and batch bulk ingest of data via MapReduce or Spark
  • Storage of arbitrary Java objects on the nodes and edges
  • Automatic, user-configurable in-database aggregation of rich statistical properties (e.g. counts, histograms, sketches) on the nodes and edges
  • Versatile query-time summarisation, filtering and transformation of data
  • Fine grained data access controls
  • Hooks to apply policy and compliance rules to queries
  • Automated, rule-based removal of data (typically used to age-off old data)
  • Retrieval of graph data into Apache Spark for fast and flexible analysis
  • A fully-featured REST API

To get going with Gaffer, visit our getting started pages (1.x, 2.x). We also have a demo available to try that is based around a small uk road use dataset. See the example/road-traffic README to try it out.

Gaffer is under active development. Version 1.0 of Gaffer was released in October 2017, version 2.0 was released in May 2023.

Quickstart

To quickly and easily get access to an environment with everything installed and setup correctly you can use GitHub Codespaces, or alternatively GitLab GitPod.

These provide remote coding environments using VS Code with the required plugins, Java version and Maven preinstalled.

Our Javadoc can be found here. Gaffer’s documentation is kept in the gaffer-doc repository and published on GitHub pages (gchq.github.io).

Local Requirements

For building Gaffer locally you need Java 8 or 11 and Maven installed locally in a *nix environment.

MS Windows will work for most purposes, but is not recommended because tests utilising Hadoop fail due to limited Hadoop support on Windows.

Gaffer will compile with newer versions of Java, but some tests will fail because of a lack of support for newer Java in certain external dependencies.

To build Gaffer run mvn clean install -Pquick in the top-level directory. This will build all of Gaffer’s core libraries and some examples of how to load and query data.

Contribution Process

Detailed information on our ways of working can be found in our developer docs. In brief:

Inclusion In Other Projects

Gaffer is hosted on Maven Central and can easily be incorporated into your own maven projects.

To use Gaffer from the Java API the only required dependencies are the Gaffer graph module and a store module for the specific database technology used to store the data, e.g. for the Accumulo store:

<dependency>
    <groupId>uk.gov.gchq.gaffer</groupId>
    <artifactId>graph</artifactId>
    <version>${gaffer.version}</version>
</dependency>
<dependency>
    <groupId>uk.gov.gchq.gaffer</groupId>
    <artifactId>accumulo-store</artifactId>
    <version>${gaffer.version}</version>
</dependency>

For more information click here.

Varshini

Varshini is a Cyber Security expert in Threat Analysis, Vulnerability Assessment, and Research. Passionate about staying ahead of emerging Threats and Technologies.

Recent Posts

Unveiling Offshore Banking And Dark Web Operations via Blockchain Analysis : An OSINT Case Study

In the realm of cybersecurity and financial investigations, blockchain analysis has emerged as a powerful…

5 hours ago

Audits Portfolio : Tools And Functions

In the realm of blockchain and Web3 security, audits play a crucial role in ensuring…

5 hours ago

Local Deep Researcher : Revolutionizing Research With AI-Driven Tools

Local Deep Researcher is a powerful, AI-driven tool designed to assist in deep, iterative research…

5 hours ago

Python Fire : Transforming Python Code Into Command-Line Interfaces

Python Fire is a powerful library that simplifies the process of creating command-line interfaces (CLIs)…

5 hours ago

SMM : From Social Media To System Management Mode

The term "SMM" can refer to two distinct concepts: Social Media Marketing and System Management…

6 hours ago

XrefGen – Advanced Cross-Reference Generator For IDA Pro

XrefGen is an innovative IDAPython script designed to augment IDA Pro's static analysis capabilities by…

8 hours ago