Amazon DynamoDB es un servicio de datos NoSQL totalmente gestionado y que ofrece un rendimiento rápido y predecible gracias a una perfecta escalabilidad. Con tan solo unos clics en AWS Management Console, los clientes pueden crear una nueva tabla de base de datos en Amazon DynamoDB, aumentar o reducir la capacidad de solicitud para la tabla sin tiempos de inactividad ni reducción del rendimiento, así como aumentar la visibilidad de la utilización de recursos y de las métricas de rendimiento. Este servicio permite a los clientes evitar las cargas administrativas que supone tener que utilizar y escalar bases de datos distribuidas a AWS, ya que no tienen que preocuparse del aprovisionamiento del hardware, ni tampoco de las tareas de instalación y configuración, replicación, revisiones del software ni de escalar el clúster.
Amazon DynamoDB es un servicio diseñado para abordar los problemas principales relativos a la gestión, el rendimiento, la escalabilidad y la fiabilidad de la base de datos. Los desarrolladores pueden crear una tabla de base de datos capaz de almacenar y recuperar cualquier cantidad de datos, así como de satisfacer cualquier nivel de tráfico de solicitud. DynamoDB distribuye automáticamente los datos y el tráfico de la tabla por una cantidad suficiente de servidores como para gestionar la capacidad de solicitud especificada por el cliente y la cantidad de datos almacenados, al mismo tiempo que mantiene un rendimiento uniforme y rápido. Todos los elementos de datos se almacenan en unidades de estado sólido y se replican automáticamente por varias zonas de disponibilidad de una región a fin de ofrecer las prestaciones integradas de alta disponibilidad y durabilidad de los datos.
Amazon DynamoDB permite a los clientes evitar las cargas administrativas que supone la puesta en marcha y el ajuste de escalas de un clúster de base de datos distribuida de alta disponibilidad pagando solamente un bajo precio variable por los recursos consumidos.
Para utilizar Amazon DynamoDB, simplemente necesita:
Escalable – Amazon DynamoDB es un servicio diseñado para ofrecer un rendimiento perfecto y escalabilidad de almacenamiento.
Rendimiento rápido y predecible – El promedio de latencias de servicio de Amazon DynamoDB suele ser de milisegundos de un solo dígito. El servicio se ejecuta en unidades de estado sólido y está pensado para mantener latencias siempre rápidas a cualquier escala.
Administración sencilla – Amazon DynamoDB es un servicio totalmente gestionado; solo tiene que crear una base de datos y el servicio se encargará del resto. No tiene que preocuparse por el aprovisionamiento del hardware o del software, ni por la configuración y la instalación, las revisiones del software, el funcionamiento de un clúster de base de datos distribuido y fiable, o la partición de los datos entre varias instancias a medida que se ejecuta el proceso de escalabilidad.
Tolerancia a fallos integrada – Amazon DynamoDB dispone de la función integrada de tolerancia a fallos, de forma que replica los datos de manera automática y sincronizada entre diferentes zonas de disponibilidad de una región a fin de ofrecer un alto nivel de disponibilidad y para ayudar a proteger sus datos frente a fallos de la máquina individual o incluso de la instalación.
Flexible – Amazon DynamoDB no tiene una estructura fija. En su lugar, cada elemento de datos puede tener un número distinto de atributos. La existencia de varios tipos de datos (cadenas, números y conjuntos) aporta riqueza al modelo de datos.
Coherencia alta y contadores atómicos – A diferencia de muchas bases de datos no relacionales, Amazon DynamoDB hace del desarrollo una tarea sencilla, ya que le permite realizar lecturas de coherencia alta a fin de garantizar que se lean los valores más actualizados. Amazon DynamoDB admite varios tipos de datos nativos (números, cadenas y atributos de varios valores). Este servicio también admite de forma nativa los contadores atómicos, de forma que le permite aumentar o reducir automáticamente los atributos numéricos con una única solicitud a la API.
Rentable – Amazon DynamoDB es una solución diseñada para ofrecer la máxima rentabilidad para las cargas de trabajo de cualquier escala. Puede empezar con un nivel gratuito que permite realizar más de 40 millones de operaciones al mes en la base de datos; solo tendrá que pagar tarifas reducidas contabilizadas por horas por los recursos que consuma por encima de dicho límite. Gracias a una administración sencilla y a un precio de solicitud rentable, DynamoDB puede ofrecer un coste total de propiedad significativamente más reducido para su carga de trabajo con respecto al coste que le supone gestionar una base de datos relacional o no relacional por su propia cuenta.
Seguro – Amazon DynamoDB utiliza métodos criptográficos probados para autenticar a los usuarios y prevenir el acceso no autorizado a los datos. También se integra con AWS Identity and Access Management (IAM) a fin de ofrecer un control de acceso personalizado para los usuarios dentro de su organización.
Supervisión integrada – Amazon DynamoDB muestra métricas operativas clave sobre su tabla en AWS Management Console. El servicio también se integra con Amazon CloudWatch a fin de que pueda ver la latencia y el rendimiento de solicitud de cada tabla de Amazon DynamoDB, así como para que pueda realizar un seguimiento del consumo de los recursos de forma sencilla.
Integración de Elastic MapReduce – Amazon DynamoDB también se integra con Amazon Elastic MapReduce (Amazon EMR). Amazon EMR permite a las empresas realizar análisis complejos de sus grandes conjuntos de datos mediante la utilización de un marco Hadoop alojado en AWS de pago según consumo. Gracias al lanzamiento de Amazon DynamoDB, para los clientes resulta fácil utilizar Amazon EMR para analizar conjuntos de datos almacenados en DynamoDB y archivar los resultados en Amazon Simple Storage Service (Amazon S3), mientras mantiene el conjunto de datos original intacto en DynamoDB. Las empresas también pueden utilizar Amazon EMR para acceder a los datos de varias ubicaciones (por ejemplo, Amazon DynamoDB, Amazon RDS y Amazon S3), realizar análisis complejos de este conjunto de datos combinados y almacenar los resultados de este proceso en Amazon S3.
Pague sólo por lo que utilice. Sin cuota mínima. Realice una estimación de su factura mensual con la Calculadora mensual sencilla.
Nivel de uso gratuito*
Como parte del Nivel de uso gratuito de AWS, los nuevos clientes de AWS pueden empezar a utilizar Amazon DynamoDB de forma gratuita. Los clientes de DynamoDB obtienen 100 MB de almacenamiento gratuito, además de hasta 5 escrituras/segundo y 10 lecturas/segundo de capacidad de rendimiento continuado.
Al crear o actualizar la tabla de Amazon DynamoDB, debe especificar cuánta capacidad desea reservar para las lecturas y escrituras. Amazon DynamoDB reservará los recursos de máquina necesarios para satisfacer sus necesidades de rendimiento con un rendimiento uniforme y de baja latencia.
Deberá pagar una tarifa plana por horas en función de la capacidad que reserve:
Una unidad de capacidad de escritura le permite realizar una escritura por segundo de elementos con un tamaño de hasta 1 Kb. Del mismo modo, una unidad de capacidad de lectura le permite realizar una lectura de coherencia alta por segundo (o dos lecturas de coherencia eventual por segundo) de elementos con un tamaño de hasta 1 Kb. Los elementos más grandes precisarán de más capacidad. Puede calcular el número de unidades de capacidad de lectura y escritura que necesita mediante la estimación del número de escrituras y lecturas que necesita realizar por segundo y, a continuación, multiplicar este número por el tamaño de los elementos (redondeando hasta el KB más próximo).
Unidades de capacidad necesarias para escrituras = Número de escrituras de elementos por segundo x tamaño del elemento (redondeando hasta el KB más próximo)
Unidades de capacidad necesarias para lecturas¹ = Número de lecturas de elementos por segundo x tamaño del elemento (redondeando hasta el KB más próximo)
¹Si utiliza lecturas de coherencia eventual obtendrá el doble del rendimiento en términos de lecturas por segundos.
Si los elementos tienen un tamaño inferior a 1 KB, entonces cada unidad de capacidad de lectura le dará 1 lectura/segundo de capacidad y cada unidad de capacidad de escritura le dará 1 escritura/segundo de capacidad. Por ejemplo, si sus elementos tienen un tamaño de 512 bytes y necesita leer de la tabla 100 elementos por segundo, entonces necesita obtener 100 unidades de capacidad de lectura.
Si los elementos tienen un tamaño superior a 1 KB, entonces debe calcular el número de unidades de capacidad de lectura y de escritura que necesita. Por ejemplo, si los elementos tienen un tamaño de 1,5 KB y desea realizar 100 lecturas/segundo, entonces necesita obtener 100 (lecturas por segundo) x 2 (1,5 KB redondeados hasta el número entero más próximo) = 200 unidades de capacidad de lectura.
Tenga en cuenta que el número necesario de unidades de capacidad de lectura se determina en función del número de elementos que se lean por segundo, no por el número de solicitudes que se realicen a la API. Por ejemplo, si necesita leer de la tabla 500 elementos por segundo y los elementos tienen un tamaño de 1 KB o menos, entonces necesita 500 unidades de capacidad de lectura. En este caso, no influye el hecho de que realice 500 solicitudes individuales a la API GetIem o 50 solicitudes a la API BatchGetItem y que cada una devuelva 10 elementos.
Si su rendimiento de solicitud supera su capacidad prevista, se puede rechazar. Sin embargo, AWS Management Console ofrece un gráfico de la capacidad de rendimiento prevista y utilizada, de forma que le permite realizar cambios con facilidad y con antelación a los cambios del tráfico. Si desea obtener información adicional acerca del rendimiento previsto y sobre cómo seleccionar los valores adecuados, lea aquí nuestras respuestas a las preguntas más frecuentes.
Si desea obtener información adicional acerca de cuántas unidades de capacidad necesita para su tabla, puede leer aquí nuestra documentación relacionada.
Amazon DynamoDB es un almacén de datos indizados y la cantidad de espacio en disco que sus datos consumen superará el tamaño sin procesar de los datos que haya cargado. Amazon DynamoDB mide el tamaño de los datos facturables; para ello, suma el tamaño de byte sin procesar de los datos cargados, además de una cuota fija de 100 bytes de almacenamiento por elemento por la indización. No necesita "prever" el almacenamiento con Amazon DynamoDB. Solo se le facturará lo que utilice, como bien hemos explicado anteriormente.
La transferencia de datos “entrante” y “saliente” se refiere a una transferencia que entra o sale de Amazon DynamoDB. No se realiza un cargo adicional por los datos transferidos entre Amazon DynamoDB y otros servicios de Amazon Web Services dentro de la misma región (es decir, 0,00 $ por GB). Los datos transferidos entre regiones (por ejemplo, entre Amazon EC2 en la región UE (Irlanda) y Amazon DynamoDB en la región EE.UU. Este (Norte de Virginia)) se cobrarán según las tarifas de transferencia de datos por Internet aplicables a las dos partes que intervienen en la transferencia.
* El uso gratuito se calculará cada mes y se aplicará de forma automática a su factura; el uso gratuito no es acumulable.
** Como parte del Nivel de uso gratuito de AWS, los clientes de AWS recibirán cada mes 15 GB gratuitos de transferencia de datos salientes en conjunto por todos los servicios de AWS durante un año.
*** Las capas de transferencia de datos salientes suman la transferencia saliente de datos a través de Amazon EC2, Amazon S3, Amazon RDS, Amazon SimpleDB, Amazon DynamoDB, Amazon SQS, Amazon SNS, AWS Storage Gateway y Amazon VPC.
Amazon DynamoDB organiza los datos en tablas que contienen elementos; a su vez, cada elemento contiene uno o varios atributos.
Un atributo es un par nombre-valor. El nombre debe ser una cadena, pero el valor puede ser una cadena, un número, un conjunto de cadenas o un conjunto de números. A continuación, se presentan ejemplos de atributos:
"ImageID" = 1
"Title" = "flower"
"Tags" = "flower", "jasmine", "white"
"Ratings" = 3, 4, 2
Una recopilación de atributos forma un elemento y, a su vez, el elemento se identifica mediante su clave principal. Los atributos de un elemento son una recopilación de pares nombre-valor, en cualquier orden. Los atributos del elemento pueden ser dispersos, no estar relacionados con los atributos de otro elemento de la misma tabla y, además, son opcionales (excepto el atributo de la clave principal). A diferencia de las bases de datos tradicionales, la tabla no sigue ninguna estructura aparte de su dependencia de la clave principal. Los elementos se almacenan en una tabla. Para introducir los elementos en una tabla, debe designar al menos uno de los atributos como la clave principal. La clave principal identifica de forma exclusiva un elemento para una tabla de DynamoDB. En el diagrama siguiente, ImageID es el atributo designado como la clave principal:
Observe que la tabla tiene un nombre, "myTable", pero el elemento no tiene ninguno. La clave principal define el elemento; el elemento con la clave principal "ImageID"=1.
Las tablas contienen elementos y organizan la información en áreas discretas. Todos los elementos de la tabla tienen la misma estructura de clave principal. Debe designar el nombre o los nombres del atributo para utilizarlo para la clave principal al crear una tabla, y la tabla requiere que cada elemento que contiene tenga un valor exclusivo de clave principal. El primer paso para escribir datos en DynamoDB consiste en crear una tabla y en designar el nombre de la tabla con una clave principal. A continuación, se muestra una tabla más grande que también usa el atributo ImageID como la clave principal para identificar los elementos.
| Tabla: Mis imágenes | |||||||
| Clave principal | Otros atributos | ||||||
| ImageID = 1 | ImageLocation = https://s3.amazonaws.com/bucket/img_1.jpg | Date = 1260653179 | Title = flower | Tags = Flower, Jasmine | Width = 1024 | Depth = 768 | |
| ImageID = 2 | ImageLocation = https://s3.amazonaws.com/bucket/img_2.jpg | Date = 1252617979 | Rated = 3, 4, 2 | Tags = Work, Seattle, Office | Width = 1024 | Depth = 768 | |
| ImageID = 3 | ImageLocation = https://s3.amazonaws.com/bucket/img_3.jpg | Date = 1285277179 | Price = 10.25 | Tags = Seattle, Grocery, Store | Author = you | Camera = phone | |
| ImageID = 4 | ImageLocation = https://s3.amazonaws.com/bucket/img_4.jpg | Date = 1282598779 | Title = Hawaii | Author = Joe | Colors = orange, blue, yellow | Tags = beach, blanket, ball | |
DynamoDB requiere que cada tabla cuente con una clave principal definida que se utilice para acceder a los datos. La clave principal sirve para identificar cada elemento de forma exclusiva (como ID =1, ID = 2, ID = 3, etc.). La clave principal es la única parte de la tabla que está indizada y también se utiliza para la partición por hash de los datos por varios servidores. La clave principal se especifica cuando crea una tabla.
En otras palabras, cada elemento es una colección de pares nombre/valor. Al crear una tabla de elementos, debe designar un par nombre/valor como la clave principal. Todos los elementos de la tabla deben tener un valor para el atributo de clave principal y Amazon DynamoDB garantiza que el valor de dicho nombre sea exclusivo. A continuación, se crea un índice en función de la clave principal.
Una clave principal compuesta le permite especificar dos atributos de una tabla que de forma conjunta forman un índice principal exclusivo. Todos los elementos de la tabla deben tener ambos atributos. Uno sirve como un "atributo de partición por hash" y el otro como un "atributo por rango". Por ejemplo, podría tener una tabla "Actualizaciones de estado" con una clave principal compuesta que conste de "UserID" (atributo hash, utilizado para realizar particiones de la carga de trabajo por varios servidores) y una "Time" (atributo de rango). A continuación, puede ejecutar una consulta para buscar: 1) un elemento determinado identificado de forma exclusiva mediante la combinación de los valores UserID y Time; 2) todos los elementos de un "ciclo" hash concreto; en este caso, UserID; o 3) todos los elementos para un valor UserID concreto dentro de un intervalo de tiempo específico. Las consultas de intervalos con el valor "Time" solo se admiten cuando se especifica el ciclo hash UserID.
Amazon DynamoDB también se integra con Amazon Elastic MapReduce (Amazon EMR). Amazon EMR también permite a las empresas realizar análisis complejos sobre grandes conjuntos de datos mediante la utilización de un marco Hadoop alojado en AWS de pago según consumo. A continuación, se describen algunas de las formas en que puede utilizarse EMR con DynamoDB:
Los clientes pueden analizar los datos almacenados en DynamoDB con EMR y almacenar los resultados del análisis en S3, dejando los datos originales en DynamoDB.
Por ejemplo, si utiliza Amazon DynamoDB para almacenar los pedidos de los clientes, puede crear una nueva tabla de pedidos cada mes y, con la función de consulta de varias tablas de EMR, puede unir diferentes tablas en DynamoDB para responder a preguntas tales como "¿Cuáles son los pedidos realizados por un cliente concreto en los últimos 3 meses?". A continuación, puede utilizar EMR para almacenar los resultados de estas preguntas en S3 para consultas posteriores, mientras conserva los datos en tablas intactas de pedidos mensuales de clientes en DynamoDB.
Los clientes pueden realizar una copia de seguridad de los datos en S3 desde DynamoDB con la utilización de EMR.
Remitiéndonos al ejemplo anterior de los pedidos de los clientes, cuando deje de escribir datos en una tabla de pedidos mensuales, puede realizar una copia de seguridad de dicha tabla en S3 y eliminarla de DynamoDB para beneficiarse del coste de almacenamiento más reducido que ofrece S3. Los datos almacenados en S3 podrán consultarse con facilidad para realizar análisis, tal como se describe a continuación.
Los clientes también pueden utilizar Amazon EMR para acceder a los datos de varias ubicaciones (por ejemplo, Amazon DynamoDB, Amazon RDS y Amazon S3), realizar análisis complejos de este conjunto de datos combinados y almacenar los resultados de este proceso en Amazon S3.
Por ejemplo, si utiliza Amazon DynamoDB para almacenar pedidos de clientes, puede crear una nueva tabla de pedidos cada mes y, al final de cada mes, archivar los pedidos con una antigüedad de 6 meses en Amazon S3 mediante la utilización de Amazon EMR. Esto le permite archivar en Amazon S3 los pedidos a los que no suele acceder para reducir gastos y conservar en DynamoDB solo aquellos pedidos a los que accede con frecuencia. Puede utilizar EMR para realizar análisis de los pedidos actuales almacenados en DynamoDB y de las tablas de pedidos archivados almacenadas en Amazon S3 para responder a preguntas tales como: "¿Cuántos pedidos del widget X ha realizado el cliente Y en los últimos 48 meses?".
El uso que realice de este servicio está sujeto al Contrato de cliente de Amazon Web Services.