Saltearse al contenido

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&region=us-east-1")
let (store, paths) = parse_uri("s3://my-bucket/data?ns=prod&region=us-east-1")?;

Credenciales

Las credenciales se leen de las env vars estándar de AWS:

Ventana de terminal
export AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=...
export AWS_SESSION_TOKEN=... # si se usan credenciales temporales
export AWS_DEFAULT_REGION=us-east-1

Los 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-server por 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.

Ver también