GithubHelp home page GithubHelp logo

merlinr68 / gaffer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gchq/gaffer

0.0 0.0 0.0 204.13 MB

A large-scale entity and relation database supporting aggregation of properties

License: Apache License 2.0

Shell 0.12% JavaScript 22.29% Java 77.56% CSS 0.01% HTML 0.03%

gaffer's Introduction

Gaffer

ci codecov Maven Central

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.

Contributing

We welcome contributions to the project.

Quickstart

Open in GitHub Codespaces

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>

This will include all other mandatory dependencies. Other (optional) components can be added to your project as required.

Related repositories

The gafferpy repository contains a python shell that can execute operations.

The gaffer-docker repository contains the code needed to run Gaffer using Docker or Kubernetes.

The koryphe repository contains an extensible functions library for filtering, aggregating and transforming data based on the Java Function API. It is a dependency of Gaffer.

License

Gaffer is licensed under the Apache 2 license and is covered by Crown Copyright.

Copyright 2016-2023 Crown Copyright

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

gaffer's People

Contributors

p013570 avatar m55624 avatar t616178 avatar gaffer01 avatar m607123 avatar d47853 avatar james010101101 avatar gchqdeveloper404 avatar t92549 avatar ac74475 avatar gchqdev404 avatar a09631 avatar gchqdeveloper314 avatar p3430233 avatar d21211122 avatar gchqdev03 avatar m29827 avatar ctas582 avatar gchq-11 avatar tb06904 avatar ak8532110 avatar javadev001001 avatar m316257 avatar nikgil avatar r32575 avatar gchqdeveloper1 avatar cn337131 avatar github-actions[bot] avatar c015dariu avatar dependabot[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.