Notas sobre el uso local de DynamoDB
Excepto en lo tocante al punto de enlace, las aplicaciones que se ejecutan con la versión descargable de Amazon DynamoDB en el sistema deberían funcionar también con el servicio web de DynamoDB. Sin embargo, si utiliza DynamoDB localmente, debe tener en cuenta lo siguiente:
-
Si utiliza la opción
-sharedDb
, DynamoDB crea un único archivo de base de datos denominado shared-local-instance.db. Todos los programas que se conectan con DynamoDB obtienen acceso a este archivo. Si elimina el archivo, perderá todos los datos que haya guardado en él. -
Si omite
-sharedDb
, el archivo de base de datos recibirá el nombre myaccesskeyid_region.db, con el ID de clave de acceso de AWS y la región de AWS que aparecen en la configuración de la aplicación. Si elimina el archivo, perderá todos los datos que haya guardado en él. -
Si usa la opción
-inMemory
, DynamoDB no escribe ningún archivo de base de datos. En lugar de ello, todos los datos se escriben en la memoria y ninguno de ellos se guarda cuando cierra DynamoDB. -
Si utiliza la opción
-inMemory
, también será necesaria la opción-sharedDb
. -
Si utiliza la opción
-optimizeDbBeforeStartup
, también debe especificar el parámetro-dbPath
para que DynamoDB pueda encontrar el archivo de base de datos. -
Los SDK de AWS para DynamoDB requieren que se especifiquen en la configuración de la aplicación un valor de clave de acceso y un valor de región de AWS. A no ser que utilice la opción
-sharedDb
o-inMemory
, DynamoDB usará estos valores para asignar el nombre al archivo de base de datos local. Estos valores no tienen que ser valores de AWS válidos para la ejecución local. Sin embargo, tal vez le convenga utilizar valores válidos para que pueda ejecutar el código en la nube más adelante cambiando simplemente el punto de enlace que esté utilizando. -
DynamoDB local siempre devuelve un valor nulo para
billingModeSummary.
-
AWS_ACCESS_KEY_ID
de DynamoDB local solo puede contener letras (A-Z, a-z) y números (0-9). -
DynamoDB local no admite la recuperación en un momento dado (PITR).
Temas
Opciones de línea de comandos
Puede usar las siguientes opciones de línea de comandos con la versión descargable de DynamoDB:
-
-cors
value
: habilita la compatibilidad con el uso compartido de recursos entre orígenes (CORS, por sus siglas en inglés) para JavaScript. Debe proporcionar una lista de dominios específicos "permitidos" separados por comas. El ajuste predeterminado para-cors
es el asterisco (*), que permite el acceso público. -
-dbPath
value
: directorio donde DynamoDB escribe el archivo de base de datos. Si no especifica esta opción, el archivo se escribe en el directorio actual. Puede especificar tanto-dbPath
como-inMemory
a la vez. -
-delayTransientStatuses
: hace que DynamoDB presente retardos para algunas operaciones. DynamoDB (versión descargable) puede realizar algunas tareas casi instantáneamente, como operaciones de creación, actualización y eliminación en tablas e índices. Sin embargo, el servicio de DynamoDB requiere más tiempo para estas tareas. El establecimiento de este parámetro ayuda a que DynamoDB ejecutándose en su ordenador simule mejor el comportamiento del servicio web de DynamoDB. En la actualidad, este parámetro introduce retardos solo para los índices secundarios globales que se encuentran en el estado CREATING o DELETING. -
-help
: imprime un resumen de uso y las opciones posibles. -
-inMemory
: DynamoDB se ejecuta en memoria, en lugar de usar un archivo de base de datos. Cuando detenga DynamoDB, no se guardará ninguno de los datos. Puede especificar tanto-dbPath
como-inMemory
a la vez. -
-optimizeDbBeforeStartup
: optimiza las tablas de la base de datos subyacente antes de iniciar DynamoDB en el ordenador. Si utiliza este parámetro, también debe especificar-dbPath
. -
-port
value
: número de puerto que DynamoDB utiliza para comunicarse con la aplicación. Si no especifica esta opción, el puerto predeterminado es8000
.nota
De manera predeterminada, DynamoDB usa el puerto 8000. Si el puerto 8000 no está disponible, este comando genera una excepción. Puede usar la opción
-port
para especificar otro número de puerto. Para obtener una lista completa de opciones de tiempo de ejecución de DynamoDB, incluida-port
, escriba este comando:java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -help
-
-sharedDb
: si especifica-sharedDb
, DynamoDB utiliza un solo archivo de base de datos, en lugar de archivos distintos para cada credencial y región. -
-disableTelemetry
: si se especifica, DynamoDB local no enviará ninguna telemetría. -
-version
: imprime la versión de DynamoDB local.
Configuración del punto de conexión local
De forma predeterminada, los SDK y las herramientas de AWS utilizan los puntos de enlace del servicio web de Amazon DynamoDB. Para utilizar los SDK y las herramientas con la versión descargable de DynamoDB, debe especificar el punto de enlace local:
http://localhost:8000
AWS Command Line Interface
Puede utilizar la AWS Command Line Interface (AWS CLI) para interactuar con la versión de DynamoDB descargable.
Para acceder a la instancia de DynamoDB que se ejecuta localmente, use el parámetro --endpoint-url
. A continuación se muestra un ejemplo de cómo usar la AWS CLI para obtener una lista de las tablas de DynamoDB en el ordenador.
aws dynamodb list-tables
--endpoint-url http://localhost:8000
nota
La AWS CLI no puede utilizar la versión descargable de DynamoDB como punto de enlace predeterminado. Por lo tanto, debe especificar --endpoint-url
con cada comando de la AWS CLI.
SDK de AWS
La forma de especificar el punto de enlace depende del lenguaje de programación y del SDK de AWS que se utilizan en cada caso. En las secciones siguientes se describe cómo hacerlo:
-
Java: configuración de la región y del punto de conexión de AWS (DynamoDB local admite el SDK para Java de AWS V1 y V2)
-
CodeSamples.Java.RegionAndEndpoint .NET: configuración de la región y del punto de conexión de AWS
Diferencias entre la versión descargable de DynamoDB y el servicio web de DynamoDB
La versión descargable de DynamoDB se ha desarrollado únicamente para tareas de desarrollo y comprobación. Por el contrario, el servicio web de DynamoDB es un servicio administrado con características de escalabilidad, disponibilidad y durabilidad que resulta ideal para utilizarlo en producción.
La versión descargable de DynamoDB se diferencia del servicio web en lo siguiente:
-
En el cliente no se admiten las Regiones de AWS ni determinadas Cuentas de AWS.
-
Los ajustes de rendimiento aprovisionado se omiten en la versión descargable de DynamoDB, aunque la operación
CreateTable
los requiera. ParaCreateTable
, puede especificar cualquier cifra que desee de desempeño provisionado de lectura y escritura, si bien estas cifras no se utilizarán. Puede llamar aUpdateTable
tantas veces como desee al día. Sin embargo, se omiten los cambios en los valores de desempeño provisionado. -
Las operaciones
Scan
se llevan a cabo secuencialmente. No se admiten los exámenes en paralelo. Los parámetrosSegment
yTotalSegments
de la operaciónScan
se pasan por alto. -
La velocidad de las operaciones de lectura y escritura en los datos de la tabla solamente se ve limitada por la velocidad del equipo. Las operaciones
CreateTable
,UpdateTable
yDeleteTable
se llevan a cabo de inmediato y el estado de la tabla siempre es ACTIVE. Las operacionesUpdateTable
que solo cambian los ajustes de desempeño provisionado de las tablas y/o los índices secundarios globales se realizan de inmediato. Si una operaciónUpdateTable
crea o elimina los índices secundarios globales, estos índices pasan sucesivamente por los estados normales (tales como CREATING o DELETING, respectivamente) antes de entrar en el estado ACTIVE. La tabla permanece en el estado ACTIVE durante este tiempo. -
Las operaciones de lectura son de consistencia final. No obstante, debido a la velocidad de DynamoDB cuando se ejecuta en el ordenador, la mayoría de las lecturas parecerán ser de coherencia alta.
-
No se realiza el seguimiento de las métricas ni de los tamaños de las colecciones de elementos. En las respuestas a las operaciones, se devuelven valores Null en lugar de las métricas de las colecciones de elementos.
-
En DynamoDB, existe un límite de 1 MB para los datos devueltos en cada conjunto de resultados. Tanto el servicio web de DynamoDB como la versión descargable imponen este límite. Sin embargo, al consultar un índice, el servicio de DynamoDB solo calcula el tamaño de la clave y los atributos previstos. En cambio, la versión descargable de DynamoDB calcula el tamaño del elemento completo.
-
Si utiliza DynamoDB Streams, la velocidad a la que se crean las particiones puede ser diferente. En el servicio web de DynamoDB, el comportamiento de creación de particiones depende en parte de la actividad de partición de la tabla. Cuando ejecuta DynamoDB localmente, la tabla no se particiona. La aplicación no debe depender del comportamiento de los fragmentos, puesto que son efímeros en ambos casos.
-
La versión descargable de DynamoDB no lanza
TransactionConflictExceptions
para API transaccionales. Le recomendamos que utilice una plataforma de simulación de Java para simularTransactionConflictExceptions
en el controlador de DynamoDB y probar cómo responde la aplicación a las transacciones conflictivas. -
En el servicio web de DynamoDB, tanto si se accede a través de la consola como de la AWS CLI, en los nombres de las tablas se distingue entre mayúsculas y minúsculas. Una tabla llamada
Authors
y otra llamadaauthors
pueden existir como tablas independientes. En la versión descargable, los nombres de las tablas no distinguen entre mayúsculas y minúsculas y si intenta crear estas dos tablas se producirá un error. -
La versión descargable de DynamoDB no admite el etiquetado.
-
La versión descargable de DynamoDB ignora el parámetro Limit de ExecuteStatement.