Optimiza el rendimiento en los buckets con el espacio de nombres jerárquico habilitado

En esta página, se proporciona orientación para optimizar el rendimiento en buckets con el espacio de nombres jerárquico habilitado.

Enumera objetos

A continuación, se indican las consideraciones de rendimiento para los objetos de la lista:

  • En los buckets con el espacio de nombres jerárquico habilitado, enumerar todos los objetos de todo el bucket o con un prefijo requiere muchos recursos, ya que la operación debe recorrer cada carpeta y subcarpeta, de manera similar al comando ls -r en un sistema de archivos. Por lo tanto, si hay más carpetas en tu bucket, la enumeración de objetos será más lenta. Una gran cantidad de carpetas vacías también puede afectar negativamente el rendimiento de la lista de objetos. Para evitar que el rendimiento se vea afectado de forma negativa, te recomendamos que maximices la cantidad de objetos en cada carpeta y que borres las carpetas vacías con regularidad.
  • Enumerar o recuperar objetos y subcarpetas dentro de una carpeta específica con un delimitador y un prefijo específico es más eficiente en los buckets con el espacio de nombres jerárquico habilitado, ya que los objetos se organizan dentro de una estructura de carpetas. Para optimizar el rendimiento de la ficha cuando se usa un delimitador y un prefijo específico, configura el parámetro includeFoldersAsPrefixes. De lo contrario, Cloud Storage realiza verificaciones adicionales para excluir las carpetas vacías, lo que puede ralentizar la operación. Para obtener más información sobre el uso de includeFoldersAsPrefixes cuando se enumeran objetos, consulta Cómo enumerar objetos.

Administración de carpetas

Para administrar las carpetas de manera eficiente, te recomendamos lo siguiente:

  • Crea previamente la estructura de carpetas: En lugar de depender de la creación automática de carpetas durante las operaciones de carga, reescritura y composición de objetos, usa la operación de creación de carpetas para obtener la estructura de carpetas deseada con anticipación. La creación previa de la estructura de carpetas mejora la coherencia y la previsibilidad del rendimiento.
  • Maximiza la proporción de objetos por carpeta: Intenta lograr una proporción alta de objetos por carpeta, ya que esto reduce la sobrecarga asociada con la creación y la administración de carpetas.
  • Limita las solicitudes de creación y eliminación de carpetas: Crear o borrar carpetas requiere más recursos que trabajar con objetos individuales debido a su naturaleza jerárquica. Para garantizar un rendimiento fluido, Cloud Storage limita estas operaciones a 1,000 solicitudes por segundo para cada bucket. Las solicitudes que superen este límite no se restringen de forma explícita, pero la disponibilidad de recursos determina si se pueden procesar correctamente.
  • Borra las carpetas vacías con regularidad: Las carpetas vacías se pueden acumular, en especial cuando usas la Administración del ciclo de vida de los objetos o borras objetos sin borrar de forma explícita sus carpetas principales. Las carpetas acumuladas pueden afectar el rendimiento de la operación de enumeración de objetos y otras operaciones relacionadas con carpetas. Estos son algunos de los métodos que puedes usar para borrar carpetas vacías:

    • Cuando usas Cloud Storage FUSE o el conector de Cloud Storage para interactuar con un bucket habilitado con un espacio de nombres jerárquico, borrar un directorio borra la carpeta correspondiente en tu bucket.
    • Puedes usar un borrado recursivo para borrar carpetas automáticamente cuando usas la consola de Google Cloud o Google Cloud CLI.
    • Puedes usar una secuencia de comandos o un proceso automatizado para borrar periódicamente las carpetas vacías. La siguiente secuencia de comandos proporciona un enfoque básico para borrar carpetas vacías. La secuencia de comandos borra las carpetas de forma secuencial, lo que puede ser lento para los buckets grandes. Por lo tanto, te recomendamos que optimices la secuencia de comandos para los entornos de producción. Además, la secuencia de comandos borra todas las carpetas vacías (creadas de forma implícita o explícita), incluidas las carpetas administradas y sus políticas de IAM asociadas. Si necesitas conservar carpetas específicas y carpetas administradas, ajusta la secuencia de comandos según los recursos que desees conservar.

      # List all the folders under <bucket>/<prefix> and export results into
      # folders.txt
      gcloud storage folders list gs://<bucket>/<prefix> | grep storage_url | sed 's/storage_url: //' > folders.txt
      
      # Reverse the folder list and export results into folders-reverse.txt
      sed '1!G;h;$!d' folders.txt > folders-reverse.txt
      
      # Try deleting each folder in the reverse order (to guarantee child
      # folders are deleted before parent folders). This will fail for
      # non-empty folders, so only empty folders will be deleted
      xargs -I{} gcloud storage folders delete "{}" < folders-reverse.txt
      

¿Qué sigue?