Features

What hoardDB does today, each statement with its source.

What is built

Six store engines: hash, b-tree, FIFO, LIFO, heap and blob. The engine is chosen when the bucket is created.

An engine cannot be changed after the bucket is created, and indexes are declared at creation time.

Evidence: cli/store_types.go:storeTypes· cli/unsupported_features.go:errAlterBucket

Each engine is a different way to read: hash by key, b-tree in key order, FIFO oldest first, LIFO newest first, heap by priority, blob as bytes.

Evidence: cli/store_types.go:storeTypes· store/heap.go:PopItem

Placement is a consistent hash ring keyed by xxHash64. Membership is declarative — there are no elections and no arbiters.

No elections is the same fact as no automatic promotion: losing a node needs an operator.

Evidence: ring/ring.go:Owner· ring/ring.go:AddNode· ring/hasher.go:Sum64

The database is one binary. There is no sidecar and no separate indexer process.

The CLI is a second binary, and it is a client rather than a component of the database.

Evidence: Makefile:build-server· cmd/server/main.go:main

hoardDB-server starts with no arguments and no configuration file.

Evidence: config/config.go:DefaultConfig· TestNoArgumentStartPathInTempDir

On first start it generates a self-signed TLS keypair and serves over TLS.

The certificate is self-signed: a first client connection trusts it on first use and records its fingerprint. It is not a CA-issued certificate.

Evidence: transport/transport.go:LoadOrCreateKeys· transport/transport.go:GenerateEd25519Keys

Authentication is always required. There is no flag that turns it off.

The CLI's -insecure flag is a client-side TLS verification bypass. It is not a server authentication switch, and there is no server-side equivalent.

Evidence: server/auth.go:NewCredential· server/authz.go:authorize

A root credential is generated on the first start and written to ./data/root.password at mode 0600.

Evidence: server/authkey.go:LoadOrCreateRootPassword· proof/five-minute-path.out

Passwords are hashed with Argon2id.

Evidence: server/auth.go:NewCredential

Replication is in the binary and free: replication factor, write-ahead log, and a write concern of one, majority or all.

hoardDB never promotes or removes a node automatically. Losing a node needs an operator. Replication is off until a replication factor above one is configured.

Off by default Evidence: config/config.go:ReplicationFactor· storage/wal.go:WAL· server/write_concern.go:WriteConcernLevel· docs/user/limitations.md#cluster

Audit logging is in the server and free.

It is off by default — turn it on in the configuration.

Off by default Evidence: server/audit.go:AuditLogger· config/config.go:AuditConfig

Users, roles and per-database grants are persisted and enforced.

A role change applies at the next authentication, not to a connection that is already open.

Evidence: server/authz.go:roleSatisfies· server/users.go:LoadUsersConfig

dump and restore write ordinary BSON that other tools can read.

Blob payloads and user accounts are not included in a dump.

Evidence: cli/dump.go:RunDumpCommand· cli/dump.go:RunRestoreCommand

hoardDB is not MongoDB wire-compatible and does not aim to be. HQL is inspired by MongoDB's syntax; it is a different language.

Evidence: cli/parser.go:ParseCommand

What MongoDB's documentation says

Quoted from MongoDB's own documentation, linked and dated.

What is not here

What it does not do yet is on Limitations. What is planned, and what is not planned, is on the Roadmap.