存储和数据库
Amazon Elastic Block Store(Amazon EBS)
数据块级存储
可以看成一个用来存储文件的地方。
文件被更新的后,整个数据块不会被全部覆盖,它只会更新发生改变的部分。
适用于数据库、企业软件或文件系统等应用程序的有效的存储类型。
E.g. 电脑的硬盘就可以看做一个块级存储。
实例存储卷具有短暂性和临时性。关闭一个EC2再次启动它,可能在另外的物理主机上去了,这就可能导致原来运行EC2实例写入的存储信息不可用。
因此它们非常适合写入驱动器的数据,可以丢失的情况。例如临时文件、临时数据以及可以轻松重新创建并且不会产生负面影响的数据。
重要的数据不能写入EC2实例附带的驱动器!
如果需要一个比EC2实例生命周期更长的块级存储,就可以用到EBS。
创建名为EBS卷的虚拟硬盘,并将其连接到EC2实例。
这些硬盘与本地实例存储卷是分开的,没有直接绑定到您可以轻松使用的主机。
备份:EBS支持以 快照 的形式对数据进行 增量备份。
所以,一定要为EBS卷定期制作快照。
Amazon Simple Storage Service(Amazon S3)
提供对象级存储,能够以任何规模存储和检索无限量的数据。
- 将数据存储为对象。
- 但不是存储在文件目录中,而是存储在存储桶(buckets)中。
- 可上传的最大对象大小为5TB。
- 可以对对象进行版本控制,以防止意外删除对象。
- 可以创建多个存储桶,并在它们里面以不同的类或层级存储数据。
- 可以创建权限,限制查看或访问对象。
- 可以在不同的层之间暂存数据。
这些层支持不同的存储用例,e.g. 需要频繁访问的数据,以及需要保留数年的审计数据。
对象存储,每个对象都由数据、元数据和键组成。
数据可能是图片、视频、文本文档或任何其他类型的文件。元数据包含有关数据是什么、如何使用数据、对象大小等的信息。对象的键是它的唯一标识符。
选择存储类时考虑以下两个因素:
- 计划检索数据的频率
- 需要的数据可用性
不同的存储类:
- S3标准存储,具有11个9的持久性(存储在S3标准存储中的对象可以实现99.999999999%的持久性)。此外,对于这种存储类,如果两个单独的存储设施同时发生数据丢失,AWS仍然可以承受。
因为数据==至少存储在三个设施(可用区)==中,不同的位置保留着多个副本。
S3另外的用途是静态网站托管。
静态网站是一系列HTML文件,每个文件都对应于实际网站的物理页面。只需要将所有HTML静态Web内容上传到一个存储桶中,然后选中一个框,就可以将其作为静态网站来托管。然后只要输入存储桶的URL,网站就会立即显示。
专为频繁访问的数据而设计。 - S3不频繁访问存储(S3-IA)
它适用于不频繁访问但在需要时要求快速访问的数据。e.g. 存储备份、灾难恢复文件。
S3标准-IA,S3单区-IA(存储费用更低)。 - S3智能分层
适合存储访问模式未知或不断变化的数据
每个对象每月会产生少量的监控和自动化费用
在S3 智能分层存储类中,Amazon S3会监控对象的访问模式。如果您连续30天未访问某个对象,Amazon S3会自动将其移动到不频繁访问层,即S3标准-IA。如果您访问不频繁访问层中的对象,Amazon S3会自动将其移动到频繁访问层,即S3标准。 - Amazon S3 Glacier 为数据存档而设计。也可以用来存储审计类数据(保存多年,不需要非常快速地检索)。使用时,可以只把数据移动到其中,也可以创建文件库,然后向其中填充存档文件。
如果需要按照合规性要求将数据保留一段时间,则可以采用S3 Glacier文件库锁定策略来锁定文件库。可以在文件库锁定策略中指定一次写入多次读取(WORM),并锁定该策略以防其以后被编辑。
还可以选择三种检索方式,范围从几分钟到几小时不等。
还可以选择直接上传到Glacier或使用S3生命周期策略。 - S3 Glacier Deep Archive:12小时内完成对象检索。
Amazon S3 生命周期管理:
这是一种可以创建的策略,可以在不同的层之间自动移动数据。
Amazon EBS VS Amazon S3
EBS:
- 大小高达16TiB
- EC2 实例终止后仍然存在
- 默认情况下为固态硬盘,也可以使用传统磁盘
- HDD选项
S3:
- 无限存储
- 单个对象最大大小为5TBs
- 一次写入/多次读取
- 9个9的持久性
S3 支持Web,并且每个对象都会获得一个URL;是区域性分布式存储,无需担心备份策略,S3 本身就是备份策略;与EBS上同样的存储容量相比,S3 可以节省大量的成本;S3 还具有无服务器这种额外的优势,因此不需要使用Amazon EC2 实例。
EBS优点就是当对于大对象进行大量的微小的改变,可以只更新变化的部分。
Amazon Elastic File System(Amazon EFS)
是一个托管文件系统。
应用场景:对于企业来说,跨应用程序共享文件系统非常普遍。e.g. 您可能有多台服务器对共享文件系统中存储的大量数据运行分析,以前数据存储在本地环境中,在本地数据中心中,需要确保所拥有的存储空间可以满足要存储的数据量,确保已进行备份,以及数据以冗余方式存储,还需要管理存储数据的所有服务器。
Amazon EFS: 多个实例可以同时访问 EFS 中的数据。
它可以根据需要扩展或缩减,无需执行任何操作来实现这种扩展。
在文件存储中,多个客户端(例如用户、应用程序、服务器等)可以访问存储在共享文件夹中的数据。在这种方法中,存储服务器使用数据块存储和本地文件系统来组织文件。客户端通过文件路径访问数据。
它将数据存储在多个可用区,副本存储使您能够从文件系统所在区域中的所有可用区同时访问数据。此外,本地服务器可以使用 AWS Direct Connect 访问 Amazon EFS。
EBS V.S. EFS
Amazon EBS | Amazon EFS |
---|---|
Amazon EBS卷可以挂载到 EC2 实例 | 同时允许多个实例执行读写操作 |
可用区级资源 | 区域性资源 |
只能挂载到同一可用区的 EC2 实例 | 区域中任何的 EC2 实例都可以写入 EFS 文件系统 |
保存文件,运行数据库,或者存储运用程序 | |
卷不会自动扩展 | 自动扩展 |
EBS 是一个硬盘。
EFS 不仅仅是一个可以写入的空硬盘,还是一个真正的 Linux 文件系统。
Amazon Relational Database Service (Amazon RDS)
在关系数据库中,数据以与其他数据相关联的方式进行存储。
实际上就是以某种方式存储数据,使之与其他数据关联起来。
AWS 支持的数据库:
- MySQL
- PostgreSQL
- Oracle
- Microsoft SQL Server
执行“直接迁移”,迁移数据库,让它在Amazon EC2 上运行。
这意味着您可以控制在本地环境中可以控制的相同变量,比如操作系统,内存,CPU,存储容量等。
Amazon RDS 还支持自动修补,备份,冗余,故障转移,灾难恢复等。
关系数据库使用**结构化查询语言(SQL)**来存储和查询数据。
Amazon Relational Database Service 是一项服务,让您能够在 AWS 云中运行关系数据库。
Amazon RDS 可用于六种数据库引擎:
- Amazon Aurora
- PostgreSQL
- MySQL
- MariaDB
- Oracle Database
- Microsoft SQL Server
Amazon Aurora
是一种企业级关系数据库。它与 MySQL 和 PostgreSQL 关系数据库兼容。
通过减少不必要的输入/输出操作,帮助降低数据库成本,同时确保数据库资源保持可靠和可用。
当工作负载需要高可用性,可以考虑使用。它在三个可用区中复制六个数据副本,并持续将您的数据备份到 Amazon S3。
Amazon Aurora 特点:
- MySQL
- PostgreSQL
- 是商业数据库成本的十分之一
- 跨设施复制数据
- 只读副本最多可达15个
- 持续备份到 Amazon S3
- 时间点恢复,来恢复特定时间段内的数据
Amazon DynamoDB
非关系数据库
也称为“NoSQL”数据库,因为它们使用行和列以外的结构来组织数据。
非关系数据库的一种结构方法是键值对。使用键值对,数据将会组织成项目(键),而项目具有属性(值)。有点像JSON数据结构的亚子
简单,灵活。
Amazon DynamoDB 是一项键值数据库服务。它可以在任意规模实现不超过10毫秒的延迟。
特点:
- 无服务器,完全托管
- 自动扩展
- 非关系NoSQL数据库
- 专门构建,适合特定的使用案例,而不是适合所有工作负载
- 毫秒级响应时间
Amazon RDS v.s. Amazon DynamoDB
Amazon RDS | Amazon DynamoDB |
---|---|
自动高可用性,提供恢复能力 | 键/值 |
客户(user)拥有数据 | 巨大吞吐量 |
客户拥有架构 | PB级扩展潜能 |
客户控制网络 | 精细的API访问权限 |
当业务不需要使用关系数据库的复杂功能时,可以考虑是不是使用非关系数据库更好。
Amazon Redshift
是一项数据仓库服务,可用于进行大数据分析。
它让用户能够从多个来源收集数据,并帮助用户了解数据中的关系和趋势。
比如,当用户需要分析过去的数据,需要收集处理大量不可控的数据时,就可以选用Amazon Redshift。适用于历史分析。
AWS Database Migration Service (AWS DMS)
让用户能够迁移关系数据库、非关系数据库和其他类型的数据存储。
借助AWS DMS,用户可以在源数据库和目标数据库之间移动数据(它们可以是不同的类型),在迁移过程中,源数据库可以保持运行,从而减少依赖该数据库的任何应用程序的停机时间。
使用案例:
- 开发和测试数据库迁移:使开发人员能够根据生产数据测试应用程序而不会影响生产用户。
- 数据库整合
- 数据库连续复制
其他数据库服务
Amazon DocumentDB: 是一项支持MongoDB工作负载的文档数据库服务。
Amazon Neptune: 是一项图形数据库服务。可以用来构建和运行需要处理高度互联的数据集的应用程序,例如推荐引擎、欺诈检测和知识图谱等。
Amazon Quantum Ledger Database(Amazon QLDB): 是一种分类账数据库服务。可以用来查看对应用程序数据所做的所有更改的完整历史记录。
Amazon Managed Blockchain: 可以让用户通过开源框架构建和管理区块链网络。区块链是一个分布式分类账系统,能够让多方在没有中央授权的情况下运行交易和共享数据。
Amazon ElastiCache: 可以在数据库上层添加缓存层,从而帮助缩短常见请求的读取时间。它支持两种类型的数据存储:Redis, Memcached。
Amazon DynamoDB Accelerator: 是一种适用于DynamoDB的内存中的缓存。它可以将响应时间从几毫秒缩短到几微秒。