Intermedio8 min de lectura

ExtendDB: Ejecute DynamoDB API en su base de datos

Digamos que el sistema de reconocimiento de un hospital tiene que permanecer dentro del edificio; los datos del paciente pueden nunca abandone la red local, un auditor aprueba cada dependencia y Las computadoras portátiles de desarrollo no tienen Internet en absoluto. El equipo ya escribió la solicitud. contra el DynamoDB API y le gusta: búsquedas de claves de un solo dígito en milisegundos, modelo de artículo limpio, sin schema migraciones para cuidar niños. Pero DynamoDB administrado es un servicio en la nube, y "enviar los datos a AWS" no es un comienzo aquí.

ExtendDB está diseñado exactamente para esa brecha. habla el DynamoDB protocolo de conexión, pero almacena los datos en una base de datos que usted ejecuta.

¿Qué es ExtendDB?

ExtendDB es el adaptador de código abierto de AWS (escrito en Rust) que implementa el protocolo de conexión DynamoDB JSON sobre una base de datos que usted mismo ejecuta, como PostgreSQL. Sus AWS SDK y los AWS CLI siguen funcionando sin cambios; solo el endpoint. URL movimientos, por lo que obtienes los DynamoDB API sin enviar datos al servicio de nube administrado.

ExtendDB es un adaptador de código abierto de AWS — escrito por AWS DynamoDB ingenieros y anunciado en el AWS Blog de base de datos — que implementa el DynamoDB JSON protocolo de cable en Rust. porque responde lo mismo HTTP API que responde el servicio administrado, sus AWS SDK existentes y el AWS CLI funciona sin cambios. Lo único que se mueve es el endpoint URL — sin reescritura de código, sin nueva biblioteca client.

La parte interesante es lo que se esconde detrás de ese API. ExtendDB tiene conectable backends de almacenamiento: PostgreSQL es la implementación de referencia y Cassandra es citado como otro posible backend. Los nuevos backends son implementado sin modificar el núcleo, por lo que la capa de compatibilidad DynamoDB y la capa de almacenamiento evolucionan de forma independiente.

Entonces una solicitud fluye así:

DynamoDB JSON wire protocollecturas / escriturasTu app (AWS SDK sin cambios)ExtendDB (adaptador Rust)PostgreSQL (tus datos, tu disco)

Qué admite y qué no

Según los documentos de introducción y el anuncio, ExtendDB (v0.1) cubre las operaciones que la mayoría de las aplicaciones realmente llaman:

  • Tablas: crear, eliminar, Describe, listar, actualizar.
  • Elementos: poner, obtener, eliminar, actualizar (incluidos los SET / REMOVE / ADD / DELETE acciones de actualización).
  • Query y Scan — condiciones clave, , proyecciones, paginación e índices secundarios.
  • LoteBatchGetItem y BatchWriteItem.
  • TransactGetItems y TransactWriteItems.
  • , , Importar/Exportar y Etiquetas.

Lo que deliberadamente no implementa es el conjunto de DynamoDB funciones administradas específicas, en particular Tablas globales y replicación entre regiones. Esas son propiedades del servicio administrado. infraestructura global, no de la API superficie, por lo que no se trasladan a una adaptador que usted mismo aloja.

frente a DynamoDB Local

Es posible que ya utilices DynamoDB Local para desarrollo fuera de línea. ese es un solo JAR (o amazon/dynamodb-local imagen de Docker) destinado a pruebas unitarias en uno máquina. ExtendDB tiene como objetivo más amplio que esa herramienta de proceso único: local desarrollo, implementaciones locales, entornos periféricos y aislados, y configuraciones híbridas/multinube en las que desea el DynamoDB API pero los datos residen en infraestructura que usted controla.

vs administrado DynamoDB

Esta es la línea AWS draws explícitamente, y es importante:

ExtendDB no es DynamoDB. Es una implementación compatible, no un reemplazo. para el servicio gestionado. Características de rendimiento, comportamiento de escalado y las propiedades operativas difieren.

Concretamente, cuando ejecuta ExtendDB:

  • Usted es dueño de la disponibilidad y las copias de seguridad de la base de datos. No hay ningún sistema administrado La durabilidad multi-AZ o la recuperación en un punto en el tiempo lo hacen por usted, eso depende de usted. y sus PostgreSoperaciones QL.
  • TLS es obligatorio el endpoint.
  • Las credenciales son similares a IAM pero están separadas de AWS IAM — ExtendDB tiene las suyas propias modelo de credencial; no se autentica en su cuenta AWS.

Es v0.1 y tiene licencia Apache 2.0. Trátelo como un software antiguo: ideal para los entornos anteriores, no un intercambio directo por DynamoDB administrado a escala de producción.

El propio ExtendDB no mide RCU o WCU; la capacidad es su problema de PostgreSQL. cuando las mismas API llamadas llegaron a DynamoDB administradas en us-east-1 bajo demanda, 1 KB PutItem billetes 1 WCU y un 4 KB GetItem billetes 0,5 RCU eventualmente consistente. Compare ExtendDB en cuanto a latencia; utilizar el calculadora de precios para comparar lo que ofrece la nube La factura se vería para el mismo patrón de acceso.

Configuración

ExtendDB se ejecuta en Linux y macOS y necesita Rust 1.85+ y PostgreSQL 14+. El flujo son dos comandos:

extenddb init
extenddb serve

init aprovisiona el schema en su base de datos PostgreSQL; serve inicia el servidor de protocolo inalámbrico, que escucha en un endpoint como https://127.0.0.1:8000 (Se requiere TLS, por lo tanto https).

Apunte el AWS SDK de la misma manera que lo haría con cualquier endpoint personalizado: solo cambian la URL y las credenciales:

import {DynamoDBClient} from '@aws-sdk/client-dynamodb';

const client = new DynamoDBClient({
  endpoint: 'https://127.0.0.1:8000',
  region: 'local',
  credentials: {accessKeyId: '<extenddb-key>', secretAccessKey: '<extenddb-secret>'}
});

Todo lo que pasa más allá de la configuración client — PutItem, Query, TransactWriteItems — es idéntico al código que escribirías en DynamoDB administrado. Un diseño de elemento de tabla única funciona exactamente igual que en la nube:

PKSKtypebackendcreatedAt
TENANT#acmeAUDIT#2026-06-24eventpostgres2026-06-24T09:00:00Z
TENANT#acmeAUDIT#2026-06-24beventpostgres2026-06-24T09:01:12Z
TENANT#betaAUDIT#2026-06-24eventpostgres2026-06-24T09:02:40Z

Hazlo en DynoTable

Debido a que ExtendDB habla el protocolo de cable DynamoDB, no necesita un herramienta de administración para ello: apunte DynoTable en ExtendDB endpoint el de la misma manera que lo conectarías a DynamoDB Local: crear un sin conexión perfil (local) con el puerto ExtendDB y credenciales desechables, y DynoTable explorará, query y editará los elementos, excepto que ahora están respaldados por PostgreSQL en su propio disco en lugar del almacén en memoria de un JAR.

Éste es el beneficio de la compatibilidad con protocolos por cable: SQL Workbench, el constructor visual query y el elemento editar todo el trabajo contra ExtendDB sin cambios, por lo que obtienes una GUI real sobre tu datos autohospedados sin escribir scan scripts.

Una advertencia a tener en cuenta: el endpoint de ExtendDB es solo HTTPS, mientras que el perfil sin conexión de DynoTable (como la mayoría de las configuraciones de DynamoDB Local) apunta a un host:port de loopback. Si su client o sus herramientas necesitan un listener de loopback en texto plano, termine TLS delante de ExtendDB (o ejecute un proxy inverso local) y apunte el GUI en eso: el protocolo en el cable sigue siendo DynamoDB JSON de cualquier manera.

Escollos

  • No trate la versión 0.1 como producción DynamoDB. Escalado, latencia y durabilidad son sus PostgreSQL, no AWS. Punto de referencia para su carga de trabajo ante usted Depende de ello.
  • Sin tablas globales/replicación entre regiones. Si su diseño se basa en multiregión activo-activo, ExtendDB no es la ruta, es un servicio administrado característica.
  • Haga una copia de seguridad de la base de datos subyacente usted mismo. No hay ningún PITR administrado; un el volumen caído PostgreSQL es gobueno. Conecte el archivo pg_dump / WAL como cualquier otro otros PostgreSQL.
  • Las credenciales son propias de ExtendDB, no AWS IAM. No espere IAM políticas, roles o claves de condición para el acceso govern: ese modelo de autorización no trasladar.

Próximos pasos

  • Primero modele sus patrones de acceso: lo mismo diseño de tabla única la disciplina se aplica ya sea el backend es DynamoDB o PostgreSQL-via-ExtendDB.
  • Construya e inspeccione sus lecturas y escrituras con el DynamoDB Generador de expresiones, luego convierta accesorios entre JSON y el formato de cable con el DynamoDB-JSON convertidor.
  • Cuando esté listo para acceder a una instancia activa de ExtendDB, conéctese DynoTable y navegue por ella como cualquier otra tabla.

Actualizado