实例存储和 Amazon Elastic Block Store (Amazon EBS)
实例存储
数据块级存储卷的作用类似于物理硬盘。
实例存储为 Amazon EC2 实例提供临时性数据块级存储。实例存储是指实际挂载到 EC2 实例宿主机的磁盘存储,因而具有与该实例相同的生命周期。当实例终止时,实例存储中的所有数据都将丢失。
具有挂载的实例存储的 Amazon EC2 实例正在运行
实例停止或终止。
挂载的实例存储上的所有数据都被删除。
Amazon Elastic Block Store (Amazon EBS)
Amazon Elastic Block Store (Amazon EBS) 是一项提供数据块级存储卷的服务,这类存储卷可以与 Amazon EC2 实例配合使用。如果您停止或终止 Amazon EC2 实例,则挂载的 EBS 卷上的所有数据仍然可用。
要创建 EBS 卷,您需要定义配置(例如卷大小和类型)并预置它。创建 EBS 卷后,您可以将它挂载到 Amazon EC2 实例。
EBS 卷用于存储需要持久保存的数据,因此备份数据非常重要。您可以通过创建 Amazon EBS 快照来对 EBS 卷进行增量备份。
Amazon EBS 快照
EBS 快照是一种增量备份。这意味着对卷进行的第一次备份会复制所有数据。后续备份则只保存自最近一次快照以来发生更改的数据块。
增量备份不同于完整备份,后者每次备份时都会复制存储卷中的所有数据。完整备份包括自最近一次备份以来未发生更改的数据。
Amazon Simple Storage Service (Amazon S3)
Amazon Simple Storage Service (Amazon S3) 是一项提供对象级存储的服务。Amazon S3 将数据作为对象存储在存储桶中。
您可以将任何类型的文件上传到 Amazon S3,例如图片、视频、文本文件等。举例来说,您可以使用 Amazon S3 存储备份文件、网站的媒体文件或存档文档。Amazon S3 提供无限存储空间。Amazon S3 中对象的最大文件大小为 5TB。
当您将文件上传到 Amazon S3 时,您可以设置权限来控制该文件的可见性和访问权限。您还可以使用 Amazon S3 版本控制功能跟踪随时间过去的对象更改。
对象存储
在对象存储中,每个对象都由数据、元数据和键组成。
数据可能是图片、视频、文本文档或任何其他类型的文件。元数据包含有关数据是什么、如何使用数据、对象大小等的信息。对象的键是它的唯一标识符。
前面讲过,修改数据块存储中的文件时,只会更新发生更改的部分。而修改对象存储中的文件时,将更新整个对象。
Amazon S3 存储类
使用 Amazon S3 时,您只需为实际使用量付费。您可以从一系列存储类中选择可以满足您的业务和成本需求的存储类。选择 Amazon S3 存储类时,请考虑以下两个因素:
-
计划检索数据的频率
-
需要的数据可用性
S3 标准
-
专为频繁访问的数据而设计
-
将数据存储在至少三个可用区中
S3 标准可以为对象提供高可用性。这使得它适用于各种使用案例,例如网站、内容分发和数据分析。S3 标准的成本高于其他适用于不频繁访问的数据和存档存储的存储类。
S3 标准 - 不频繁访问(S3 标准 - S3 IA)
-
非常适合存储不频繁访问的数据
-
与 S3 标准类似,但存储价格较低,检索价格较高
S3 标准 – IA 非常适合存储不频繁访问但在需要时要求具有高可用性的数据。S3 标准和 S3 标准 – IA 都将数据存储在至少三个可用区中。S3 标准 – IA 提供与 S3 标准相同的可用性级别,但存储价格较低,检索价格较高。
S3 单区 - 不频繁访问(S3 单区 - IA)
-
将数据存储在单个可用区中
-
存储价格低于 S3 标准 – IA
S3 标准和 S3 标准 – IA 将数据存储在至少三个可用区中,而 S3 单区 – IA 将数据存储在单个可用区中。如果符合以下条件,那么这个存储类是个不错的选择:
-
您希望节省存储成本。
-
您希望在可用区发生故障时能够轻松重现数据。
S3 智能分层
-
非常适合存储访问模式未知或不断变化的数据
-
每个对象每月会产生少量的监控和自动化费用
在 S3 智能分层存储类中,Amazon S3 会监控对象的访问模式。如果您连续 30 天未访问某个对象,Amazon S3 会自动将其移动到不频繁访问层,即 S3 标准 – IA。如果您访问不频繁访问层中的对象,Amazon S3 会自动将其移动到频繁访问层,即 S3 标准。
S3 Glacier
-
低成本存储,专为数据存档而设计
-
能够在几分钟到几小时内完成对象检索
S3 Glacier 是一种低成本存储类,非常适合用于数据存档。例如,您可以使用此存储类来存储存档的客户记录或以前的照片和视频文件。
S3 Glacier Deep Archive
-
成本最低的对象存储类,非常适合用于存档
-
能够在 12 小时内完成对象检索
在决定选择 Amazon S3 Glacier 还是 Amazon S3 Glacier Deep Archive 时,请考虑您需要以多快的速度检索存档的对象。您可以在几分钟到几小时内完成对存储在 S3 Glacier 存储类中的对象的检索。相比之下,您可以在 12 小时内完成对存储在 S3 Glacier Deep Archive 存储类中的对象的检索。
比较 Amazon EBS 和 Amazon S3
EBS( Amazon Elastic Block Store)块存储,最大可以达到 16 TiB,能够在 Amazon EC2 实例终止后继续保留。采用固态硬盘,也可以使用传统磁盘。
S3(Amazon Simple Storage Service),区域性对象存储,存储空间不受限制。单个对象最大 5000 GBs,支持一次写入、多次读取,持久性达到 99.999999999%。
每种存储类都拥有针对不同存储需求的最佳设定,我们要看具体的使用案例。
案例1
假设您运行着一个照片分析网站,用户上传自己的照片,然后您的应用程序就会找到长得像他们的动物。您可能有数百万张动物图片,所有这些图片都需要建立索引并且可能有几千人同时浏览这些图片,S3 完美适合这种使用案例。S3 支持 Web,并且每个对象都会获得一个 URL,您可以通过这个 URL 来控制,谁可以查看或管理图片。S3 是区域性分布式存储,这意味着它具有 11 个 9 的持久性,因此您无需担心备份策略,S3 本身就是您的备份策略。另外,与 EBS 上同样的存储容量相比,S3 还可以节省大量成本,S3 还具有无服务器这种额外的优势。因此,您不需要使用 Amazon EC2 实例。
案例2
假设您有一个 80GB 的视频文件并且需要对这个文件进行编辑修改,要知道哪种存储类最合适,我们需要了解对象存储和块存储之间的区别。对象存储将任何文件都视为完整的对象。这种存储非常适合作为完整对象来上传和使用的文档、图像和视频文件。但是每次对象发生更改时,您都必须重新上传整个文件。它不支持增量更新,而块存储会将文件分解为较小的组件,也就是数据块。这意味着,对于 80GB 的文件,当您对电影中的一个场景进行编辑并保存修改时,引擎只会更新相关数据所在的数据块。所以,如果您要进行大量微小的编辑,那么 EBS 就是最好的选择。如果使用 S3,那么每次保存更改时,系统每次都必须上传全部 80GB 的数据。
所以,如果您使用的是完整的对象或者只是偶尔进行更改,那么 S3 是您最佳选择。但是如果您要进行复杂的读取、写入和更改操作,那么 EBS 绝对是您的不二之选。
Amazon Elastic File System (Amazon EFS)
文件存储
在文件存储中,多个客户端(例如用户、应用程序、服务器等)可以访问存储在共享文件夹中的数据。在这种方法中,存储服务器使用数据块存储和本地文件系统来组织文件。客户端通过文件路径访问数据。
与数据块存储和对象存储相比,文件存储非常适合用于大量服务和资源需要同时访问相同数据的使用案例。
Amazon Elastic File System (Amazon EFS) 是一个可扩展的文件系统,可与 AWS 云服务和本地资源配合使用。当您添加和删除文件时,Amazon EFS 会自动扩展和缩减。它可以在不中断应用程序的情况下按需扩展到 PB 级大小。
比较 Amazon EBS 和 Amazon EFS
-
Amazon EBS 卷将数据存储在单个可用区中。
要将 Amazon EC2 实例挂载到 EBS 卷,Amazon EC2 实例和 EBS 卷必须位于同一可用区内。
-
Amazon EFS 是一项区域性服务。它将数据存储在多个可用区中。
副本存储使您能够从文件系统所在区域中的所有可用区同时访问数据。此外,本地服务器可以使用 AWS Direct Connect 访问 Amazon EFS。
Amazon Relational Database Service (Amazon RDS)
Amazon Relational Database Service,简称 RDS,这项服务不仅支持所有主要的数据库引擎,比如说我们前面所提到的那些,还有其他优势,其中包括自动修补、备份、冗余、故障转移、灾难恢复等,这些通常都需要您自己管理,这使得它对 AWS 客户来说,成为一项极具吸引力的选择。因为客户可以借此专注于业务问题,而不维护数据库,否则,数据库管理员的工作将非常耗时且艰难。
那么,如何更轻松地在云中运行数据库工作负载呢?我们更进一步将数据库迁移或部署到 Amazon Aurora 中,它是我们托管性最强的关系数据库选项,可以兼容两种引擎:MySQL 和 PostgreSQL。它的成本是商用数据库的 1/10,所以说是一款非常经济高效的数据库。它的其他优势包括跨设施复制数据,所以,您在任何指定时间都可以有六个副本,您还可以部署多达 15 个只读副本,将读取负载迁移到只读副本上并扩展性能。此外,您可以连续备份到 S3,所以,始终都有备份可以随时还原。您还可以使用时间点恢复功能来恢复特定时间段内的数据。
关系数据库
在关系数据库中,数据以与其他数据相关联的方式进行存储。
关系数据库的一个示例是咖啡店的库存管理系统。数据库中的每条记录都包含单个项目的数据,例如产品名称、大小、价格等。
关系数据库使用结构化查询语言 (SQL) 来存储和查询数据。这种方法让您能够以易于理解、一致且可扩展的方式存储数据。例如,咖啡店店主可以编写 SQL 查询来识别最常购买中杯拿铁的所有顾客。
关系数据库中的数据示例:
ID | 产品名称 | 大小 | 价格 |
---|---|---|---|
1 | 中度烘焙现磨咖啡 | 12 盎司 | 5.30 USD |
2 | 深度烘焙现磨咖啡 | 20 盎司 | 9.27 USD |
Amazon Relational Database Service (Amazon RDS) 是一项服务,让您能够在 AWS 云中运行关系数据库。
Amazon RDS 是一项托管服务,可自动执行硬件预置、数据库设置、修补和备份等任务。借助这些功能,您可以减少完成管理任务的时间,将更多的时间用于利用数据实现应用程序创新。您可以将 Amazon RDS 与其他服务集成来满足您的业务和操作需求,例如使用 AWS Lambda 从无服务器应用程序查询您的数据库。
Amazon RDS 提供多种不同的安全选项。许多 Amazon RDS 数据库引擎提供静态加密(在存储数据时保护数据)和传输中加密(在发送和接收数据时保护数据)。
Amazon RDS 数据库引擎
Amazon RDS 可用于六种数据库引擎,这些引擎针对内存、性能或输入/输出 (I/O) 进行了优化。支持的数据库引擎包括:
-
Amazon Aurora
-
PostgreSQL
-
MySQL
-
MariaDB
-
Oracle Database
-
Microsoft SQL Server
Amazon Aurora
Amazon Aurora 是一种企业级关系数据库。它与 MySQL 和 PostgreSQL 关系数据库兼容。它的速度最高可达标准 MySQL 数据库的五倍,标准 PostgreSQL 数据库的三倍。
Amazon Aurora 通过减少不必要的输入/输出 (I/O) 操作,帮助您降低数据库成本,同时确保您的数据库资源保持可靠和可用。
如果您的工作负载需要高可用性,可以考虑使用 Amazon Aurora。它在三个可用区中复制六个数据副本,并持续将您的数据备份到 Amazon S3。
Amazon DynamoDB
非关系数据库
在非关系数据库中,您需要创建表。表是可以存储和查询数据的地方。
非关系数据库有时称为“NoSQL 数据库”,因为它们使用行和列以外的结构来组织数据。非关系数据库的一种结构方法是键值对。使用键值对,数据将会组织成项目(键),而项目具有属性(值)。您可以将属性视为数据的不同特征。
在键值数据库中,您可以随时在表中添加或删除项目的属性。此外,并非表中的每个项目都必须具有相同的属性。
非关系数据库中的数据示例:
键 | 值 |
---|---|
1 | 姓名:John Doe地址:123 Any Street最喜欢的饮品:中杯拿铁 |
2 | 姓名:Mary Major地址:100 Main Street出生日期:1994 年 7 月 5 日 |
Amazon DynamoDB
Amazon DynamoDB 是一项键值数据库服务。它可以在任意规模实现不超过 10 毫秒的延迟。
-
无服务器
DynamoDB 采用无服务器架构,这意味着您无需预置、修补或管理服务器。
您也无需安装、维护或运行软件。
-
自动扩展
随着数据库大小的缩减或扩展,DynamoDB 会自动扩展以适应容量的变化,同时保持一致的性能。
这使得它适合用于在扩展时需要高性能的使用案例。
比较RDS与DynamoDB
-
在关系领域,工程师通过自动高可用性和恢复功能帮助数据库管理员摆脱了无差别的繁重工作。您控制着数据,您控制着架构,您控制着网络,您运行的是 Amazon RDS。
-
在 NoSQL 领域,使用不需要高级架构的键值对,只需按一下按钮,就可以像全局数据库一样操作。吞吐量巨大、PB 级别扩展潜力、精细的 API 访问,这就是 Amazon DynamoDB。
案例1
从企业开始使用计算机起,关系数据库就已经存在了。能够对分布在多个表中的数据运行复杂的分析是每一个关系系统的强项。在这一回合中,您需要分析一个销售供应链管理系统的薄弱环节。对于这个使用案例,RDS 显然是最佳选择。因为它是为业务分析而构建的,而您需要复杂的关系联接。
案例2
使用案例,几乎其他任何使用案例都可以。这听起来很奇怪。但是,不管您的独立传统数据库供应商说什么,大多数人使用昂贵的关系数据库都与复杂关系毫无相关。事实上,无论人们在这些数据库中存储了什么数据,最后的大多数操作也只是在表里面进行。 假设您要存储员工通讯录,其中包含姓名、电话号码、电子邮件、员工 ID 等,而且是使用一张表。对于这种情况,您可以使用关系数据库。但是,如果您无法真正利用关系数据库的所有复杂功能,就会徒增开销和延迟。这时候您要考虑非关系数据库了。Dynamo DB 在不需要复杂的联接功能的情况下,使用 DynamoDB,不仅可以消除以上所有开销,还可以构建功能强大且速度惊人的数据库。
所以,选用哪种数据库取决于您的工作负载,每种服务都可以满足特定的需求。了解了自己的需求后,您就会知道,哪种服务才是您的最佳选择。
Amazon Redshift
Amazon Redshift 是一项数据仓库服务,可用于进行大数据分析。它让您能够从多个来源收集数据,并帮助您了解数据中的关系和趋势。
它就是数据仓库即服务,可以大规模扩展。数 PB 大小的 Redshift 节点很常见,事实上,利用 Amazon Redshift Spectrum,您可以直接对数据湖中的非结构化数据运行单个的 SQL 查询。
但 Redshift 不仅仅能够大规模处理大型的数据集,它采用了多项的创新技术,在商业智能工作负载方面,性能比传统的数据库高出 10 倍。
AWS Database Migration Service
AWS Database Migration Service (AWS DMS) 让您能够迁移关系数据库、非关系数据库和其他类型的数据存储。
借助 AWS DMS,您可以在源数据库和目标数据库之间移动数据。源数据库和目标数据库可以是相同的类型,也可以是不同的类型。在迁移过程中,源数据库可以保持运行,从而减少依赖该数据库的任何应用程序的停机时间。
例如,假设您有一个 MySQL 数据库,该数据库存储在本地、 Amazon EC2 实例或 Amazon RDS 中。将 MySQL 数据库当作源数据库。使用 AWS DMS,您可以将数据迁移到目标数据库,例如 Amazon Aurora 数据库。
AWS DMS 的其他使用案例
-
开发和测试数据库迁移
使开发人员能够根据生产数据测试应用程序而不会影响生产用户。
-
数据库整合
将多个数据库合并成一个数据库。
-
连续复制
将持续不断的数据副本发送到其他目标源,而不是执行一次性迁移。
其他数据库服务
Amazon DocumentDB
Amazon DocumentDB 是一项支持 MongoDB 工作负载的文档数据库服务。(MongoDB 是一种文档数据库程序。)
Amazon Neptune
Amazon Neptune 是一项图形数据库服务。
您可以使用 Amazon Neptune 来构建和运行需要处理高度互联的数据集的应用程序,例如推荐引擎、欺诈检测和知识图谱等。
Amazon Quantum Ledger Database(Amazon QLDB)
Amazon Quantum Ledger Database (Amazon QLDB) 是一种分类账数据库服务。
您可以使用 Amazon QLDB 查看对您的应用程序数据所做的所有更改的完整历史记录。
Amazon Managed Blockchain
Amazon Managed Blockchain 这项服务可以让您通过开源框架创建和管理区块链网络。
区块链是一个分布式分类账系统,能够让多方在没有中央授权的情况下运行交易和共享数据。
Amazon ElasticCache
Amazon ElastiCache 这项服务可以在数据库上层添加缓存层,从而帮助缩短常见请求的读取时间。
它支持两种类型的数据存储:Redis 和 Memcached。
Amazon DynamoDB Accelerator(DAX)
Amazon DynamoDB Accelerator (DAX) 是一种适用于 DynamoDB 的内存中的缓存。
它可以将响应时间从几毫秒缩短到几微秒。
其他资源
要详细了存储模块中探讨的概念,请查看以下资源。