Ecto FoundationDB Adapter

CI

EctoFoundationDB makes using FoundationDB in Elixir easy.

We provide an Ecto Adapter for FoundationDB, written using foundationdb-beam/erlfdb as the driver for communicating with FoundationDB. As FDB is a distributed key-value store, higher level data models are implemented as client-side Layers. EctoFDB is a sophisticated layer that implements the Ecto API.

Design principles

EctoFDB keeps the control in the developer's hands. You know exactly how you want to access your data, and you want predictable query performance. We map the Ecto operations to the FDB API in a predictable and well-documented fashion, so you can maintain full control. You won't be caught by surprise by any slow queries.

And if you need to dive into raw key-value operations, it's right there for you, right alongside your Ecto Schemas in the same transaction.

Key features

Installation

Install the latest stable release of FoundationDB from the official FoundationDB Releases.

The foundationdb-server package is required on any system that will be running a FoundationDB server instance. For example, it's common to run the foundationdb-server on your development machine and on managed instances running a FoundationDB cluster, but not for your stateless Elixir application server in production.

foundationdb-clients is always required.

Include :ecto_foundationdb in your list of dependencies in mix.exs:

defp deps do
  [
    {:ecto_foundationdb, "~> 0.7"}
  ]
end

Usage

See the documentation for usage information.

Development Philosophy & AI Disclosure

This project is Human-Architected. While we leverage modern tools, over 90% of this codebase is written manually, with a strict focus on intentional logic and security over high-speed generation. AI is used sparingly (less than 10%) as a specialized tool for boilerplate and syntax completion—never for core architecture or decision-making. In fact, in the spirit of full transparency, we’ll acknowledge the irony: this very paragraph is one of the few pieces of AI-assisted content in this repository. It was used here to ensure this disclosure is as clear and professional as possible, while the code it describes remains a product of human craftsmanship.