Snowflake-Labs/foundationdb
forked from apple/foundationdb
Captured source
source ↗Snowflake-Labs/foundationdb
Description: FoundationDB - the open source, distributed, transactional key-value store
License: Apache-2.0
Stars: 0
Forks: 0
Open issues: 0
Created: 2026-10-12T05:54:55Z
Pushed: 2026-10-12T03:09:43Z
Default branch: main
Fork: yes
Parent repository: apple/foundationdb
Archived: no
README:
FoundationDB is a distributed database designed to handle large volumes of structured data across clusters of commodity servers. It organizes data as an ordered key-value store and employs ACID transactions for all operations. It is especially well-suited for read/write workloads, but also has excellent performance for write-intensive workloads. Users interact with the database using API language bindings.
To learn more about FoundationDB, visit foundationdb.org
Documentation
Documentation can be found online at . The documentation covers details of API usage, background information on design philosophy, and extensive usage examples. Docs are built from the [source in this repo](documentation/sphinx/source).
Forums
The FoundationDB Forums are the home for most of the discussion and communication about the FoundationDB project. We welcome your participation! We want FoundationDB to be a great project to be a part of, and as part of that, we have established a Code of Conduct to define what constitutes permissible modes of interaction.
Contributing
Contributions to FoundationDB can include contributions to the codebase, sharing your experience and insights with the community on the Forums, or contributing to projects that make use of FoundationDB. Please see the [contributing guide](CONTRIBUTING.md) for more specifics.
Getting Started
Latest Stable Releases
The latest stable releases are versions that are recommended for production use, which have been extensively validated via simulation and real cluster tests and used in our production environment.
| Branch | Latest Production Release | Notes | |:--------:|:-------------:|------:| | 7.3 | 7.3.77 | Supported | | 7.2 | | Experimental | | 7.1 | 7.1.57 | Bug fixes | | 7.0 | | Experimental | | 6.3 | 6.3.25 | Unsupported |
Supportedbranches are those we actively maintain and will publish new patch releases.Bug fixesare branches where we still accept bug fixes, but may not publish newer patch releases. The community can build the latest release binaries if needed and is encouraged to upgrade to theSupportedbranches.Experimentalbranches are those used for internal feature testing. They are not recommended for production use.Unsupportedbranches are those that will no longer receive any updates.
If you are running on old production releases, we recommend always upgrading to the next major release's latest version, and then continuing to the next major version, e.g., 6.2.X -> 6.3.25 -> 7.1.57 -> 7.3.69. These upgrade paths have been well tested in production (skipping a major release, not marked as Experimental, for an upgrade is only tested in simulation).
Binary Downloads
Developers interested in using FoundationDB can get started by downloading and installing a binary package. Please see the downloads page for a list of available packages.
Compiling from source
Developers on an OS for which there is no binary package, or who would like to start hacking on the code, can get started by compiling from source.
NOTE: FoundationDB has a lot of dependencies. The Docker container listed below tracks them and is what we use internally and is the recommended method of building FDB.
Build Using the Official Docker Image
The official Docker image for building is `foundationdb/build`, which includes all necessary dependencies. The Docker image definitions used by FoundationDB team members can be found in the dedicated repository.
To build FoundationDB with the clang toolchain,
mkdir /some/build_output_dir cd /some/build_output_dir CC=clang CXX=clang++ LD=lld cmake -D USE_LD=LLD -D USE_LIBCXX=1 -G Ninja /some/fdb/source_dir ninja
To use GCC, a non-default version is necessary. The following modifies environment variables ($PATH, $LD_LIBRARY_PATH, etc) to pick up the right GCC version:
source /opt/rh/gcc-toolset-13/enable gcc --version # should say 13 mkdir /some/build_output_dir cd /some/build_output_dir cmake -G Ninja /some/fdb/source_dir ninja
Slightly more elaborate compile commands can be found in the shell aliases defined in /root/.bashrc in the container image.
Build Locally
To build outside of the official Docker image, you'll need at least these dependencies:
1. CMake version 3.24.2 or higher 1. Mono 1. ninja
This list is likely to be incomplete. Refer to the rockylinux9 Dockerfile in the fdb-build-support repo linked above for reference material on specific packages and versions that are likely to be required.
If compiling for local development, please set -DUSE_WERROR=ON in CMake. Our CI compiles with -Werror on, so this way you'll find out about compiler warnings that break the build earlier.
Once you have your dependencies, you can run cmake and then build:
1. Check out this repository. 1. Create a build directory (you can place it anywhere you like). 1. cd 1. cmake -G Ninja 1. ninja
Building FoundationDB requires at least 8GB of memory. More memory is needed when building in parallel. If the computer freezes or crashes, consider disabling parallelized build using ninja -j1.
FreeBSD
1. Check out this repo on your server.
1. Install compile-time dependencies from ports.
1. (Optional) Use tmpfs & ccache...
Excerpt shown — open the source for the full document.