Sunday, December 07, 2014

Amazon DynamoDB - Data Modeling and Scaling Best Practices | AWS re:Invent 2014

前情提要:
Amazon DynamoDB會將一個table切成好幾個partition,
而整個table的throughput會平均分配給各個partition.
Total provisioned throughput/partitions = throughput per partition
不過partition跟思念一樣都是很玄的東西,
Amazon DynamoDB的官方文件只輕描淡寫的說是依照hash key來決定item是屬於哪個partition,
我們無從得知我們的table實際上被切成幾個partition.
然而在今年的AWS re:Invent, Amazon DynamoDB: Data Modeling and Scaling Best Practices的講者終於揭開了partition的奧秘!
剛剛查了一下官方文件不知何時也更新囉!
Partition的個數跟table的資料量(大小)以及讀寫的provision throughput有關.
若是你的RCU和WCU都是1000,
( 1000 / 3000 ) + ( 1000 / 1000 ) = 1.333
那你的table就會需要兩個partition, 分別有500的RCU和WCU.

依照公式可以看出,
若是我們的資料量不大而且需要的讀寫量(單筆資料&頻率)不高,
其實table是不會被切成多個partition哦!.
所以不用擔心存取資料(key)不夠分散, 某些狀況下可以好好利用這點.

另外講者也提到一些實際應用上的小技巧,
針對熱門的read item像是拍賣主打的商品資料要cache來降低花費(減少需要的throughput)
針對熱門的write item像是投票系統的候選人則是要自行把候選人切成多個key讓寫入能夠分散
(投票的人數多過於候選人, 且票數常常是集中在固定幾個人身上)

不錯的影片, 有在用DynamoDB的人值得看看啦!