What TessariDB S3 is
An S3-compatible object store in Rust whose bytes live on the storage nodes' drives and whose every bucket, key, version and policy is a TessariDB record.
TessariDB S3 is an object store that answers the S3 API. Unmodified S3 clients
(the AWS CLI, the AWS SDKs, rclone, backup tools) talk to it as they would talk to S3.
It keeps two kinds of state in two places, on purpose:
- Facts live in TessariDB. Buckets, object versions, multipart uploads, bucket policies, users, cluster membership and the console's action record are records in a TessariDB database. The listing order, conditional writes and the commit of an object are that database's indexes and transactions, not a second store kept beside it.
- Bytes live on the nodes' drives. Every object, whatever its size, is written to data files in 1 MiB blocks with a BLAKE3 hash per block that is checked on every read. On a cluster the bytes are erasure-coded across the nodes. None of them ever enters the metadata store.
[!NOTE] TessariDB S3 is pre-alpha. The behaviour on these pages is what the server does today; anything it does not do yet is said where the feature is described.
What it promises
- An operation it does not implement is refused with
NotImplemented, never routed to a neighbouring operation. Each of the 116 operations of the S3 model is tested for this. - Every signature and declared checksum is verified before a write is acknowledged, and each checksum is stored so a read can return it.
- Strong read-after-write, for listings too, with keys in byte-wise UTF-8 order and continuation tokens that neither skip nor repeat a key.
- A write is acknowledged only when it is durable on its quorum, with its data and its metadata committed together.
The pages in this section
- Running it: one compose file, and the first bucket.
- Configuration: every setting the server reads.
- Clusters: erasure sets, zones, quorums, healing, admission.
- The S3 surface: what is implemented, operation by operation.
- Events, lifecycle and media: notifications, expiry and renditions.
- The console: the operator console and its API.
- Security: what is verified, and where.
- The Rust client and the command line.
Licences
The server is BUSL-1.1: production use is free, including commercial use; providing it to third parties as an object storage service, or selling it, needs a commercial licence. The Rust client and the command line are Apache-2.0 and depend on the S3 protocol, never on the server's code.