/db

Fluree database / query server source

Primary LanguageClojureGNU Affero General Public License v3.0AGPL-3.0

Fluree DB

Usage documentation is located at https://docs.flur.ee.

Overview

Fluree is an immutable, temporal, ledger-backed semantic graph database that has a cloud-native architecture.

This repository is a stateless database as a library and designed to be utilized in conjunction with the Fluree Ledger which maintains all state. This database can be run in containers and dynamically scale to any desired load, can be embedded inside of your applications (Clojure, NodeJS for now) or can run as a stand-alone JVM service.

This database can also be built as a web-worker, and be embedded inside the browser. Thus far, a React Wrapper (Beta) has been developed that allows you to create real-time apps by wrapping your React components with queries (GraphQL or FlureeQL).

It is also possible to run Fluree in a "serverless" manner, where by utilizing Fluree SmartFunctions to embed data security along side your data (Data Defending Itself), you can have a permissioned application with just a single-page application (i.e. React) and Fluree Ledgers, but no application server.

Fluree includes time travel, allowing you to instantly query as of any historical moment in time, and even allows the abilty to stage proposed transactions to time travel into the future, to a hypothesized version of your data.

The best way to get started with Fluree is to go to the Getting Started page at https://flur.ee/getstarted/.

Development

Contributing

All contributors must complete a Contributor License Agreement. To learn more about CLAs, visit https://en.wikipedia.org/wiki/Contributor_License_Agreement.

Prerequisites

  1. Install clojure tools-deps
    1. macOS: brew install clojure/tools/clojure
    2. Arch Linux: pacman -S clojure

Building

  1. make deps - install all local dependencies
  2. make or make jar - make Java .jar file
  3. make nodejs - make JavaScript Fluree DB
  4. make browser - make JavaScript WebWorker Fluree DB
  5. make clean - clean all build directories/files
  6. make install - install jar file into local .m2/maven

Deploying

  1. Make sure you've setup everything in the Prerequisites section above.
  2. Install maven
    1. macOS: brew install maven
  3. Set the version number in pom.xml
  4. Run make deploy