Hoja de referencia de DynamoDB: todo lo que necesita saber sobre Amazon Dynamo DB para la certificación de desarrollador asociado certificado de AWS 2020

La aparición de los servicios en la nube ha cambiado la forma en que creamos aplicaciones web. Esto, a su vez, ha cambiado las responsabilidades de un desarrollador web.

Solíamos construir todo en una sola aplicación web en un solo servidor. Esto abarcó múltiples responsabilidades, como almacenamiento, bases de datos, autenticación, trabajos en segundo plano, almacenamiento en caché y más.

Los servicios en la nube nos permiten reducir la complejidad de nuestra aplicación web y servidores web al trasladar las responsabilidades a estos servicios en la nube altamente disponibles, escalables y duraderos.

Un desarrollador web que sabe cómo implementar e integrar servicios en la nube con una aplicación web es lo que llamamos un ingeniero en la nube.

Si desea acelerar su carrera como desarrollador web en 2020, la certificación de desarrollador asociado de AWS puede ayudarlo a lograr ese objetivo final.

El servicio de AWS más importante que debe estudiar para aprobar el examen de AWS Developer Associate es DynamoDB. Así que he lanzado lo que llamo The Ultimate DynamoDB Cheatsheet de forma gratuita. Puede imprimir esto el día de su examen para aumentar sus posibilidades de aprobar.

Fue Nader, el promotor de desarrolladores de AWS para AWS Amplify, quien sugirió que publicara mi hoja de referencia completa de forma gratuita. No tendrías este recurso si no fuera por él.

Fue Kirk, el tecnólogo senior de AWS que se especializa en DynamoDB, quien ofreció su tiempo como voluntario para garantizar la precisión de esta hoja de referencia. ¡Esto lo convirtió de 5 páginas a 8 páginas! ????????

Si tienes Twitter, hazme el favor de agradecerles tuiteando a @ dabit3 y @NoSQLKnowHow con el hashtag #AWSCertified.

Así que pasemos a la hoja de trucos:

Los conceptos básicos de DynamoDB

DynamoDB es una base de datos de documentos y clave / valor NoSQL totalmente administrada.

DynamoDB es adecuado para cargas de trabajo con cualquier cantidad de datos que requieren un rendimiento de lectura y escritura predecible y escalado automático de grandes a pequeños y en cualquier lugar intermedio.

DynamoDB escala hacia arriba y hacia abajo para admitir cualquier capacidad de lectura y escritura que especifique por segundo en el modo de capacidad aprovisionada. O puede configurarlo en el modo On-Demand y hay poca o ninguna planificación de capacidad.

  • DynamoDB almacena 3 copias de datos en unidades SSD en 3 AZ de una región.
  • Los tipos de datos más comunes de DynamoDB son B (binario), N (número) y S (cadena)
  • Las tablas constan de elementos (filas) y los elementos constan de atributos (columnas)

Consistencia de lectura y escritura

DynamoDB se puede configurar para admitir lecturas eventualmente consistentes (predeterminado) y lecturas fuertemente consistentes por llamada.

Eventualmente, los datos de lecturas consistentes se devuelven inmediatamente, pero los datos pueden ser inconsistentes. Las copias de datos serán generalmente consistentes en 1 segundo.

Las lecturas muy consistentes siempre se leerán desde la partición líder, ya que siempre tiene una copia actualizada. Los datos nunca serán inconsistentes, pero la latencia puede ser mayor. Las copias de datos serán consistentes con una garantía de 1 segundo.

Particiones

Una partición es cuando DynamoDB divide su tabla en fragmentos más pequeños de datos. Esto acelera las lecturas para tablas muy grandes.

DynamoDB crea particiones automáticamente para:

  • Cada 10 GB de datos o
  • Cuando excede los límites de RCU (3000) o WCU (1000) para una sola partición
  • Cuando DynamoDB ve un patrón de una partición activa, dividirá esa partición en un intento de solucionar el problema.

DynamoDB intentará dividir uniformemente las RCU y WCU entre particiones

Diseño de clave primaria

Las claves primarias definen dónde y cómo se almacenarán sus datos en particiones

El esquema de claves puede estar compuesto por dos claves:

  • La clave de partición (PK) también se conoce como HASH
  • losSort Key (SK) también se conoce como RANGE
Al utilizar la API de AWS DynamoDB, p. Ej. CLI, SDK se refieren a PK y SK por sus nombres alternativos debido a razones heredadas.

La clave principal viene en dos tipos:

  • Clave primaria simple (usando solo una clave de partición)
  • Clave principal compuesta (usando una partición y una clave de clasificación)

La singularidad clave es la siguiente:

  • Al crear una clave primaria simple, el valor de PK puede ser único
  • Al crear una clave primaria compuesta, la PK y SK combinados deben ser únicos

Cuando se utiliza una clave de clasificación, los registros de la partición se agrupan lógicamente en orden ascendente.

Índices secundarios

DynamoDB tiene dos tipos de índices:

  • LSI : índice secundario local
  • GSI - Índice secundario global

LSI: índice secundario local

  • Apoya lecturas de consistencia fuerte o eventual
  • Solo se puede crear con la tabla inicial (no se puede modificar ni eliminar a menos que también se elimine la tabla)
  • Solo compuesto
  • 10GB o menos por partición
  • Comparta unidades de capacidad con la mesa base
  • Debe compartir la clave de partición (PK) con la tabla base.

GSI - Índice secundario global

  • Solo lecturas de consistencia eventual (no puede proporcionar una consistencia fuerte)
  • Puede crear, modificar o eliminar en cualquier momento
  • Simple y compuesto
  • Puede tener cualquier atributo como clave principal (PK) o clave secundaria (SK)
  • Sin restricción de tamaño por partición
  • Tiene su propia configuración de capacidad (no se comparte con la mesa base)

Escanear

Sus tablas deben diseñarse de tal manera que los patrones de acceso primario de su carga de trabajo no utilicen escaneos. En general, las exploraciones deben ser necesarias con moderación, por ejemplo, para un informe poco frecuente.

  • Explora todos los elementos de una tabla y luego devuelve uno o más elementos a través de filtros
  • De forma predeterminada, devuelve todos los atributos para cada elemento (use ProjectExpression para limitar)
  • Los escaneos son secuenciales y puede acelerar un escaneo a través de escaneos paralelos usando Segmentos y Segmentos totales
  • Los análisis pueden ser lentos, especialmente con tablas muy grandes y pueden consumir fácilmente el rendimiento aprovisionado.
  • Los escaneos son una de las formas más costosas de acceder a los datos en DynamoDB.

Consulta

  • Buscar elementos basados ​​en valores de clave principal
  • La tabla debe tener una clave compuesta para poder consultar
  • Por defecto, las consultas son eventualmente consistentes (use ConsistentRead True para cambiar Strongly Consistent)
  • De forma predeterminada, devuelve todos los atributos para cada elemento encontrado por una consulta (use ProjectExpression para limitar)
  • De forma predeterminada, está ordenado de forma ascendente (use ScanIndexForward a False para invertir el orden a descendente)

Modos de capacidad

DynamoDB tiene dos modos de capacidad, aprovisionado y bajo demanda . Puede cambiar entre estos modos una vez cada 24 horas .

Aprovisionado

La capacidad de rendimiento aprovisionada es la cantidad máxima de capacidad que su aplicación puede leer o escribir por segundo desde una tabla o índice.

  • Aprovisionado es adecuado para cargas de trabajo predecibles o de estado estable
  • RCU es unidad de capacidad de lectura
  • WCU es la unidad de capacidad de escritura

Debe habilitar Auto Scaling con el modo de capacidad aprovisionada . En este modo, establece un piso y un techo para la capacidad que desea que admita la mesa. DynamoDB agregará y eliminará automáticamente la capacidad entre estos valores en su nombre y acelerará las llamadas que superen el límite máximo durante demasiado tiempo.

Si va más allá de su capacidad aprovisionada, obtendrá una excepción:   ProvisionedThroughputExceededException (aceleración)

La limitación es cuando las solicitudes se bloquean debido a una frecuencia de lectura o escritura superior a los umbrales establecidos. Por ejemplo, exceder la capacidad aprovisionada establecida, división de particiones, desajuste de capacidad de tabla / índice.

Bajo demanda

La capacidad bajo demanda se paga por solicitud. Por lo tanto, solo paga por lo que usa.

  • On-Demand es adecuado para cargas de trabajo nuevas o impredecibles
  • El rendimiento solo está limitado por los límites superiores predeterminados para una tabla (40K RCU y 40K WCU)
  • El estrangulamiento puede ocurrir si excede el doble de su capacidad máxima anterior (marca de agua alta) en 30 minutos. Por ejemplo, si anteriormente alcanzó un máximo de 30.000 operaciones / seg, no podría alcanzar un pico inmediatamente a 90.000 operaciones / seg, pero podría llegar a 60.000 operaciones / seg.
  • Dado que no existe un límite estricto, On-Demand podría resultar muy costoso en función de los escenarios emergentes

Cálculo de lecturas y escrituras

Calcular lecturas (RCU)

Una unidad de capacidad de lectura representa:

  • una lectura muy consistente por segundo,
  • o dos lecturas eventualmente consistentes por segundo,
  • para un artículo de hasta 4 KB de tamaño.

Cómo calcular RCU para fuertes

  1. Redondea los datos al 4 más cercano.
  2. Dividir los datos entre 4
  3. Veces por número de lecturas

He aquí un ejemplo:

  • 50 lecturas a 40 KB por artículo. (40/4) x 50 = 500 RCU
  • 10 lecturas a 6 KB por artículo. (8/4) x 10 = 20 UCR
  • 33 lecturas a 17 KB por artículo. (20/4) x 33 = 132 UCR

Cómo calcular RCU para eventuales

  1. Redondea los datos al 4 más cercano.
  2. Dividir los datos entre 4
  3. Veces por número de lecturas
  4. Dividir el número final por 2
  5. Redondea al número entero más cercano

He aquí un ejemplo:

  • 50 lecturas a 40 KB por artículo. (40/4) x 50/2 = 250 RCU
  • 11 lecturas a 9 KB por artículo. (12/4) x 11/2 = 17 UCR
  • 14 lecturas a 24 KB por artículo. (24/4) x 14/2 = 35 UCR

Cálculo de escrituras (escrituras)

Una unidad de capacidad de escritura representa:

  • una escritura por segundo,
  • para un artículo de hasta 1 KB

Cómo calcular escrituras

  1. Redondea los datos al 1 más cercano.
  2. Veces por número de escrituras

He aquí un ejemplo:

  • 50 escrituras a 40 KB por artículo. 40 x 50 = 2000 WCU
  • 11 escrituras a 1 KB por elemento. 1 x 11 = 11 WCU
  • 18 escrituras a 500 BYTES por elemento. 1 x 18 = 18 WCU

Acelerador de DynamoDB

DynamoDB Accelerator (DAX) es un caché de escritura en memoria totalmente administrado para DynamoDB que se ejecuta en un clúster

  • Las lecturas son finalmente consistentes
  • Las solicitudes entrantes se distribuyen uniformemente en todos los nodos del clúster.
  • DAX puede reducir los tiempos de respuesta de lectura a microsegundos

DAX es ideal para:

  • tiempos de respuesta más rápidos posibles
  • aplicaciones que leen una pequeña cantidad de elementos con más frecuencia
  • aplicaciones de lectura intensiva

DAX no es ideal para:

  • Aplicaciones que requieren lecturas muy consistentes
  • Aplicaciones que no requieren tiempos de respuesta de lectura de microsegundos
  • Aplicaciones que requieren mucha escritura o que no realizan mucha actividad de lectura
  • Si no necesita DAX, considere usar ElastiCache

Transacciones de DynamoDB

DynamoDB admite transacciones a través de las llamadas a la API TransactWriteItems y TransactGetItems .

Las transacciones le permiten consultar varias tablas a la vez y son un enfoque de todo o nada (todas las llamadas a la API deben tener éxito).

Tablas globales

Las tablas globales de DynamoDB proporcionan una solución totalmente administrada para implementar bases de datos multirregionales y multimaestro .

Corrientes

DynamoDB Streams le permite configurar una función Lambda que se activa cada vez que se modifican datos en una tabla para reaccionar a los cambios. Las transmisiones no consumen RCU.

API de DynamoDB

Los comandos más notables de la API de DynamoDB a través de CLI:   aws dynamodb

aws dynamodb get-item devuelve un conjunto de atributos para el elemento con la clave primaria dada. Si no hay ningún elemento que coincida, no devuelve ningún dato y no habrá ningún elemento de elemento en la respuesta.

aws dynamodb put-item Crea un nuevo elemento o reemplaza un elemento antiguo por uno nuevo. Si un artículo que tiene la misma clave primaria que el nuevo artículo ya existe en la tabla especificada, el nuevo artículo reemplaza completamente al artículo existente.

aws dynamodb update-item Edita los atributos de un elemento existente o agrega un elemento nuevo a la tabla si aún no existe.

aws dynamodb batch-get-item devuelve los atributos de uno o más elementos de una o más tablas. Identifica los elementos solicitados por clave principal. Una sola operación puede recuperar hasta 16 MB de datos , que pueden contener hasta 100 elementos .

aws dynamodb batch-write-item coloca o elimina varios elementos en una o más tablas. Puede escribir hasta 16 MB de datos , que pueden comprender hasta 25 solicitudes de colocación o eliminación . Los elementos individuales que se van a escribir pueden tener un tamaño de hasta 400 KB .

aws dynamodb create-table agrega una nueva tabla a su cuenta. Los nombres de las tablas deben ser únicos dentro de cada región.

aws dynamodb update-table Modifica la configuración del rendimiento aprovisionado, los índices secundarios globales o la configuración de las transmisiones de DynamoDB para una tabla determinada.

La operación de aws dynamodb delete-table elimina una tabla y todos sus elementos.

aws dynamodb transact-get-items es una operación sincrónica que recupera de forma atómica varios elementos de una o más tablas (pero no de índices) en una sola cuenta y región. La llamada puede contener hasta 25 objetos . El tamaño total de los elementos de la transacción no puede superar los 4 MB .

aws dynamodb transact-write-items una operación de escritura sincrónica que agrupa hasta 25 solicitudes de acción . Estas acciones pueden apuntar a elementos en diferentes tablas, pero no a diferentes cuentas o regiones de AWS, y no hay dos acciones que puedan apuntar al mismo elemento.

La consulta aws dynamodb encuentra elementos basados ​​en valores de clave primaria. Puede consultar una tabla o un índice secundario que tenga una clave primaria compuesta.

aws dynamodb scan devuelve uno o más elementos y atributos de elementos accediendo a cada elemento de una tabla o índice secundario.

? #rocketsToMars

Quiero ayudarlo a ingresar a la industria de la web y la nube. Es por eso que estoy lanzando mi curso gratuito AWS Developer Associate Certification 2020 en el canal de YouTube freeCodeCamp con más de 10 horas de contenido adicional que nunca había lanzado anteriormente.

Este curso gratuito se lanzará en unos días mientras aplico los toques finales.

Creo en hacer que la educación tecnológica sea accesible para el mundo porque, a su vez, cuanto más mejoremos nuestras habilidades, antes podremos sacar a las personas de la pobreza, antes podremos diseñar soluciones sostenibles para mantener nuestro planeta verde y saludable, y antes podremos lanzar cohetes a Marte.