Notas sobre el uso local de DynamoDB - Amazon DynamoDB

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).

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 es 8000.

    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:

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. Para CreateTable, puede especificar cualquier cifra que desee de desempeño provisionado de lectura y escritura, si bien estas cifras no se utilizarán. Puede llamar a UpdateTable 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ámetros Segment y TotalSegments de la operación Scan 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 y DeleteTable se llevan a cabo de inmediato y el estado de la tabla siempre es ACTIVE. Las operaciones UpdateTable 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ón UpdateTable 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 simular TransactionConflictExceptions 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 llamada authors 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.