S3 tidak menghormati namespace hierarkis. Setiap keranjang hanya berisi sejumlah pemetaan dari kunci ke objek (bersama dengan metadata terkait, ACL, dan sebagainya).
Meskipun kunci objek Anda mungkin berisi '/', S3 memperlakukan jalur sebagai string biasa dan meletakkan semua objek dalam namespace datar.
Dalam pengalaman saya, operasi LIST memang memakan waktu (secara linier) lebih lama karena jumlah objek meningkat, tetapi ini mungkin merupakan gejala peningkatan I / O yang diperlukan di server Amazon, dan menurun ke klien Anda.
Namun, waktu pencarian tampaknya tidak meningkat dengan jumlah objek - kemungkinan besar ini semacam implementasi hashtable O (1) di akhir mereka - jadi memiliki banyak objek dalam keranjang yang sama harus sama performanya dengan keranjang kecil untuk penggunaan normal (yaitu bukan LIST).
Sedangkan untuk ACL, hibah dapat diatur di bucket dan di setiap objek individu. Karena tidak ada hierarki, itu hanya dua pilihan Anda. Tentunya, menyetel sebanyak mungkin hibah di seluruh bucket akan secara besar-besaran mengurangi sakit kepala admin jika Anda memiliki jutaan file, tetapi ingat Anda hanya dapat memberikan izin, bukan mencabutnya, jadi pemberian di seluruh bucket harus menjadi subset maksimal ACL untuk semua. isinya.
Saya akan merekomendasikan membagi menjadi beberapa ember terpisah untuk:
- konten yang sangat berbeda - memiliki wadah terpisah untuk gambar, suara, dan data lainnya membuat arsitektur menjadi lebih waras
- ACL yang berbeda secara signifikan - jika Anda dapat memiliki satu bucket dengan setiap objek menerima ACL tertentu, atau dua bucket dengan ACL berbeda dan tidak ada ACL khusus objek, ambil dua bucket.