¿Cómo Escala DynamoDB? Modos On Demand y Provisioned

published on 09 March 2024

Si estás considerando usar DynamoDB para tu aplicación, es crucial entender cómo escalarla adecuadamente. DynamoDB ofrece dos modos principales de escalado: On Demand y Provisioned. Aquí te doy un resumen rápido para ayudarte a elegir el mejor camino:

  • On Demand: Ideal si no puedes predecir el tráfico de tu aplicación. Paga solo por lo que usas.
  • Provisioned: Perfecto si conoces el tráfico esperado. Configura y paga por una capacidad específica.

Puntos clave para tomar en cuenta:

  • Predicibilidad del Tráfico: On Demand para tráfico impredecible; Provisioned para tráfico predecible.
  • Costos: On Demand puede ser más caro pero flexible; Provisioned es más económico con planificación.
  • Rendimiento y Administración: Provisioned ofrece rendimiento desde el inicio, mientras que On Demand se ajusta según la demanda.

Comparación Rápida

Característica On Demand Provisioned
Costo Pagas por uso Más barato con planificación
Escalabilidad Automática Manual/Automática con límites
Rendimiento Mejora con el uso Alto desde el inicio
Capacidad Ilimitada Según planificación
Administración Sencilla Requiere monitoreo y ajustes

Elegir entre On Demand y Provisioned depende de tus necesidades específicas de rendimiento, costos y escalabilidad. Ambos modos tienen sus ventajas, y la decisión final debe basarse en una evaluación cuidadosa de tus requisitos.

¿Qué es DynamoDB?

DynamoDB es una base de datos de AWS. Es rápida, siempre está disponible y puede crecer mucho según lo necesites. Lo hace especial porque:

  • Puedes guardar datos como documentos o pares de clave-valor.
  • Copia tus datos en varios lugares automáticamente para que no los pierdas.
  • Puede manejar mucha información y tráfico sin problemas.
  • Funciona bien con otros servicios de AWS, como AWS Lambda o CloudWatch.
  • Te deja elegir cómo quieres pagar y usar los recursos, con los modos On Demand o Provisioned.

En pocas palabras, DynamoDB te ayuda a hacer aplicaciones grandes sin complicarte mucho.

Claves de Partición y Ordenación

En DynamoDB, guardas información en ítems. Cada ítem necesita una clave única que puede ser:

  • Clave de partición: Como el nombre de una persona, para identificarla directamente.
  • Clave de partición + clave de ordenación: Usas dos cosas, como nombre y apellido, para identificar a alguien de manera única.

La clave de partición ayuda a organizar y encontrar tus datos rápido. Elegir bien estas claves es importante para que todo funcione bien.

Replicación y Consistencia de Datos

DynamoDB guarda tus datos en varios lugares al mismo tiempo para que no los pierdas si hay un problema. Esto se hace automáticamente.

Como todos los lugares pueden tener datos nuevos al mismo tiempo, a veces hay que esperar un poquito para que todos tengan la misma información. Esto se llama consistencia eventual.

Cuando lees datos, puedes elegir si quieres:

  • Eventualmente consistente: Rápido, pero puede que no veas la última actualización inmediatamente.
  • Fuertemente consistente: Un poco más lento, pero siempre ves la última versión de tus datos.

Modo On Demand

El modo On Demand de DynamoDB es como tener un taxi que se agranda automáticamente cuando más amigos se suben. No tienes que decirle cuánto espacio necesitas; él lo figura por sí solo.

Unidades de solicitud de lectura y escritura

Imagina que cada vez que lees o escribes algo en DynamoDB, usas una moneda. Si lees algo pequeño, como un mensaje de texto, gastas una moneda. Si escribes algo del mismo tamaño, también es una moneda. DynamoDB cuenta cuántas monedas gastas y te cobra por eso.

Picos de tráfico y propiedades de escalado

En el modo On Demand, si de repente mucha gente quiere usar tu aplicación, DynamoDB automáticamente se hace más grande para que todos puedan entrar sin problemas. Puede crecer rápido y sin límites, lo que es genial si no sabes cuánta gente va a usar tu app.

Rendimiento inicial y precalentamiento de tablas

Al principio, las tablas en el modo On Demand empiezan un poco lentas, pero se ponen más rápidas a medida que más gente las usa. Si sabes que va a haber mucha actividad, puedes hacer una especie de ensayo general con tráfico falso para que la tabla esté lista y rápida cuando realmente la necesites.

Modo Provisioned

El modo Provisioned de DynamoDB es como decirle de antemano a DynamoDB cuánto vas a necesitar para leer y escribir datos en tu aplicación. Tú decides cuántas 'unidades' de lectura y escritura quieres tener listas para usar.

Unidades de capacidad de lectura y escritura

  • Una unidad de capacidad de lectura (RCU) permite leer datos (como un mensaje) que no pesen más de 4 KB, cada segundo.
  • Una unidad de capacidad de escritura (WCU) te deja escribir datos que no superen 1 KB, cada segundo.

Si tus datos son más grandes, necesitarás más unidades. DynamoDB calcula cuántas unidades necesitas basándose en el tamaño de tus datos.

Escalado automático de DynamoDB

Puedes activar una opción para que DynamoDB ajuste automáticamente cuántas unidades de lectura y escritura necesitas, según cuánto estés usando la aplicación. Esto es útil porque mantiene tu aplicación funcionando bien, incluso si de repente mucha gente la usa más de lo normal.

El escalado automático mira cuánto estás usando y ajusta las unidades necesarias para mantener todo funcionando sin problemas.

Capacidad reservada

Si ya sabes que vas a necesitar una cierta cantidad de unidades todo el tiempo, puedes 'reservar' estas unidades. Esto te sale más barato que pagar por ellas mes a mes. Es como comprar al por mayor: te comprometes a usar DynamoDB por 1 o 3 años, y a cambio, te hacen un descuento.

Esta opción te ayuda a ahorrar dinero si tu aplicación necesita siempre un cierto nivel de actividad en DynamoDB.

sbb-itb-03dc61e

Comparación entre Modos

Característica On Demand Provisioned
Costo Pagas solo por lo que usas. Sale más caro por cada cosa que haces. Si planeas con anticipación, te sale más barato por cada cosa que haces.
Escalabilidad Se ajusta solo y no tiene límite. Tienes que ajustarlo tú, pero puedes ponerle que se ajuste solo. Aún así, tiene un tope.
Rendimiento Al principio puede ser lento, pero mejora con el uso. Es rápido desde que lo empiezas a usar.
Capacidad No tiene límite. Depende de lo que hayas planeado usar.
Complejidad Es fácil de usar desde el principio. Necesitas pensar cuánto vas a usar antes de empezar.

El modo On Demand de DynamoDB se ajusta solo según cuánto lo uses, lo que lo hace fácil para empezar sin tener que preocuparte por cuánto vas a necesitar. Pero, cuesta más por cada cosa que haces.

El modo Provisioned te hace pensar y decidir cuánto vas a necesitar antes de empezar, lo que puede ser un poco más complicado al principio. Pero, si lo haces bien, te sale más barato por cada cosa que haces. También puedes reservar lo que necesitas para ahorrar más.

En resumen:

  • On Demand es mejor si tu aplicación es nueva o si no sabes cuánto la van a usar.
  • Provisioned es mejor si ya sabes más o menos cuánto va a usar tu aplicación.

La decisión depende de lo que necesites y de si prefieres ahorrar dinero o tener más simplicidad. DynamoDB te permite cambiar entre estos modos cuando lo necesites.

Consideraciones para Elegir el Modo

Al decidir si usar On Demand o Provisioned en DynamoDB, piensa en estos puntos importantes:

Predicibilidad del Tráfico

  • Si el uso de tu aplicación cambia mucho y no sabes cuánto va a variar, On Demand es una buena opción. Así no te preocupas por planear de más o de menos.
  • Si sabes cómo va a ser el uso de tu aplicación, es decir, si es más o menos constante, Provisioned puede ayudarte a controlar mejor tus gastos y cómo funciona tu app.

Flexibilidad de Costos vs. Previsibilidad de Costos

  • On Demand te da más libertad pero puede que los costos te sorprendan, ya que pagas por lo que usas, sin compromisos.
  • Con Provisioned, puedes planear tus gastos según lo que necesitas. Y si reservas capacidad, puedes ahorrar más.

Requisitos de Rendimiento

  • Si es importante que tu aplicación funcione rápido y sin cambios desde el principio, Provisioned es mejor.
  • Si no te preocupa mucho cómo funcione al inicio y puede mejorar con el tiempo, On Demand podría ser suficiente.

Facilidad de Administración

  • On Demand es más sencillo de manejar porque DynamoDB ajusta todo automáticamente.
  • Con Provisioned, necesitas estar atento y ajustar las cosas cuando sea necesario.

En resumen, si prefieres algo fácil y flexible, On Demand puede ser lo tuyo. Pero si buscas controlar mejor tus costos y cómo funciona tu aplicación, con un uso bien definido, Provisioned te ofrece más control.

Conclusiones

DynamoDB te da dos maneras de hacer crecer tu base de datos según lo que necesites:

  • Modo On Demand: Es ideal si no sabes cuánto va a cambiar el uso de tu aplicación. DynamoDB se encarga de ajustarse por sí mismo y tú solo pagas por lo que usas. Es fácil de usar desde el principio, pero puede que te cueste más a largo plazo.
  • Modo Provisioned: Es la mejor opción si tienes una idea clara de cuánto vas a usar tu base de datos. Necesitas planificar cuánta capacidad necesitas, pero esto puede ayudarte a ahorrar dinero y asegurar un buen rendimiento desde el inicio. Esto requiere más esfuerzo al principio.

Cuando elijas entre estos modos, considera:

  • Qué tan fácil es prever cuánto usarás DynamoDB
  • Si prefieres que DynamoDB ajuste las cosas por ti o si quieres tener más control
  • Qué tan importantes son para ti el rendimiento y la disponibilidad
  • Cómo está tu presupuesto y qué tanto puedes ajustarte en gastos

Para muchos, empezar con On Demand es lo más fácil mientras aprendes más sobre tu aplicación, y luego cambiar a Provisioned para mejorar los costos y el rendimiento.

DynamoDB te permite cambiar entre estos modos según cambien tus necesidades. Así, puedes aprovechar lo mejor de cada uno.

Si configuras bien desde el inicio y sigues de cerca tu uso con las métricas de CloudWatch, podrás hacer que DynamoDB trabaje a tu favor y ayudarte a crecer tu aplicación sin problemas.

Preguntas Relacionadas

¿Qué tipo de base de datos es DynamoDB?

Amazon DynamoDB es una base de datos NoSQL que se encarga de todo por ti y te permite trabajar con grandes cantidades de datos. Es perfecta para aplicaciones que necesitan trabajar muy rápido y con mucha información.

¿Cómo se hace una consulta en DynamoDB?

Para buscar algo en DynamoDB, sigue estos pasos:

  • Decide qué información específica necesitas buscar.
  • Usa esa información para crear una petición de búsqueda.
  • Manda esta petición a DynamoDB.
  • Revisa los resultados que te devuelve DynamoDB.

Por ejemplo:

// Imagina que buscas algo con una clave '123'

QueryRequest queryReq = new QueryRequest()
    .withTableName("MiTabla")
    .withKeyConditionExpression("ClaveParticion = :v_id")
    .withExpressionAttributeValues(hashKeyValues);

ResultSet resultados = dynamoDB.query(queryReq);

for (Map<String, AttributeValue> item : resultados) {
    // Aquí procesas cada resultado
}

¿Para qué se usa la Clave de Ordenación en DynamoDB?

La Clave de Ordenación te ayuda a organizar y buscar datos de manera más eficiente en DynamoDB, especialmente cuando tienes muchos datos con la misma Clave de Partición.

¿Qué es una clave principal en Amazon DynamoDB?

La clave principal en DynamoDB es como un identificador único para tus datos. Está compuesta por dos partes:

  • Clave de partición: Esta es la parte principal que identifica de manera única cada elemento.
  • Clave de ordenación: Esta parte es opcional y te ayuda a organizar tus datos dentro de la misma clave de partición.

Por ejemplo, si tienes una tienda, podrías usar el ID del cliente como Clave de Partición y la fecha del pedido como Clave de Ordenación para organizar todos los pedidos de cada cliente.

Related posts

Read more