DynamoDB API · FoundationDB core
The DynamoDB API,
on FoundationDB.
fdyno speaks the DynamoDB wire protocol and stores every item, secondary index, and change record in FoundationDB. Point any AWS SDK at it: the request format, data types, and error responses follow DynamoDB, and the engine underneath is FoundationDB's strictly serializable ACID transactions.
fdyno is a DynamoDB-compatible database. It exposes the DynamoDB HTTP API and keeps all data (items, table schema, secondary indexes, change streams, backups, tags, and TTL configuration) in a FoundationDB cluster. Applications use the same SDKs, queries, and access patterns they use with DynamoDB.
The DynamoDB wire protocol, request format, SigV4 auth, and error shapes. Existing AWS SDKs, the CLI, and tooling connect without code changes.
Base items, global indexes, and local indexes are written in a single ACID transaction. A secondary index reflects a write the moment it commits.
All durable state lives in FoundationDB. A server holds none, so instances can be restarted or scaled out behind a load balancer and share one view.
FoundationDB tuples preserve DynamoDB's S/N/B sort order. Change records are written with commit-time versionstamps in the same transaction as the data.
In one minute¶
import boto3
ddb = boto3.client(
"dynamodb",
endpoint_url="http://localhost:8000",
region_name="us-east-1",
aws_access_key_id="local",
aws_secret_access_key="local",
)
ddb.create_table(
TableName="users",
AttributeDefinitions=[{"AttributeName": "id", "AttributeType": "S"}],
KeySchema=[{"AttributeName": "id", "KeyType": "HASH"}],
BillingMode="PAY_PER_REQUEST",
)
ddb.get_waiter("table_exists").wait(TableName="users")
ddb.put_item(TableName="users", Item={"id": {"S": "u1"}, "name": {"S": "Ada"}})