AWS 数据库(七)

数据库概念

关系型数据库

  • 关系数据库提供了一个通用接口,使用户可使用使用 编写的命令或查询从数据库读取和写入数据。
  • 关系数据库由一个或多个表格组成,表格由与电子表格类似的列和行组成。
    • 以行列形式存储数据,行包含一个条目的全部信息,列是分离不一样数据点的属性
    • 架构固定,输入数据前要先锁定列
    • 查询方式是SQL语句
    • 支持垂直扩展属性
    • 每一张表都有主键, 经过引用记录的主键,表中的一条记录能够与另外一个表中的记录相关。这个指针或引用被称为外键。
  • 关系数据库能够分为联机事务处理OLTP 和 联机分析处理OLAP,具体取决于表的组织方式以及应用程序如何使用关系数据库。
    • OLTP - 常常编写和更改数据(例如数据输入和 电子商务)的面向事务的应用程序,OLTP事务频繁发生但相对简单
    • OLAP - 应用于数据仓库的领域,指的是报告或分析大型数据集。OLAP事务 的发生频率要低得多,但要复杂得多
    • 大型应用程序常常混合使用OLTP和OLAP数据库。一个数据库做为其OLTP事务的主生产 数据库,另外一个数据库做为他们的数据仓库为OLAP。
  • 数据库包括: MySQL,PostgreSQL,Microsoft SQL Server和Oracle
  • SQL 数据库的默认端口
    • Oracle: 1521
    • MS SQL : 1433
    • MySQL : 3306
    • DB2: 5000前端

      数据仓库

  • 数据仓库为能够来自一个或多个源的数据的中央储存库。
  • 此数据存储库一般是专用类型的关系数据库,可用于经过OLAP进行报告和分析,组织一般使用数据仓库来编译报告并使用高度复杂 的查询搜索数据库。

NoSQL数据库

  • 相比关系型数据库,NoSQL更加简单易用,更加灵活,
  • 传统数据库在单台服务器外扩展成本极高,而NoSQL能够在商用硬件上实现水平伸缩性
  • 使用众多模型(如键值对、文档和图表)中的一种来存储数据
  • 数据结构
    • 集合 Collection : 至关于表
    • 文档 Document: 至关于行
    • 键值 Key Value Pairs: 至关于列
  • 动态的架构,行无需包含与每一个列对应的数据
  • 查询更关注文档集合
  • 支持水平扩展属性
  • NoSQL的其余特性
    • 对于某些应用程序能够替代关系型数据库
    • 支持以高可用性处理大量数据
    • 能够造成一个包含不一样实施方案和数据模型的大类别
    • 具有分布式容错的能力
    • NoSQL 能够提升灵活性、可用性、扩展性和高性能
  • 主要的NoSQL数据库包括
    • EC2: Cassandra、Hbase、Redis、MongoDB、Couchbase、Riak
    • AWS托管:DynamoDB、ElastiCache(Redis)、Elastic Map Reduce(HBase)
  • NoSQL 数据库经常使用端口
    • MongoDB:27017
    • Redis:6379
    • Memcached:11211
  • 采用NoSQL主要考虑几个限制
    • 应用程序的事务支持
    • ACID合规(ACID=原子性、一致性、隔离性和持久性)
    • 联接需求
    • SQL需求
  • 常见场景:
    • 排行榜、快速导入点击流或日志数据、购物车临时数据需求、热表、元数据或查找表、会话数据

数据库选择

  • 将非关系型数据放在NoSQL中(如DynamoDB)
  • 将技术与工做负载匹配,从各类关系型数据库, NoSQL数据库,数据仓库和其余针对搜索优化的数据存储中选择。
  • 数据库选择要考虑的事项:
    • 读取和写入要求
    • 总存储容量
    • 典型对象大小及其访问特性
    • 持久性需求
    • 延迟要求
    • 同时支持的最大用户量
    • 查询特性
    • 所需完整性控制强度

Amazon RDS存储关系型数据

RDS综述

  • RDS是一个全托管的数据库

  • 开发人员能够专一于查询结构和查询优化
  • 减轻运维负担包括数据库迁移、备份和恢复、修补、软件升级、存储升级、频繁服务器升级、硬件故障处理
  • RDS能够经过公用的客户端软件链接并执行SQL操做,包括使用相同的工具来查询,分析,修改和管理数据库。例如,当前的提取,转换, 加载(ETL)工具和报告工具

RDS 数据库实例

  • 数据库实例是云上专用网段中部署的隔离的数据库环境
  • 每一个实例运行了一个商业或者开源的数据库引擎,包括MySQL,PostgreSQL,MS SQL,Oracle,MariaDB以及AWS Aurora 六种。
  • 能够经过API建立和管理RDS实例
  • 能够利用AWS工具或者数据库引擎自己的工具将数据从本地迁移到AWS上
  • 每一个用户默认最多托管40个RDS数据库
  • 每一个实例上只能运行1个Oracle和30个MS SQL数据库,其他没有限制
  • RDS支持预留实例,且只支持区域预留,可用于多可用区部署和只读副本
  • 使用Parameter Group 对数据库参数进行设置

存储选项

  • RDS构建在EBS上
  • 经过预配置支持最大16TB (MSSQL) - 32TB,32000 IOPS - 40000 IOPS
  • 支持HDD,通用SSD和预配置IOPS SSD 三种类型

备份与恢复

  • 自动备份
    • 备份存储在S3中
    • RDS备份整个数据库实例,为它建立存储卷快照
    • 自动备份建期间IO会挂起3-5秒钟,但对高可用部署的数据库不受影响
    • 自动备份默认开启且保留1天(API或CLI建立)或者7天(控制台建立),最大可保留35天,自动删除
    • 自动备份支持时间点恢复功能,最小间隔为5分钟
    • 删除实例时全部自动备份都会被删除
    • 能够禁用自动备份,可是很是不建议。 禁用自动备份后,即便再从新启用,被禁用的期间将不可恢复。
  • 手动数据库快照
    • 快照存储在S3中
    • 随时手工对数据库进行快照
    • 默认永久保留除非手工明确删除
    • 使用多可用区部署能够最小化快照的影响,由于快照能够从备用数据库发起,只是RPO会有必定影响
  • 恢复
    • 全部RDS数据库恢复都会建立一个全新的数据库实例
    • 还原时只会关联默认的数据库参数和安全组参数被关联,须要从新手工设置
    • 不支持将VPC内的数据恢复到VPC外部

多可用区的高可用

  • 高可用是传统关系型数据库部署的难点
  • 利用RDS能够轻松实现,实现最短几分钟的RPO和RTO要求
  • 开启多可用区部署后,自动在不一样可用区建立备用RDS实例,并利用数据库实例URL endpoint来实现DNS寻址
  • RDS 数据会同步复制到从数据库,复制自己产生的数据传输不收费
  • 支持故障自动切换和手动转移,转移时间为1-2分钟
  • 跨可用区部署后因为数据同步复制,会有必定的性能影响,备份是也会有更长的延迟
  • 从数据库不能用做只读副本提高IO

规模扩大或缩小

  • RDS支持垂直扩展
  • 数据库实例的资源大小能够随需求决定,支持1-32 vCPU,1-244GB Memory,用户能够更改实例大小,RDS会自动完成数据迁移
  • RDS采用数据库参数和数据库选项对数据库实例进行配置,每次更改都须要重启实例
  • SQL Server不支持存储扩展
  • 能够经过数据库分片技术实现有限度的水平扩展
  • RDS 支持实时配置更多的存储而无需停机
  • RDS IOPS(除SQL Server)还能够扩展数据库实例的吞吐量,1000 到 30000 IOPS分别对应100GB 到 6TB的存储空间
  • 能够在RDS前端的EC2选择放置Redis 缓存服务,EC2 首选自我管理型缓存解决方案

只读副本扩展

  • RDS容许从主数据库建立一个或多个只读副原本分流读取事务
    • 读取繁重的任务
    • 当主数据库不可用时处理读取操做
    • 离线数据分析场景
  • MySQL、PostgreSQL、MariaDB和Aurora支持只读副本
  • 要使用只读副本,须要先开启自动备份功能
  • 只读副本是异步的
  • 能够为只读副本建立只读副本,每一个数据库最多建立5个只读副本,Aurora最多15个
  • 能够在多可用区部署只读副本,每一个只读副本都有本身的URL Endpoint
  • 只读副本能够被提高为独立的数据库,可是不能用来作灾备

RDS安全性

  • IAM权限管理
    • 采用IAM用户来对数据库进行操做
    • AMI能够控制每个单独的用户对RDS操做的权限
    • RDS初次建立时会基于AWS开发人员帐户建立一个有主用帐户并成为数据库根管理员权限,他能够单独分配给不一样数据库实例的主用户名和密码
    • 可使用主用户凭证链接数据库
    • 接收RDS重要事件通知
  • 网络隔离
    • RDS实例须要建立在VPC的私有子网中
    • 可使用IPSec ×××网关将RDS链接到现有的企业内部的IT基础架构中
    • 在多可用区部署时,能够建立全局子网组,这样在建立RDS时只须要制定可用区便可从全局子网组中分配响应的子网和IP地址
    • 全部从VPC外部的EC2或者Internet对RDS的访问,都必须通过×××或堡垒机实现,而且堡垒机须要充当SSH Bastion的角色
  • 自动补丁
    • RDS软件始终与最新的补丁保持同步
    • 默认首周须要30分钟进行维护
    • 建议每一周须要计划30分钟的维护时间以完成补丁操做
    • 通常仅有规模计算相关的补丁须要脱机执行,一般每几个月发生一次
  • RDS加强型监控
    • 加强型监控可以捕获 RDS 实例的系统级指标,如 CPU、内存、文件系统和磁盘 I/O 等
    • 最多能够查看全部指标在 1 个小时以前的性能值,粒度最高为 1 秒
    • RDS 加强型监控提供了一系列将以 JSON 有效负载形式发送到您的 CloudWatch Logs 帐户的指标。JSON 有效负载会按照上次为 RDS 实例配置的粒度进行发送。
    • 加强型监控在 CloudWatch Logs 中配置的默认保留期是 30 天。
  • RDS采用四层安全模型
    • RDS安全组
      • 用于控制传入和传出数据库实例的流量,默认状况下不能进行网络访问,但能够经过ACL设置容许特定IP端口进行访问。
    • 数据库安全组
      • 控制对VPC外部数据库实例的访问
      • 默认状况下RDS必须在VPC内才能启动,可是仍然存在VPC外部托管RDS的状况
      • 数据库安全组仅适用于入站流量,目前不容许数据库安全组有出站流量。
      • 可使用RDS API 或 AWS 控制台的 RDS部分建立数据库安全组
      • 安全组来控制对RDS的数据库实例访问, 相似于EC2安全组,但不能够互换
      • 默认拒绝全部访问,全部容许权限都须要显式声明
      • 能够受权IP或安全组访问
      • 仅容许访问数据库服务器端口
      • 数据库安全组无需指定目标端口,默认由实例自动定义
      • 能够在不重启数据库实例的状况下对安全组策略进行更新


+ VPC安全组 - 控制对VPC内数据实例的访问
+ 容许一个特定的来源(组)访问VPC中与该VPC安全组关联的数据库实例, 能够是地址范围也能够是VPC安全组
+ 必须使用EC2 API或VPC控制台的Security Group选项才能建立VPC安全组算法


+ EC2安全组
+ 控制对EC2实例的访问
+ RDS 数据加密
+ RDS加密适用于全部数据库,除了 MS SQL Express版
+ RDS 加密仅适用于部分实例类型
+ 能够对静态RDS数据库实例和快照进行加密,然后自动备份、只读副本和快照均经过AES-256加密
+ 使用SSL\TLS对应用程序和数据库实例之间链接进行加密
+ 加密仅能在建立数据库时指定,不能过后对其加密,可是能够经过恢复数据库快照时加密这个复制版本
+ 加密RDS链接
+ 预置RDS实例时,会建立SSL证书并在数据库实例上安装该证书
+ 负责加密传输中的数据
+ 使用SSL/TLS加密应用程序与数据库实例之间的链接,但不该依赖于数据库自己的身份验证
+ 将数据库实例配置为仅接受加密链接
+ 加密RDS资源
+ 启用RDS数据库实例加密选项,能够加密静态RDS实例和快照,自动备份和只读副本
+ 利用KMS管理RDS资源的密钥
+ 采用AES-256加密算法进行加密,RDS以透明方式进行访问验证和解密以下降性能影响
+ RDS将特定于Oracle 或 MySQL这些数据库包加密数据,称为透明数据加密(TDE),TDE使用在数据库应用程序中建立的密匙保护数据。sql

AWS Redshift

概念

  • 彻底托管的PB级数据仓库服务
  • 基于SQL-based 设计的关系型数据库
  • 基于行业标准的PostgreSQL,所以大多数现有的SQL客户端应用程序只能进行极少的更改。
  • 针对OLAP设计的高性能数据分析和报告
  • Redshift使您可使用标准SQL命令快速查询结构化数据的功能,以支持在大型数据集上进 行交互式查询。
  • 使用柱状存储,数据压缩和区域映射等技术减小查询所需的IO量。
  • 经过ODBC或JDBC链接与各类数据加载,报告,数据挖掘和分 析工具集成。
  • Redshift负责管理设置,操做和扩展数据仓库所需的工做,从设置基础架构容量到自动执 行备份和修补等持续管理任务。
  • Redshift会自动监控您的节点和驱动器,以帮助从故障中恢复。

集群

  • 集群由一个领导者节点和多个计算节点组成
  • 支持从160GB - 1PB甚至更大的
  • 最多支持128个计算节点
  • Redshift集群不能使用竞价实例
  • 仅能在一个可用区部署
  • 客户端只与领导者节点交互,计算节点对外部是彻底透明的
  • Redshift目前支持6种节点类型,分为两大类
    • 密集计算型 - 最大支持SSD 326TB
    • 密集存储型 - 最大支持HDD 2PB
  • 每一个集群都包含一个或多个数据库,而且分布在各个计算节点中,每一个节点的数据库数据都是同步的
  • 计算节点的磁盘存储会分片,切片一般在2-16之间,全部节点都会参与并行查询。
  • 一般计算节点越多,查询性能越强
  • 能够随时调整节点大小和类型,调整后都会建立一个新的集群并将数据迁移过去,调整期间数据库只读。

表设计

  • 每一个Redshift表均可以指定表名称、列及其数据类型等。
  • 数据类型:
    • 常见数据类型包括: INTEGER,DECIMAL和 DOUBLE,文本数据类型(如CHAR和VARCHAR)以及日期数据类型(如DATE和TIMESTAMP)
  • 压缩编码
    • 首次将数据加载入新表时,自动对数据进行采样而且为每列选择最佳压缩方案
  • 分发策略
    • 建立表格时指定如何在集群的节点进行切片进行分发,以及使用哪一种查询模式
    • 分发风格对查询性能,存储要求,数据加载和维护影响很大
      • EVEN 分发: 默认,对数据以统一方式进行切片和分发
      • Key 分发:基于某一列的值进行分发,匹配的值会存储在一块儿
      • All 分发: 将整个表完整的分发到每一个节点
  • 排序Key
    • 在建立表时指定一个或多个列做为排序key,这样在处理必定范围的查询时能够跳过大量的块
    • 表格的排序Key能够复合和交错,查询使用前缀可让复合排序的查询更加高效

数据加载

  • 使用标准的SQL Intert/update进行表的建立和修改记录
  • 在Redshift中使用COPY命令是一个更高效的方式,如从S3或者DynamoDB中进行批量数据加载
  • 大量数据加载完成后,建议使用VACUUM命令从新组织数据并用ANALYZE来统计更新表格统计信息
  • UPLOUD命令能够从Redshift中导出数据

查询数据

  • 也是用标准的SQL Select命令进行查询
  • 对于多用户的大型Redshift,可使用WLM工做负载管理对查询进行排队,WLM能够对每一个队列设置并发级别。
  • 使用Redshift Spectrum
    • 能够对 Amazon S3 中 EB 级非结构化数据运行查询,而无需进行加载或 ETL 操做。
    • 当您发布查询时,查询会进入 Amazon Redshift SQL 终端节点,该终端节点会生成查询方案并对其进行优化。
    • Amazon Redshift 会肯定哪些数据存储在本地以及哪些数据存储在 Amazon S3 中,而后生成一种方案来尽量减小须要读取的 + Amazon S3 数据量,从共享资源池中请求 Redshift Spectrum 工做线程来读取和处理 Amazon S3 中的数据。
    • Redshift Spectrum 可根据须要扩展到数千个实例

备份快照

  • 自动快照到期后会自动删除,设置时间为1-35天
  • 支持跨区域快照,手工快照可跨区域甚至跨帐户存储,须要手工明确删除
  • Redshift快照和备份数据存储在S3中
  • 免费的快照存储空间与当前节点容量至关,因此须要及时清除不须要的快照文件

安全

  • 安全级别
    • 基础架构级别安全,使用IAM来限制用户的可执行操做及生命周期
    • 网络级别安全, 将Redshift部署到私有的VPC中(必须),并利用ACL和安全组限制细粒度网络访问
    • 数据库级别安全,能够经过Redshift的主用户名和密码建立更多的用户并给他们相应受权
  • 数据加密存储
    • 数据加密是可选项,利用硬件随机生成的AES256密钥对每一个数据块进行加密,但加密影响性能
    • 多种静态加密技术,符合HIPAA和PCI DSS合规要求
      • KMS
      • HSM
  • Redshift Enhanced VPC Routing
    • 强制将全部的COPY和UNLOAD流量指定走AWS VPC 内部
    • 若不开启,则全部流量默认走Internet,包括从AWS内部读取
  • 数据加密传输
    • 采用硬件加速的SSL链接与S3或者DynamoDB进行通讯
    • 能够在客户端上安装SSL证书pem公钥文件实现对Redshift 服务器的链接和管理
    • 支持椭圆曲线HCDHE协议提供更强大的密码套件确保SSL的私密性
    • 同时也能够启用Perfect Forward Secrecy使用短暂会话密钥防止密钥泄露
  • 记录全部的SQL操做信息用于监控和审计,包括链接尝试、查询和对数据库的更改等操做
  • 在维护窗口中进行自动补丁更新

例外

  • 不适用于大规模对少数对象的读写操做,这种场景须要考虑Aurora 或者RDS

DynamoDB

主要特性

  • 是NoSQL的的托管版本
    • 低延迟 - 基于SSD,延迟小于10ms
    • 大规模无缝可扩展 - 无表大小和吞吐限制、可针对存储和吞吐量进行实时从新分区
    • 性能可预测 - 预配置吞吐量模型
    • 持久性和可用性 - 自动执行区域内三向复制,确保一致性、仅限磁盘写入
    • 安全性- 成熟的加密方案对用户身份进行验证
    • 零管理- 彻底托管的NoSQL服务
  • 同时链接和访问多个NoSQL存储(如RDS、S三、MongoDB、Hbase等),对组合数据集进行复杂分析
  • 经过在多个分区上自动分配表的数据和流量提供一致的性能级别,其性能是以读写容量的吞吐量级衡量的
  • 根据实际需求能够随时调整读取和写入容量,DynamoDB会自动添加或删除基础架构或调整内部分区,默认最大支持20000个读取和20000个写入容量
  • DynamoDB 按照存储数据大小和读写能力进行收费
  • 应用场景
    • 支持与Amazon EMR集成
    • 支持即插即用的Hadoop分析
    • 支持储存会话数据

数据模型

  • 没有架构,一个表有多个项目,项目具备可变属性
  • 数据类型
    • 对每个主键及其属性都必须指定一个数据类型
      • Scalar数据类型 - 表示某一个值的类型, 包括字符串、数值、二进制、布尔值、空
      • Set数据类型 - 表示某一个list的类型,包括 字符串set,数值set和二进制set
      • Document 数据类型- 表示多个嵌套的属性,相似于JSON文件结构,包括List和Map两种文档类型
      • List - 用于储存不一样数据类型的属性的有序列表
      • Map - 每一个可用于Key/Value的无序列表,能够用来表示任何JSON对象结构
  • 主键
    • 主键是每一个项目的惟一标识也是惟一强制属性,DB经过它来进行GET/PUT
    • 每一个主键属性必须是字符串、数字或二进制。
    • 两种类型的主键
      • 分区键 - 一个属性一个分区哈希值组成,用于构建无序散列索引
      • 分区+排序键 - 两个属性组成,由分区和排序组合起来做为惟一标识
  • DynamoDB 调用包头类型
    • host
    • x-amz-date
    • x-amz-target
    • content-type
  • 预置容量
    • DynamoDB须要调配必定数量的读写容量来处理预期工做负载
    • 选择适宜的容量已持续的提供低延迟的响应时间,能够经过Updatetable指令缩放。
    • 读操做每4K为一个单位容量,写操做每1K为一个单位容量。
      • 最终一致性 - 1个单位容量能够读写两次
      • 强一致性 - 1个单位容量能够读写一次
      • 事务一致性 - 2个单位容量才能读写一次
    • 能够CloudWatch 监控DynamoDB容量并制定扩展决策。
  • 二级索引
    • 只有使用分区+排序主键时,能够定义一个或多个二级索引
    • 支持全局二级索引和本地二级索引等灵活方法来查询非主键值
      • 全局二级索引索引整个分区+排序键的值
      • 本地二级索引索引相同分区键但不一样排序键的值
    • 主键分为单属性分区或复合属性分区
      • 单分区以UserID为惟一标识
      • 复合分区以UserID(分区键)和TimeStamp(排序键)进行组合标识一对一关联关系,支持交叉检索功能
    • 当数据集大小和预配置容量增长时会发生自动分区
    • 只支持一个本地二级索引,但能够建立多个全局二级索引
    • 项目大小不能超过400KB,必须包含属性名称和属性值长度两个二进制长度

DynamoDB属性

  • 一致性
    • AWS同一区域内的多个可用区之间自动复制每一个DynamoDB表
    • 读取一致性:经过控制成功写入或更新的读取操做的方式和时间,指定最终一致性或强一致性读取,默认是最终一致性读取
    • 最终一次性读取: 数据副本的一致性可以须要1秒实现,仅验证数据一致而不会验证写入完成,因此可能读取的是旧数据
    • 强一致性读取:读取时验证写入成功完成,而且确保数据读取的一致性,在网络延迟或者中断的状况下可能不可用。
  • 批量操做
    • 能够经过单个操做执行最多25个项目的建立或更新
  • 项目搜索
    • 查询 - 用于仅限主键属性的查找和索引操做,用排序键值能够优化搜索结果,结果会按主键排序,
    • 扫描- 会返回每一个项目的全部属性,返回限制1MB
    • 每一个查询或扫描结果返回最多1MB,若超过则须要对增量结果进行翻页
  • 缩放和分区
    • DynamoDB能够无限数量的扩展而且提供一致的低延迟性能
    • 经过分区来进行水平扩展
    • 好的程序设计须要考虑表的分区结构,以平均分配读写事务,实现低延迟处理
    • 随着表中项目的增长,能够不断拆分现有分区来添加额外分区
    • 预置吞吐量将在个分区之间平均分配,且不可跨区共享
    • 一个分区可容纳10GB数据和最多3000个读取容量以及1000个写入容量,对于未充分利用的容量分区,能够用于处理突发流量
  • AWS DynamoDB Stream
    • 获取DynamoDB最近24小时内的项目修改列表用于分析和审计。
    • 经过Stream中读取的活动修改日志,能够在不修改原始应用程序的状况下扩展和构建新的功能。
  • 自动备份
    • 须要经过AWS Data Pipeline的专用配置模板,将DynamoDB完整或增量备份到同一地区或不一样地区进行备份
  • DAX
    • DynamoDB 数据库性能加速
  • DynamoDB 自动扩展
    • DynamoDB在建立时,能够指定读取和写入流量以及每一个大小的平均大小来配置所需的请求容量
    • 能够经过第三方工具(如 CloudFormation模板)启用 Dynamic DynamoDB 配置自动扩展和缩减表格
    • 支持将扩展活动限制在必定时间段,使用上下限预置单独扩展读取和写入吞吐量
    • 支持断路器,确保每次扩展和缩减活动以前检查应用程序是否正常以免当应用程序发生问题而触发的虚假缩减活动

安全

  • DynamoDB 须要与IAM服务集成,用策略最大限度控制权限。
  • 全部操做都必须经过身份验证,建议使用EC2实例配置文件或角色来管理密钥
  • 在数据库级别能够建立权限,以细粒度的容许或拒绝对项目和属性的访问
  • 对DynamoDB的服务请求都必须包含HMAC-SHA-256的签名
  • 移动端的最佳作法是使用Web身份联合与AWS安全令牌服务提供临时密钥
  • DynamoDB自己不提供服务器端加密存储数据,须要存储前使用客户端或KMS加密

DynamoDB最佳实践

  • 保持较小的项目大小
  • 将元数据存储在DynamoDB中,将大型BLOB存储在S3中
  • 按日、周、月进行Hash计算使用表来存储实践序列数据用于强制分区
  • 使用有条件更新或者开放式并发控制更新(OCC)
  • OCC是假定多个事务能够频繁完成且相互不会干扰
  • 获取资源时无需提早锁定,提交时须要确认没有冲突的修改,如有则回滚
  • 仅适用于低争用环境,从而提升吞吐量,不然反而会大大下降性能
  • 避免热键和热分区
  • 更加适合于无状态的服务设计
  • 支持JSON对象的存储

Amazon Aurora

概述

  • 是一种面向服务的架构交付的关系型数据库,是mySQL的托管版本,还兼容PostgreSQL
  • 速度是MySQL的5倍,成本是其余商用数据库的1/10
  • 容量支持10GB - 64TB;每10GB一增量,仅为使用的容量付费。
  • 支持Schema Changes
  • 利用S3实现可扩展和高可用性,默认支持6个副本,
    • 复制到3个可用区,每一个可用区2个副本
    • 2个如下副本丢失,不影响写入
    • 3个如下副本丢失,不影响读取
  • 与MySQL 5.6简易兼容 - 现有程序可正常运行,可轻松迁移,可直接导入数据文件

其余特性

  • 扩展性能
    • 与S3集成,可实现最多三个可用区之间6个副本的持续备份
    • 将日志记录和存储层转移到可扩展的多租户服务层
    • MySQL支持跨区域副本(最多5个区域)创建全球数据库,使用Read Replicate 技术, PostgreSQL不支持,跨区域DR须要手工完成
  • 弹性设计
    • 最多15个副本,约10ms副本滞后
    • 99.99%可用
    • 即时崩溃恢复(60s),故障转移30s内
    • 与单一线程重放全部日志的传统数据库至关
    • 在磁盘读取时重放重作记录
    • 自动备份,且不会影响数据库性能
    • 支持快照,而且能够跨帐户共享快照,也能够跨区域共享,可是不能同时 跨帐户和区域共享
    • 平行的分布式异步恢复
    • 缓存层可在数据库重启时继续使用,从而改善读取响应
    • 支持KMS加密,但必须在建立数据库时即开启加密选项
    • 主数据库出现故障时,只读副本能够实现即时提高为主数据库
  • 支持Aurora Serverless
    • 适用于 Amazon Aurora 的 MySQL 兼容版的按需 autoscaling 配置。
    • Aurora Serverless 数据库集群会根据您应用程序的需求自动启动、关闭以及扩展或缩减容量。
    • Aurora Serverless 是简单且更具成本效益的选择,适用于不频发的、间歇性的或不可预测的工做负载。
  • Parallel Query
    • Amazon Aurora Parallel Query 是一项功能,可以将单个查询的计算负载下移并分布到 Aurora 存储层中的数千个 CPU。若是不使用 Parallel Query,则对 Amazon Aurora 数据库发出的查询将所有在数据库集群的一个实例中执行;这与大多数数据库的运做方式相似。
    • Parallel Query 很是适合须要新数据和良好查询性能的分析工做负载,即便在大型表上也是如此。这种类型的工做负载在本质上一般是可操做的。

好处:

  • 速度更快:Parallel Query 可将分析查询的运行速度提升多达 2 个数量级。
  • 操做简易性和数据新鲜度:您能够直接对 Aurora 集群中的当前事务数据发出查询。
  • 同一数据库上的事务工做负载和分析工做负载:借助 Parallel Query 功能,Aurora 能够在处理并行分析查询的同时保持较高的事务吞吐量。

数据库架构示例

相关文章
相关标签/搜索