

# PERF 4: ¿Cómo selecciona una solución de base de datos?
<a name="w2aac19c11b5c11"></a>

 La solución de base de datos óptima para un sistema varía según los requisitos de disponibilidad, constancia, tolerancia de partición, latencia, durabilidad, escalabilidad y capacidad de consulta. Muchos sistemas utilizan diferentes soluciones de bases de datos para varios subsistemas y habilitan diferentes características para mejorar el rendimiento. Seleccionar la solución de base de datos y las características incorrectas para un sistema puede conducir a una menor eficiencia de rendimiento. 

**Topics**
+ [PERF04-BP01 Comprender las características de los datos](perf_right_database_solution_understand_char.md)
+ [PERF04-BP02 Evaluar las opciones disponibles](perf_right_database_solution_evaluate_options.md)
+ [PERF04-BP03 Recopilar y registrar métricas de rendimiento de la base de datos](perf_right_database_solution_collect_metrics.md)
+ [PERF04-BP04 Elegir el almacenamiento de datos según los patrones de acceso](perf_right_database_solution_access_patterns.md)
+ [PERF04-BP05 Optimizar el almacenamiento de datos según las métricas y los patrones de acceso](perf_right_database_solution_optimize_metrics.md)

# PERF04-BP01 Comprender las características de los datos
<a name="perf_right_database_solution_understand_char"></a>

 Elija sus soluciones de administración de datos para que se ajusten de forma óptima a las características, los patrones de acceso y los requisitos de sus conjuntos de datos de carga de trabajo. A la hora de seleccionar e implementar una solución de administración de datos, debe asegurarse de que las características de consulta, escalado y almacenamiento admiten los requisitos de datos de la carga de trabajo. Obtenga información sobre cómo las distintas opciones de bases de datos se ajustan a sus modelos de datos y qué opciones de configuración son las mejores para su caso de uso.  

 AWS proporciona numerosos motores de bases de datos personalizadas, entre los que se incluyen bases de datos relacionales, de valor clave, de documentos, en memoria, de gráficos, de serie temporal y de libro mayor. Cada solución de administración de datos tiene opciones y configuraciones a su disposición para admitir sus casos de uso y modelos de datos. Su carga de trabajo podría utilizar varias soluciones de bases de datos diferentes, en función de las características de los datos. Al seleccionar las mejores soluciones de bases de datos para un problema específico, puede prescindir de las bases de datos monolíticas, con el enfoque de solución única que resulta restrictiva, y centrarse en la administración de los datos para satisfacer las necesidades de su cliente. 

 **Resultado deseado:** Las características de datos de la carga de trabajo se documentan con suficiente detalle para facilitar la selección y la configuración de las soluciones de bases de datos de asistencia y proporcionan información sobre posibles alternativas. 

 **Patrones de uso no recomendados comunes:** 
+  No considerar formas de segmentar grandes conjuntos de datos en colecciones más pequeñas de datos que tengan características similares, lo que hace que se pierdan oportunidades de utilizar bases de datos más personalizadas que se ajusten mejor a las características de los datos y del crecimiento. 
+  No identificar los patrones de acceso a los datos por adelantado, lo que conduce a una costosa y compleja repetición posterior del trabajo. 
+  Limitar el crecimiento mediante el uso de estrategias de almacenamiento de datos que no se escalan tan rápidamente como se necesita. 
+  Elegir un tipo de base de datos y un proveedor para todas las cargas de trabajo. 
+  Limitarse a una solución de base de datos porque se tiene experiencia y conocimiento interno de un tipo concreto de solución de base de datos. 
+  Mantener una solución de base de datos porque funcionaba bien en un entorno local. 

 **Beneficios de establecer esta práctica recomendada:** familiarícese con todas las soluciones de bases de datos de AWS para poder determinar la solución de base de datos correcta para sus diversas cargas de trabajo. Después de seleccionar la solución de base de datos adecuada para su carga de trabajo, puede experimentar rápidamente con cada una de esas ofertas de bases de datos para determinar si siguen satisfaciendo sus necesidades de carga de trabajo. 

 **Nivel de riesgo expuesto si no se establece esta práctica recomendada:** Alto 
+  Es posible que no se identifique el ahorro potencial de costes. 
+  Los datos pueden no estar protegidos en el nivel requerido. 
+  Es posible que el acceso a los datos y el rendimiento del almacenamiento no sean óptimos. 

## Guía para la implementación
<a name="implementation-guidance"></a>

 Defina las características de los datos y los patrones de acceso de su carga de trabajo. Revise todas las soluciones de bases de datos disponibles para identificar cuál es la que respalda sus necesidades de datos. En una carga de trabajo determinada, pueden seleccionarse varias bases de datos. Evalúe cada servicio o grupo de servicios y valórelos individualmente. Si se identifican posibles soluciones alternativas de administración de datos para una parte o la totalidad de los datos, experimente con las implementaciones alternativas que podrían desbloquear los beneficios de coste, seguridad, rendimiento y fiabilidad. Actualice la documentación existente, en caso de que se adopte un nuevo enfoque de administración de datos. 


|  **Tipo**  |  **Servicios de AWS**  |  **Características clave**  |  **Casos de uso comunes**  | 
| --- | --- | --- | --- | 
|  Relacionales  |  Amazon RDS, Amazon Aurora  |  Integridad referencial, transacciones ACID, esquema en escritura  |  ERP, CRM, software comercial  | 
|  De clave-valor  |  Amazon DynamoDB  |  Alto rendimiento, baja latencia, escalabilidad casi infinita  |  Carros de la compra (comercio electrónico), catálogos de productos, aplicaciones de chat  | 
|  Documento  |  Amazon DocumentDB  |  Almacenar documentos JSON y consultar sobre cualquier atributo  |  Administración de contenidos (CMS), perfiles de clientes, aplicaciones móviles  | 
|  En memoria  |  Amazon ElastiCache, Amazon MemoryDB  |  Latencia de microsegundos  |  Caché, tablas de clasificación de juegos  | 
|  Gráfico  |  Amazon Neptune  |  Datos muy relacionales en los que las relaciones entre los datos tienen significado  |  Redes sociales, motores de personalización, detección de fraude  | 
|  Serie temporal  |  Amazon Timestream  |  Datos en los que la dimensión principal es el tiempo  |  DevOps, IoT, supervisión  | 
|  Columnas anchas  |  Amazon Keyspaces  |  Cargas de trabajo de Cassandra.  |  Mantenimiento de equipos industriales, optimización de enrutamiento  | 
|  Libro mayor  |  Amazon QLDB  |  Libro mayor inmutable y criptográficamente verificable de los cambios  |  Sistemas de registro, sanidad, cadenas de suministro, instituciones financieras  | 

 **Pasos para la aplicación** 

1.  ¿Cómo están estructurados los datos? (por ejemplo, no estructurados, clave-valor, semiestructurados, relacionales) 

   1.  Si los datos no están estructurados, considere la posibilidad de usar un almacén de objetos como [Amazon S3](https://aws.amazon.com/products/storage/data-lake-storage/) o una base de datos NoSQL como [Amazon DocumentDB.](https://aws.amazon.com/documentdb/) 

   1.  Para los datos de valor clave, considere la posibilidad de usar [DynamoDB](https://aws.amazon.com/documentdb/), [ElastiCache para Redis](https://aws.amazon.com/elasticache/redis/) o bien [MemoryDB.](https://aws.amazon.com/memorydb/) 

   1.  Si los datos tienen una estructura relacional, ¿qué nivel de integridad referencial se requiere? 

      1.  Para las restricciones de clave externa, las bases de datos relacionales como [Amazon RDS](https://aws.amazon.com/rds/) y [Aurora](https://aws.amazon.com/rds/aurora/) pueden proporcionar este nivel de integridad. 

      1.  Normalmente, dentro de un modelo de datos NoSQL, se anularía la normalización de los datos en un único documento o colección de documentos para recuperarlos en una única solicitud en lugar de unirlos en diferentes documentos o tablas.  

1.  ¿Se requiere el cumplimiento de ACID (atomicidad, coherencia, aislamiento, durabilidad)? 

   1.  Si se requieren las propiedades ACID asociadas a las bases de datos relacionales, considere la posibilidad de usar una base de datos relacional como [Amazon RDS](https://aws.amazon.com/rds/) y [Aurora.](https://aws.amazon.com/rds/aurora/) 

1.  ¿Qué modelo de coherencia se requiere? 

   1.  Si su aplicación puede tolerar una coherencia eventual, considere una implementación NoSQL. Revise las demás características como ayuda para elegir qué [base de datos NoSQL](https://aws.amazon.com/nosql/) es la más adecuada. 

   1.  Si se requiere una coherencia fuerte, puede utilizar lecturas con coherencia fuerte con [DynamoDB](https://aws.amazon.com/documentdb/) o una base de datos relacional como [Amazon RDS](https://aws.amazon.com/rds/). 

1.  ¿Qué formatos de consulta y de resultados se deben admitir? (por ejemplo, SQL, CSV, Parque, Avro, JSON, etc.) 

1.  ¿Qué tipos de datos, tamaños de campo y cantidades globales hay? (por ejemplo, texto, numérico, espacial, serie temporal calculada, binario o blob, documento) 

1.  ¿Cómo cambiarán las necesidades de almacenamiento con el tiempo? ¿Cómo afecta esto a la escalabilidad? 

   1.  Las bases de datos sin servidor, como [DynamoDB](https://aws.amazon.com/documentdb/) y [Amazon Quantum Ledger Database](https://aws.amazon.com/qldb/) se escalarán dinámicamente hasta llegar a un almacenamiento casi ilimitado. 

   1.  Las bases de datos relacionales tienen límites máximos de almacenamiento aprovisionado y, a menudo, se deben hacer particiones horizontalmente mediante mecanismos como la fragmentación una vez que alcanzan estos límites. 

1.  ¿Cuál es la proporción de consultas de lectura en relación con las de escritura? ¿Es probable que el almacenamiento en caché mejore el rendimiento? 

   1.  Las cargas de trabajo con mucha lecturas pueden beneficiarse de una capa de caché, que podría ser [ElastiCache](https://aws.amazon.com/elasticache/) o bien [DAX](https://aws.amazon.com/dynamodb/dax/) si la base de datos es DynamoDB. 

   1.  Las lecturas también pueden descargarse en réplicas de lectura con bases de datos relacionales como [Amazon RDS](https://aws.amazon.com/rds/). 

1.  ¿Tiene mayor prioridad el almacenamiento y la modificación (OLTP, procesamiento de transacciones en línea) o la recuperación y la elaboración de informes (OLAP, procesamiento analítico en línea)? 

   1.  Para el procesamiento transaccional de alto rendimiento, considere una base de datos NoSQL como DynamoDB o Amazon DocumentDB. 

   1.  Para las consultas analíticas, considere una base de datos en columnas como [Amazon Redshift](https://aws.amazon.com/redshift/) o la exportación de los datos a Amazon S3 y la realización de análisis mediante [Athena](https://aws.amazon.com/athena/) o bien [QuickSight.](https://aws.amazon.com/quicksight/) 

1.  ¿Qué grado de confidencialidad tienen estos datos y qué nivel de protección y cifrado requieren? 

   1.  Todos los motores Amazon RDS y Aurora admiten el cifrado de datos en reposo mediante AWS KMS. Microsoft SQL Server y Oracle también admiten el cifrado transparente de datos (TDE) nativo cuando se utiliza Amazon RDS. 

   1.  Para DynamoDB, puede utilizar el control de acceso detallado con [IAM](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-overview.html) para controlar quién tiene acceso a determinados datos en el nivel de clave. 

1.  ¿Qué nivel de durabilidad requieren los datos? 

   1.  Aurora replica automáticamente sus datos en tres zonas de disponibilidad en una región, lo que significa que sus datos son muy duraderos con menos posibilidades de pérdida. 

   1.  DynamoDB se replica automáticamente en varias zonas de disponibilidad, lo que proporciona alta disponibilidad y durabilidad de los datos. 

   1.  Amazon S3 proporciona 11 nueves de durabilidad. Muchos servicios de bases de datos, como Amazon RDS y DynamoDB, admiten la exportación de datos a Amazon S3 para la retención y el archivo a largo plazo. 

1.  ¿Los requisitos de [objetivo de tiempo de recuperación (RTO) u objetivo de punto de recuperación (RPO)](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/plan-for-disaster-recovery-dr.html) influyen en la solución? 

   1.  Amazon RDS, Aurora, DynamoDB, Amazon DocumentDB y Neptune admiten la recuperación puntual y la copia de seguridad y restauración bajo demanda.  

   1.  En el caso de los requisitos de alta disponibilidad, las tablas de DynamoDB se pueden replicar globalmente mediante la característica de [tablas globales](https://aws.amazon.com/dynamodb/global-tables/) y los clústeres de Aurora pueden replicarse en varias regiones con la característica de base de datos global. Además, los buckets de S3 pueden replicarse entre Regiones de AWS mediante la replicación entre regiones.  

1.  ¿Existe el deseo de evitar los motores de bases de datos comerciales o costes de licencia? 

   1.  Considere la posibilidad de utilizar motores de código abierto como PostgreSQL y MySQL en Amazon RDS o Aurora 

   1.  Use [AWS DMS](https://aws.amazon.com/dms/) y [AWS SCT](https://aws.amazon.com/dms/schema-conversion-tool/) para realizar migraciones de los motores de bases de datos comerciales a los de código abierto 

1.  ¿Cuál es la expectativa operativa de la base de datos? ¿El cambio a los servicios administrados es una preocupación principal? 

   1.  El uso de Amazon RDS en lugar de Amazon EC2 y DynamoDB o Amazon DocumentDB en lugar de alojar una base de datos NoSQL puede reducir la carga operativa. 

1.  ¿Cómo se accede actualmente a la base de datos? ¿Se trata solo del acceso a la aplicación, o hay usuarios de inteligencia empresarial (BI) y otras aplicaciones comerciales conectadas? 

   1.  Si tiene dependencias de herramientas externas, es posible que deba mantener la compatibilidad con las bases de datos que soportan. Amazon RDS es completamente compatible con las diferentes versiones de motores que soporta, como Microsoft SQL Server, Oracle, MySQL y PostgreSQL. 

1.  A continuación, se presenta una lista de posibles servicios de administración de datos y dónde pueden utilizarse mejor: 

   1.  Las bases de datos relacionales almacenan datos con esquemas predefinidos y relaciones entre ellos. Estas bases de datos se han diseñado para respaldar las transacciones ACID (atomicidad, coherencia, aislamiento, durabilidad) y mantener la integridad referencial y una coherencia fuerte de los datos. Muchas aplicaciones tradicionales, la planificación de recursos empresariales (ERP), la administración de las relaciones con los clientes (CRM) y el comercio electrónico utilizan bases de datos relacionales para almacenar sus datos. Puede ejecutar muchos de estos motores de bases de datos en Amazon EC2 o elegir uno de los [servicios de base de datos gestionados por AWS](https://aws.amazon.com/products/databases/): [Amazon Aurora](https://aws.amazon.com/rds/aurora), [Amazon RDS](https://aws.amazon.com/rds)y [Amazon Redshift](https://aws.amazon.com/redshift). 

   1.  Las bases de datos de clave-valor están optimizadas para patrones de acceso comunes, normalmente para almacenar y recuperar grandes volúmenes de datos. Estas bases de datos ofrecen tiempos de respuesta rápidos, incluso en volúmenes extremos de solicitudes simultáneas. Las aplicaciones web con mucho tráfico, los sistemas de comercio electrónico y las aplicaciones de juegos son casos de uso típicos para las bases de datos de clave-valor. En AWS, puede utilizar [Amazon DynamoDB](https://aws.amazon.com/dynamodb/), una base de datos duradera, completamente administrada, multirregión y multimaestro, con seguridad integrada, copia de seguridad y restauración, y almacenamiento en memoria para aplicaciones a escala de Internet. 

   1.  Las bases de datos en memoria se utilizan para aplicaciones que requieren acceso a los datos en tiempo real, menor latencia y mayor rendimiento. Al almacenar los datos directamente en la memoria, estas bases de datos ofrecen una latencia de microsegundos a las aplicaciones en las que la latencia de milisegundos no es suficiente. Puede utilizar las bases de datos en memoria para el almacenamiento en caché de aplicaciones, la administración de sesiones, las tablas de clasificación de juegos y las aplicaciones geoespaciales. [Amazon ElastiCache](https://aws.amazon.com/elasticache/) es un almacén de datos en memoria completamente administrado, compatible con [Redis](https://aws.amazon.com/elasticache/redis/) o bien [Memcached](https://aws.amazon.com/elasticache/memcached). En el caso de que las aplicaciones también requieran una mayor durabilidad, [Amazon MemoryDB para Redis](https://aws.amazon.com/memorydb/) ofrece esto además de ser un servicio de base de datos duradero y en memoria para ofrecer un rendimiento ultrarrápido. 

   1.  Una base de datos de documentos se ha diseñado para almacenar datos semiestructurados como documentos de tipo JSON. Estas bases de datos ayudan a los desarrolladores a crear y actualizar rápidamente aplicaciones como la administración de contenidos, catálogos y perfiles de usuario. [Amazon DocumentDB](https://aws.amazon.com/documentdb/) es un servicio de base de datos de documentos escalable, de alta disponibilidad y completamente administrado que admite cargas de trabajo de MongoDB. 

   1.  Un almacén de columnas anchas es un tipo de base de datos NoSQL. Utiliza tablas, filas y columnas, pero, a diferencia de una base de datos relacional, los nombres y el formato de las columnas pueden variar de una fila a otra en la misma tabla. Por lo general, un almacén de columnas anchas está en aplicaciones industriales a gran escala para el mantenimiento de equipos, la administración de flotas y la optimización de rutas. [Amazon Keyspaces (para Apache Cassandra)](https://aws.amazon.com/mcs/) es un servicio de base de datos de columnas anchas compatible con Apache Cassandra, escalable, altamente disponible y administrado. 

   1.  Las bases de datos de grafos se utilizan para aplicaciones que deben navegar y consultar millones de relaciones entre conjuntos de datos de grafos con un alto grado de conexión y con una latencia de milisegundos a gran escala. Muchas empresas utilizan las bases de datos de grafos para la detección de fraude, redes sociales y motores de recomendaciones. [Amazon Neptune](https://aws.amazon.com/neptune/) es un servicio de base de datos de grafos de confianza y completamente administrado que facilita la creación y ejecución de aplicaciones que funcionan con conjuntos de datos con un nivel alto de conexión. 

   1.  Las bases de datos de serie temporal recopilan, sintetizan y obtienen información de forma eficaz a partir de datos que cambian con el tiempo. Las aplicaciones de IoT, DevOps y telemetría industrial pueden utilizar bases de datos de serie temporal. [Amazon Timestream](https://aws.amazon.com/timestream/) es un servicio de base de datos de serie temporal rápido, escalable y completamente administrado para aplicaciones operativas y de IoT que facilita el almacenamiento y el análisis de billones de eventos al día. 

   1.  Las bases de datos de libro mayor proporcionan una autoridad centralizada y de confianza para mantener un registro de transacciones escalable, inmutable y verificable criptográficamente para cada aplicación. Las bases de datos de libro mayor se utilizan para sistemas de registro, cadena de suministro, registros e incluso transacciones bancarias. [Amazon Quantum Ledger Database (Amazon QLDB)](https://aws.amazon.com/qldb/) es una base de datos de libro mayor completamente administrada que proporciona un registro de transacciones transparente, inmutable y criptográficamente verificable, propiedad de una autoridad central de confianza. Amazon QLDB realiza un seguimiento de cada cambio de datos de la aplicación y mantiene un historial completo y verificable de los cambios a lo largo del tiempo. 

 **Nivel de esfuerzo para el plan de implementación: **Si una carga de trabajo se desplaza de una solución de base de datos a otra, podría haber un nivel de esfuerzo *alto* implicado en la refactorización de los datos y la aplicación.   

## Recursos
<a name="resources"></a>

 **Documentos relacionados:** 
+  [Bases de datos en la nube con AWS ](https://aws.amazon.com/products/databases/?ref=wellarchitected) 
+  [Almacenamiento en caché de base de datos de AWS ](https://aws.amazon.com/caching/database-caching/?ref=wellarchitected) 
+  [Acelerador de Amazon DynamoDB ](https://aws.amazon.com/dynamodb/dax/?ref=wellarchitected) 
+  [Prácticas recomendadas de Amazon Aurora ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html?ref=wellarchitected) 
+  [Rendimiento de Amazon Redshift ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html?ref=wellarchitected) 
+  [Los 10 mejores consejos de rendimiento de Amazon Athena ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/?ref=wellarchitected) 
+  [Prácticas recomendadas de Amazon Redshift Spectrum ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/?ref=wellarchitected) 
+  [Prácticas recomendadas de Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html?ref=wellarchitected) 
+  [Elegir entre EC2 y Amazon RDS](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/comparison.html) 
+  [Prácticas recomendadas para implementar Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/BestPractices.html) 

 **Vídeos relacionados:** 
+ [AWS purpose-built databases (Bases de datos personalizadas de AWS) (DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28) 
+ [Amazon Aurora storage demystified: How it all works (Desmitificación del almacenamiento de Amazon Aurora: cómo funciona todo) (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+ [Amazon DynamoDB deep dive: Advanced design patterns (Profundización de Amazon DynamoDB: patrones de diseño avanzado) (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM) 

 **Ejemplos relacionados:** 
+  [Optimizar el patrón de datos mediante el uso compartido de datos de Amazon Redshift](https://wellarchitectedlabs.com/sustainability/300_labs/300_optimize_data_pattern_using_redshift_data_sharing/) 
+  [Migraciones de bases de datos](https://github.com/aws-samples/aws-database-migration-samples) 
+  [MS SQL Server: demostración de replicación de AWS Database Migration Service (DMS)](https://github.com/aws-samples/aws-dms-sql-server) 
+  [Taller práctico de modernización de bases de datos](https://github.com/aws-samples/amazon-rds-purpose-built-workshop) 
+  [Ejemplos de Amazon Neptune](https://github.com/aws-samples/amazon-neptune-samples) 

# PERF04-BP02 Evaluar las opciones disponibles
<a name="perf_right_database_solution_evaluate_options"></a>

 Comprenda las opciones de bases de datos disponibles y cómo puede optimizar el rendimiento antes de seleccionar su solución de administración de datos. Utilice las pruebas de carga para identificar las métricas de la base de datos que son importantes para su carga de trabajo. Mientras explora las opciones de la base de datos, tenga en cuenta varios aspectos como los grupos de parámetros, las opciones de almacenamiento, la memoria, la computación, la réplica de lectura, la coherencia posterior, la agrupación de conexiones y las opciones de almacenamiento en caché. Experimente con estas diversas opciones de configuración para mejorar las métricas. 

 **Resultado esperado:** una carga de trabajo podría tener una o más soluciones de bases de datos utilizadas en función de los tipos de datos. La funcionalidad y las prestaciones de la base de datos se ajustan de forma óptima a las características de los datos, los patrones de acceso y los requisitos de la carga de trabajo. Para optimizar el rendimiento y el coste de su base de datos, debe evaluar los patrones de acceso a los datos para determinar las opciones adecuadas de la base de datos. Evalúe los tiempos de consulta aceptables para asegurarse de que las opciones de base de datos seleccionadas pueden cumplir los requisitos. 

 **Patrones de uso no recomendados comunes:** 
+  No identificar los patrones de acceso a los datos. 
+  No conocer las opciones de configuración de la solución elegida para la administración de datos. 
+  Confiar únicamente en el aumento del tamaño de la instancia sin considerar otras opciones de configuración disponibles. 
+  No comprobar las características de escalado de la solución elegida. 

 

 **Beneficios de establecer esta práctica recomendada:** si explora y experimenta con las opciones de bases de datos, podrá reducir el coste de la infraestructura, mejorar el rendimiento y la escalabilidad y reducir el esfuerzo necesario para mantener sus cargas de trabajo. 

 **Nivel de riesgo expuesto si no se establece esta práctica recomendada:** Alto 
+  Tener que optimizar para una base de datos *que sirve para todo* significa hacer compromisos innecesarios. 
+  Mayores costes por no haber configurado la solución de base de datos para que se ajuste a los patrones de tráfico. 
+  Los problemas operativos pueden surgir de los problemas de escala. 
+  Los datos pueden no estar protegidos al nivel requerido. 

## Guía para la implementación
<a name="implementation-guidance"></a>

 Comprenda las características de los datos de su carga de trabajo para poder configurar las opciones de su base de datos. Realice pruebas de carga para identificar sus métricas de rendimiento clave y los cuellos de botella. Utilice estas características y métricas para evaluar las opciones de la base de datos y experimentar con diferentes configuraciones. 


|  Servicios de AWS  |  Amazon RDS, Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  Escalado de computación  |  Aumentar el tamaño de la instancia, escalado automático de instancias sin servidor de Aurora en respuesta a los cambios en la carga  |  Escalado automático de lectura/escritura con el modo de capacidad bajo demanda o escalado automático de capacidad de lectura/escritura aprovisionada en el modo de capacidad aprovisionada  |  Aumentar el tamaño de la instancia  |  Aumentar el tamaño de la instancia, añadir nodos al clúster  |  Aumentar el tamaño de la instancia  |  Se escala automáticamente para ajustar la capacidad  |  Escalado automático de lectura/escritura con el modo de capacidad bajo demanda o escalado automático de capacidad de lectura/escritura aprovisionada en el modo de capacidad aprovisionada  |  Se escala automáticamente para ajustar la capacidad  | 
|  Escalado horizontal de lecturas  |  Todos los motores admiten réplicas de lectura. Aurora admite el escalado automático de las instancias de réplica de lectura  |  Aumentar las unidades de capacidad de lectura aprovisionadas  |  Réplicas de lectura  |  Réplicas de lectura  |  Réplicas de lectura. Admite el escalado automático de las instancias de réplicas de lectura  |  Escalado automático  |  Aumentar las unidades de capacidad de lectura aprovisionadas  |  Escala automáticamente verticalmente hasta los límites de concurrencia documentados  | 
|  Escalado horizontal de escrituras  |  Aumentando el tamaño de la instancia, agrupando en lotes las escrituras en la aplicación o añadiendo una cola delante de la base de datos. Escalado horizontal mediante particiones en el nivel de la aplicación en múltiples instancias  |  Aumente las unidades de capacidad de escritura aprovisionadas. Garantizar una clave de partición óptima para evitar la limitación de escritura en el nivel de la partición  |  Aumentar el tamaño de la instancia principal  |  Uso de Redis en modo clúster para distribuir las escrituras entre las particiones  |  Aumentar el tamaño de la instancia  |  Las solicitudes de escritura pueden limitarse durante el escalado. Si encuentra excepciones de limitación, continúe enviando datos con el mismo rendimiento (o superior) para escalar automáticamente. Escrituras por lotes para reducir las solicitudes de escritura concurrentes  |  Aumente las unidades de capacidad de escritura aprovisionadas. Garantizar una clave de partición óptima para evitar la limitación de escritura en el nivel de la partición  |  Escala automáticamente verticalmente hasta los límites de concurrencia documentados  | 
|  Configuración del motor  |  Grupos de parámetros  |  No corresponde  |  Grupos de parámetros  |  Grupos de parámetros  |  Grupos de parámetros  |  No corresponde  |  No corresponde  |  No corresponde  | 
|  Almacenamiento en caché  |  Caché en memoria, configurable mediante grupos de parámetros. Combinar con una caché dedicada, como ElastiCache para Redis, para descargar las solicitudes de los elementos a los que se accede con frecuencia  |  Caché totalmente administrada de DAX (DAX) disponible  |  Almacenamiento en caché en memoria. Opcionalmente combinar con una caché dedicada, como ElastiCache para Redis, para descargar las solicitudes de los elementos a los que se accede con frecuencia  |  La función principal es el almacenamiento en caché  |  Utilizar la caché de resultados de consulta para almacenar en caché el resultado de una consulta de solo lectura  |  Timestream tiene dos niveles de almacenamiento; uno de ellos es un nivel de alto rendimiento en memoria  |  Despliegue una caché separada dedicada como ElastiCache para Redis, para descargar las solicitudes de los elementos a los que se accede con frecuencia  |  No corresponde  | 
|  Alta disponibilidad / recuperación de desastres  |  La configuración recomendada para las cargas de trabajo de producción es ejecutar una instancia en espera en una segunda zona de disponibilidad para proporcionar resiliencia dentro de una región.  Para la resiliencia entre regiones, se puede utilizar la base de datos global de Aurora  |  Alta disponibilidad en una región. Las tablas se pueden replicar en todas las regiones utilizando las tablas globales de DynanoDB  |  Cree varias instancias en las zonas de disponibilidad para que estén disponibles.  Las instantáneas pueden compartirse entre regiones y los clústeres pueden replicarse utilizando DMS para proporcionar replicación entre regiones y recuperación de desastres  |  La configuración recomendada para los clústeres de producción es crear al menos un nodo en una zona de disponibilidad secundaria.  El almacén de datos global de ElastiCache se puede usar para replicar clústeres en regiones.  |  Las réplicas de lectura en otras zonas de disponibilidad sirven como objetivos de conmutación por error.  Las instantáneas pueden compartirse entre regiones y los clústeres pueden replicarse usando flujos de Neptune para replicar datos entre dos clústeres en dos regiones diferentes.  |  Alta disponibilidad dentro de una región. La replicación entre regiones requiere el desarrollo de aplicaciones personalizadas utilizando el SDK de Timestream  |  Alta disponibilidad en una región.  La replicación entre regiones requiere una lógica de aplicación personalizada o herramientas de terceros  |  Alta disponibilidad en una región.  Para replicar entre regiones, exporte el contenido del diario de Amazon QLDB a un bucket de S3 y configure el bucket para la replicación entre regiones.  | 

 

 **Pasos para la aplicación** 

1.  ¿Qué opciones de configuración están disponibles para las bases de datos seleccionadas? 

   1.  Los grupos de parámetros para Amazon RDS y Aurora permiten ajustar los parámetros comunes a nivel del motor de la base de datos, como la memoria asignada para la caché o el ajuste de la zona horaria de la base de datos 

   1.  En el caso de los servicios de bases de datos aprovisionados como Amazon RDS, Aurora, Neptune, Amazon DocumentDB y los desplegados en Amazon EC2, puede cambiar el tipo de instancia, el almacenamiento aprovisionado y añadir réplicas de lectura. 

   1.  DynamoDB permite especificar dos modos de capacidad: bajo demanda y aprovisionada. Para tener en cuenta las diferentes cargas de trabajo, puede cambiar entre estos modos y aumentar la capacidad asignada en el modo aprovisionado en cualquier momento. 

1.  ¿La lectura o escritura de la carga de trabajo es pesada?  

   1.  ¿Qué soluciones hay para descargar las lecturas (réplicas de lectura, caché, etc.)?  

      1.  Para tablas de DynamoDB, puede descargar las lecturas utilizando DAX para el almacenamiento en caché. 

      1.  Para bases de datos relacionales, puede crear un clúster de ElastiCache para Redis y configurar su aplicación para que lea primero de la caché, retrocediendo a la base de datos si el elemento solicitado no está presente. 

      1.  Las bases de datos relacionales, como Amazon RDS y Aurora, y las bases de datos NoSQL aprovisionadas, como Neptune y Amazon DocumentDB, admiten la adición de réplicas de lectura para descargar las partes de lectura de la carga de trabajo. 

      1.  Las bases de datos sin servidor como DynamoDB escalarán automáticamente. Asegúrese de que tiene suficientes unidades de capacidad de lectura (RCU) aprovisionadas para manejar la carga de trabajo. 

   1.  ¿Qué soluciones hay para escalar las escrituras (fragmentación de claves de partición, introducción de una cola, etc.)? 

      1.  En el caso de las bases de datos relacionales, se puede aumentar el tamaño de la instancia para acomodar una mayor carga de trabajo o aumentar las IOP aprovisionadas para permitir un mayor rendimiento del almacenamiento subyacente. 
         +  También puede introducir una cola delante de su base de datos en lugar de escribir directamente en la base de datos. Este patrón permite desacoplar la ingesta de la base de datos y controlar el caudal para que la base de datos no se vea desbordada.  
         +  Agrupar las solicitudes de escritura en lugar de crear muchas transacciones de corta duración puede ayudar a mejorar el rendimiento en las bases de datos relacionales de gran volumen de escritura. 

      1.  Las bases de datos sin servidor como DynamoDB pueden escalar el rendimiento de escritura automáticamente o ajustando las unidades de capacidad de escritura (WCU) aprovisionadas en función del modo de capacidad.  
         +  Sin embargo, todavía puede tener problemas con particiones *activas,* cuando se alcanzan los límites de rendimiento para una clave de partición determinada. Esto se puede mitigar eligiendo una clave de partición más uniformemente distribuida o compartiendo la escritura de la clave de partición.  

1.  ¿Cuáles son los picos de transacciones por segundo (TPS) actuales o previstos? Pruebe utilizando este volumen de tráfico y este volumen \$1X % para entender las características de escalado. 

   1.  Se pueden utilizar herramientas nativas como pg\$1bench para PostgreSQL para realizar pruebas de estrés de la base de datos y comprender los cuellos de botella y las características de escalado. 

   1.  El tráfico de producción debe capturarse para que pueda reproducirse para simular las condiciones del mundo real, además de las cargas de trabajo sintéticas. 

1.  Si se utiliza la computación sin servidor o escalable de forma elástica, pruebe el impacto del escalado en la base de datos. Si procede, introduzca la administración de conexiones o la agrupación para reducir el impacto en la base de datos.  

   1.  RDS Proxy se puede utilizar con Amazon RDS y Aurora para administrar conexiones a la base de datos.  

   1.  Las bases de datos sin servidor como DynamoDB no tienen conexiones asociadas, pero consideran la capacidad aprovisionada y las políticas de escalado automático para hacer frente a los picos de carga. 

1.  ¿Es la carga predecible, hay picos de carga y periodos de inactividad? 

   1.  Si hay periodos de inactividad, considere la posibilidad de reducir la capacidad aprovisionada o el tamaño de la instancia durante estos periodos. Aurora sin servidor V2 escalará y desescalará verticalmente en función de la carga. 

   1.  Para las instancias que no son de producción, considere la posibilidad de pausarlas o detenerlas durante las horas no laborables. 

1.  ¿Necesita segmentar y separar sus modelos de datos en función de los patrones de acceso y las características de los datos? 

   1.  Considere la posibilidad de utilizar AWS DMS o AWS SCT para trasladar sus datos a otros servicios. 

## Nivel de esfuerzo para el plan de implementación: 
<a name="level-of-effort-for-the-implementation-plan-to-establish-this-best-practice-you-must-be-aware-of-your-current-data-characteristics-and-metrics.-gathering-those-metrics-establishing-a-baseline-and-then-using-those-metrics-to-identify-the-ideal-database-configuration-options-is-a-low-to-moderate-level-of-effort.-this-is-best-validated-by-load-tests-and-experimentation."></a>

Para establecer esta práctica recomendada, debe conocer sus características y métricas de datos actuales. Reunir esas métricas, establecer una línea de referencia y luego usar esas métricas para identificar las opciones ideales de configuración de la base de datos es un nivel de esfuerzo de *bajo* a *moderado* . La mejor forma de validarlo es mediante pruebas de carga y experimentación. 

## Recursos
<a name="resources"></a>

 **Documentos relacionados:** 
+  [Bases de datos en la nube con AWS ](https://aws.amazon.com/products/databases/?ref=wellarchitected) 
+  [Almacenamiento en caché de base de datos de AWS ](https://aws.amazon.com/caching/database-caching/?ref=wellarchitected) 
+  [Acelerador de Amazon DynamoDB ](https://aws.amazon.com/dynamodb/dax/?ref=wellarchitected) 
+  [Prácticas recomendadas de Amazon Aurora ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html?ref=wellarchitected) 
+  [Rendimiento de Amazon Redshift ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html?ref=wellarchitected) 
+  [Los 10 mejores consejos de rendimiento de Amazon Athena ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/?ref=wellarchitected) 
+  [Prácticas recomendadas de Amazon Redshift Spectrum ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/?ref=wellarchitected) 
+  [Prácticas recomendadas de Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html?ref=wellarchitected) 

 

 **Vídeos relacionados:** 
+  [Bases de datos personalizadas de AWS (DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28)
+ [Desmitificación del almacenamiento de Amazon Aurora: Cómo funciona realmente (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+  [Análisis en profundidad de Amazon DynamoDB: Patrones de diseño avanzados (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **Ejemplos relacionados:** 
+  [Ejemplos de Amazon DynamoDB](https://github.com/aws-samples/aws-dynamodb-examples) 
+  [Muestras de migración de base de datos de AWS](https://github.com/aws-samples/aws-database-migration-samples) 
+  [Taller de modernización de bases de datos](https://github.com/aws-samples/amazon-rds-purpose-built-workshop) 
+  [Trabajar con parámetros en la base de datos de Amazon RDS para PostgreSQL](https://github.com/awsdocs/amazon-rds-user-guide/blob/main/doc_source/Appendix.PostgreSQL.CommonDBATasks.Parameters.md) 

# PERF04-BP03 Recopilar y registrar métricas de rendimiento de la base de datos
<a name="perf_right_database_solution_collect_metrics"></a>

 Para comprender el rendimiento de sus sistemas de administración de datos, es importante realizar un seguimiento de las métricas pertinentes. Estas métricas le ayudarán a optimizar sus recursos de administración de datos, a garantizar que se cumplen los requisitos de la carga de trabajo y a tener una visión clara del rendimiento de la misma. Use herramientas, bibliotecas y sistemas que registren las medidas de rendimiento relacionadas con el rendimiento de la base de datos. 

 

 Hay métricas relacionadas con el sistema en el que se aloja la base de datos (por ejemplo, CPU, almacenamiento, memoria, IOPS), y hay métricas de acceso a los propios datos (por ejemplo, transacciones por segundo, tasas de consulta, tiempos de respuesta, errores). A estas métricas deben acceder fácilmente el personal de soporte u operativo, y tener un registro histórico suficiente para poder identificar tendencias, anomalías y cuellos de botella. 

 

 **Resultado esperado:** para supervisar el rendimiento de las cargas de trabajo de su base de datos, debe registrar múltiples métricas de rendimiento durante un periodo de tiempo. Esto le permite detectar anomalías, así como medir el rendimiento con respecto a las métricas de la empresa para asegurarse de que está satisfaciendo sus necesidades de carga de trabajo. 

 **Patrones de uso no recomendados comunes:** 
+  Solo utiliza la búsqueda manual de métricas en los archivos de registro. 
+  Solo publica las métricas en las herramientas internas utilizadas por su equipo y no tiene una imagen completa de su carga de trabajo. 
+  Solo utiliza las métricas por defecto registradas por el software de supervisión seleccionado. 
+  Solo revisa las métricas cuando hay un problema. 
+  Solo supervisa las métricas en el nivel de sistema, sin capturar las métricas de acceso o de uso de datos. 

 **Beneficios de establecer esta práctica recomendada:** establecer una base de referencia de rendimiento ayuda a comprender el comportamiento normal y los requisitos de las cargas de trabajo. Los patrones anómalos pueden identificarse y depurarse más rápidamente mejorando el rendimiento y la fiabilidad de la base de datos. La capacidad de la base de datos puede configurarse para garantizar un coste óptimo sin poner en riesgo el rendimiento. 

 **Nivel de riesgo expuesto si no se establece esta práctica recomendada:** Alto 
+  La incapacidad de diferenciar el nivel de rendimiento fuera de lo normal del rendimiento normal creará dificultades en la identificación de problemas y en la toma de decisiones. 
+  Es posible que no se identifique el ahorro potencial de costes. 
+  No se identificarán patrones de crecimiento que puedan dar lugar a una degradación de la fiabilidad o del rendimiento. 

## Guía para la implementación
<a name="implementation-guidance"></a>

 Identifique, recopile, agregue y correlacione las métricas relacionadas con las bases de datos. Las métricas deben incluir tanto el sistema subyacente que soporta la base de datos como las métricas de la base de datos. Las métricas del sistema subyacente podrían incluir la utilización de la CPU, la memoria, el almacenamiento en disco disponible, la E/S del disco y las métricas de entrada y salida de la red, mientras que las métricas de la base de datos podrían incluir las transacciones por segundo, las consultas principales, las tasas de consultas medias, los tiempos de respuesta, el uso de índices, los bloqueos de tablas, los tiempos de espera de las consultas y el número de conexiones abiertas. Estos datos son cruciales para entender cómo está funcionando la carga de trabajo y cómo se utiliza la solución de base de datos. Utilice estas métricas como parte de un enfoque basado en datos para ajustar y optimizar los recursos de su carga de trabajo.  

 **Pasos para la aplicación:** 

1.  ¿A qué métricas de la base de datos es importante hacer un seguimiento? 

   1.  [Métricas de supervisión de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Monitoring.html) 

   1.  [Supervisión con Información de rendimiento](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) 

   1.  [Enhanced monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.overview.html) 

   1.  [Métricas de DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html) 

   1.  [Supervisión de DynamoDB DAX](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.Monitoring.html) 

   1.  [Supervisión de MemoryDB](https://docs.aws.amazon.com/memorydb/latest/devguide/monitoring-cloudwatch.html) 

   1.  [Supervisión de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/metrics.html) 

   1.  [Métricas y dimensiones de Timestream](https://docs.aws.amazon.com/timestream/latest/developerguide/metrics-dimensions.html) 

   1.  [Métricas de nivel de clúster de Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.Monitoring.Metrics.html) 

   1.  [Supervisión de Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/monitoring.html) 

   1.  [Supervisión de Amazon Neptune](https://docs.aws.amazon.com/neptune/latest/userguide/monitoring.html) 

1.  ¿Se beneficiaría la supervisión de la base de datos de una solución de machine learning que detecte anomalías operativas y problemas de rendimiento? 

   1.  [Amazon DevOps Guru para Amazon RDS](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-rds.overview.how-it-works.html) proporciona visibilidad a los problemas de rendimiento y hace recomendaciones para las acciones correctivas. 

1.  ¿Necesita detalles a nivel de aplicación sobre el uso de SQL? 

   1.  [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html#api-segmentdocuments-sql) se puede instrumentar en la aplicación para obtener información y encapsular todos los puntos de datos para una sola consulta. 

1.  ¿Dispone actualmente de una solución de registro y supervisión aprobada? 

   1.  [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) puede recopilar métricas entre los recursos de su arquitectura. También puede recopilar y publicar métricas del cliente para negocios de superficie o métricas derivadas. Utilice CloudWatch o soluciones de terceros para establecer alarmas que indiquen cuándo se superan los umbrales. 

1.  ¿Ha identificado y configurado sus políticas de retención de datos para que se ajusten a los objetivos de seguridad y operativos? 

   1.  [Retención de datos por defecto para métricas de CloudWatch](https://aws.amazon.com/cloudwatch/faqs/#AWS_resource_.26_custom_metrics_monitoring) 

   1.  [Retención de datos por defecto para CloudWatch Logs](https://aws.amazon.com/cloudwatch/faqs/#Log_management) 

 **Nivel de esfuerzo para el plan de implementación: **Hay un nivel *medio* de esfuerzo para identificar, rastrear, recopilar, agregar y correlacionar las métricas de todos los recursos de la base de datos. 

## Recursos
<a name="resources"></a>

 **Documentos relacionados:** 
+ [Almacenamiento en caché de base de datos de AWS](https://aws.amazon.com/caching/database-caching/) 
+ [ Los 10 mejores consejos de rendimiento de Amazon Athena ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/)
+ [ Prácticas recomendadas de Amazon Aurora ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html)
+  [Acelerador de Amazon DynamoDB ](https://aws.amazon.com/dynamodb/dax/)
+ [Prácticas recomendadas de Amazon DynamoDB ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+ [Prácticas recomendadas de Amazon Redshift Spectrum ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+ [Rendimiento de Amazon Redshift ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+ [Bases de datos en la nube con AWS](https://aws.amazon.com/products/databases/) 
+  [Información de rendimiento de Amazon RDS](https://aws.amazon.com/rds/performance-insights/) 

 **Vídeos relacionados:** 
+ [Bases de datos personalizadas de AWS (DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [Desmitificación del almacenamiento de Amazon Aurora: Cómo funciona realmente (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54)
+  [Análisis en profundidad de Amazon DynamoDB: Patrones de diseño avanzados (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **Ejemplos relacionados:** 
+  [Nivel 100: supervisión con paneles de CloudWatch](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_with_cloudwatch_dashboards/) 
+  [Marco de recopilación de métricas de ingesta del conjunto de datos de AWS](https://github.com/awslabs/aws-dataset-ingestion-metrics-collection-framework) 
+  [Taller de supervisión de Amazon RDS](https://www.workshops.aws/?tag=Enhanced%20Monitoring) 

# PERF04-BP04 Elegir el almacenamiento de datos según los patrones de acceso
<a name="perf_right_database_solution_access_patterns"></a>

 Use los patrones de acceso de la carga de trabajo para decidir qué servicios y tecnologías usará. Además de los requisitos no funcionales, como el rendimiento y la escala, los patrones de acceso influyen mucho en la elección de la base de datos y las soluciones de almacenamiento. La primera dimensión es la necesidad de transacciones, el cumplimiento de ACID y las lecturas coherentes. No todas las bases de datos lo admiten y la mayoría de las bases de datos NoSQL proporcionan un modelo de coherencia eventual. La segunda dimensión importante sería la distribución de las escrituras y las lecturas en el tiempo y el espacio. Las aplicaciones distribuidas globalmente deben tener en cuenta los patrones de tráfico, la latencia y los requisitos de acceso para identificar la solución de almacenamiento óptima. El tercer aspecto crucial para elegir es la flexibilidad del patrón de consulta, los patrones de acceso aleatorio y las consultas únicas. También deben tenerse en cuenta las consideraciones en relación con la funcionalidad de consulta altamente especializada para el procesamiento de lenguaje natural y de texto, las series temporales y los grafos. 

 **Resultado deseado:** el almacenamiento de datos se ha seleccionado en función de los patrones de acceso a los datos identificados y documentados. Esto podría incluir las consultas de lectura, escritura y eliminación más comunes, la necesidad de cálculos y agregaciones ad hoc, la complejidad de los datos, la interdependencia de los datos y las necesidades de coherencia que se requieren. 

 **Patrones de uso no recomendados comunes:** 
+  Solo se selecciona un proveedor de bases de datos para simplificar la administración de las operaciones. 
+  Se supone que los patrones de acceso a los datos se mantendrán coherentes a lo largo del tiempo. 
+  Se implementan transacciones complejas, reversión y lógica de coherencia en la aplicación. 
+  La base de datos está configurada para admitir una posible ampliación del tráfico, lo que provoca que los recursos de la base de datos permanezcan inactivos la mayor parte del tiempo. 
+  Utilización de una base de datos compartida para usos transaccionales y analíticos. 

 **Beneficios de establecer esta práctica recomendada:** la selección y la optimización del almacenamiento de datos en función de los patrones de acceso contribuirán a disminuir la complejidad del desarrollo y a optimizar las oportunidades de rendimiento. Saber cuándo utilizar las réplicas de lectura, las tablas globales, el particionamiento de datos y el almacenamiento en caché le ayudará a disminuir la sobrecarga operativa y a escalar en función de sus necesidades de carga de trabajo. 

 **Nivel de riesgo expuesto si no se establece esta práctica recomendada:** Mediana 

## Guía para la implementación
<a name="implementation-guidance"></a>

 Identifique y evalúe su patrón de acceso a los datos para seleccionar la configuración de almacenamiento correcta. Cada solución de base de datos tiene opciones para configurar y optimizar su solución de almacenamiento. Utilice las métricas y los registros recopilados y experimente con las opciones para encontrar la configuración óptima. Utilice la siguiente tabla para examinar las opciones de almacenamiento por servicio de base de datos. 


|  Servicios de AWS  |  Amazon RDS, Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  Escalado de almacenamiento  |  Opción de escalado automático de almacenamiento disponible para escalar automáticamente el almacenamiento aprovisionado Las IOPS también se pueden escalar independientemente del almacenamiento aprovisionado cuando se aprovechan los tipos de almacenamiento de IOPS aprovisionadas  |  Se escala automáticamente. Las tablas no tienen restricciones de tamaño.  |  Opción de escalado automático de almacenamiento disponible, almacenamiento aprovisionado a escala  |  El almacenamiento es en memoria, ligado al tipo de instancia o al recuento  |  Opción de escalado automático de almacenamiento disponible para escalar automáticamente el almacenamiento aprovisionado  |  Configurar el periodo de retención para los niveles en memoria y magnético en días  |  Escala y desescala verticalmente el almacenamiento de tabla de forma automática  |  Se escala automáticamente. Las tablas no tienen restricciones de tamaño.  | 

 

 **Pasos de implementación:** 

1.  Identifique y documente el crecimiento previsto de los datos y el tráfico. 

   1.  Amazon RDS y Aurora admiten el escalado vertical automático del almacenamiento hasta los límites documentados. Más allá de esto, considere la posibilidad de trasladar los datos más antiguos a Amazon S3 para archivarlos, agregar los datos históricos para el análisis o escalar horizontalmente mediante particiones. 

   1.  DynamoDB y Amazon S3 se escalarán hasta un volumen de almacenamiento casi ilimitado de forma automática. 

   1.  A las instancias y las bases de datos de Amazon RDS que se ejecutan en EC2 se les puede cambiar el tamaño manualmente y a las instancias de EC2 se les pueden agregar nuevos volúmenes de EBS en una fecha posterior para obtener almacenamiento adicional.  

   1.  Los tipos de instancia pueden modificarse en función de los cambios de actividad. Por ejemplo, puede empezar con una instancia pequeña mientras hace pruebas y, a continuación, escalar la instancia cuando empiece a recibir tráfico de producción para el servicio. Aurora Serverless V2 se escala automáticamente en respuesta a los cambios de carga.  

1.  Documente los requisitos en torno al rendimiento normal y máximo (transacciones por segundo [TPS] y consultas por segundo [QPS]) y la coherencia (ACID y coherencia eventual). 

1.  Documente los aspectos del despliegue de la solución y los requisitos de acceso a la base de datos (global, Multi-AZ, replicación de lectura, varios nodos de escritura) 

 **Nivel de esfuerzo para el plan de implementación: **si no dispone de registros ni métricas para su solución de administración de datos, deberá hacerlo antes de identificar y documentar los patrones de acceso a los datos. Una vez comprendido el patrón de acceso a los datos, la selección y configuración del almacenamiento de datos es un nivel de esfuerzo *bajo* . 

## Recursos
<a name="resources"></a>

 **Documentos relacionados:** 
+ [ Almacenamiento en caché de base de datos de AWS](https://aws.amazon.com/caching/database-caching/)
+ [Los 10 mejores consejos de rendimiento de Amazon Athena ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) 
+ [Prácticas recomendadas de Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html) 
+ [Acelerador de Amazon DynamoDB ](https://aws.amazon.com/dynamodb/dax/) 
+ [Prácticas recomendadas de Amazon DynamoDB ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+ [Prácticas recomendadas de Amazon Redshift Spectrum ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+ [Rendimiento de Amazon Redshift ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+  [Bases de datos en la nube con AWS](https://aws.amazon.com/products/databases/)
+  [Tipos de almacenamiento de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html) 

 **Vídeos relacionados:** 
+ [AWS purpose-built databases (Bases de datos personalizadas de AWS) (DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [Amazon Aurora storage demystified: How it all works (Desmitificación del almacenamiento de Amazon Aurora: cómo funciona todo) (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54)
+ [ Amazon DynamoDB deep dive: Advanced design patterns (Profundización de Amazon DynamoDB: patrones de diseño avanzado) (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **Ejemplos relacionados:** 
+  [Experimentar y probar con las pruebas de carga distribuida en AWS](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 

# PERF04-BP05 Optimizar el almacenamiento de datos según las métricas y los patrones de acceso
<a name="perf_right_database_solution_optimize_metrics"></a>

 Use características de rendimiento y patrones de acceso que optimicen cómo se almacenan o consultan los datos para lograr el mejor rendimiento posible. Mida el impacto de las optimizaciones como la indexación, la distribución de claves, el diseño del almacenamiento de datos o las estrategias de almacenamiento en caché en el rendimiento del sistema o la eficiencia general. 

 **Patrones de uso no recomendados comunes:** 
+  Solo utiliza la búsqueda manual de archivos de registro con las métricas. 
+  Solo publica las métricas en las herramientas internas. 

 **Beneficios de establecer esta práctica recomendada:** para asegurarse de que se cumplen las métricas requeridas para la carga de trabajo, debe supervisar las métricas de rendimiento de la base de datos relacionadas con las lecturas y las escrituras. Puede utilizar estos datos para añadir nuevas optimizaciones tanto para las lecturas como para las escrituras en la capa de almacenamiento de datos. 

 **Nivel de riesgo expuesto si no se establece esta práctica recomendada:** Bajo 

## Guía para la implementación
<a name="implementation-guidance"></a>

 Optimizar el almacenamiento de datos basándose en métricas y patrones: utilice las métricas notificadas para identificar cualquier área de bajo rendimiento en su carga de trabajo y optimizar los componentes de su base de datos. Cada sistema de base de datos tiene características relacionadas con el rendimiento diferentes que evaluar; por ejemplo, cómo se indexan, almacenan en caché o distribuyen los datos entre varios sistemas. Mida el impacto de sus optimizaciones. 

## Recursos
<a name="resources"></a>

 **Documentos relacionados:** 
+  [Almacenamiento en caché de base de datos de AWS](https://aws.amazon.com/caching/database-caching/) 
+  [Los 10 mejores consejos de rendimiento de Amazon Athena](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) 
+  [Prácticas recomendadas de Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html) 
+  [Acelerador de Amazon DynamoDB](https://aws.amazon.com/dynamodb/dax/) 
+  [Prácticas recomendadas de Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+  [Prácticas recomendadas de Amazon Redshift Spectrum](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+  [Rendimiento de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+  [Bases de datos en la nube con AWS](https://aws.amazon.com/products/databases/) 
+  [Análisis de las anomalías de rendimiento con DevOps Guru para RDS](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/devops-guru-for-rds.html) 
+  [Modo de capacidad de lectura/escritura para DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html) 

 **Vídeos relacionados:** 
+  [Bases de datos personalizadas de AWS (DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [Desmitificación del almacenamiento de Amazon Aurora: cómo funciona todo (DAT309-R)](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+  [Profundización de Amazon DynamoDB: patrones de diseño avanzado (DAT403-R1)](https://www.youtube.com/watch?v=6yqfmXiZTlM) 

 **Ejemplos relacionados:** 
+  [Laboratorios prácticos para Amazon DynamoDB](https://amazon-dynamodb-labs.workshop.aws/hands-on-labs.html) 