Espera que este depósito reciba inmediatamente más de 150 solicitudes PUT por segundo. ¿Qué debe hacer la empresa para garantizar un rendimiento óptimo?
A) Amazon S3 administrará automáticamente el rendimiento a esta escala.
B) Agregue un prefijo aleatorio a los nombres de las claves.
La respuesta correcta fue B y estoy tratando de averiguar por qué. ¿Alguien puede explicar el significado de B y si sigue siendo cierto?
A partir de un anuncio de AWS del 17/7/2018, ya no se requiere el prefijo aleatorio y hash de la clave S3 para ver un rendimiento mejorado: https://aws.amazon.com/about-aws/whats-new/2018/07/amazon -s3-anuncia-un-aumento-del-rendimiento-de-la-tasa-de-solicitudes/
Los prefijos S3 solían estar determinados por los primeros 6-8 caracteres;
Esto ha cambiado a mediados de 2018: vea el anuncio https://aws.amazon.com/about-aws/whats-new/2018/07/amazon-s3-announces-increased-request-rate-performance/
Pero eso es verdad a medias . En realidad, los prefijos (en la definición anterior) siguen siendo importantes.
S3 no es un "almacenamiento" tradicional: cada directorio/nombre de archivo es un objeto separado en un almacén de objetos clave/valor. Y también los datos tienen que ser particionados/fragmentados para escalar a cuatrillones de objetos. Entonces, sí, esta nueva fragmentación es un poco "automática", pero no realmente si creó un nuevo proceso que escribe con un paralelismo loco en diferentes subdirectorios. Antes de que el S3 aprenda del nuevo patrón de acceso, es posible que se encuentre con una aceleración del S3 antes de que vuelva a fragmentar/reparticionar los datos en consecuencia.
Aprender nuevos patrones de acceso lleva tiempo. Volver a particionar los datos lleva tiempo.
Las cosas mejoraron a mediados de 2018 (~10 veces el rendimiento para un depósito nuevo sin estadísticas), pero aún no es lo que podría ser si los datos se particionan correctamente. Aunque para ser justos, es posible que esto no se aplique a usted si no tiene una tonelada de datos, o el patrón de cómo accede a los datos no es muy paralelo (por ejemplo, ejecutar un clúster de Hadoop/Spark en muchos Tbs de datos en S3 con más de cientos de tareas que acceden al mismo depósito en paralelo).
TLDR :
Los "prefijos antiguos" todavía importan. Escriba datos en la raíz de su depósito, y el directorio de primer nivel allí determinará el "prefijo" (hazlo aleatorio, por ejemplo)
Los "nuevos prefijos" funcionan, pero no inicialmente. Se necesita tiempo para acomodar a la carga.
PD. Otro enfoque: puede comunicarse con su AWS TAM (si tiene uno) y pedirles que realicen una partición previa de un nuevo depósito S3 si espera que una tonelada de datos lo inunde pronto.
El trabajo de búsqueda/escritura significa que el uso de nombres de archivo que son similares u ordenados puede dañar el rendimiento.
Todavía se recomienda agregar hashes/identificadores aleatorios que prefijen la clave S3 para aliviar las altas cargas en los objetos a los que se accede con mucha frecuencia.