What is a key-value database on object storage?
It retrieves values by key while using an object or blob store as the durable storage layer.
Store durable key-value data directly in object storage. Readers scale independently; compaction runs on separate compute.
Everything IsleDB stores lives under one prefix in your bucket. The writer, readers, and maintenance are just processes: stop them, move them, or add more, and the data stays where it is. Run them as HTTP services, or embed IsleDB in your Go program.
Run a writer and a reader with Docker and use them over HTTP, or embed IsleDB in a Go program.
# a writer on :8070, a reader on :8080, and an S3-compatible store
curl -O https://raw.githubusercontent.com/ankur-anand/isledb/main/examples/services/compose.yaml
docker compose up -d
curl -X PUT --data 'hello' localhost:8070/v1/kv/greeting
curl localhost:8080/v1/kv/greeting # hello
// go get github.com/ankur-anand/isledb
db, err := isledb.Open(ctx, "s3://my-bucket?region=us-east-1",
isledb.DBOptions{Prefix: "prod/users"})
w, err := db.OpenWriter(ctx, isledb.DefaultWriterOptions())
_, err = w.Put(ctx, []byte("greeting"), []byte("hello"))
err = w.Flush(ctx)
r, err := db.OpenReader(ctx, isledb.DefaultReaderOpenOptions("./cache"))
value, found, err := r.Get(ctx, []byte("greeting"))
Turn on the change feed and IsleDB keeps every committed put and delete, in order. Each consumer reads it a page at a time, saves its place, and resumes from there later, on any reader, over HTTP or in Go. Use it to keep a cache, a search index, or another system in sync.
Deploy on AWS, Google Cloud, Azure, private S3-compatible storage, or local files without changing how your application writes, reads, scans, or consumes changes.
| Object store | Bucket URL | Notes |
|---|---|---|
Key-value database on Amazon S3 | s3://bucket?region=… | Keep the database under one S3 bucket prefix or use an S3-compatible service. |
Key-value database on GCS | gs://bucket | Use Google Cloud Storage for durable KV data shared by many readers. |
Key-value database on Azure Blob | azblob://container | Store the database in an Azure Blob container with the same API. |
MinIO and file-backed storage | s3://…?endpoint=…file:///path | Develop locally or use an S3-compatible private cloud with one data model. |
IsleDB favors large, durable, append-shaped workloads where shared storage and independently scalable compute matter more than single-digit millisecond latency.
IsleDB keeps durable database state in your bucket, and serves it over HTTP or inside your Go program.
It retrieves values by key while using an object or blob store as the durable storage layer.
Yes. The isledb writer and reader services take writes and serve reads, scans, and the change feed over HTTP.
Yes. Go programs can also embed it, with native writer, reader, change-feed, and maintenance APIs.
Yes. A maintenance process can perform compaction on separate compute against the shared database.
Yes. Choose the matching bucket URL and credentials while keeping the same database API.
Choose a transactional serving database for sub-10ms latency, joins, or multi-key transactions.
Run a writer and readers with Docker and use them over HTTP, or embed IsleDB in your Go program. The guide walks through both in a few minutes.