

# PERF 4  如何选择数据库解决方案？
<a name="w2aac19c11b5c11"></a>

 针对特定系统的最优数据库解决方案取决于您的具体需求，包括可用性、一致性、分区容错性、延迟、持久性、可扩展性以及查询能力等等。许多系统会使用多种不同的数据库解决方案满足其各子系统的实际需要，并启用不同的功能来提高性能。为系统选择错误的数据库解决方案和功能可能会导致性能效率降低。 

**Topics**
+ [PERF04-BP01 了解数据特征](perf_right_database_solution_understand_char.md)
+ [PERF04-BP02 评估可用的选项](perf_right_database_solution_evaluate_options.md)
+ [PERF04-BP03 收集和记录数据库性能指标](perf_right_database_solution_collect_metrics.md)
+ [PERF04-BP04 根据访问模式选择数据存储](perf_right_database_solution_access_patterns.md)
+ [PERF04-BP05 根据访问模式和指标优化数据存储](perf_right_database_solution_optimize_metrics.md)

# PERF04-BP01 了解数据特征
<a name="perf_right_database_solution_understand_char"></a>

 选择数据管理解决方案，以最佳地匹配工作负载数据集的特征、访问模式和要求。在选择和实施数据管理解决方案时，您必须确保查询、扩展和存储特征支持工作负载数据要求。了解各种数据库选项如何匹配您的数据模型，以及哪些配置选项最适合您的使用案例。  

 AWS 提供了多种数据库引擎，包括关系、键值、文档、内存、图形、时间序列和分类账数据库。每种数据管理解决方案都有可供您使用的选项和配置，以支持您的使用案例和数据模型。根据数据特征，您的工作负载也许能够使用多种不同的数据库解决方案。通过选择针对特定问题的最佳数据库解决方案，您可以摆脱整体式数据库的束缚（整体式数据库采用具有限制性的一刀切方法），专注于管理数据以满足客户的需求。 

 **期望结果：** 工作负载数据特征的记录足够详细，可以帮助选择和配置支持的数据库解决方案，并深入了解潜在的替代方案。 

 **常见反模式：** 
+  没有考虑将大型数据集分割成具有相似特征的较小数据集合的方法，导致失去使用更符合数据和增长特征的专用数据库的机会。 
+  没有预先识别数据访问模式，导致以后进行成本高昂且复杂的重复工作。 
+  使用的数据存储策略无法按需求快速扩展，限制了增长 
+  为所有工作负载选择一个数据库类型和供应商。 
+  由于员工拥有某种特定类型的数据库解决方案的经验和知识，坚持使用该数据库解决方案。 
+  保持一种数据库解决方案，因为它在本地环境中运行良好。 

 **建立此最佳实践的好处：** 熟悉所有的 AWS 数据库解决方案，以便为各种工作负载确定正确的数据库解决方案。为您的工作负载选择合适的数据库解决方案后，您可以快速试用每种数据库产品/服务，以确定它们是否继续满足您的工作负载需求。 

 **未建立这种最佳实践的情况下暴露的风险等级：** 高 
+  可能无法确定潜在的成本节约机会。 
+  数据的保护级别可能达不到要求。 
+  数据访问和存储性能可能不是最佳的。 

## 实施指导
<a name="implementation-guidance"></a>

 定义工作负载的数据特征和访问模式。查看所有可用的数据库解决方案，以确定哪种解决方案支持您的数据需求。对于给定的工作负载，可以选择多个数据库。评估每个服务或每组服务，并单独进行评估。如果为部分或全部数据确定了潜在的替代数据管理解决方案，那么可以试用替代实施方案，以获得成本、安全性、性能和可靠性方面的好处。如采用新的数据管理方法，需要更新现有文档。 


|  **类型**  |  **AWS 服务**  |  **主要特征**  |  **常见使用案例**  | 
| --- | --- | --- | --- | 
|  关系  |  Amazon RDS、Amazon Aurora  |  参照完整性、ACID 事务、写时模式  |  ERP、CRM、商用现货软件  | 
|  键值  |  Amazon DynamoDB  |  高吞吐量、低延迟、近乎无限的可扩展性  |  购物车（电子商务）、产品目录、聊天应用程序  | 
|  文档  |  Amazon DocumentDB  |  存储 JSON 文档并查询任何属性  |  内容管理（CMS）、客户资料、移动应用程序  | 
|  内存  |  Amazon ElastiCache、Amazon MemoryDB  |  微秒级延迟  |  缓存、游戏排行榜  | 
|  图形  |  Amazon Neptune  |  高度相关的数据，其数据之间的关系具有意义  |  社交网络、个性化引擎、欺诈检测  | 
|  时间序列  |  Amazon Timestream  |  以时间为主维度的数据  |  DevOps、IoT、监控  | 
|  宽列  |  Amazon Keyspaces  |  Cassandra 工作负载。  |  工业设备维护、路线优化  | 
|  分类账  |  Amazon QLDB  |  不可变且可加密验证的变更分类账  |  记录系统、医疗保健、供应链、金融机构  | 

 **实施步骤** 

1.  数据结构如何？（例如，非结构化、键值、半结构化、关系型） 

   1.  如果数据是非结构化的，请考虑使用对象存储，例如 [Amazon S3](https://aws.amazon.com/products/storage/data-lake-storage/) 或 NoSQL 数据库，如 [Amazon DocumentDB。](https://aws.amazon.com/documentdb/) 

   1.  对于键值数据，请考虑使用 [DynamoDB](https://aws.amazon.com/documentdb/)、 [ElastiCache for Redis](https://aws.amazon.com/elasticache/redis/) 或者 [MemoryDB。](https://aws.amazon.com/memorydb/) 

   1.  如果数据具有关系结构，那么需要什么级别的参照完整性？ 

      1.  对于外键约束，关系数据库（如 [Amazon RDS](https://aws.amazon.com/rds/) 和 [Aurora](https://aws.amazon.com/rds/aurora/) ）可以提供这种级别的完整性。 

      1.  通常，在 NoSQL 数据模型中，您可以将数据去规范化到单个文档或文档集合，以便在单个请求中进行检索，而不是跨各文档或各表联接。  

1.  是否要求符合 ACID（原子性、一致性、隔离性、持久性）？ 

   1.  如果需要与关系数据库关联的 ACID 属性，请考虑使用关系数据库，例如 [Amazon RDS](https://aws.amazon.com/rds/) 和 [Aurora。](https://aws.amazon.com/rds/aurora/) 

1.  需要什么样的一致性模型？ 

   1.  如果您的应用程序可以容许最终一致性，请考虑使用 NoSQL 实施。查看其他特征，以帮助选择最合适的 [NoSQL 数据库](https://aws.amazon.com/nosql/) 。 

   1.  如果需要强一致性，您可以使用 [DynamoDB](https://aws.amazon.com/documentdb/) 强一致性读取，或者使用关系数据库，如 [Amazon RDS](https://aws.amazon.com/rds/)。 

1.  必须支持哪些查询和结果格式？（例如，SQL、CSV、Parque、Avro、JSON 等） 

1.  存在哪些数据类型、字段大小和总体数量？（例如，文本、数字、空间、时间序列计算、二进制或 BLOB、文档） 

1.  存储需求将如何随时间变化？ 这对可扩展性有何影响？ 

   1.  无服务器数据库（如 [DynamoDB](https://aws.amazon.com/documentdb/) 和 [Amazon Quantum Ledger Database](https://aws.amazon.com/qldb/) ）将动态扩展至近乎无限的存储空间。 

   1.  关系数据库的预置存储空间设有上限，一旦达到这些限制，通常必须通过分片等机制进行水平分区。 

1.  读查询与写查询的比例是多少？ 缓存有可能提高性能吗？ 

   1.  包含大量读操作的工作负载可以受益于缓存层，如 [ElastiCache](https://aws.amazon.com/elasticache/) 或者 [DAX](https://aws.amazon.com/dynamodb/dax/) （如果数据库是 DynamoDB）。 

   1.  读操作也可以通过关系数据库（如 [Amazon RDS](https://aws.amazon.com/rds/)）分流到只读副本上。 

1.  存储和修改（OLTP – Online Transaction Processing，联机事务处理）还是检索和报告（OLAP – Online Analytical Processing，联机分析处理）具有更高的优先级？ 

   1.  对于高吞吐量事务处理，请考虑使用 NoSQL 数据库，如 DynamoDB 或 Amazon DocumentDB。 

   1.  对于分析查询，请考虑使用列存数据库（如 [Amazon Redshift](https://aws.amazon.com/redshift/) ），或者将数据导出到 Amazon S3 并使用 [Athena](https://aws.amazon.com/athena/) 或者 [QuickSight 执行分析。](https://aws.amazon.com/quicksight/) 

1.  这些数据有多敏感，需要什么级别的保护和加密？ 

   1.  所有的 Amazon RDS 和 Aurora 引擎都支持使用 AWS KMS 进行静态数据加密。Microsoft SQL Server 和 Oracle 在使用 Amazon RDS 时也支持本机透明数据加密（TDE，Transparent Data Encryption）。 

   1.  对于 DynamoDB，您可以使用 [IAM](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-overview.html) 的精细访问控制功能，在关键字级别控制谁可以访问哪些数据。 

1.  数据需要什么级别的持久性？ 

   1.  Aurora 自动在一个区域内的三个可用区复制您的数据，这意味着您的数据具有高度的持久性，数据丢失的可能性较小。 

   1.  DynamoDB 自动跨多个可用区复制，提供高可用性和数据持久性。 

   1.  Amazon S3 提供 11 个 9 的持久性。许多数据库服务（如 Amazon RDS 和 DynamoDB）支持将数据导出到 Amazon S3 以进行长期保留和归档。 

1.  恢复 [时间目标（RTO）或恢复点目标（RPO）](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/plan-for-disaster-recovery-dr.html) 要求是否影响解决方案？ 

   1.  Amazon RDS、Aurora、DynamoDB、Amazon DocumentDB 和 Neptune 全部支持时间点恢复以及按需备份和还原。  

   1.  对于高可用性要求，可以全局复制 DynamoDB 表（使用 [全局表](https://aws.amazon.com/dynamodb/global-tables/) 功能），并且可以使用全局数据库功能跨多个区域复制 Aurora 集群。此外，可以使用跨区域复制功能，跨 AWS 区域复制 S3 存储桶。  

1.  是否希望摆脱商用数据库引擎/许可成本？ 

   1.  考虑使用 Amazon RDS 或 Aurora 上的开源引擎，如 PostgreSQL 和 MySQL 

   1.  利用 [AWS DMS](https://aws.amazon.com/dms/) 和 [AWS SCT](https://aws.amazon.com/dms/schema-conversion-tool/) 执行从商用数据库引擎到开源引擎的迁移 

1.  对数据库的运维有什么期望？ 迁移到托管服务是主要的关注点吗？ 

   1.  利用 Amazon RDS 而不是 Amazon EC2，以及利用 DynamoDB 或 Amazon DocumentDB 而不是自行托管的 NoSQL 数据库可以减少运维开销。 

1.  当前如何访问数据库？ 是只有应用程序访问，还是有商业智能（BI，Business Intelligence）用户和其他互联的现成应用程序？ 

   1.  如果您依赖于外部工具，那么您可能必须保持与它们支持的数据库的兼容性。Amazon RDS 完全兼容其支持的不同引擎版本，包括 Microsoft SQL Server、Oracle、MySQL 和 PostgreSQL。 

1.  下面列出了潜在的数据管理服务，以及这些服务的最佳使用位置： 

   1.  关系数据库通过预定义 schema 及其之间的关系存储数据。这些数据库旨在支持 ACID（原子性、一致性、隔离性、持久性）事务，并保持参照完整性和数据强一致性。许多传统应用程序、企业资源规划（ERP, enterprise resource planning）、客户关系管理（CRM, customer relationship management）和电子商务都使用关系数据库来存储其数据。您可以在 Amazon EC2 上运行许多这些数据库引擎，或者从以下 AWS [托管数据库服务中进行选择](https://aws.amazon.com/products/databases/)： [Amazon Aurora](https://aws.amazon.com/rds/aurora)， [Amazon RDS](https://aws.amazon.com/rds)和 [Amazon Redshift](https://aws.amazon.com/redshift). 

   1.  键值数据库已针对常见的访问模式进行优化，通常用于存储和检索大量数据。这些数据库即使在出现大量并发请求的情况下也能实现快速响应。键值数据库的典型使用案例包括高流量 Web 应用程序，电子商务系统和游戏应用程序。在 AWS 中，您可以利用 [Amazon DynamoDB](https://aws.amazon.com/dynamodb/)数据库，这是一个完全托管的多区域、多主表持久数据库，具有适用于互联网规模的应用程序的内置安全性、备份和还原以及内存中的缓存。 

   1.  内存数据库用于需要实时访问数据、最低延迟和最高吞吐量的应用程序。对于毫秒级延迟不足以满足需求的应用程序，这些数据库通过直接将数据存储在内存中来提供微秒级延迟。您可以将内存数据库用于应用程序缓存、会话管理、游戏排行榜和地理空间应用程序。 [Amazon ElastiCache](https://aws.amazon.com/elasticache/) 是一种完全托管的内存数据存储，兼容 [Redis](https://aws.amazon.com/elasticache/redis/) 或者 [Memcached](https://aws.amazon.com/elasticache/memcached)。如果应用程序还有更高的持久性要求，可以结合 [适用于 Redis 的 Amazon MemoryDB](https://aws.amazon.com/memorydb/) 来提供持久的内存数据库服务，以实现超快的性能。 

   1.  文档数据库旨在将半结构化数据存储为类似 JSON 的文档。这些数据库可帮助开发人员快速构建和更新应用程序，例如内容管理、目录和用户配置文件。 [Amazon DocumentDB](https://aws.amazon.com/documentdb/) 是一种快速、可扩展、高度可用且完全托管的文档数据库服务，支持 MongoDB 工作负载。 

   1.  宽列存储是 NoSQL 数据库的一种类型。它使用表、行和列，但是与关系数据库不同的是，同一个表中各行的列名称和格式可能会有所不同。您通常会看到一个宽列存储在大规模工业应用程序中，用于设备维护、队列管理和路线优化。 [Amazon Keyspaces（Apache Cassandra 兼容）](https://aws.amazon.com/mcs/) 是一种宽列可扩展、高度可用且兼容 Apache Cassandra 的托管数据库服务。 

   1.  图形数据库适用于需要大规模以毫秒延迟在高度连接的图形数据集之间浏览和查询数百万关系的应用程序。许多公司将图形数据库用于欺诈检测、社交网络和推荐引擎。 [Amazon Neptune](https://aws.amazon.com/neptune/) 是一种快速、可靠、完全托管的图数据库服务，便于用户能轻松构建并运行适用于高度互连数据集的应用程序。 

   1.  时间序列数据库可以高效收集、合成数据，并从不断变化的数据中获得见解。IoT 应用程序、开发运营和工业遥测可以利用时间序列数据库。 [Amazon Timestream](https://aws.amazon.com/timestream/) 是适用于 IoT 和运营应用程序的快速、可扩展、完全托管的时间序列数据库服务，可用于轻松存储和分析每天数以万亿计的事件。 

   1.  分类账数据库提供可信中央机构，以维护每个应用程序的可扩展、不可变和允许以加密方式进行验证的交易记录。我们看到分类账数据库用于记录系统、供应链、注册甚至银行交易。 [Amazon Quantum Ledger Database (Amazon QLDB)](https://aws.amazon.com/qldb/) 是一种完全托管的分类账数据库，提供可信中央机构拥有的透明、不可变和允许以加密方式进行验证的交易日志。Amazon QLDB 跟踪每个应用程序数据更改，并持续维护完整且可验证的更改历史记录。 

 **实施计划的工作量级别： **如果工作负载从一种数据库解决方案转移到另一种计算解决方案，则重构数据和应用程序可能需要 *高* 工作量。   

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [AWS 云数据库 ](https://aws.amazon.com/products/databases/?ref=wellarchitected) 
+  [AWS 数据库缓存 ](https://aws.amazon.com/caching/database-caching/?ref=wellarchitected) 
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/?ref=wellarchitected) 
+  [Amazon Aurora 最佳实践 ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html?ref=wellarchitected) 
+  [Amazon Redshift 性能 ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html?ref=wellarchitected) 
+  [Amazon Athena 10 大性能提示 ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/?ref=wellarchitected) 
+  [Amazon Redshift Spectrum 最佳实践 ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/?ref=wellarchitected) 
+  [Amazon DynamoDB 最佳实践](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html?ref=wellarchitected) 
+  [在 EC2 和 Amazon RDS 之间进行选择](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/comparison.html) 
+  [实施 Amazon ElastiCache 的最佳实践](https://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/BestPractices.html) 

 **相关视频：** 
+ [AWS 专用数据库（DAT209-L） ](https://www.youtube.com/watch?v=q81TVuV5u28) 
+ [Amazon Aurora 存储揭秘：工作原理（DAT309-R） ](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+ [Amazon DynamoDB 深入研究：高级设计模式 (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM) 

 **相关示例：** 
+  [使用 Amazon Redshift 数据共享优化数据模式](https://wellarchitectedlabs.com/sustainability/300_labs/300_optimize_data_pattern_using_redshift_data_sharing/) 
+  [数据库迁移](https://github.com/aws-samples/aws-database-migration-samples) 
+  [MS SQL Server – AWS Database Migration Service（DMS）复制演示](https://github.com/aws-samples/aws-dms-sql-server) 
+  [数据库现代化动手实践研讨会](https://github.com/aws-samples/amazon-rds-purpose-built-workshop) 
+  [Amazon Neptune 示例](https://github.com/aws-samples/amazon-neptune-samples) 

# PERF04-BP02 评估可用的选项
<a name="perf_right_database_solution_evaluate_options"></a>

 在选择数据管理解决方案之前，需要了解可用的数据库选项及其如何优化性能。使用负载测试确定与您的工作负载相关的重要数据库指标。在研究数据库选项时，要考虑各种方面，如参数组、存储选项、内存、计算、只读副本、最终一致性、连接池和缓存选项。尝试使用这些不同的配置选项来改进指标。 

 **期望结果：** 基于数据类型，工作负载可以使用一个或多个数据库解决方案。数据库功能和优势与数据特征、访问模式和工作负载要求完美匹配。要优化您的数据库性能和成本，您必须评估数据访问模式以确定适当的数据库选项。评估可接受的查询时间，以确保选定的数据库选项可以满足要求。 

 **常见反模式：** 
+  未识别数据访问模式。 
+  不了解所选数据管理解决方案的配置选项。 
+  仅依赖于增加实例大小，而不考虑其他可用的配置选项。 
+  不测试所选解决方案的扩展特征。 

 

 **建立此最佳实践的好处：** 通过探索和试用数据库选项，您也许能够降低基础设施成本，提高性能和可扩展性，并减少维护工作负载所需的工作量。 

 **未建立这种最佳实践的情况下暴露的风险等级：** 高 
+  必须针对 *一刀切类型的* 数据库进行优化意味着做出不必要的妥协。 
+  由于没有配置数据库解决方案以匹配流量模式，导致成本增加。 
+  扩展问题可能会导致运维问题。 
+  数据的保护级别可能达不到要求。 

## 实施指导
<a name="implementation-guidance"></a>

 了解您的工作负载数据特征，以便配置数据库选项。运行负载测试以确定您的关键性能指标和瓶颈。使用这些特征和指标来评估数据库选项并尝试使用不同的配置。 


|  AWS 服务  |  Amazon RDS、Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  扩展计算  |  增加实例大小，Aurora 无服务器实例自动扩展以响应负载变化  |  按需容量模式下的自动读/写扩展，或预置容量模式下的预置读/写容量自动扩展  |  增加实例大小  |  增加实例大小，将节点添加到集群  |  增加实例大小  |  自动扩展以调整容量  |  按需容量模式下的自动读/写扩展，或预置容量模式下的预置读/写容量自动扩展  |  自动扩展以调整容量  | 
|  横向扩展读取  |  所有引擎都支持只读副本。Aurora 支持只读副本实例的自动扩展  |  增加预置的读取容量单位  |  只读副本  |  只读副本  |  只读副本。支持只读副本实例的自动扩展  |  自动扩展  |  增加预置的读取容量单位  |  自动纵向扩展到规定的并发限制  | 
|  横向扩展写操作  |  增加实例大小，批处理应用程序中的写操作，或在数据库前面添加队列。通过跨多个实例的应用程序级分片进行横向扩展  |  增加预置的写入容量单位。确保最佳分区键，以防止分区级写操作节流  |  增加主实例大小  |  在集群模式下使用 Redis 跨分片分布写操作  |  增加实例大小  |  扩展时，写请求可能会受到限制。如果遇到节流异常，请继续以相同（或更高）吞吐量发送数据，以自动扩展。批量写入以减少并发写入请求  |  增加预置的写入容量单位。确保最佳分区键，以防止分区级写操作节流  |  自动纵向扩展到规定的并发限制  | 
|  引擎配置  |  参数组  |  不适用  |  参数组  |  参数组  |  参数组  |  不适用  |  不适用  |  不适用  | 
|  缓存  |  内存中的缓存，可通过参数组进行配置。与 ElastiCache for Redis 等专用缓存结合使用，分流对经常访问项的请求  |  DAX 完全托管式缓存可用  |  内存中的缓存。（可选）与 ElastiCache for Redis 等专用缓存结合使用，分流对经常访问项的请求  |  主要功能是缓存  |  使用查询结果缓存来缓存只读查询的结果  |  Timestream 有两个存储层；其中之一是高性能内存中存储层  |  部署单独的专用缓存（如 ElastiCache for Redis），分流对经常访问项的请求  |  不适用  | 
|  高可用性/灾难恢复  |  对于生产工作负载，推荐的配置是在第二个可用区中运行备用实例，以在一个区域内提供弹性。  对于跨区域的弹性，可以使用 Aurora 全球数据库  |  在一个区域内高度可用。可以使用 DynamoDB 全局表跨区域复制表  |  跨可用区创建多个实例以实现可用性。  快照可以跨区域共享，集群可以使用 DMS 进行复制，用于提供跨区域复制/灾难恢复  |  对于生产集群，推荐的配置是在备用可用区中至少创建一个节点。  ElastiCache 全局数据存储可用于跨区域复制集群。  |  其他可用区中的只读副本用作失效转移目标。  快照可以跨区域共享，集群可以使用 Neptune 流进行复制，用于在两个不同区域的两个集群之间复制数据。  |  在一个区域内高度可用。跨区域复制需要使用 Timestream SDK 进行自定义应用程序开发  |  在一个区域内高度可用。  跨区域复制需要自定义应用程序逻辑或第三方工具  |  在一个区域内高度可用。  要跨区域复制，请将 Amazon QLDB 日志的内容导出到 S3 存储桶，并配置该存储桶以进行跨区域复制。  | 

 

 **实施步骤** 

1.  哪些配置选项可用于选定的数据库？ 

   1.  利用 Amazon RDS 和 Aurora 的参数组，您可以调整常见的数据库引擎级别设置（例如为缓存分配的内存），或调整数据库的时区 

   1.  对于预置的数据库服务（如 Amazon RDS、Aurora、Neptune、Amazon DocumentDB）以及在 Amazon EC2 上部署的数据库服务，您可以更改实例类型、预置存储和添加只读副本。 

   1.  DynamoDB 允许您指定两种容量模式：按需和预置。考虑到不同的工作负载，您可以在这两种模式之间进行更改，并在预置模式下随时增加所分配的容量。 

1.  工作负载是否包含大量的读取或写入操作？  

   1.  哪些解决方案可用于分流读取操作（只读副本、缓存等）？  

      1.  对于 DynamoDB 表，您可以使用 DAX 缓存功能来分流读取操作。 

      1.  对于关系数据库，您可以创建一个 ElastiCache for Redis 集群，并将应用程序配置为首先从缓存中读取，并在请求的项目不存在时返回到数据库。 

      1.  关系数据库（如 Amazon RDS 和 Aurora）以及预置的 NoSQL 数据库（如 Neptune 和 Amazon DocumentDB）全部支持添加只读副本，以分流工作负载的读取部分。 

      1.  DynamoDB 等无服务器数据库将自动扩展。确保您预置了足够的读取容量单位（RCU，Read Capacity Unit）来处理工作负载。 

   1.  哪些解决方案可用于扩展写入操作（分区键分片、引入队列等）？ 

      1.  对于关系数据库，您可以增加实例的大小以适应增加的工作负载，或增加预调配 IOPS 以增加底层存储的吞吐量。 
         +  您还可以在数据库前面引入队列，而不是直接写入数据库。此模式允许您将摄取操作与数据库解耦，并控制流量，这样数据库就不会过载。  
         +  对写入请求进行批处理，而不是创建许多短期事务，这样有助于提高有大量写入的关系数据库的吞吐量。 

      1.  像 DynamoDB 这样的无服务器数据库可以自动扩展写入吞吐量，也可以根据容量模式调整预置的写入容量单位（WCU，Write Capacity Unit）。  
         +  但是，当达到给定分区键的吞吐量限制时，仍然会遇到 *热* 分区问题。这可以通过选择更均匀分布的分区键或对分区键进行写分片来缓解。  

1.  当前或预期的每秒事务数（TPS）峰值是多少？ 使用此流量和此流量 \$1X% 进行测试，以了解扩展特征。 

   1.  适用于 PostgreSQL 的 pg\$1bench 等原生工具可用于对数据库进行压力测试，以了解瓶颈和扩展特征。 

   1.  应该捕获类似生产的流量，以便重放这些流量，从而在合成工作负载之外模拟真实世界的情况。 

1.  如果使用无服务器或弹性可扩展计算，请测试此扩展对数据库的影响。如果合适，引入连接管理或池技术以降低对数据库的影响。  

   1.  RDS 代理可与 Amazon RDS 和 Aurora 结合使用，以管理与数据库的连接。  

   1.  DynamoDB 等无服务器数据库没有与之关联的连接，但会考虑预置容量和自动扩展策略来处理负载峰值。 

1.  负载是否可预测，是否会出现负载峰值和不活动时段？ 

   1.  如果有一段时间处于不活动状态，请考虑在这段时间内缩减预置的容量或实例大小。Aurora Serverless V2 将根据负载自动纵向扩展和缩减。 

   1.  对于非生产实例，请考虑在非工作时间暂停或停止这些实例。 

1.  您是否需要根据访问模式和数据特征对数据模型进行分段和拆分？ 

   1.  考虑使用 AWS DMS 或 AWS SCT 将您的数据移动到其他服务。 

## 实施计划的工作量级别： 
<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>

要建立此最佳实践，您必须了解当前的数据特征和指标。收集这些指标，建立基线，然后使用这些指标来确定理想的数据库配置选项，这需要 *低* 到 *中等* 工作量。这最好通过负载测试和实验来验证。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [AWS 云数据库 ](https://aws.amazon.com/products/databases/?ref=wellarchitected) 
+  [AWS 数据库缓存 ](https://aws.amazon.com/caching/database-caching/?ref=wellarchitected) 
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/?ref=wellarchitected) 
+  [Amazon Aurora 最佳实践 ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html?ref=wellarchitected) 
+  [Amazon Redshift 性能 ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html?ref=wellarchitected) 
+  [Amazon Athena 10 大性能提示 ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/?ref=wellarchitected) 
+  [Amazon Redshift Spectrum 最佳实践 ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/?ref=wellarchitected) 
+  [Amazon DynamoDB 最佳实践](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html?ref=wellarchitected) 

 

 **相关视频：** 
+  [AWS 专用数据库（DAT209-L） ](https://www.youtube.com/watch?v=q81TVuV5u28)
+ [Amazon Aurora 存储揭秘：工作原理（DAT309-R） ](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+  [Amazon DynamoDB 深入研究：高级设计模式 (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **相关示例：** 
+  [Amazon DynamoDB 示例](https://github.com/aws-samples/aws-dynamodb-examples) 
+  [AWS 数据库迁移示例](https://github.com/aws-samples/aws-database-migration-samples) 
+  [数据库现代化研讨会](https://github.com/aws-samples/amazon-rds-purpose-built-workshop) 
+  [使用 Amazon RDS for Postgress DB 上的参数](https://github.com/awsdocs/amazon-rds-user-guide/blob/main/doc_source/Appendix.PostgreSQL.CommonDBATasks.Parameters.md) 

# PERF04-BP03 收集和记录数据库性能指标
<a name="perf_right_database_solution_collect_metrics"></a>

 要了解数据管理系统的运行情况，跟踪相关指标非常重要。这些指标将帮助您优化数据管理资源，确保满足您的工作负载需求，并确保您清楚地了解工作负载的运行情况。使用各种工具、库和系统来记录与数据库性能相关的性能测量值。 

 

 有些指标与数据库所在的系统有关（例如，CPU、存储、内存、IOPS），有些指标与访问数据本身有关（例如，每秒事务数、查询速率、响应时间、错误）。这些指标应便于任何支持或操作人员访问，并具有足够的历史记录，以便能够识别趋势、异常和瓶颈。 

 

 **期望结果：** 为了监控数据库工作负载的性能，您必须记录一段时间内的多个性能指标。这样您便可以检测异常并根据业务指标衡量性能，确保满足您的工作负载需求。 

 **常见反模式：** 
+  您只能手动搜索日志文件来查找指标。 
+  您只将指标发布到团队使用的内部工具，而没有全面了解您的工作负载。 
+  您只使用所选监控软件记录的默认指标。 
+  您只在出现问题时检查指标。 
+  您只监控系统级指标，而不捕获数据访问或使用情况指标。 

 **建立此最佳实践的好处：** 建立性能基准有助于了解工作负载的正常行为和需求。可以更快地识别和调试异常模式，从而提高数据库的性能和可靠性。可以配置数据库容量，以确保在不影响性能的情况下实现最佳成本。 

 **未建立这种最佳实践的情况下暴露的风险等级：** 高 
+  无法区分异常与正常的性能水平会给问题识别和决策带来困难。 
+  可能无法确定潜在的成本节约机会。 
+  无法识别增长模式，这可能导致可靠性或性能下降。 

## 实施指导
<a name="implementation-guidance"></a>

 识别、收集、聚合和关联与数据库相关的指标。指标应包括支持数据库的底层系统指标和数据库指标。底层系统指标可包括 CPU 利用率、内存、可用磁盘存储、磁盘 I/O 和网络入站和出站指标，而数据库指标可包括每秒事务数、最多的查询、平均查询速率、响应时间、索引使用情况、表锁定、查询超时和打开的连接数。这些数据对于了解工作负载的性能以及数据库解决方案的使用方式至关重要。将这些指标用作数据驱动方法的一部分，以便调整和优化工作负载的资源。  

 **实施步骤：** 

1.  必须跟踪哪些数据库指标？ 

   1.  [监控 Amazon RDS 的指标](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Monitoring.html) 

   1.  [使用 Performance Insights 进行监控](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) 

   1.  [增强监控](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.overview.html) 

   1.  [DynamoDB 指标](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html) 

   1.  [监控 DynamoDB DAX](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.Monitoring.html) 

   1.  [监控 MemoryDB](https://docs.aws.amazon.com/memorydb/latest/devguide/monitoring-cloudwatch.html) 

   1.  [监控 Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/metrics.html) 

   1.  [时间序列指标和维度](https://docs.aws.amazon.com/timestream/latest/developerguide/metrics-dimensions.html) 

   1.  [Aurora 的集群级指标](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.Monitoring.Metrics.html) 

   1.  [监控 Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/monitoring.html) 

   1.  [监控 Amazon Neptune](https://docs.aws.amazon.com/neptune/latest/userguide/monitoring.html) 

1.  数据库监控是否会受益于检测操作异常和性能问题的机器学习解决方案？ 

   1.  [Amazon DevOps Guru for Amazon RDS](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-rds.overview.how-it-works.html) 会显示性能问题，并提出纠正措施的建议。 

1.  您是否需要有关 SQL 使用情况的应用程序级详细信息？ 

   1.  [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html#api-segmentdocuments-sql) 可以签入到应用程序中以获得见解，并为单个查询封装所有数据点。 

1.  您目前是否有经过批准的日志记录和监控解决方案？ 

   1.  [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) 可以收集架构中各种资源的指标。您也可以收集和发布自定义指标，用于显示业务指标或派生指标。使用 CloudWatch 或第三方解决方案来设置指示超出阈值的警报。 

1.  您是否确定并配置了数据留存策略以匹配我的安全和运营目标？ 

   1.  [CloudWatch 指标的默认数据留存](https://aws.amazon.com/cloudwatch/faqs/#AWS_resource_.26_custom_metrics_monitoring) 

   1.  [CloudWatch Logs 的默认数据留存](https://aws.amazon.com/cloudwatch/faqs/#Log_management) 

 **实施计划的工作量级别： **从所有数据库资源中识别、跟踪、收集、聚合和关联指标所需的工作量为 *中* 。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+ [AWS 数据库缓存 ](https://aws.amazon.com/caching/database-caching/) 
+ [ Amazon Athena 10 大性能提示 ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/)
+ [ Amazon Aurora 最佳实践 ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html)
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/)
+ [Amazon DynamoDB 最佳实践 ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+ [Amazon Redshift Spectrum 最佳实践 ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+ [Amazon Redshift 性能 ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+ [AWS 云数据库 ](https://aws.amazon.com/products/databases/) 
+  [Amazon RDS Performance Insights](https://aws.amazon.com/rds/performance-insights/) 

 **相关视频：** 
+ [AWS 专用数据库（DAT209-L） ](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [Amazon Aurora 存储揭秘：工作原理（DAT309-R） ](https://www.youtube.com/watch?v=uaQEGLKtw54)
+  [Amazon DynamoDB 深入研究：高级设计模式 (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **相关示例：** 
+  [第 100 级：使用 CloudWatch 控制面板进行监控](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_with_cloudwatch_dashboards/) 
+  [AWS 数据集摄取指标收集框架](https://github.com/awslabs/aws-dataset-ingestion-metrics-collection-framework) 
+  [Amazon RDS 监控研讨会](https://www.workshops.aws/?tag=Enhanced%20Monitoring) 

# PERF04-BP04 根据访问模式选择数据存储
<a name="perf_right_database_solution_access_patterns"></a>

 根据工作负载的访问模式来确定要使用的服务和技术。在性能和规模等非功能性要求外，访问模式还会很大程度影响数据库和存储解决方案的选择。第一个方面是对事务、ACID 合规性和一致性读取的需求。并非每个数据库都支持这些需求，大多数 NoSQL 数据库都提供最终一致性模型。第二个重要方面是写入和读取操作在时间和空间上的分布。全球分布式应用程序需要考虑流量模式、延迟和访问要求，以便确定最佳存储解决方案。第三个需要选择的关键方面是查询模式灵活性、随机访问模式和一次性查询。还必须考虑针对文本和自然语言处理、时间序列和图形的高度专业化查询功能。 

 **期望结果：** 根据已识别和记录的数据访问模式选择数据存储。这可包括最常见的读取、写入和删除查询，对临时计算和聚合的需求，数据的复杂性，数据的相互依赖关系以及所要求的一致性需求。 

 **常见反模式：** 
+  您只能选择一个数据库供应商来简化运营管理。 
+  您可以假设数据访问模式会随着时间的推移保持一致。 
+  您在应用程序中实施复杂的事务、回滚和一致性逻辑。 
+  数据库配置为支持可能出现的高流量突增，这导致数据库资源大部分时间保持空闲状态。 
+  使用共享数据库进行事务处理和分析。 

 **建立此最佳实践的好处：** 基于访问模式选择和优化数据存储将有助于降低开发复杂性并优化性能。了解何时使用只读副本、全局表、数据分区和缓存将帮助您减少运维开销，并根据您的工作负载需求进行扩展。 

 **未建立这种最佳实践的情况下暴露的风险等级：** 中 

## 实施指导
<a name="implementation-guidance"></a>

 识别和评估数据访问模式，以选择正确的存储配置。每个数据库解决方案都有配置和优化存储解决方案的选项。使用收集的指标和日志，并尝试使用各种选项以找到最佳配置。使用下表查看每个数据库服务的存储选项。 


|  AWS 服务  |  Amazon RDS、Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  扩展存储  |  当利用预调配 IOPS 存储类型时，用于自动扩展预调配存储 IOPS 的存储自动扩展选项，也可以独立于预调配的存储进行扩展  |  自动扩展。表的大小不受限制。  |  存储自动扩展选项可用于扩展预置存储  |  存储在内存中，绑定到实例类型或计数  |  存储自动扩展选项可用于自动扩展预置存储  |  配置内存层和磁介质层的保留期（以天为单位）  |  自动扩展和缩减表存储  |  自动扩展。表的大小不受限制。  | 

 

 **实施步骤：** 

1.  确定并记录数据和流量的预期增长。 

   1.  Amazon RDS 和 Aurora 支持存储自动扩展到规定的限制。除此之外，可以考虑将旧数据转移到 Amazon S3 进行归档，聚合历史数据进行分析，或通过分片进行横向扩展。 

   1.  DynamoDB 和 Amazon S3 将自动扩展到接近无限的存储量。 

   1.  在 EC2 上运行的 Amazon RDS 实例和数据库的大小可以手动调整，并且 EC2 实例可以在以后添加新的 EBS 卷以增加存储空间。  

   1.  实例类型可以根据活动的变化而改变。例如，您可以在测试时从较小的实例开始，然后在服务开始接收生产流量时扩展实例。Aurora Serverless V2 缩放以响应负载的变化。  

1.  记录有关正常和峰值下的性能（每秒事务数 TPS 和每秒查询数 QPS）及一致性（ACID 和最终一致性）要求。 

1.  记录解决方案部署方面和数据库访问要求（全局、多可用区、读取复制、多个写入节点） 

 **实施计划的工作量级别： **如果您未记录数据管理解决方案的日志或指标，那么您需要在识别和记录数据访问模式之前完成这项工作。一旦了解了数据访问模式，选择和配置数据存储的工作量就会比较 *低* 工作量。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+ [AWS 数据库缓存 ](https://aws.amazon.com/caching/database-caching/)
+ [Amazon Athena 10 大性能提示 ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) 
+ [Amazon Aurora 最佳实践](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html) 
+ [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/) 
+ [Amazon DynamoDB 最佳实践 ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+ [Amazon Redshift Spectrum 最佳实践 ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+ [Amazon Redshift 性能 ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+  [AWS 云数据库 ](https://aws.amazon.com/products/databases/)
+  [Amazon RDS 存储类型](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html) 

 **相关视频：** 
+ [AWS 专用数据库（DAT209-L）](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [Amazon Aurora 存储揭秘：工作原理（DAT309-R） ](https://www.youtube.com/watch?v=uaQEGLKtw54)
+ [ Amazon DynamoDB 深入研究：高级设计模式 (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **相关示例：** 
+  [使用 AWS 分布式负载测试进行试验和测试](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 

# PERF04-BP05 根据访问模式和指标优化数据存储
<a name="perf_right_database_solution_optimize_metrics"></a>

 使用性能特性和访问模式来优化数据的存储和查询方式，以便实现最佳性能。衡量索引、键分配、数据仓库设计或缓存策略等优化对系统性能或整体效率的影响。 

 **常见反模式：** 
+  您只能手动搜索日志文件来查找指标。 
+  您只能将指标发布到内部工具。 

 **建立此最佳实践的好处：** 为了确保满足工作负载的指标要求，您必须监控与读写操作相关的数据库性能指标。您可以根据这些数据向数据存储层添加新的读写优化功能。 

 **未建立这种最佳实践的情况下暴露的风险等级：** 低 

## 实施指导
<a name="implementation-guidance"></a>

 根据指标和模式优化数据存储：使用报告的指标来识别您的工作负载中任何性能欠佳的方面，并优化您的数据库组件。对于每个数据库系统，您都需要评估不同的性能相关特性，例如为数据建立索引的方式、缓存数据的方式，以及在多个系统中分配数据的方式。衡量优化所带来的影响。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [AWS 数据库缓存](https://aws.amazon.com/caching/database-caching/) 
+  [Amazon Athena 10 大性能提示](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) 
+  [Amazon Aurora 最佳实践](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html) 
+  [Amazon DynamoDB Accelerator](https://aws.amazon.com/dynamodb/dax/) 
+  [Amazon DynamoDB 最佳实践](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+  [Amazon Redshift Spectrum 最佳实践](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+  [Amazon Redshift 性能](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+  [AWS 云数据库](https://aws.amazon.com/products/databases/) 
+  [使用 DevOps Guru for RDS 分析性能异常](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/devops-guru-for-rds.html) 
+  [DynamoDB 的读/写容量模式](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html) 

 **相关视频：** 
+  [AWS 专用数据库（DAT209-L）](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [Amazon Aurora 存储揭秘：工作原理（DAT309-R）](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+  [Amazon DynamoDB 深入研究：高级设计模式 (DAT403-R1)](https://www.youtube.com/watch?v=6yqfmXiZTlM) 

 **相关示例：** 
+  [Amazon DynamoDB 动手实验](https://amazon-dynamodb-labs.workshop.aws/hands-on-labs.html) 