ExtendDB — The DynamoDB API, everywhere you run code.
Skip to main content
Run DynamoDB workloads anywhere
An open source adapter that speaks the DynamoDB wire protocol and stores data in the backend you choose.
Same SDKs. Same code. Your infrastructure.
Get started on GitHub<br>View source
Maintained by<br>AWS
put_item.py
Cloud DynamoDB
import boto3
ddb = boto3.client(<br>'dynamodb',<br>region_name='us-east-1',
ddb.put_item(<br>TableName='Orders',<br>Item={'OrderId':<br>{'S': '1001'}},
ExtendDB, anywhere
import boto3
ddb = boto3.client(<br>'dynamodb',<br>region_name='us-east-1',<br>endpoint_url=<br>'http://localhost:8000',
ddb.put_item(<br>TableName='Orders',<br>Item={'OrderId':<br>{'S': '1001'}},
Why ExtendDB<br>One API, your infrastructure
Write once, run anywhere
The same code runs against ExtendDB and the DynamoDB service. Endpoint configuration is the only change.
Pluggable storage
PostgreSQL for the enterprise. Cassandra for scale. Community backends welcome.
Apache 2.0
Open source, open governance, explicit patent grant. Fork it, run it anywhere.
How it works<br>An adapter, not a database
ExtendDB architecture diagram<br>A DynamoDB client sends API requests to ExtendDB. ExtendDB translates each request and routes it to a pluggable storage backend such as Apache Cassandra, PostgreSQL, or other backends.
Your app<br>Any DynamoDB SDK
ExtendDB<br>API adapter
Cassandra<br>pluggable
PostgreSQL<br>reference backend
Other backends<br>pluggable
ExtendDB
reference backend
pluggable
A DynamoDB client sends API requests to ExtendDB. ExtendDB translates each request and routes it to a pluggable storage backend.
ExtendDB speaks the DynamoDB wire protocol and delegates persistence to the backend you choose. Applications use any DynamoDB SDK; endpoint configuration is the only change.
PostgreSQL is the reference backend, validated against the full ExtendDB test suite. Cassandra and other community backends plug in through the same public interface. Supported operations include CRUD, Query, Scan, batch, transactions, Streams, expressions, and TTL.
Use cases<br>Why teams pick ExtendDB
Develop locally
High-fidelity DynamoDB API on your laptop. No network, no AWS account.
Local dev<br>CI / integration tests<br>Offline
Standardize across cloud and data center
Run the DynamoDB API on databases your team already operates, with no new dependency.
On-prem<br>Hybrid cloud<br>Pluggable backends
Ship to disconnected environments
Runs at factories, stores, vehicles, and remote sites without dependence on cloud connectivity.
Edge<br>Air-gapped<br>Intermittent network
FAQ<br>Frequently asked questions
What is ExtendDB?
ExtendDB is a DynamoDB-compatible API adapter that runs on infrastructure you manage. It accepts the same requests a DynamoDB client sends to the service and delegates data persistence to a pluggable storage backend. PostgreSQL is the reference backend, with Apache Cassandra and other backends supported through the same pluggable interface. ExtendDB ships under the Apache 2.0 license.
How is ExtendDB different from the DynamoDB service?
The DynamoDB service is fully managed and operated by AWS in AWS Regions. ExtendDB implements the DynamoDB API on infrastructure you run yourself, which extends the programming model to local development, on-premises data centers, and edge locations. ExtendDB is wire-protocol compatible with the service. Features tied to fully managed operations such as global tables, auto-scaling, backup and restore, and DAX are not available in a self-hosted deployment.
What storage backends are supported?
At launch, ExtendDB ships with PostgreSQL as the reference backend, feature-complete and validated against the full ExtendDB test suite. The storage backend is defined as an interface, so additional backends (Apache Cassandra, MySQL, and more) can be added by the community without modifying ExtendDB itself. You can switch between backends as your needs change.
Is ExtendDB open source?
Yes. ExtendDB is released under the Apache 2.0 license, the same license used by AWS CDK, Firecracker, and Bottlerocket. Apache 2.0 provides an explicit patent grant and permits use, modification, and redistribution.
Do I need to change my application code?
No. Supported operations accept the same HTTP request format and return the same response structures that DynamoDB clients use with the service. Your existing application code works without modification for any supported operation. This includes AWS SDKs (JavaScript, Python, Java, Go, and others) and higher-level libraries that wrap them (PynamoDB, Dynamoose, DynamoDB Toolbox, awswrangler) because they delegate to the underlying SDK for HTTP communication. You change the endpoint configuration and nothing else.
How does performance compare to cloud DynamoDB?
Performance depends on your infrastructure sizing and storage backend choice. With PostgreSQL on appropriately sized instances, single-item operations achieve sub-10ms latency for reads and writes. With Apache Cassandra as the backend,...