2016-Virtual-Summit-Track-3-AWS上的数据库选择和最佳实践-Lan-Yo

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

©2016,AmazonWebServices,Inc.oritsAffiliates.Allrightsreserved.AWS上的数据库选择和最佳实践蓝勇AWS解决方案架构师2016年5月26日议程•什么是AWS托管数据库服务•托管关系型数据库服务•托管NoSQL数据库服务•托管集群缓存服务•托管数据仓库服务•数据库选择及最佳实践什么是AWS托管数据库服务数据库:自建还是托管自搭自建•通过EC2实例全面管理(Raid+预制IOPS)•肩负数据库管理的所有重任:软件安装,升级,备份,高可用,故障转移……•全面负责数据库安全的方方面面•数据库的性能及健康监控•复杂的主备设定,副本管理以及数据管理托管服务•从底层设施以及基础关机管理的任务中脱离出来•通过API调用实现数据库生命周期管理的自动化•关注于数据库访问设定以及应用安全•轻松管理主从,副本•轻松管理数据库高可用•增强的监控服务EC2丰富的AWS数据库服务AmazonElastiCache缓存集群托管服务AmazonRedshift完全管理型PB级数据仓库服务AmazonRDSAmazonDynamoDB托管关系型数据库托管NoSQL数据库DBA托管关系型数据库服务数据库服务-RDSRelationalDatabaseServiceDatabase-as-a-Service:无需安装和管理数据库实例可扩展和高容错的配置按需付费的许可方式以及自带许可特点细节引擎支持MySQL,SQLServer,Oracle,PostgreSQL,MariaDB,Aurora预配置从默认配置即可开始使用;自主运维窗口自动补丁升级自动保持你的数据平台最新存储和备份最大6TB的数据库存储,自动备份以及按照时间点恢复预配置IOPS根据需求确定IO吞吐量25,000IOPSforOracle;30,000IOPSforMySQL;10,000forSQLServer故障转移使用Multi-AZ,可以自动切换至备用数据库实例;Cloudwatch监控读复制简便的创建MySQL读副本,无缝的在可用区域间复制数据RDS存储选项-EBS磁性存储:适用于较低或突发I/O要求的应用•磁性存储卷平均提供大约100IOPS,最多能够应付多达数百个突发IOPS,其大小范围是5GB到3TB。通用型SSD:适应于大多数负载•3IOPS/GB,最高应付突发3,000IOPS预配置IOPSSSD:适应于性能要求很高的负载•预配置最多6TB存储,30,000IOPS•可在线调整IOPS选择拥有合适的CPU和内存配置的实例机型RDS:Multi-AZ区域Database1可用区A可用区B在可用区A创建一个RDSRDS:Multi-AZ区域Database1可用区A可用区B在可用区A创建一个RDS激活Multi-AZDatabase2RDS:Multi-AZ区域Database1可用区A可用区B在可用区A创建一个RDS激活Multi-AZ数据同步,双机异地热备Database2RDS:Multi-AZ区域Database1可用区A可用区B在Multi-AZ下发生以下状况:_可用区A失效且不可访问_可用区A的RDS出现硬件故障_RDS有运维任务(升级,补丁,扩容……)Database2使用只读副本扩展数据库•实现读写分流,减少主数据库压力,提升读性能•创建多个只读副本,分担压力•只读副本可以跨区域创建•轻松创建及设置只读副本RDSforMySQLandPostgreSQL可以创建只读副本NativeMySQLRDSMySQL:自己搭建需要~30+手动步骤RDS:点几下鼠标就可以创建只读副本跨区域只读副本实现数据就近访问、迁移及容灾•灾难实际中更快的恢复系统•数据更靠近最终用户,让用户更快的查询数据•只需将只读副本提升为主数据库就可以完成数据迁移跨区域快照实现异地冷备•拷贝数据库快照到不同的区域•快速实现数据库异地冷备份•或者将数据库迁移到另外一个区域RDS提供的备份能力自动备份•按照时间点恢复还原数据库•缺省打开•用户选择保存期:最长35天手动备份•用户发起•备份一直保存,直到用户显式删除•备份保存在S3,11个9的数据耐久性•用户可根据需要基于快照构建新的数据库实例数据迁移在相同或者不同数据库引擎间迁移数据10分钟内开始数据迁移数据迁移过程中保持应用运行支持数据从EC2迁移到RDS,或者RDS到EC2支持数据从自建数据中心迁入到AWS,或者迁出AWSDatabaseMigrationService数据库迁移服务什么时候使用-RDS托管的关系数据库服务•事物支持•复杂的查询•中-高级别的查询/写入速度•10K及以内的IOPS•100GBto1TB数据•单节点能完成所有任务•高持久性•超高的读写速率•例如:150k请求/秒•数据量大小和吞吐量有分片的要求•例如:10-100TB的数据•简单的Get/Put或者NoSQL能处理的需求•复杂的数据分析(OLAP)适合场景不适合场景RDS最佳实践•使用优化IOPSEBS存储•使用EBS优化实例•M1.L,M1.XL,M2.4XL•使用Multi-AZ提高可用性•使用只读副本实现:•增强读的能力•分片•灾备及高可用托管缓存集群服务ElasticCache介绍•支持Memcached和Redis两大主流引擎•一键轻松部署集群•单节点最高支持:r3.8xlarge:237GB•集群节点失败检测和自动恢复•高可用:支持多可用区部署•支持快照功能(Redis)•与EC2,DynamoDB,RDS等服务无缝集成ELBS3EC2EC2EC2区域可用区A可用区BElastiCache:一个可轻松管理的按需缓存集群托管服务延迟加载#Pythondefget_user(user_id):record=cache.get(user_id)ifrecordisNone:#RunaDBqueryrecord=db.query(select*fromuserswhereid=?,user_id)cache.set(user_id,record)returnrecord#Appcodeuser=get_user(17)每次更新#Pythondefsave_user(user_id,values):record=db.query(updateusers...whereid=?,user_id,values)cache.set(user_id,record)returnrecord#Appcodeuser=save_user(17,{name:NateDogg})TTLdefsave_user(user_id,values):record=db.query(updateusers...whereid=?,user_id,values)cache.set(user_id,record,300)#TTLreturnrecorddefget_user(user_id):record=cache.get(user_id)ifrecordisNone:record=db.query(select*fromuserswhereid=?,user_id)cache.set(user_id,record,300)#TTLreturnrecord#Appcodesave_user(17,{name:NateDiddy})user=get_user(17)AmazonElastiCache:HA可扩展的架构ElasticLoadBalancingClientsAZaAZb托管的分布式缓存服务•临时的Key/Value的存储•需要提高读/写的性能•通常是提高5x-10x甚至更多•缓存常用的SQL,NoSQL或者数据仓库查询结果•Web应用的session缓存•保存临时和频发更新的数据•不停递增/递减的游戏得分/计数器等•需要持久化的数据•使用不频发的用户数据适合场景不适合场景什么时候使用-ElasticCacheElasticCache最佳实践•在应用程序中共享缓存对象•使用TTLs•考虑连接内存的开销•使用CloudWatch报警/SNSAlerts•连接的数量•Swapmemory使用•可用内存托管NoSQL数据库服务AmazonDynamoDB:托管NoSQL数据库服务单位数ms的响应延迟哪些客户在用DynamoDB互联网时光机Timehop当下我们的表格已经非常大了,接近100TB,但是性能和第一天搭建时没任何区别使用DynamoDB支撑千万级用户数据两周之内月活跃用户从100万升至800万普通数据库无法支持如此快速的系统压力增长HalfbrickStudios使用AWS的DynamoDB来支撑水果忍者数百万计的用户写:•自动在三个AZ同步复制数据•每个写至少在两个AZ写成功后才会返回•Disk-onlywrites设计理念--高可用和耐久性读:•支持强一致性和最终一致性读•一样的低延迟•最终一致性的成本是强一致性成本的一半AmazonDynamoDB没有schema要求表项目属性(name-valuepairs)每个Item必须包含一个主键(PrimaryKey)Hashkey(分区键)每个Item必须包含一个主键(PrimaryKey)HashkeyRangekey(查询和排序键)Allitemsforahashkey==,,,=,=“beginswith”“between”sortedresultscountstop/bottomNvaluespagedresponsesLSI本地二级索引=备选RangekeyHashkeyRangekeyLSIkeyGSI全局二级索引=表格的数据透视图Choosewhichattributestoproject(ifany)CreateTableUpdateTableDeleteTableDescribeTableListTablesQueryScanBatchGetItemBatchWriteItemGetItemPutItemUpdateItemDeleteItemListStreamsDescribeStreamGetShardIteratorGetRecordsStreamAPIDynamoDBDynamoDBAPI使用DynamoDB的应用架构ElasticLoadBalancingAmazonEC2appinstancesClientsDynamoDB业务逻辑什么时候使用-DynamoDB•key-value或者简单查询•大规模扩展Scale•非常高读/写速率•需要自动分片•需要再在多个节点上在线自动扩展•一致性&低延迟•没有吞吐量的限制•不需要优化•高可用性(Durability)•需要多个item/行或者跨表的事物•需要复杂的查询,连接•需要在历史数据上做实时分析托管的NoSQL数据库适合场景不适合场景DynamoDB最佳实践•为表中值变化范围大的字段使用哈希键•使用条件更新/OCCupdate•为1:N的关系使用哈希-范围键•避免热键或者热的分区rangehashUsersTableHashkeyAttributesSSN=123-45-6789Email=johndoe@nowhere.com,License=TDL25478134SSN=987-65-4321Email=maryfowler@somewhere.com,License=TDL78309234托管数据仓库服务AmazonRedshift:托管的数据仓库服务•关系型数据仓库(SQL),基于PostgreSQL•大规模并行处理(MPP),PB级列式数据仓库基于HDD和SDD,更快响应时间•~10x典型关系数据库•完全托管,管理简便、大幅扩容高效的表数据聚合和关联,OLAP数据库引擎$1,000/TB/年;startsat$0.25/hour管理节点(LeaderNode)简单的SQL接入点存储数据库元数据优化查询计划协调各个计算节点执行查询任务计算节点(ComputeNode

1 / 53
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功