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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

PERF03-BP01 使用最能支持您的数据访问和存储要求的专用数据存储

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

常见反模式:

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

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

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

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

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

实施指导

在选择和实现数据存储时,请确保查询、扩展和存储特性支持工作负载数据要求。 AWS 提供多种数据存储和数据库技术,包括块存储、对象存储、流存储、文件系统、关系、键值、文档、内存中、图形、时间序列和账本数据库。每种数据管理解决方案都有可供您使用的选项和配置,可支持应用场景和数据模型。通过了解数据特征和要求,您可以摆脱单片存储技术和限制性 one-size-fits-all方法,将精力集中在适当管理数据上。

实施步骤

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

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

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

    • 数据量和增长

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

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

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

    • 延迟

    • 吞吐量

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

    • 数据留存期

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

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

    Amazon Kinesis

    适用于 Apache Kafka 的亚马逊托管流媒体 Kafka(亚马逊)MSK

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

    亚马逊 Elastic File System(亚马逊EFS)

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

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

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

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

    • 通常,在 “无” SQL 数据模型中,您可以将数据反规范化为单个文档或文档集合,以便在单个请求中检索,而不是跨文档或表格联接。 

    是否需要ACID(原子性、一致性、隔离性、耐久性)合规性?
    • 如果需要与关系数据库关联的ACID属性,可以考虑使用诸如 Amazon RDS 和 A urora 之类的关系数据库。

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

    存储要求将如何随时间变化? 这对可扩展性有何影响?
    读查询与写查询的比例是多少? 缓存有可能提高性能吗?
    存储和修改(OLTP-在线交易处理)或检索和报告(OLAP-在线分析处理)是否具有更高的优先级?
    • 对于高吞吐量按原样读取事务处理,请考虑使用 “无” SQL 数据库,例如 DynamoDB。

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

    • 对于分析查询,可以考虑使用诸如 A mazon Redshift 之类的列式数据库,或者将数据导出到 Amazon S3,然后使用 Athena 或 Amazon 进行分析。 QuickSight

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

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

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

    是否希望摆脱商用数据库引擎或许可成本?
    对数据库的运维有什么期望? 迁移到托管服务是主要的关注点吗?
    • 利用亚马逊RDS代替亚马逊EC2,使用 DynamoDB 或 Amazon DocumentDB 代替自托管 “否” 数据库,可以SQL减少运营开销。

    当前如何访问数据库? 是仅仅是应用程序访问,还是有商业智能 (BI) 用户和其他连接的 off-the-shelf应用程序?
    • 如果依赖外部工具,可能需要保持与这些工具支持的数据库的兼容性。亚马逊与RDS其支持的差异引擎版本完全兼容,包括微软SQL服务器、甲骨文SQL、我的和Postg SQL re。

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

资源

相关文档:

相关视频:

相关示例: