PERF03-BP01 使用最能满足数据访问和存储要求的专用数据存储 - AWS Well-Architected 框架

PERF03-BP01 使用最能满足数据访问和存储要求的专用数据存储

了解数据特性(如数据的可共享性、大小、缓存大小、访问模式、延迟、吞吐量和持久性),为工作负载选择合适的专用数据存储(存储或数据库)。

常见反模式:

  • 由于内部对某种特定类型的数据库解决方案具备相关经验且比较了解,因此坚持使用一种数据存储。

  • 认为所有工作负载都有类似的数据存储和访问要求。

  • 没有实施数据目录来清点数据资产。

建立此最佳实践的好处:了解数据特性和要求,有助于确定效率最高、性能最高的存储技术来满足工作负载需求。

在未建立这种最佳实践的情况下暴露的风险等级:

实施指导

选择和实施数据存储时,要确保查询、扩展和存储特性支持工作负载数据要求。AWS 提供多种数据存储和数据库技术,包括数据块存储、对象存储、流式存储、文件系统、关系数据库、键值数据库、文档数据库、内存数据库、图形数据库、时间序列数据库和分类账数据库等。每种数据管理解决方案都有可供您使用的选项和配置,可支持应用场景和数据模型。通过了解数据特性和要求,您可以摆脱单一存储技术以及有很多局限性的一刀切方法,专注于合理管理数据。

实施步骤

  • 清点工作负载中存在的各种数据类型。

  • 了解并记录数据特性和要求,包括:

    • 数据类型(非结构化、半结构化、关系型)

    • 数据量和增长

    • 数据持久性:持久、短暂、瞬时

    • ACID(原子性、一致性、隔离性、持久性)要求

    • 数据访问模式(读取密集型或写入密集型)

    • 延迟

    • 吞吐量

    • IOPS(每秒输入/输出操作数)

    • 数据留存期

  • 了解可用于 AWS 工作负载的不同数据存储(存储数据库服务),这些存储可以满足您的数据特性要求(如 PERF01-BP01 了解并掌握可用的云服务和功能中所述)。AWS 存储技术及其关键特性的一些示例包括:

    类型 AWS 服务 主要特性
    对象存储 Amazon S3 无限的可扩展性、高可用性以及多种可访问性选项。要在 Amazon S3 内外传输和访问对象,可以使用传输加速接入点等服务来支持位置、安全需求和访问模式。
    存档存储 Amazon S3 Glacier 专为数据存档而打造。
    流媒体存储

    Amazon Kinesis

    Amazon Managed Streaming for Apache Kafka(Amazon MSK)

    高效摄取和存储流媒体数据。
    共享文件系统

    Amazon Elastic File System (Amazon EFS)

    可装载文件系统,可由多种类型的计算解决方案访问。

    共享文件系统 Amazon FSx 基于最新 AWS 计算解决方案而构建,支持四种常用文件系统:NetApp ONTAP、OpenZFS、Windows File Server 和 Lustre。Amazon FSx 延迟、吞吐量和 IOPS 因文件系统而不同,因此,在为您的工作负载需求选择合适的文件系统时应考虑这些因素。
    数据块存储 Amazon Elastic Block Store (Amazon EBS) 可扩展、高性能的数据块存储服务,专为 Amazon Elastic Compute Cloud(Amazon EC2)设计。Amazon EBS 包括用于事务型、IOPS 密集型工作负载的 SSD 支持型存储,以及用于吞吐量密集型工作负载的 HDD 支持型存储。
    关系数据库 Amazon AuroraAmazon RDSAmazon Redshift 旨在支持 ACID(原子性、一致性、隔离性、持久性)事务,并保持参照完整性和数据强一致性。许多传统应用程序、企业资源规划(ERP)、客户关系管理(CRM)和电子商务都使用关系数据库来存储其数据。
    键值数据库 Amazon DynamoDB 已针对常见的访问模式进行优化,通常用于存储和检索大量数据。键值数据库的典型使用案例包括高流量 Web 应用程序、电子商务系统和游戏应用程序。
    文档数据库 Amazon DocumentDB 旨在将半结构化数据存储为类似 JSON 的文档。这些数据库可帮助开发人员快速构建和更新应用程序,例如内容管理、目录和用户配置文件。 
    内存数据库 Amazon ElastiCache适用于 Redis 的 Amazon MemoryDB 用于需要实时访问数据、最低延迟和最高吞吐量的应用程序。您可以将内存数据库用于应用程序缓存、会话管理、游戏排行榜、低延迟机器学习特征存放区、微服务消息传送系统和高吞吐量流式传输机制。
    图形数据库 Amazon Neptune 用于需要大规模以毫秒延迟在高度连接的图形数据集之间浏览和查询数百万关系的应用程序。许多公司将图形数据库用于欺诈检测、社交网络和推荐引擎。
    时间序列数据库 Amazon Timestream 用于高效收集、合成数据,并从不断变化的数据中获得见解。IoT 应用程序、DevOps 和工业遥测可以利用时间序列数据库。
    宽列 Amazon Keyspaces (for Apache Cassandra) 使用表、行和列,但是与关系数据库不同的是,同一个表中各行的列名称和格式可能会有所不同。宽列存储常见于用于设备维护、队列管理和路线优化的大规模工业应用程序。 
    分类账 Amazon Quantum Ledger Database (Amazon QLDB) 提供可信中央机构,以维护每个应用程序的可扩展、不可变和允许以加密方式进行验证的交易记录。分类账数据库用于记录系统、供应链、注册甚至银行交易。  
  • 若要构建数据平台,可利用 AWS 上的现代数据架构来集成数据湖、数据仓库和专用数据存储。

  • 为工作负载选择数据存储时需要考虑的关键问题如下:

    问题 需要考虑的事项
    数据结构如何?
    需要什么级别的参照完整性?
    • 对于外键约束,Amazon RDSAurora 等关系数据库可以提供这种级别的完整性。

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

    是否要求符合 ACID(原子性、一致性、隔离性、持久性)?
    • 如果需要与关系数据库关联的 ACID 属性,请考虑使用关系数据库,例如 Amazon RDSAurora

    • 如果 NoSQL 数据库需要强一致性,则可以在 DynamoDB 中使用强一致性读取。

    存储要求将如何随时间变化? 这对可扩展性有何影响?
    读查询与写查询的比例是多少? 缓存有可能提高性能吗?
    • 读取密集型工作负载可以从缓存层中受益,例如 ElastiCacheDAX(若数据库为 DynamoDB)。

    • 读取操作也可以通过关系数据库(如 Amazon RDS)分流到只读副本。

    存储和修改(OLTP – Online Transaction Processing,联机事务处理)还是检索和报告(OLAP – Online Analytical Processing,联机分析处理)具有更高的优先级?
    • 对于高吞吐量的按原样读取事务处理,可以考虑使用 NoSQL 数据库,例如 DynamoDB。

    • 对于具有一致性的高吞吐量和复杂的读取模式(如联接),请使用 Amazon RDS。

    • 对于分析查询,可以考虑使用 Amazon Redshift 等列存数据库,或者将数据导出到 Amazon S3 后使用 AthenaAmazon QuickSight 进行分析。

    数据需要什么级别的持久性?
    • Aurora 自动在一个区域内的三个可用区复制数据,这意味着数据具有高度的持久性,丢失的可能性较小。

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

    • Amazon S3 提供 11 个 9 的持久性。许多数据库服务(如 Amazon RDS 和 DynamoDB)支持将数据导出到 Amazon S3,以便进行长期留存和存档。

    是否希望摆脱商用数据库引擎或许可成本?
    对数据库的运维有什么期望? 迁移到托管服务是主要的关注点吗?
    • 利用 Amazon RDS 而不是 Amazon EC2,以及利用 DynamoDB 或 Amazon DocumentDB 而不是自行托管 NoSQL 数据库,可以减少运维开销。

    当前如何访问数据库? 是只有应用程序访问,还是有商业智能(BI)用户和其他互联的现成应用程序?
    • 如果依赖外部工具,可能需要保持与这些工具支持的数据库的兼容性。Amazon RDS 与其支持的差异引擎版本完全兼容,包括 Microsoft SQL Server、Oracle、MySQL 和 PostgreSQL。

  • 在非生产环境中进行试验和基准测试,确定哪种数据存储可以满足工作负载要求。

资源

相关文档:

相关视频:

相关示例: