Seleccione un servicio de base de datos para sus aplicaciones basadas en Lambda - AWS Lambda

Seleccione un servicio de base de datos para sus aplicaciones basadas en Lambda

Muchas aplicaciones sin servidor necesitan almacenar y recuperar datos. AWS ofrece varias opciones de bases de datos que funcionan con funciones de Lambda. Dos de las opciones más populares son Amazon DynamoDB, un servicio de base de datos NoSQL, y Amazon RDS, una solución de base de datos relacional tradicional. En las siguientes secciones se explican las principales diferencias entre estos servicios cuando se utilizan con Lambda y se lo ayuda a seleccionar el servicio de base de datos adecuado para su aplicación sin servidor.

Para obtener más información sobre los demás servicios de bases de datos que AWS ofrece y comprender sus casos de uso y sus desventajas de manera más general, consulte Elegir un servicio de base de datos de AWS. Todos los servicios de bases de datos de AWS son compatibles con Lambda, pero es posible que no todos sean adecuados para su caso de uso particular.

¿Cuáles son sus opciones al momento de seleccionar un servicio de base de datos con Lambda?

AWS ofrece varios servicios de bases de datos. Para las aplicaciones sin servidor, dos de las opciones más populares son DynamoDB y Amazon RDS.

  • DynamoDB es una base de datos NoSQL completamente administrada y optimizada para aplicaciones sin servidor. Ofrece un escalado fluido y un rendimiento uniforme de milisegundos de un solo dígito a cualquier escala.

  • Amazon RDS es un servicio de base de datos relacional gestionado que admite varios motores de bases de datos, incluidos MySQL y PostgreSQL. Proporciona funciones SQL conocidas con una infraestructura gestionada.

Recomendaciones si ya conoce sus requisitos

Si ya tiene claros sus requisitos, estas son nuestras recomendaciones básicas:

Recomendamos DynamoDB para las aplicaciones sin servidor que necesitan un rendimiento uniforme de baja latencia, escalado automático y que no requieren uniones ni transacciones complejas. Es especialmente adecuado para aplicaciones basadas en Lambda debido a su naturaleza sin servidor.

Amazon RDS es una mejor opción cuando necesita consultas SQL complejas, uniones o si tiene aplicaciones existentes que utilizan bases de datos relacionales. Sin embargo, tenga en cuenta que la conexión de las funciones de Lambda a Amazon RDS requiere una configuración adicional y puede afectar a los tiempos de arranque en frío.

Aspectos a tener en cuenta al seleccionar un servicio de base de datos

Al elegir entre DynamoDB y Amazon RDS para sus aplicaciones Lambda, tenga en cuenta los siguientes factores:

  • Administración de conexiones y arranques en frío

  • Patrones de acceso a datos

  • Complejidad de la consulta

  • Requisitos de coherencia de datos

  • Características de escalado

  • Modelo de costos

Si comprende estos factores, puede seleccionar la opción que mejor se adapte a sus necesidades de uso específicas.

  • DynamoDB utiliza una API HTTP para todas las operaciones. Las funciones de Lambda pueden realizar solicitudes inmediatas sin mantener las conexiones, lo que se traduce en un mejor rendimiento de arranque en frío. Cada solicitud se autentica mediante credenciales de AWS sin sobrecargar la conexión.

  • Amazon RDS requiere la administración de grupos de conexiones, ya que utiliza conexiones de bases de datos tradicionales. Esto puede afectar a los arranques en frío, ya que las nuevas instancias de Lambda necesitan establecer conexiones. Tendrá que implementar estrategias de agrupación de conexiones y, posiblemente, utilizar Amazon RDS Proxy para gestionar las conexiones de forma eficaz. Tenga en cuenta que el uso de Amazon RDS Proxy conlleva costos adicionales.

  • DynamoDB funciona mejor con patrones de acceso conocidos y diseños de tabla única. Es ideal para las aplicaciones de Lambda que necesitan un acceso uniforme de baja latencia a los datos en función de claves principales o índices secundarios.

  • Amazon RDS proporciona flexibilidad para consultas complejas y patrones de acceso cambiantes. Es más adecuado cuando las funciones de Lambda necesitan realizar consultas únicas y personalizadas, o uniones complejas en varias tablas.

  • DynamoDB se destaca por sus operaciones sencillas basadas en claves y por sus patrones de acceso predefinidos. Las consultas complejas deben diseñarse en torno a estructuras de índices y las uniones deben gestionarse en el código de la aplicación.

  • Amazon RDS admite consultas SQL complejas con uniones, subconsultas y agregaciones. Esto puede simplificar el código de la función de Lambda cuando se necesitan operaciones de datos complejas.

  • DynamoDB ofrece opciones de consistencia posterior y alta, con una consistencia alta disponible para lecturas de un solo elemento. Se admiten transacciones, pero con algunas limitaciones.

  • Amazon RDS es totalmente compatibles con las propiedades de atomicidad, coherencia, aislamiento y durabilidad (ACID), y admite transacciones complejas. Si sus funciones de Lambda requieren transacciones complejas o una consistencia alta en varios registros, Amazon RDS podría ser más adecuado.

  • DynamoDB escala automáticamente en función de su carga de trabajo. Puede gestionar picos repentinos de tráfico procedentes de las funciones de Lambda sin necesidad de aprovisionamiento previo. Puede utilizar el modo de capacidad bajo demanda para pagar solo lo que utilice, lo que se adapta perfectamente al modelo de escalado de Lambda.

  • Amazon RDS tiene una capacidad fija en función del tamaño de instancia que elija. Si varias funciones de Lambda intentan conectarse al mismo tiempo, es posible que supere la cuota de conexión. Debe administrar cuidadosamente los grupos de conexiones y, si es posible, implementar una lógica de reintento.

  • Los precios de DynamoDB se ajustan bien a los de las aplicaciones sin servidor. Con la capacidad bajo demanda, solo paga las lecturas y escrituras reales que realizan sus funciones de Lambda. No se cobran cargos por el tiempo de inactividad.

  • Amazon RDS cobra por la instancia en ejecución independientemente del uso. Esto puede resultar menos rentable para las cargas de trabajo esporádicas que pueden ser típicas de las aplicaciones sin servidor. Sin embargo, podría resultar más económico para las cargas de trabajo de alto rendimiento con un uso constante.

Comenzar a usar el servicio de base de datos de su elección

Ahora que ha leído los criterios para seleccionar entre DynamoDB y Amazon RDS y las principales diferencias entre ellos, puede seleccionar la opción que mejor se adapte a sus necesidades y utilizar los siguientes recursos para empezar a utilizarla.

DynamoDB
Comenzar a usar DynamoDB con los siguientes recursos
  • Para obtener una introducción al servicio de DynamoDB, consulte ¿Qué es DynamoDB? en la Guía para desarrolladores de Amazon DynamoDB.

  • Siga el tutorial Uso de Lambda con API Gateway para ver un ejemplo del uso de una función de Lambda para realizar operaciones CRUD en una tabla de DynamoDB en respuesta a una solicitud de API.

  • Lea Programación con DynamoDB y los SDK de AWS en la Guía para desarrolladores de Amazon DynamoDB para obtener más información sobre cómo acceder a DynamoDB desde la función de Lambda mediante uno de los SDK de AWS.

Amazon RDS
Comience a usar Amazon RDS con los siguientes recursos