《專場20.3-有容乃大-Amazon DynamoDB助力現代化應用程序-李君.pdf》由會員分享,可在線閱讀,更多相關《專場20.3-有容乃大-Amazon DynamoDB助力現代化應用程序-李君.pdf(55頁珍藏版)》請在三個皮匠報告上搜索。
1、Amazon DynamoDB助力現代化應用程序李君亞馬遜云科技數據庫技術專家議題1.Amazon DynamoDB 簡介2.Amazon DynamoDB 極致彈性和底層設計3.Amazon DynamoDB 設計最佳實踐4.Amazon DynamoDB 全球部署與服務集成AWS 中國(寧夏)區域由西云數據運營AWS 中國(北京)區域由光環新網運營Amazon DynamoDB 簡介 2022,Amazon Web Services,Inc.或其關聯公司。保留所有權利。Amazon DynamoDB快速且靈活的 NoSQL 數據庫,規模沒有限制規模性能提供更穩定的毫秒級延遲每秒處理數百萬個
2、請求無需管理服務器免維護Auto-scaling按需容量模式高達 99.999%的 SLA適合大型企業ACID 事務靜態加密連續備份,按需備份和還原與其他亞馬遜云科技服務集成全局表構建全球應用程序實現對本地數據的快速訪問自動化全球復制Amazon DynamoDB 非常適合:無服務器的事件驅動型架構 遍及全球的彈性服務 高吞吐量工作負載 2021,Amazon Web Services,Inc.or its Affiliates.All rights reserved.Amazon DynamoDB 用例客戶依賴DynamoDB來支持其任務關鍵型工作負載軟件和互聯網金融服務支付和欺詐檢測用戶配
3、置文件和活動手機銀行(Capital One,Vanguard,Fannie Mae)游戲狀態排行榜玩家數據存儲(Riot Games,Electronic Arts,PennyPop)游戲零售購物車和訂單庫存與履行付款和優惠券贖回(Nordstrom,Nike,Zalando,Mercado Libre)營銷與廣告廣告定位與屬性網絡/社交媒體分析深度鏈接(AdRoll,GumGum,Branch,DataXu)媒體與娛樂用戶數據存儲媒體元數據存儲流媒體觀看列表和書簽(Airtel Wynk,Amazon Prime,Netflix)元數據存儲網絡安全數字信息(Swiggy,Snap,Duol
4、ingo)AWS 中國(寧夏)區域由西云數據運營AWS 中國(北京)區域由光環新網運營表表條目屬性分區鍵 排序鍵必須指定鍵值訪問方式決定數據如何分布可選用于1:N的關系提供很多的查詢優化的能力All items for key=,=,=“begins with”“between”“contains”“in”sorted resultscountstop/bottom N valuesAWS 中國(寧夏)區域由西云數據運營AWS 中國(北京)區域由光環新網運營0055A954FFAA00FF分區鍵分區鍵唯一的標識了一條記錄分區鍵用來構建一個非排序的散列索引使得表可以進行分區,從而滿足擴展性的需求
5、Id=1Name=JimHash(1)=7BId=2Name=AndyDept=EngHash(2)=48 Id=3Name=KimDept=OpsHash(3)=CD Key SpaceAWS 中國(寧夏)區域由西云數據運營AWS 中國(北京)區域由光環新網運營Partition 3分區鍵:排序鍵分區鍵和排序鍵共同唯一的標識一條記錄在一個分區鍵決定的散列索引里,數據按照排序鍵進行排列每個排序鍵所對應的數據行數沒有上限除非你有本地二級索引(local secondary indexes)00:0FF:Hash(2)=48Customer#=2Order#=10Item=PenCustomer#
6、=2Order#=11Item=ShoesCustomer#=1Order#=10Item=ToyCustomer#=1Order#=11Item=BootsHash(1)=7BCustomer#=3Order#=10Item=BookCustomer#=3Order#=11Item=PaperHash(3)=CD55A9:54:AAPartition 1Partition 2SensorId(分區鍵)時間(排序鍵)值SensorA2018-01-03T10:15:3030SensorA2018-01-04T10:19:3035SensorB2018-03-04T11:21:2028Senso
7、rId(分區鍵)緯度經度SensorA40.712784-74.005941SensorB35.689488139.691706SensorLocation 表SensorReadings 表主鍵:唯一地標識一個項目簡單主鍵:分區鍵復合主鍵:分區鍵+排序鍵項目和屬性 類型鍵-值項目person_id:123,last_name:Doe,first_name:John,next_anniversary:year:2018,month:5,day:30,children :Dick,Harry,Jane,Mary 字符串數字布爾值JSON映射列表ItemNumberTitleLeadActorPr
8、iceInCirculation12My Favorite VideoJames Smith5.00true文檔項目讀取和寫入一致性DynamoDB 會維護數據的多個副本以獲得更高的持久性。您可以在讀取數據時指定所需的一致性級別。讀取一致性級別 最終一致性 強一致性 事務 寫入一致性級別 標準 事務讀取和寫入吞吐量 讀取容量單位(RCU):強一致性讀?。鹤畲蟠笮?4KB 的項目的每秒讀取次數最終一致性讀?。鹤畲蟠笮?KB的項目的每秒讀取次數 寫入容量單位(WCU):每秒寫入大小為 1KB 的項目的次數注意:吞吐量在各分區之間均衡分配。RCUWCU二級索引 讓您可以基于非主鍵屬性查詢數據 二
9、級索引會定義替代鍵 包含:替代鍵屬性 主鍵屬性 基表中其他屬性的可選子集(投影屬性)可選類型:KEYS_ONLY,INCLUDE A3,ALL 可以是以下其中一種類型:全局二級索引(GSI)本地二級索引(LSI)AWS 中國(寧夏)區域由西云數據運營AWS 中國(北京)區域由光環新網運營本地二級索引-Local Secondary Index(LSI)可以選擇與表不同的排序鍵每個表分區對應一個索引分區A1(partition)A3(sort)A2(item key)A1(partition)A2(sort)A3A4A5LSIsA1(partition)A4(sort)A2(item key)A
10、3(projected)TableKEYS_ONLYINCLUDE A3A1(partition)A5(sort)A2(item key)A3(projected)A4(projected)ALL每個分區鍵可以存儲最多10 GB的數據,包括表分區和索引分區的數據量。本地二級索引分區鍵和排序鍵LSI:JohnLSI:MaryRCUWCURepId(分區鍵)TravelerId(排序鍵)ContactDateJohn Doe12018/05/01John Doe32018/05/02Mary Smith22018/05/10RepId(分區鍵)ContactDate(排序鍵)TravelerIdJ
11、ohn Doe2018/05/011John Doe2018/05/023Mary Smith2018/05/102TravelerSurvey 表TravelerSurveyByRepAndDate 本地二級索引示例:本地二級索引繼承自基表AWS 中國(寧夏)區域由西云數據運營AWS 中國(北京)區域由光環新網運營全局二級索引-Global Secondary Index(GSI)可以選擇與表不同的分區鍵以及排序鍵每個索引分區會對應所有的表分區A1(partition)A2A3A4A5A5(partition)A4(sort)A1(item key)A3(projected)INCLUDE
12、A3A4(partition)A5(sort)A1(item key)A2(projected)A3(projected)ALLA2(partition)A1(itemkey)KEYS_ONLYGSIsTableGSI的RCUs和WCUs是獨立于表的容量而單獨計算的全局二級索引分區鍵或分區和排序鍵GSITravelerId(分區鍵)CityDate1Reno2018/03/012Boston2018/04/153Reno2018/04/21City(分區鍵)Date(排序鍵)TravelerIdReno2018/03/011Reno2018/04/213Boston2018/04/152Des
13、tinations 表DestinationByCity 全局二級索引示例:全局二級索引RCUWCUAWS 中國(寧夏)區域由西云數據運營AWS 中國(北京)區域由光環新網運營GSI 是如何被更新的?TablePrimary tablePrimary tablePrimary tablePrimary tableGlobal Secondary IndexClient2.Asynchronous update(in progress)如果GSI沒有足夠的寫容量,對表的寫操作會被限流AWS 中國(寧夏)區域由西云數據運營AWS 中國(北京)區域由光環新網運營選擇 GSI 還是 LSI(Local
14、 Secondary Index)?)?Global Secondary IndexLocal Secondary Index索引的尺寸沒有上限讀寫容量和表是獨立的只支持最終一致性索引保存在表的分區中,每個分區鍵值的存儲上限是10GB使用的是表上定義的RCU和WCU強一致性 2022,Amazon Web Services,Inc.or its affiliates.All rights reserved.讀取和寫入吞吐量讀取容量單位(RCU):最大大小為 4KB 的項目的每秒強一致性讀取次數最終一致性讀取使用了一半的預置讀取容量。寫入容量單位(WCU):每秒寫入大小為 1KB 的項目的次數注
15、意:吞吐量在各分區之間平均分配。RCUWCU按設置值收費,可調整選擇合適的容量模式按每次請求收費沒有容量限制On-Demand按最大值設置Provisioned CapacityRCU/WCUlevel特點:不需要計劃容量只按照你發出的讀和寫付費優點:避免了過大的容量或者過小的容量隨著工作負載而自動調整從0開始沒有容量限制按需(On Demand)容量AWS 中國(寧夏)區域由西云數據運營AWS 中國(北京)區域由光環新網運營預置容量 Vs 按需容量預置容量按需容量穩定的工作負載工作負載逐步變化了解自己的流量模式持續監控工作負載不可預知工作負載經常會降到0不了解自己的流量模式沒有運維綜合考慮成
16、本,運維AWS 中國(寧夏)區域由西云數據運營AWS 中國(北京)區域由光環新網運營AWS 中國(寧夏)區域由西云數據運營AWS 中國(北京)區域由光環新網運營Amazon DynamoDB 極致彈性和底層設計極致彈性和底層設計每秒數百萬個請求數萬億個項PB 級數據存儲個位數毫秒級讀寫延遲大規模高性能PB級規模下的個位數毫秒延遲 2022,Amazon Web Services,Inc.or its affiliates.All rights reserved.DynamoDB High-level architectureCRegional endpointAZ 1AZ 2AZ 3Metad
17、ata,partition maps,auto-admin,transaction coordinatorLoad balancersRequest routersStorage nodes 2022,Amazon Web Services,Inc.or its affiliates.All rights reserved.DynamoDB High-level architectureCRegional endpointAZ 1AZ 2AZ 3Metadata,partition maps,auto-admin,transaction coordinatorLoad balancersReq
18、uest routersStorage nodesAWS 中國(寧夏)區域由西云數據運營AWS 中國(北京)區域由光環新網運營AWS 中國(寧夏)區域由西云數據運營AWS 中國(北京)區域由光環新網運營Amazon DynamoDB 設計最佳實踐最佳實踐1:慎重選擇Hash Key以實現無限擴展 在分區鍵之間平均分配讀寫操作,以最大化吞吐量。124熱分區201204205289297303308313124.7201.3204.6205.7289.19297.18303.6308.11313.7 讀/寫操作僅限于少數分區。分區鍵的范圍有限。讀/寫操作分布在更多分區上。分區鍵包含計算的后綴。最佳
19、實踐2:區分表格存儲時序型數據 將頻繁訪問的數據(熱數據)與不頻繁訪問的數據(冷數據)分開第 4 季度訂單表第 3 季度訂單表第 2 季度訂單表第 1 季度訂單表預置吞吐量高低當前季度上一季度最佳實踐3:將大項目分開存儲在另一張表 使用一對多表,而不是大量屬性。復雜論壇話題表thread_id:123,subject:How do I cook potatoes?,replies :Boil,Bake,Roast,Fry,Mash,Chop 簡單論壇話題表thread_id:123,subject:How do I cook potatoes?回復表thread_id:123,reply_id
20、:abcreply:Boil for 10 minutesthread_id:123,reply_id:defreply:Bake for 45 minutes多種訪問模式 將頻繁訪問的少量屬性存儲在單獨的表中。Company 表companyName:Example,stockPrice:285,aboutCompany:Example company buildsships,missionStatement:Our mission is tobuild the best ships.,logoHighResolution:example.pngCompany Stock 表companyN
21、ame:Example,stockPrice:285Company 表companyName:Example,aboutCompany:Example companybuilds ships,missionStatement:Our mission isto build the best ships.,logoHighResolution:example.png本地二級索引 謹慎使用索引。慎重選擇投影。僅投影頻繁請求的屬性。利用稀疏索引。CustomerIdCustomer NameSportsNewsInterest1John2MaryY3Tom Y客戶表CustomerIdSportsNe
22、wsInterest2Y3YSportsInterest 索引全局二級索引 選擇可提供統一工作負載的鍵。利用稀疏索引。創建具有表屬性子集的全局二級索引,以便快速查找。用作最終一致性只讀副本。使用版本號的樂觀鎖UpdateItem 操作Primary key:userId=1Set:accountLocked=NversionNum=1ConditionExpression:VersionNum=0GetItem 操作Primary key:userId=1記住 versionNum。執行其他處理。userID(主鍵)lastFailedLoginTimeaccountLockedversion
23、Num12018-06-06T19:20+01:00Y0AccountStatus 表DynamoDB AcceleratorAmazonDynamoDB您的應用程序Amazon DynamoDB Accelerator(DAX)AWS 中國(寧夏)區域由西云數據運營AWS 中國(北京)區域由光環新網運營AWS 中國(寧夏)區域由西云數據運營AWS 中國(北京)區域由光環新網運營Amazon DynamoDB 全球部署與服務集成全球部署與服務集成 2021,Amazon Web Services,Inc.or its Affiliates.DynamoDB流DynamoDB流是針對表里的數據變
24、化的順序記錄在流里,針對表的變化的記錄只會出現一次在流里的記錄的順序與表上發生修改操作的順序是一致的流里的數據保存24小時,24小時以后自動刪除可以把表的數據被更新前的值以及更新后的值都寫到流里流里的數據通過API進行消費 2021,Amazon Web Services,Inc.or its Affiliates.DynamoDB流里記錄的數據內容 DynamoDB流可以配置為四種寫入的數據內容:KEYS_ONLY 只有分區鍵和排序鍵的數據被寫入流NEW_IMAGE 修改后的整條記錄都被寫入流OLD_IAMGE 修改前的整條記錄都被寫入流NEW_AND_OLD_IMAGES 修改前和修改后的
25、整條記錄都被寫入流Partition KeyPartition Key修改前的記錄修改后的記錄 2021,Amazon Web Services,Inc.or its Affiliates.DynamoDB流和AWS Lambda觸發器舉例 2021,Amazon Web Services,Inc.or its Affiliates.鍵值型關系型文檔型圖表全球擴展的應用系統的特征用戶規模超過1百萬數據量TB,PB,EB訪問用戶全球性能Milliseconds,microseconds每秒請求數百萬應用端Mobile,IoT,devices伸縮性向上或者向下伸縮成本按照用量付費開發方式API訪問
26、 2021,Amazon Web Services,Inc.or its Affiliates.全局表(Global Tables)用于構建高性能的,全球分布的應用系統對本區域的表的低延遲讀取需求多區域冗余配置簡單,無需應用程序多次寫第一個全托管的,多主,多區域的數據庫 2021,Amazon Web Services,Inc.or its Affiliates.全局表(Global Tables)2021,Amazon Web Services,Inc.or its Affiliates.StreamReader多區域復制RegionRegion 1RegionRegion 3RegionR
27、egion 2StreamReaderStreamReader 2021,Amazon Web Services,Inc.or its Affiliates.插入數據(PutItem)2021,Amazon Web Services,Inc.or its Affiliates.數據同步以后 2021,Amazon Web Services,Inc.or its Affiliates.沖突處理機制大部分情況下數據在區域之間的同步時間為秒級別如果多個區域對同一條記錄進行修改,則以最后一個修改請求為主需要為表 2022,Amazon Web Services,Inc.or its affiliate
28、s.All rights reserved.Serverless和事件驅動架構AWS LambdaNotify changeAmazon OpenSearch ServiceAmazon Kinesis Data FirehoseData eventsAmazon S3(Parquet)AmazonAthenaDynamoDB StreamsDynamoDB Streams and LambdaPartition APartition BPartition C123UpdatesGetRecordsDynamoDBtableDynamoDB StreamsShardsLambdafunctio
29、nDynamoDB Streams+AWS Lambda=可靠的“至少一次”事件傳遞Serverless應用示例AWSLambdaAmazonDynamoDBAmazon API GatewayAmazonDynamoDB StreamsLambdaAmazon S3Amazon OpenSearch ServiceAmazon AthenaDynamoDBQuery sideOnline Transaction Processing(OLTP)side關鍵要點NoSQL 非常適合 OLTPNoSQL 并不意味著沒有關系(ERD 仍然很重要)數據建模(為查詢而組織設計表結構)Serverless 和事件驅動架構實現更多云原生應用選擇正確的DynamoDB 容量模式 經濟又高效