数据库简介

欢迎来到新章节的学习!本章节主要介绍AWS里面的数据库服务,其中包括了AWS的关系数据库RDS(Relational Database Service)、非关系数据库DynamoDB、数据仓库和数据缓存的概念。

在我们深入了解AWS的数据库服务之前,首先让我们先来了解一下一些关于数据库的基本概念吧!

关系型数据库(SQL)

关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法处理数据库中的数据。

用地球的语言来讲,关系是一个由行和列组成的表格,一个关系数据库可以包含多个这样的表格。

也可以简单理解为关系数据库就是一个由多个工作表组成的Excel表格。

我们可以用来定义一些预设参数,比如姓名,性别,地址,年龄等信息;并且每一来代表不同的实体,比如张三的信息,李四的信息。行和列就构成了数据的集合。

Amazon Relational Database Service (RDS) 可以为我们提供在AWS云上轻松设置、操作和扩展我们的关系数据库。AWS会为RDS提供高性能、高可用、安全和兼容性,我们只需要专注于管理数据库本身就可以了。

管理和使用AWS RDS,我们不需要管理任何操作系统层面的东西,不需要为OS打补丁和更新,而是直接管理RDS程序和版本。

Amazon RDS支持的关系数据库有:

  • SQL Server
  • Oracle
  • MySQL Server
  • PostgreSQL
  • Aurora
  • MariaDB

非关系数据库(NoSQL)

非关系数据库又叫做NoSQL,全称是Not Only SQL

NoSQL主要用于超大规模数据的存储(比如Facebook或Google每天所收集的万亿比特的数据),这些数据没有固定的模式,不需要预设置好数据库的所有参数。

举个例子,如果社交平台去收集用户的人物画像信息,这些信息可能会包括一些自然属性:例如性别,年龄,姓名;财富:收入水平,是否有固定资产,有哪些固定资产;家庭情况:是否结婚,有几个小孩和家庭成员;购物习惯:喜欢网购还是实体店购物,喜欢到哪个电商平台购物,购物的金额和频率是什么;位置信息:在哪个城市生活,常去的地理位置……

这些千奇百怪的数据,如果保存在关系数据库(RDBMS)中,我们会没有办法很好地预定义所有的属性(列),然后添加我们的记录;也没有办法在后期添加额外的属性。

很多情况下,每一个目标的属性都不一样,有一些属性A有,但B没有;又一些属性B有,但C没有。

在这种情况下,NoSQL更适合存储这些海量的、无规则的信息。NoSQL也适用于现在物联网(IoT)产生的数据。

目前,AWS所提供的NoSQL服务叫做DynamoDB

NoSQL的基本概念:

  • 数据库(Database)
    • 集合(Collection)- 相当于关系数据库中的表
    • 文档(Document)- 相当于关系数据库中的行
    • 键值(Key Value Pairs) = 相当于关系数据库中的列

NoSQL的键值会存放在类似JSON的对象中。

OLTP/OLAP

数据处理大致可以分为两类,分别是OLTP和OLAP。

联机事务处理OLTP(Online Transaction Processing)

OLTP是传统的关系数据库的主要应用,是基本的日常事务处理,例如银行交易等。

OLTP包括了以上所说的关系数据库SQL Server,Oracle,MySQL Server,PostgreSQL,Aurora,MariaDB等。

联机分析处理OLAP(Online Analytics Processing)

OLAP是数据仓库(Data Warehousing)系统的主要应用,支持复杂的分析操作,侧重决策支持,并且能提供直观易懂的查询结果。OLAP是用来做商业智能(Business Intelligence)方面的分析的。

OLAP常用的流行工具是AWS Redshift, Greenplum, Hive等

说了这么多可能大家的理解都还是比较模糊,下面来举一个通俗一点的例子。

如果一个电商在网上卖产品,那么关于产品的信息,用户的信息,交易的信息都可以存放在OLTP类型的关系数据库上。如果用户需要查询产品有关的信息,或者运营者需要查询产品的销量,产品的库存等都可以直接通过读取数据库获取到信息。

但是当电商发展到一定的规模,运营者/管理层需要做更加精细的用户群体分析,比如“20-30岁的男性在过去一年内的购买行为与电商促销活动之间的关系”,那么就要用到数据仓库了。

数据仓库有更好地读取速度和更加便利的分析和查询方式。

Elasticache

Elasticache是AWS提供的分布式对象缓存系统,可以有效地提升现有应用程序的性能。利用Elasticache,用户可以从高吞吐和低延迟的内存数据存储中检索数据,

Elasticache通过在内存中缓存数据来减少对象读取数据库的次数,减轻了数据库的负载,以及提高了网站的访问速度(内存的访问速度比磁盘的访问速度高很多)。一般来说我们会把相对来说更新频繁的“热数据”放在Elasticache中,把“冷数据”还是放在数据库中,以支持及时的更新。

目前Elasticache支持两种业界流行的引擎,分别是:

  • Memcached
  • Redis

创建一个MySQL RDS实例并连接

RDS的备份,Multi-AZ高可用和Read Replicas

RDS备份

AWS RDS提供了两种不同的备份方式,分别是自动备份(Automated Backups)快照(Snapshots)

自动备份(Automated Backups)

  • 你可以在创建数据库的时候定义自动备份的保留时间(Retention Period),这个时间的设置范围是1天~35天
  • 你也可以在创建数据库之后更改这个保留时间(Retention Period)
  • 如果需要,你可以将数据库恢复到保留时间内的任何时间点
  • 在你删除数据库的时候,所有的自动备份都会被删除
  • RDS的自动备份会保存在Simple Storage Service (S3)上
  • 我们可以定义自动备份的时段,在这个备份时段内数据库将会自动进行备份
  • 在自动备份的过程中,数据库存储的I/O可能会暂停(通常不到几秒),数据库性能会降低,但部署了Multi-AZ的数据库不受影响

快照(Snapshots)

  • RDS的快照需要手动进行
  • 在你删除数据库的时候,快照不会被删除,不像自动备份那样
  • 在创建快照的过程中,数据库存储的I/O可能会暂停(通常不到几秒),数据库性能会降低,但部署了Multi-AZ的数据库不受影响

数据库加密

现在AWS RDS的所有关系数据库都支持加密。一旦启用了加密的功能,所有数据的存储都将会被加密,包括数据库本身、自动备份、快照和只读副本(read replicas)。

  • 如果在创建数据库的时候没有加密,我们不能在事后对其进行加密
  • 但我们可以创建这个数据库的快照,复制该快照并且加密这个复制的版本

Multi-AZ高可用

我们可以把AWS RDS数据库部署在多个可用区(AZ)内,以提供高可用性和故障转移支持。

使用Multi-AZ部署模式,RDS会在不同的可用区内配置和维护一个主数据库和一个备用数据库,主数据库的数据会自动复制到备用数据库中。

使用这种部署模式,可以为我们提供数据冗余,减少在系统备份期间的I/O冻结(上面有提到)。同时,更重要的是可以防止数据库实例的故障和单个可用区的故障。

如下图所示,我们可以在两个可用区内分别部署主数据库和备用数据库。

目前Multi-AZ支持以下数据库:

  • Oracle
  • PostgreSQL
  • MySQL
  • MariaDB
  • SQL Server

值得注意的是,Aurora数据库本身就支持多可用区部署的高可用设置,因此不需要为Aurora数据库特别开启这个功能。

在上次实验中我们有讲到,创建了RDS数据库之后我们会得到一个数据库的URL Endpoint。在开启Multi-AZ的情况下,这个URL Endpoints会根据主/备数据库的健康状态自动解析到IP地址。对于应用程序来说,我们只需要连接这个URL地址即可。

高可用的设置只是用来解决灾备的问题,并不能解决读取性能的问题;要提升数据库读取性能,我们需要用到Read Replicas。

只读副本(Read Replicas)

我们可以在源数据库实例的基础上,复制一种新类型的数据库实例,称之为只读副本(Read Replicas)。我们对源数据库的任何更新,都会异步更新到只读副本中。

因此,我们可以将应用程序的数据库读取功能转移到Read Replicas上,来减轻源数据库的负载。

对于有大量读取需求的数据库,我们可以使用这种方式来进行灵活的数据库扩展,同时突破单个数据库实例的性能限制。

Read Replicas还有如下的特点:

  • Read Replicas是用来提高读取性能的,不是用来做灾备的
  • 要创建Read Replicas需要源RDS实例开启了自动备份的功能
  • 可以为数据库创建最多5个Read Replicas
  • 可以为Read Replicas创建Read Replicas(如下图所示)
  • 每一个Read Replicas都有自己的URL Endpoint
  • 可以为一个启用了Multi-AZ的数据库创建Read Replicas
  • Read Replicas可以提升成为独立的数据库
  • 可以创建位于另一个区域(Region)的Read Replicas

目前Read Replicas支持以下数据库:

  • Aurora
  • PostgreSQL
  • MySQL
  • MariaDB
  • Oracle

https://amazonaws-china.com/cn/rds/details/read-replicas/

创建Oracle RDS单机实例

AWS不支持部署Oracle RAC,通过第三方的共享存储机制来支持Oracle RAC。

扩展阅读

AWS RDS服务高可用性

云区域(region),可用区(AZ),跨区域数据复制(Cross-region replication)与灾备(Disaster Recovery)(部分1)

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据