{"id":18257823,"url":"https://github.com/janusgraph/janusgraph-foundationdb","last_synced_at":"2025-07-04T19:33:26.172Z","repository":{"id":49083614,"uuid":"147850769","full_name":"JanusGraph/janusgraph-foundationdb","owner":"JanusGraph","description":"FoundationDB storage adapter for JanusGraph","archived":false,"fork":false,"pushed_at":"2021-06-29T11:55:32.000Z","size":109,"stargazers_count":57,"open_issues_count":20,"forks_count":19,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-04-04T18:38:52.655Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JanusGraph.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-07T16:48:04.000Z","updated_at":"2025-03-16T05:00:43.000Z","dependencies_parsed_at":"2022-09-18T14:13:28.019Z","dependency_job_id":null,"html_url":"https://github.com/JanusGraph/janusgraph-foundationdb","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/JanusGraph/janusgraph-foundationdb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JanusGraph%2Fjanusgraph-foundationdb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JanusGraph%2Fjanusgraph-foundationdb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JanusGraph%2Fjanusgraph-foundationdb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JanusGraph%2Fjanusgraph-foundationdb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JanusGraph","download_url":"https://codeload.github.com/JanusGraph/janusgraph-foundationdb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JanusGraph%2Fjanusgraph-foundationdb/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263606750,"owners_count":23487690,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T10:27:50.106Z","updated_at":"2025-07-04T19:33:26.154Z","avatar_url":"https://github.com/JanusGraph.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FoundationDB Storage Adapter for JanusGraph\n\n[![Downloads][downloads-shield]][downloads-link]\n[![Build Status][actions-shield]][actions-link]\n\n[actions-shield]: https://img.shields.io/github/workflow/status/JanusGraph/janusgraph-foundationdb/TESTS\n[actions-link]: https://github.com/JanusGraph/janusgraph-foundationdb/actions\n[downloads-shield]: https://img.shields.io/github/downloads/JanusGraph/janusgraph-foundationdb/total.svg\n[downloads-link]: https://github.com/JanusGraph/janusgraph-foundationdb/releases\n\n[JanusGraph](http://janusgraph.org) is an [Apache TinkerPop](http://tinkerpop.apache.org) enabled graph database that supports a variety of storage and indexing backends. This project adds [FoundationDB](http://foundationdb.org) to the supported list of backends. FoundationDB is a distributed, ACID key-value store.\n\n# Features\n\nJanusGraph, coupled with the FoundationDB storage adapter provides the following unique features:\n\n* High availability\n* ACID transactions\n\n# Compatibility Matrix\n\n|FDB Storage Adapter|JanusGraph|FoundationDB|\n|-:|-:|-:|\n|0.1.0|0.5.2|6.2.22|\n\n# Getting started\n\nThe FoundationDB storage adapter requires a single FoundationDB instance or cluster and the FoundationDB client libraries. Downloads for server and client can be found [here](https://apple.github.io/foundationdb/downloads.html).\n\n## Setting up FoundationDB\n\nMac install instructions can be found [here](https://apple.github.io/foundationdb/getting-started-mac.html) and Linux [here](https://apple.github.io/foundationdb/getting-started-linux.html).\n\n## Installing the adapter from a binary release\nBinary releases can be found on [GitHub](http://github.com/JanusGraph/janusgraph-foundationdb/releases).\n\nThis installation procedure will copy the necessary libraries, properties, and Gremlin Server configuration files into your JanusGraph installation.\n\n1. Download the JanusGraph [release](https://github.com/JanusGraph/janusgraph/releases) that is compatible up with the FoundationDB storage adapter.\n2. Download the desired FoundationDB storage adapter release.\n3. Unzip the storage adapter zip file and run `./install.sh $YOUR_JANUSGRAPH_INSTALL_DIRECTORY`\n\nAssuming you have a FoundationDB cluster up and running, you can connect from the Gremlin console by running:\n\n`gremlin\u003e graph = JanusGraphFactory.open('conf/janusgraph-foundationdb.properties')`\n\nTo start Gremlin Server run `gremlin-server.sh` directly or `bin/janusgraph.sh start` which will also start a local Elasticsearch instance.\n\n## Installing from source\n\nFollow these steps if you'd like to use the latest version built from source.\n1. Clone the repository.\n    `git clone http://github.com/JanusGraph/janusgraph-foundationdb`\n2. Build the distribution package.\n    `mvn package -DskipTests`\n3. Follow the binary installation steps starting at step 3.\n\n# Configuration Options\n\n|Property|Description|Default|\n|-|-|-|\n|`storage.fdb.directory`|Name of the JanusGraph storage directory in FoundationDB.|`janusgraph`|\n|`storage.fdb.version`|The FoundationDB client version.|`5.2.0`|\n|`storage.fdb.cluster-file-path`|The location of the `fdb.cluster` file.|`/etc/foundationdb/fdb.cluster`|\n|`storage.fdb.isolation-level`|The three options are `serializable`, `read_committed_no_write`, and `read_committed_with_write`.|`serializable`|\n|`storage.fdb.get-range-mode`|The two options are `list` and `iterator`.|`list`|\n\n## Isolation Levels\nFoundationDB provides serializable isolation under a specific set of [constraints](https://apple.github.io/foundationdb/known-limitations.html#current-limitations). Namely transactions will fail if they take longer than 5 seconds or read/write more than 10,000,000 bytes. This adapter allows the user to relax the how JanusGraph uses FoundationDB transactions and to spread a single JanusGraph transaction over more than one FoundationDB transaction. `read_committed_no_write` allows reads to be spread across more than one transasction, but will fail any writes that are attempted outside of the first transaction period. `read_committed_with_write` allows reads and writes to extend over more than one single transaction. If this option is selected, invariants may be broken and the system will behave similarily to an eventually consistent system.\n\n## GetRange Modes\nFoundationDB provides asynchronous iterator for [range query](https://apple.github.io/foundationdb/developer-guide.html#range-reads), with the following advantages compared to synchronous iterator: on-demand data stream pulling, better memory efficiency, and better thread parallelism management to support MultiQuery in JanusGraph. When the `get-range-mode` is chosen with option of `iterator`, asynchronous iterator is turned on. The default option of `get-range-mode` is `list` currently, with which synchronous iterator is chosen.\n\nThe `get-range-mode` and the isolation level can be chosen independently in the storage plugin's configuration options.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjanusgraph%2Fjanusgraph-foundationdb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjanusgraph%2Fjanusgraph-foundationdb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjanusgraph%2Fjanusgraph-foundationdb/lists"}