此内容已过时。此版本的架构完善的框架现在可在以下位置找到: https://docs.aws.amazon.com/zh_cn/wellarchitected/2022-03-31/framework/performance-efficiency.html

PERF 4: 如何选择数据库解决方案?

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

资源

AWS purpose-built databases (DAT209-L)
Amazon Aurora storage demystified: How it all works (DAT309-R)
Amazon DynamoDB deep dive: Advanced design patterns (DAT403-R1)
Cloud Databases with AWS
AWS Database Caching
Amazon DynamoDB Accelerator
Amazon Aurora best practices
Amazon Redshift performance
Amazon Athena top 10 performance tips
Amazon Redshift Spectrum best practices
Amazon DynamoDB best practices

最佳实践:

改进计划

了解数据特性

  • 研究和记录数据特性: 在选择数据库解决方案之前,需要了解工作负载的功能要求以及工作负载如何与数据进行交互。评估数据库解决方案时,需要确定该解决方案是否最符合您的要求(例如事务或高可用性),以便您可以为工作负载选择最佳数据库组合。 评估能够更好地满足您的工作负载要求的备用数据库。例如,如果您正在构建 IoT 应用程序,最好选择时间序列数据库(例如 Amazon Timestream),以便每天轻松存储和分析数万亿事件,而成本只有关系数据库的 1/10。
  • 评估可用的选项

  • 为工作负载选择适当的数据库类型: 通过 AWS,您可以从许多专用数据库引擎(包括关系、键值、文档、内存中、图形、时间序列和分类账数据库)中进行选择。AWS 的专用数据库组合支持多种数据模型,并允许您构建由使用案例驱动且高度可扩展的分布式应用程序。通过选择最佳数据库来解决特定问题或一组问题,您可以摆脱限制性的“一刀切”整体式数据库,并专注于构建应用程序以满足业务需求。
  • 确定数据库性能要求: 确定对您的工作负载至关重要的数据库性能指标,并通过基准测试或负载测将数据库性能要求作为数据驱动型方法的一部分进行实施。使用这些数据确定数据库解决方案受限的方面,并检查可解决此问题的配置选项。
  • 启用数据库缓存选项: 评估数据库缓存选项,例如,适用于缓存关系数据库的 Amazon ElastiCache for Redis,或适用于 DynamoDB 的完全托管且高度可用的内存中缓存的 Amazon DynamoDB Accelerator (DAX)。这些选项可以提供更好的性能,在某些情况下,甚至在每秒数百万次请求的情况下,性能也可以从几毫秒提高到几微秒。
  • 收集和记录数据库性能指标

  • 收集与数据库相关的指标: 设计您的工作负载以记录与数据库活动相关的指标。这些数据对于了解数据库系统对工作负载的总体性能的影响以及可以在何处进行更改以便提高性能和效率至关重要。例如,跟踪数据点(如查询时间、事务数、磁盘使用情况、索引使用情况或慢速查询)让您能够优化自己的数据库系统。
  • 监控指标: Amazon CloudWatch 可以收集架构中各种资源的指标。您也可以收集和发布自定义指标,用于显示业务指标或派生指标。使用 CloudWatch 或第三方解决方案来设置超出阈值时显示的警报。
  • 根据访问模式选择数据存储

  • 根据访问模式来确定数据存储: 评估您的工作负载的访问模式,以找到适当的数据存储模式。例如,如果您的工作负载需要临时查询访问,您可以选择关系数据库(如 Amazon RDS)。如果您的工作负载是由高增长率或高流量事件驱动,您应选择一个键值数据库,例如 Amazon DynamoDB。
  • 根据访问模式和指标优化数据存储

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