Max archivos por directorio en S3

87

Si tuviera un millón de imágenes, ¿sería mejor almacenarlas en alguna jerarquía de carpetas / subcarpetas o simplemente volcarlas todas directamente en un cubo (sin carpetas)?

¿El volcado de todas las imágenes en un depósito sin jerarquía ralentizaría las operaciones de LIST?

¿Existe una sobrecarga significativa en la creación de carpetas y subcarpetas sobre la marcha y la configuración de sus ACL (programáticamente hablando)?

Nikhil Gupte
fuente

Respuestas:

124

S3 no respeta los espacios de nombres jerárquicos. Cada depósito simplemente contiene una serie de asignaciones de clave a objeto (junto con metadatos asociados, ACL, etc.).

Aunque la clave de su objeto puede contener un '/', S3 trata la ruta como una cadena simple y coloca todos los objetos en un espacio de nombres plano.

En mi experiencia, las operaciones LIST toman (linealmente) más tiempo a medida que aumenta el recuento de objetos, pero esto probablemente sea un síntoma del aumento de E / S requerido en los servidores de Amazon, y en el cable hasta su cliente.

Sin embargo, los tiempos de búsqueda no parecen aumentar con el recuento de objetos; lo más probable es que sea algún tipo de implementación de tabla hash O (1) en su extremo, por lo que tener muchos objetos en el mismo depósito debería tener el mismo rendimiento que los depósitos pequeños para el uso normal (es decir, no LISTAS).

En cuanto a la ACL, las concesiones se pueden establecer en el depósito y en cada objeto individual. Como no hay jerarquía, son sus únicas dos opciones. Obviamente, establecer tantas concesiones para todo el depósito reducirá enormemente los dolores de cabeza de administrador si tiene millones de archivos, pero recuerde que solo puede otorgar permisos, no revocarlos, por lo que las concesiones para todo el depósito deberían ser el subconjunto máximo de la ACL para todos. su contenido.

Recomendaría dividir en cubos separados para:

  • contenido totalmente diferente: tener depósitos separados para imágenes, sonido y otros datos hace que la arquitectura sea más sana
  • LCA significativamente diferentes: si puede tener un depósito en el que cada objeto reciba una LCA específica, o dos depósitos con LCA diferentes y sin LCA específicas del objeto, tome los dos depósitos.
James Brady
fuente
en S3 hay cubos y luego dentro puede tener 'carpetas' y 'objetos' donde una carpeta es probablemente un objeto a los ojos del sistema
mwm
14
@mwm estás equivocado. Las "carpetas" son detalles estrictamente de la interfaz de usuario proporcionados por cualquier herramienta que esté utilizando. James tiene razón en que las teclas pueden tener barras, pero que a s3 no le importa en absoluto, definitivamente no las considera carpetas.
Ry4an Brase
S3 definitivamente limita las solicitudes según el prefijo de la ruta, consulte los documentos oficiales: docs.aws.amazon.com/AmazonS3/latest/dev/…
Anatoly
Los prefijos S3 ya no son necesarios ni recomendados: aws.amazon.com/about-aws/whats-new/2018/07/…
Aea
-3

Utilizo una estructura de directorio con una raíz y luego al menos un subdirectorio. A menudo utilizo "fecha de importación del documento" como directorio debajo de la raíz. Esto puede facilitar un poco la gestión de las copias de seguridad. Sea cual sea el sistema de archivos que esté utilizando, seguramente alcanzará un límite de conteo de archivos (un límite práctico, si no físico) eventualmente. También puede pensar en admitir varias raíces.

Jim Blizard
fuente