Where does the data live, and who else needs it?
If only your single Python service ever reads or writes,
Embedded is the lowest-friction call. If multiple services need
the same namespace and you want one authoritative endpoint,
Server gives you that network boundary.
Is read fan-out your bottleneck today?namidb-server serialises requests behind a tokio Mutex today
(RFC-021 removes
that). If you need horizontal read scale right now, run multiple
namidb-server processes against the same bucket — each can serve
reads off the same manifest version. Only one will be allowed to
commit writes.
Do you want to operate any infrastructure?Cloud is the right answer when the answer is “no”. Multi-tenant
from day one, scale-to-zero, no flush schedules to tune, no Docker
images to bump.
Are tenants first-class in your app?
Embedded and Server both let you do “one namespace per tenant”
manually. Cloud makes it the unit of billing, isolation, and
scale-to-zero.
You can mix them
Same engine, same bucket layout, same s3://… URI.
A common pattern:
Embedded in your application for the hot read path.
A namidb-server in the same VPC for ad-hoc analytics from a
notebook or a teammate’s laptop, both pointing at the same namespace.
namidb-server will fence the embedded writer if it tries to mutate at
the same time — single-writer-per-namespace is enforced via manifest CAS,
regardless of how the writer was reached.