Acerca de Amazon DynamoDB
¿Qué es Amazon DynamoDB?
DynamoDB es un servicio flexible de bases de datos no relacionales para cualquier escala. DynamoDB permite a los clientes evitar la carga administrativa que supone tener que utilizar y escalar bases de datos distribuidas, de lo que pasa a encargarse AWS. De esta manera, no tienen que preocuparse del aprovisionamiento, la instalación ni la configuración del equipo, ni tampoco de la planificación de la capacidad de rendimiento, la reproducción, las revisiones del software o el escalado de clústeres.
¿Qué administra DynamoDB por mí?
DynamoDB elimina una de las principales dificultades del escalado de bases de datos: administrar el software de la base de datos y el aprovisionamiento del equipo necesario para ejecutarlo. Puede implementar una base de datos no relacional en cuestión de minutos. DynamoDB escala automáticamente la capacidad de procesamiento para satisfacer las demandas de carga de trabajo y crea particiones y subparticiones de los datos a medida que aumenta el tamaño de la tabla. Además, DynamoDB realiza una reproducción sincronizada de los datos en tres centros de una misma región de AWS, lo que proporciona un alto nivel de disponibilidad y durabilidad de los datos.
Almacenamiento
¿Qué son las clases de tablas de DynamoDB?
Las clases de tablas de DynamoDB son opciones de optimización de costos y rendimiento para las tablas de DynamoDB. Las dos clases de tablas disponibles son DynamoDB Standard (clase de tabla predeterminada diseñada para cargas de trabajo que requieren el máximo rendimiento y que son las más adecuada para tablas con cargas de trabajo impredecibles) y DynamoDB Standard-Infrequent Access (clase de tabla optimizada para tablas en las que el almacenamiento es el costo dominante e ideal para tablas donde se almacenan datos a los que se accede con poca frecuencia). Las tablas Standard tienen costos de lectura y escritura más bajos, pero costos de almacenamiento más altos. Las tablas Standard-IA tienen costos de almacenamiento más bajos, pero costos de lectura y escritura más altos. Puede cambiar entre estas clases de tablas dos veces en un período de 30 días sin tiempo de inactividad, lo que le permite optimizar los costos en función de los patrones de uso de la tabla. La elección entre estas clases depende de las necesidades específicas de la aplicación y de los patrones de acceso de los datos.
¿Qué factores debo tener en cuenta al elegir una clase de tabla?
Hay varios factores que se deben tener en cuenta al elegir una clase de tabla en DynamoDB. Los más comunes son los patrones de acceso a los datos, las consideraciones de costo y la previsibilidad de la carga de trabajo. Puede cambiar de una clase de tabla a otra sin necesidad de codificación ni tiempo de inactividad, por lo que puede adaptar su elección si sus necesidades cambian con el tiempo.
¿Cómo funcionan las tablas de DynamoDB Standard-IA con las características existentes de DynamoDB?
Las tablas de DynamoDB Standard-IA (acceso poco frecuente) funcionan a la perfección con las características existentes de DynamoDB. Utilizan las mismas API que las tablas normales de DynamoDB, por lo que puede utilizarlas con las aplicaciones existentes sin cambiar el código. Son compatibles con las tablas globales para la replicación multirregional, point-in-time recovery (recuperación a un momento dado (PITR)), las copias de seguridad bajo demanda, el cifrado en reposo con AWS Key Management Service (KMS), DynamoDB Streams, Tiempo de vida para eliminar elementos automáticamente y las operaciones transaccionales de lectura y escritura. Las tablas Standard-IA son compatibles con DynamoDB Accelerator (DAX).
¿Cómo almacena DynamoDB los datos?
Amazon DynamoDB almacena los datos en particiones. Una partición es una asignación de almacenamiento para una tabla, respaldada por unidades de estado sólido (SSD) y replicada automáticamente en varias zonas de disponibilidad dentro de una región de AWS. La administración de particiones la gestiona completamente DynamoDB; nunca tendrá que administrar las particiones usted mismo.
¿Cuál es el tamaño máximo de elemento permitido en DynamoDB?
El tamaño máximo de un elemento que se puede almacenar en una tabla de DynamoDB es de 400 KB. No hay límites de almacenamiento predefinidos.
¿Puede DynamoDB realizar un almacenamiento de objetos binarios grandes (BLOB)?
Sí, DynamoDB puede almacenar BLOB; sin embargo, no suele ser adecuado para almacenar documentos o imágenes. Un patrón arquitectónico mejor es almacenar los punteros a los objetos de Amazon S3 en una tabla de DynamoDB.
¿Cuánto tiempo permanecen los datos en DynamoDB?
De forma predeterminada, no hay una fecha de caducidad o eliminación establecida para los datos almacenados en una tabla de Amazon DynamoDB. Los datos permanecerán en la tabla indefinidamente, a menos que el cliente los elimine de forma explícita o mediante la eliminación de Tiempo de vida (TTL) si TTL está habilitado.
¿Cuántos elementos se pueden almacenar en DynamoDB?
No hay un límite predefinido para la cantidad de elementos que se pueden almacenar en una tabla de DynamoDB. DynamoDB se amplía a cientos de terabytes o más de datos en cualquier cantidad de elementos.
¿Se pueden almacenar imágenes en DynamoDB?
Aunque técnicamente es posible almacenar imágenes en DynamoDB como datos binarios (codificados en base64), existen algunas limitaciones e inconvenientes debido al tamaño límite de los elementos de 400 KB. En lugar de almacenar las imágenes directamente en DynamoDB, se recomienda almacenar las imágenes en Amazon S3 (Simple Storage Service) y, a continuación, almacenar la URL o la clave del objeto S3 en DynamoDB.
¿Se pueden almacenar listas en DynamoDB?
Para almacenar una lista en DynamoDB, debe usar uno de los tipos de datos de lista de DynamoDB, ya sea una lista o un conjunto. Al escribir elementos en la tabla, el valor de ese atributo puede ser una matriz o colección de tipos de datos escalares (no objetos), como cadenas, números, etc. DynamoDB se encargará automáticamente de serializar los datos de la lista y de almacenarlos de forma que se mantenga la estructura de la lista. A continuación, puede consultar el atributo de la tabla para recuperar la lista completa. Agregar, actualizar o eliminar elementos de la lista funciona de la misma manera que una operación de escritura normal.
¿Puede DynamoDB almacenar un mapa?
Sí, DynamoDB admite el almacenamiento de mapas como un tipo de datos de atributos.
Seguridad y control
¿Amazon DynamoDB admite los permisos de AWS Identity and Access Management (IAM)?
Sí, DynamoDB admite los permisos de IAM. Los permisos de IAM se pueden definir en políticas basadas en identidades, políticas basadas en recursos u otras políticas de AWS para controlar el acceso a los recursos de DynamoDB. Puede adjuntar políticas de IAM a los usuarios, grupos y roles de IAM y a las tablas y secuencias de DynamoDB, y controlarlas según lo desee.
¿Qué es AWS PrivateLink para Amazon DynamoDB?
Con AWS PrivateLink, puede simplificar la conectividad de las redes privadas entre las nubes virtuales privadas (VPC), DynamoDB y sus centros de datos locales mediante puntos de enlace de VPC de interfaz y direcciones IP privadas. Con PrivateLink, se puede acceder a las tablas de DynamoDB desde una conexión privada y las solicitudes no salen de la red de Amazon. Esto mejora la seguridad, ya que el tráfico fluye a través de cualquier puerta de enlace de red y el acceso se puede controlar mediante políticas de IAM y grupos de seguridad. PrivateLink es útil para aplicaciones que tienen requisitos de seguridad de datos y requieren una latencia baja. También hace que las tablas de DynamoDB sean accesibles desde entornos híbridos que abarcan redes locales y AWS.
¿DynamoDB admite políticas basadas en recursos?
Sí, DynamoDB admite políticas basadas en recursos para tablas y secuencias. Las políticas basadas en recursos para cada tabla también cubren los permisos de acceso a los índices de la tabla (índices secundarios globales e índices secundarios locales). Con políticas basadas en recursos, los clientes pueden definir permisos de acceso detallados para las tablas de DynamoDB y otros recursos sin tener que conceder acceso total a nivel de cuenta de AWS. Estas políticas permiten a los clientes controlar qué usuarios, roles y usuarios federados pueden realizar acciones como leer, escribir o eliminar en tablas, índices y secuencias de DynamoDB específicos. Las políticas basadas en recursos se adjuntan y administran en cada recurso de DynamoDB.
Las políticas basadas en recursos respaldan las integraciones con el Analizador de acceso de AWS Identity and Access Management (IAM) y el Bloqueo del acceso público (BPA). El Analizador de acceso de IAM ayuda a los clientes a refinar los permisos y ajustarlos a los privilegios mínimos. El BPA ayuda a los clientes a impedir el acceso público a las tablas, índices y secuencias de DynamoDB, y siempre está activado con DynamoDB.
¿DynamoDB admite el control de acceso basado en atributos para la autorización basada en etiquetas?
DynamoDB admite el control de acceso basado en atributos, que generalmente está disponible para las tablas e índices de DynamoDB.
¿Puedo utilizar Amazon DynamoDB en Amazon Virtual Private Cloud (Amazon VPC)?
Sí, puede usar Amazon DynamoDB con puntos de enlace de VPC. DynamoDB admite dos tipos de puntos de enlace de VPC: los puntos de enlace de puertas de enlace y el uso de AWS PrivateLink. Con un punto de enlace de puerta de enlace, puede acceder a DynamoDB desde su VPC, sin necesidad de una puerta de enlace de Internet ni un dispositivo NAT para la VPC. Sin embargo, los puntos de enlace de puerta de enlace no permiten el acceso desde redes locales, desde VPC interconectadas en otras regiones de AWS ni a través de una puerta de enlace de tránsito. En esos casos, debe usar AWS PrivateLink, que está disponible por un costo adicional.
¿Qué es el control de acceso detallado de Amazon DynamoDB?
El control de acceso detallado (FGAC) brinda al propietario de una tabla de DynamoDB un control granular sobre los datos de la tabla a través de las políticas y condiciones de AWS Identity and Access Management (IAM). El FGAC permite al propietario proporcionar permisos para acceder a los elementos o atributos de la tabla y a las acciones asociadas. El control de acceso detallado se usa en conjunto con AWS IAM, que administra las credenciales de seguridad y los permisos asociados.
¿Amazon DynamoDB cifra los datos en tránsito y en reposo?
Sí, todos los datos de usuario de Amazon DynamoDB están totalmente cifrados en tránsito y en reposo.
¿Cómo cifra Amazon DynamoDB mis datos en tránsito?
El protocolo HTTPS se usa para proteger el tráfico de red mediante el cifrado de capa de sockets seguros.
¿Cómo cifra Amazon DynamoDB mis datos en reposo?
El cifrado en reposo de DynamoDB utiliza claves de cifrado almacenadas en AWS Key Management Service (AWS KMS). Los datos en reposo se cifran con AES-256, el estándar de referencia en el que se requieren los niveles más altos de seguridad.
¿Qué tipos de claves hay disponibles para cifrar mis datos en reposo de DynamoDB?
Están disponibles los siguientes tipos de claves para cifrar los datos en reposo:
1. Claves propiedad de AWS: AWS las administra en su totalidad y se utilizan de forma predeterminada si no se especifica ninguna otra opción. Son de uso gratuito y no requieren ninguna configuración adicional.
2. Claves administradas de AWS: son claves maestras de cliente (CMK) almacenadas en AWS Key Management Service (KMS) que AWS crea, administra y utiliza en nombre del cliente. Proporcionan capacidades adicionales de control y auditoría en comparación con las claves propiedad de AWS.
3. Claves administradas por el cliente: son CMK que usted crea, posee y administra en AWS KMS. Ofrecen el más alto nivel de control sobre las claves de cifrado, incluida la capacidad de crear, rotar, deshabilitar y definir controles de acceso.
Cada uno de estos tipos de claves proporciona un equilibrio diferente entre comodidad, control y costo. Las claves propiedad de AWS son las más sencillas de usar, mientras que las claves administradas por el cliente ofrecen el mayor control, pero requieren más gastos de administración.
¿Cómo ayuda el cifrado en reposo a proteger mis datos?
El cifrado en reposo ayuda a proteger los datos al cifrar los archivos que contienen información confidencial mientras permanecen inactivos. Cuando los datos se cifran en reposo, las partes no autorizadas no pueden acceder al contenido de texto sin formato, incluso si pueden obtener acceso físico a los dispositivos que almacenan los datos. Esto proporciona una capa adicional de seguridad para los datos más allá de los controles de acceso y ayuda a garantizar que la información confidencial se mantenga privada, incluso si el dispositivo físico se pierde o es robado.
¿DynamoDB admite el registro de auditoría para los cambios a nivel de elemento en la tabla?
Sí, DynamoDB admite el registro de auditoría para los cambios a nivel de elemento en las tablas. DynamoDB está integrado con AWS CloudTrail, un servicio que proporciona un registro de las acciones realizadas por un usuario, un rol o un servicio de AWS en DynamoDB a nivel de elemento. Los datos de registro adicionales capturados incluyen la creación, la actualización, la eliminación y cualquier error de verificación condicional. Los clientes pueden acceder a estos registros almacenados en Registros de CloudWatch y crear aplicaciones para analizar los cambios a nivel de elemento con fines de auditoría, supervisión u otros fines. El registro de auditoría proporciona visibilidad de los cambios en los datos de forma granular sin afectar al rendimiento normal de lectura/escritura de la tabla de DynamoDB.
¿Puedo utilizar Amazon DynamoDB con aplicaciones que deban cumplir con HIPAA?
Sí, puede usar Amazon DynamoDB para crear sus aplicaciones y almacenar información clínica de conformidad con HIPAA, incluida la información de salud protegida gracias al acuerdo de socio empresarial (BAA) con AWS.
¿Qué certificaciones de conformidad cumple Amazon DynamoDB?
DynamoDB cumple con muchas certificaciones de cumplimiento, incluidas las que cumplen con los requisitos de HIPAA, FedRAMP, ISO 27001, SOC 1/SSAE 16/ISAE 3402 (anteriormente SAS 70) y SOC 2. Para obtener más información, consulte Validación del cumplimiento por sector para DynamoDB. Puede descargar los informes de conformidad de AWS en AWS Artifact.
Alta disponibilidad y replicación
¿Qué son las tablas globales de DynamoDB?
Las tablas globales de Amazon DynamoDB son una base de datos totalmente gestionada, sin servidor, multirregional y multiactiva. Las tablas globales ofrecen una disponibilidad del 99,999 %, una mayor resiliencia en las aplicaciones y una mejor continuidad empresarial. Replican automáticamente sus tablas de DynamoDB en las regiones de AWS que elija, de manera que puede lograr un rendimiento de lectura y escritura local y rápido. Las tablas globales utilizan las mismas API que las tablas de DynamoDB de una sola región, por lo que puede hacer que sus tablas de DynamoDB estén disponibles fácilmente en todo el mundo sin cambiar la aplicación.
¿Por qué debería usar tablas globales?
Debe usar tablas globales para mejorar la resiliencia de su aplicación en varias regiones. Las tablas globales también permiten que las aplicaciones mantengan una alta disponibilidad en el improbable caso de aislamiento o degradación de toda una región.
¿Cuál es la diferencia entre las versiones de las tablas globales?
Hay dos versiones de las tablas globales de DynamoDB disponibles: la versión 2019.11.21 (actual) y la versión 2017.11.29 (antigua). Los clientes deben usar la versión 2019.11.21 (actual) para todas las tablas globales nuevas, ya que esta versión es más eficiente y consume menos capacidad de escritura. Cualquier usuario que utilice la versión 2017.11.29 (antigua) debe actualizar sus tablas globales a la versión 2019.11.21 (actual).
¿Cómo actualizo mis tablas globales a la versión 2019.11.21 (actual)?
Puede actualizar la versión de una tabla global con solo unos clics en la Consola de administración de AWS. La actualización de la versión 2017.11.29 (antigua) a la versión 2019.11.21 (actual) se realiza una sola vez y no se puede revertir. Antes de actualizar, asegúrese de haber revisado las diferencias de comportamiento entre las versiones y de haber realizado todas las pruebas necesarias. Para obtener más información, consulte Actualización de tablas globales de la versión 2017.11.29 (antigua) a la versión 2019.11.21 (actual).
¿Las tablas globales de DynamoDB admiten la conmutación por error automática si una región deja de estar disponible?
Las tablas globales de DynamoDB utilizan la replicación multiactiva en todas las regiones, donde todas las tablas de réplica de todas las regiones de una tabla global admiten el tráfico de lectura y escritura. Una tabla global no tiene una región principal y, por lo tanto, no se requiere una conmutación por error de la base de datos para dirigir el tráfico de lectura y escritura a una región diferente. En el improbable caso de que una región de AWS quede aislada o degradada, su aplicación puede simplemente leer y escribir desde una tabla de réplicas en una región no afectada. Para obtener más información, consulte Prácticas recomendadas para el diseño de tablas globales de DynamoDB.
Procesamiento de datos
¿Amazon DynamoDB admite la captura de datos modificados?
Sí, Amazon admite la captura de datos modificados (CDC). En DynamoDB, la CDC se implementa mediante un modelo de secuencias, que permite a las aplicaciones capturar los cambios a nivel de elemento en una tabla de DynamoDB casi en tiempo real como un flujo de registros de datos. Los registros de datos de la secuencia de CDC permiten que las aplicaciones procesen y respondan de manera eficiente las modificaciones de los datos en la tabla de DynamoDB. DynamoDB ofrece dos modelos de secuencias de CDC: Amazon DynamoDB Streams y Amazon Kinesis Data Streams para DynamoDB. Para poder elegir la solución adecuada para su aplicación, consulte las opciones de secuencias para la captura de datos modificados.
¿Qué es DynamoDB Streams y qué puedo hacer con él?
Una secuencia de DynamoDB es un flujo ordenado de información sobre los cambios en los elementos de una tabla de DynamoDB. DynamoDB Streams captura una secuencia deduplicada en orden cronológico de las modificaciones de los elementos en una tabla y almacena esta información en un registro durante un máximo de 24 horas. DynamoDB Streams escala la capacidad automáticamente sin necesidad de aprovisionarla ni de administrarla. Según la configuración de DynamoDB Streams, puede ver los elementos de datos tal y como aparecen antes y después de modificarlos. Puede crear aplicaciones que consuman estos eventos de secuencia e invocar flujos de trabajo en función del contenido de la secuencia de eventos.
DynamoDB Streams es útil para responder a los cambios en los datos con activadores mediante la integración nativa con AWS Lambda, realizar un seguimiento y analizar las interacciones con los clientes o supervisar el rendimiento de las aplicaciones casi en tiempo real, capturar secuencias ordenadas de eventos y mejorar la resiliencia de las aplicaciones mediante la replicación de datos transaccionales a nivel de elemento.
¿Qué es Kinesis Data Streams para DynamoDB y qué puedo hacer con él?
Kinesis Data Streams captura modificaciones de los elementos en cualquier tabla de DynamoDB y las replica en un flujo de datos de Kinesis. Sus aplicaciones pueden acceder a esta secuencia y ver los cambios a nivel de elemento casi en tiempo real. Con Kinesis Data Streams, puede crear aplicaciones personalizadas que procesan o analizan datos de secuencias para satisfacer necesidades especiales. A diferencia de DynamoDB Streams, Kinesis Data Streams para DynamoDB no ofrece pedidos de registros ni garantías de deduplicación. Las aplicaciones cliente deben implementar el pedido y la deduplicación de registros mediante el campo ApproximateCreationDateTime del registro a nivel de elemento.
Kinesis Data Streams para DynamoDB es útil si necesita integrarse con el ecosistema más amplio de Kinesis (como la biblioteca de clientes de Kinesis, Amazon Managed Service para Apache Flink o Amazon Data Firehose), retener los datos y reproducirlos durante más tiempo (hasta 365 días) y una administración de particiones personalizada para el análisis de secuencias y consumo descendente.
¿Qué información se incluye en una secuencia?
Cuando se habilita una secuencia de datos de DynamoDB o de Kinesis en una tabla de DynamoDB, la tabla envía un registro de datos que captura cualquier cambio en los datos de esa tabla. Este registro de datos incluye la hora específica en la que se creó, actualizó o eliminó un elemento recientemente, la clave principal de ese elemento, una imagen del elemento antes de la modificación y una imagen del elemento después de la modificación
¿Cómo uso la secuencia de datos de DynamoDB o la secuencia de datos de Kinesis?
Puede habilitar o deshabilitar las secuencias en una tabla de DynamoDB existente mediante la Consola de administración de AWS, SDK de AWS, la Interfaz de la línea de comandos de AWS (AWS CLI) o la Biblioteca de clientes de Kinesis (KCL).
¿Cuándo debo usar DynamoDB Streams y cuándo debo usar Kinesis Data Streams?
Elija DynamoDB Streams cuando necesite realizar un seguimiento específico de los cambios en las tablas de DynamoDB. Elija Kinesis Data Streams para necesidades de secuencias más amplias, requisitos de rendimiento más altos o cuando necesite períodos de retención de datos más prolongados.
¿Qué es el Tiempo de vida (TTL) de DynamoDB y qué puedo hacer con él?
La característica Tiempo de vida (TTL) de Amazon DynamoDB elimina automáticamente de la tabla los elementos caducados que ya no son relevantes, lo que reduce el uso del almacenamiento y los costos. Con TTL, puede definir una marca de tiempo por elemento para determinar cuándo un elemento ya no es necesario, y DynamoDB lo elimina automáticamente de la tabla sin consumir ningún rendimiento de escritura. Cada vez que se crea o actualiza un elemento, puede calcular el tiempo de caducidad y guardarlo en el atributo TTL. El TTL es útil si almacena elementos que pierden relevancia después de un tiempo específico.
¿Qué tipo de funcionalidad de consulta admite DynamoDB?
DynamoDB admite operaciones GET/PUT mediante la utilización de una clave principal definida por el usuario. La clave principal es el único atributo necesario para los elementos de una tabla. Usted especifica la clave principal al crear una tabla, y esta identifica cada elemento de manera única. DynamoDB también proporciona consultas flexibles al permitirle hacer consultas con atributos clave no principales mediante índices secundarios globales e índices secundarios locales.
Una clave principal puede ser una clave de partición de un solo atributo o una clave de ordenación de partición compuesta. Una clave de partición de un solo atributo puede ser, por ejemplo, UserID. Esta clave de partición de un solo atributo le permitiría leer y escribir datos rápidamente para un elemento asociado con un ID de usuario determinado.
DynamoDB indiza una clave compuesta partición-clase como un elemento de clave de partición y como un elemento de clave de clase. Esta clave de varias partes mantiene una jerarquía entre los valores primero y segundo del elemento. Por ejemplo, una clave de ordenación de partición compuesta podría ser una combinación de UserID (partición) y Timestamp (clase). Si mantiene la clave de partición de forma constante, puede realizar búsquedas en el elemento de clave de ordenación para recuperar elementos. Esto le permitiría utilizar la API Query para, por ejemplo, recuperar todos los elementos de una clave UserID exclusiva en un intervalo de marcas temporales.
¿Cómo puedo actualizar y consultar elementos de datos con DynamoDB?
Después de crear una tabla con la consola de DynamoDB o la API CreateTable, puede utilizar las API PutItem o BatchWriteItem para insertar elementos. A continuación, puede utilizar las API GetItem, BatchGetItem o, si las claves principales compuestas están habilitadas y se utilizan en la tabla, la API de consulta Query para recuperar los elementos que haya agregado a la tabla.
¿Se puede usar DynamoDB en aplicaciones que se ejecuten en cualquier sistema operativo?
Sí. DynamoDB es un servicio administrado en la nube al que se obtiene acceso a través de una API. Cualquier aplicación ejecutada en un sistema operativo (como Linux, Windows, iOS, Android, Solaris, AIX y HP-UX) puede usar DynamoDB. Recomendamos utilizar los SDK de AWS para comenzar a utilizar DynamoDB.
Obtenga acceso instantáneo a la capa gratuita de AWS.
Comience a crear con Amazon DynamoDB en la consola de administración de AWS.