We're excited to announce OxiDB v0.20.0 — a major release that brings full S3-compatible object storage with AWS Signature V4 authentication, alongside all the document database features you already know.
What's New in v0.20.0
S3-Compatible REST API
OxiDB now ships with a built-in S3-compatible HTTP API. Enable it with a single environment variable (OXIDB_S3_PORT=9000) and use any S3 client — boto3, AWS CLI, MinIO SDK, or any tool that speaks the S3 protocol.
This means you can use OxiDB as a unified data platform: documents via OxiWire/SQL, key-value via OxiMem (RESP), messaging via MQTT, and now object storage via S3 — all in a single binary.
Full S3 Feature Coverage
We didn't just implement the basics. Here's what's supported:
| Category | Operations |
|---|---|
| Buckets | CreateBucket, DeleteBucket, HeadBucket, ListBuckets |
| Objects | PutObject, GetObject, HeadObject, DeleteObject |
| Multipart | CreateMultipartUpload, UploadPart, CompleteMultipartUpload, AbortMultipartUpload |
| Copy | CopyObject with MetadataDirective (COPY/REPLACE), cross-bucket copy |
| Batch | DeleteObjects (POST ?delete) |
| List | ListObjectsV2, prefix, delimiter, CommonPrefixes, MaxKeys |
| Range | Range requests (bytes=start-end, suffix) with 206 Partial Content |
| Conditional | If-Match, If-None-Match with 304/412 responses |
| Tagging | GetObjectTagging, PutObjectTagging, DeleteObjectTagging |
| Auth | AWS Signature V4 (header + presigned URLs) |
| CORS | OPTIONS preflight, Access-Control-Allow-* headers |
| Metadata | x-amz-meta-* round-trip on PUT/GET/HEAD/COPY |
AWS Signature V4 Authentication
Security is not optional. OxiDB's S3 API supports full AWS Signature V4 authentication — the same signing protocol used by AWS. Set two environment variables and every request is cryptographically verified:
OXIDB_S3_ACCESS_KEY=your-access-key
OXIDB_S3_SECRET_KEY=your-secret-key
Features include:
- Header-based authentication (standard Authorization header)
- Presigned URLs (query-string authentication with expiration)
- Constant-time signature comparison (timing-attack resistant)
- HMAC-SHA256 signing chain with per-request key derivation
Performance
We ran our comprehensive test suite with 100 tests across all S3 features. Here are the latency numbers from localhost:
TCP connect : 0.063 ms
TTFB (HeadObject) : 0.204 ms
GET 1 KB total : 0.260 ms
GET 1 MB total : 0.588 ms
GET 10 MB total : 21.9 ms
PUT 10 MB total : 29.6 ms
Sub-millisecond for metadata operations. The release build is significantly faster.
Zero New Dependencies
The entire S3 implementation — HTTP parser, XML response generation, AWS SigV4 verification — is built with zero new crate dependencies. It reuses the existing sha2 and hmac crates that were already in the project for SCRAM-SHA-256 auth.
Feature Flag
S3 support is opt-in via a Cargo feature flag:
cargo build --release -p oxidb-server --features s3
If you don't need S3, your binary stays exactly the same size as before.
Quick Start
# Build with S3 support
cargo build --release -p oxidb-server --features s3
# Start with S3 on port 9000
OXIDB_S3_PORT=9000 OXIDB_S3_ACCESS_KEY=mykey OXIDB_S3_SECRET_KEY=mysecret ./oxidb-server
# Use with boto3
import boto3
s3 = boto3.client("s3",
endpoint_url="http://localhost:9000",
aws_access_key_id="mykey",
aws_secret_access_key="mysecret")
s3.create_bucket(Bucket="my-bucket")
s3.put_object(Bucket="my-bucket", Key="hello.txt",
Body=b"Hello from OxiDB!")
Other Changes
- All packages bumped to v0.20.0 (Rust crates, Python PyPI, .NET NuGet, CLI)
- OxiMem (Redis-compatible layer) stability improvements
- MQTT v3.1.1 cross-protocol pub/sub with OxiMem
Downloads
- PyPI:
pip install oxidb==0.20.0orpip install oxidb-embedded==0.20.0 - NuGet: OxiDb.Client.Tcp, OxiDb.Client.Embedded, OxiDb.EntityFrameworkCore (0.20.0)
- Source: Build from source with
cargo build --workspace --release
OxiDB v0.20.0 — one database, every protocol.
Discussion 0
No comments yet. Start the conversation.