印象中要在 Amazon S3 上面存大量資料時需要注意 key 的命名,用 Google 找了找發現官方的「Request Rate and Performance Considerations」這篇。
文章中有提到這是對有大量存取需求時才需要注意的事項:
The guidelines in this section apply if you are routinely processing 100 or more requests per second. If your typical workload involves only occasional bursts of 100 requests per second or more, you don't need to follow the guidelines in this section.
不過平常即使沒有需要大量存取,還是可以照著做,因為應該不會有負面影響。如果能照著上面的方式先做,之後也許會受益...
由於 Amazon S3 是使用 key-prefix 當作 partition 的依據,所以 prefix 的值對於效能很重要。官方推薦的幾種方法都是對 key-prefix 下手:
- 對整個 path + filename 的字串 hash 後當作 prefix。舉例來說,
examplebucket/2013-26-05-15-00-00/cust1234234/photo1.jpg
hash 後加到前面,名稱變成examplebucket/232a-2013-26-05-15-00-00/cust1234234/photo1.jpg
。 - 將最前面一段 reverse string。像是把
2134857/data/start.png
變成7584312/data/start.png
。