AWS S3
AWS S3 es el camino principal para NamiDB. El motor fue diseñado contra las semánticas de conditional-write de S3; cada otro backend compatible con S3 (R2, MinIO, LocalStack, Tigris) se valida contra la misma suite de tests.
Abrir un namespace
import namidb as tg
client = tg.Client("s3://my-bucket/data?ns=prod®ion=us-east-1")let (store, paths) = parse_uri("s3://my-bucket/data?ns=prod®ion=us-east-1")?;Credenciales
Las credenciales se leen de las env vars estándar de AWS:
export AWS_ACCESS_KEY_ID=AKIA...export AWS_SECRET_ACCESS_KEY=...export AWS_SESSION_TOKEN=... # si se usan credenciales temporalesexport AWS_DEFAULT_REGION=us-east-1Los roles IAM en EC2 / EKS / Lambda / ECS funcionan de forma
transparente — no hay auth específica de NamiDB que cablear. El crate
object_store de Rust usa la provider chain estándar.
El region=… del query-string sobrescribe AWS_DEFAULT_REGION.
Permisos IAM
Los permisos IAM mínimos que NamiDB necesita sobre el bucket:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::my-bucket/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::my-bucket" } ]}Eso es todo. Sin tabla de locks en DynamoDB. Sin servicio separado de metadata.
Consideraciones cross-region
- Elegir la región más cercana a los lectores. La latencia de GET cross-region es el factor dominante en el tiempo de cold-read.
- Los caches de NamiDB (RFC-018, RFC-019, RFC-020) ocultan la mayor parte del costo para working sets calientes.
- Para réplicas de lectura multi-region, correr un
namidb-serverpor región apuntado al mismo bucket — solo uno va a tener permitido commitear escrituras; el resto sirve lecturas.
Variables de costo
- Storage: clase de storage S3 estándar. Los tenants fríos pueden moverse a S3 Intelligent-Tiering o Glacier IR (aplica latencia de re-warmup).
- Egress: NamiDB emite solo tantos GETs como requiera el working set. Los cache hits no cuestan nada.
- Requests: las escrituras hacen 1 PUT de WAL + 1 PUT de manifest por commit batch. La compaction agrega PUTs de fondo.