File maks per direktori di S3

87

Jika saya memiliki sejuta gambar, apakah lebih baik menyimpannya di beberapa hierarki folder / sub-folder atau hanya membuang semuanya langsung ke dalam ember (tanpa folder apa pun)?

Apakah membuang semua gambar ke dalam keranjang tanpa hierarki akan memperlambat operasi LIST?

Apakah ada overhead yang signifikan dalam membuat folder dan sub folder dengan cepat dan menyiapkan ACL mereka (berbicara secara programatik)?

Nikhil Gupte
sumber

Jawaban:

127

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.
James Brady
sumber
di S3 ada keranjang dan kemudian di dalamnya Anda dapat memiliki 'folder' dan 'objek' di mana folder mungkin merupakan objek di mata sistem
mwm
14
@w Anda salah. "Folder" benar-benar menyenangkan UI yang disediakan oleh alat apa pun yang Anda gunakan. James benar bahwa kunci mungkin memiliki garis miring tetapi s3 itu tidak peduli sama sekali - pasti tidak menganggapnya sebagai folder.
Ry4an Brase
S3 pasti menilai permintaan batas berdasarkan awalan jalur, lihat dokumen resmi: docs.aws.amazon.com/AmazonS3/latest/dev/…
Anatoly
S3 Prefix tidak lagi diperlukan atau disarankan: aws.amazon.com/about-aws/whats-new/2018/07/…
Aea
59

Jawaban untuk pertanyaan awal "Max files per directory in S3" adalah: UNLIMITED. Lihat juga batas S3 untuk objek dalam ember .

Vacilando
sumber
-3

Saya menggunakan struktur direktori dengan root kemudian setidaknya satu sub direktori. Saya sering menggunakan "tanggal impor dokumen" sebagai direktori di bawah root. Ini dapat membuat pengelolaan cadangan sedikit lebih mudah. Sistem file apa pun yang Anda gunakan, Anda pasti akan mencapai batas jumlah file (praktis jika bukan batas fisik) pada akhirnya. Anda mungkin berpikir untuk mendukung banyak root juga.

Jim Blizard
sumber