Cargas y descargas

En esta página, se analizan conceptos relacionados con la carga y descarga de objetos. Puedes subir y almacenar cualquier tipo de MIME de datos de hasta 5 TiB.

Cargas

Puedes enviar solicitudes de carga a Cloud Storage de las siguientes maneras:

  • Carga en una sola solicitud. Úsala si el archivo es lo suficientemente pequeño para subirlo en su totalidad si la conexión falla.

    • La API de JSON distingue más entre las cargas de contenido multimedia, en las que solo se incluyen datos de objetos en la solicitud, y cargas de varias partes de la API de JSON, en las que ambos objetos y los metadatos de objeto se incluyen en la solicitud.
  • Carga reanudable. Usa esta opción para realizar una transferencia más confiable, lo que es especialmente importante con archivos grandes. Las cargas reanudables son una buena opción para la mayoría de las aplicaciones, ya que también funcionan con archivos pequeños al costo de una solicitud HTTP adicional por carga. También puedes usar cargas reanudables para realizar transferencias de transmisión, lo que te permite subir un objeto de tamaño desconocido.

  • Carga multiparte de la API de XML. Un método de carga que es compatible con las cargas de varias partes de Amazon S3. Los archivos se suben en partes y se ensamblan en un solo objeto con la solicitud final. Las cargas multiparte de la API de XML te permiten subir las partes en paralelo, lo que puede reducir el tiempo para completar la carga general.

Con estos tipos de cargas básicas, se pueden realizar estrategias de carga más avanzadas, como las cargas compuestas paralelas y las cargas de transmisión.

Consideraciones sobre el tamaño de carga

Cuando elijas si deseas usar una carga de una sola solicitud en lugar de una carga reanudable o una carga multiparte de la API de XML, ten en cuenta la cantidad de tiempo que estás dispuesto perder si se produce un error de red y debes reiniciar la carga. Para conexiones más rápidas, el tamaño límite suele ser mayor.

Por ejemplo, supongamos que estás dispuesto a tolerar 30 segundos de tiempo perdido:

  • Si subes desde un sistema local con una velocidad de carga promedio de 8 Mbps, puedes usar cargas de solicitud única para archivos de hasta 30 MB.

  • Si subes un archivo desde un servicio en la región con una velocidad de carga promedio de 500 Mbps, el tamaño límite de los archivos es de casi 2 GB.

Cargas compuestas paralelas

Una estrategia para cargar archivos grandes se denomina carga compuesta paralela. En esta carga, se divide un archivo en hasta 32 fragmentos, los fragmentos se suben en paralelo a objetos temporales, el objeto final se vuelve a crear mediante los objetos temporales y, luego, se borran los objetos temporales.

Las cargas compuestas paralelas pueden ser mucho más rápidas si la velocidad de la red y el disco no son factores limitantes. Sin embargo, el objeto final almacenado en el bucket es un objeto compuesto, que solo tiene un hash crc32c y no un hash MD5. Como resultado, debes usar crcmod para realizar verificaciones de integridad cuando descargas el objeto con gsutil o con otras aplicaciones de Python. Solo debes realizar cargas compuestas paralelas si se aplica lo siguiente:

  • Cualquier usuario de Python que necesite descargar los objetos tiene instalado google-crc32c o crcmod.

  • Cualquier usuario de gsutil que necesite descargar los objetos tiene instalado crcmod.

    Por ejemplo, si usas gsutil para subir elementos de video que solo entrega una aplicación de Java, las cargas compuestas paralelas son una buena opción porque hay implementaciones eficientes de CRC32C disponibles en Java.

  • No necesitas que los objetos subidos tengan un hash MD5.

Compatibilidad con gsutil

Puedes configurar cómo y cuándo gsutil realiza cargas compuestas paralelas, que se inhabilitan de forma predeterminada. Para ello, modifica los siguientes dos parámetros:

  • parallel_composite_upload_threshold: El tamaño total mínimo del archivo para realizar una carga compuesta paralela. Puedes inhabilitar todas las cargas compuestas paralelas en gsutil si estableces este valor en 0

  • parallel_composite_upload_component_size: El tamaño máximo de cada objeto temporal. El parámetro se ignora si el tamaño total del archivo es tan grande que requeriría más de 32 fragmentos en este tamaño

Puedes modificar ambos parámetros por comando mediante la opción de nivel superior -o o para todos los comandos de gsutil si editas el archivo de configuración .boto.

No se requiere espacio de disco local adicional cuando se usa gsutil para realizar cargas compuestas paralelas. Si una carga compuesta paralela falla antes de la composición, ejecuta el comando de gsutil de nuevo para aprovechar las cargas reanudables de los objetos temporales que fallaron. Cualquier objeto temporal que se haya subido de forma correcta antes de la falla, no volverá a subirse cuando reanudes la carga.

Los objetos temporales reciben un nombre de la siguiente manera:

RANDOM_ID/gsutil/tmp/parallel_composite_uploads/for_details_see/gsutil_help_cp/HASH

En el ejemplo anterior, RANDOM_ID es un valor numérico, y HASH es un hash MD5 (no relacionado con el hash del contenido del archivo o el objeto).

Por lo general, los objetos temporales se borran al final de una carga compuesta paralela. Sin embargo, para evitar la eliminación de objetos temporales, debes verificar el estado de salida del comando de gsutil y borrar de forma manual los objetos temporales que se subieron como parte de cualquier carga anulada.

Compatibilidad con JSON y XML

La API de JSON y la API de XML admiten que subas fragmentos de objetos en paralelo y los vuelvas a combinar en un solo objeto mediante la operación compose.

Ten en cuenta lo siguiente cuando diseñes código para cargas compuestas paralelas:

  • Cuando se usa la operación compose, los objetos de origen no se ven afectados por el proceso de composición.

    Esto significa que, si están destinados a ser temporales, debes borrarlos de forma explícita una vez que hayas completado con éxito la composición. Si no lo haces, los objetos de origen permanecerán en el bucket y se facturarán en consecuencia.

  • Con el fin de estar protegidos de los cambios a los objetos de origen entre las solicitudes de carga y de composición, debes proporcionar un número de generación esperado para cada origen.

Descargas

Puedes enviar solicitudes de descarga a Cloud Storage de las siguientes maneras:

  • Descarga simple: Descarga objetos en un destino.

  • Descarga de transmisión: Descarga datos en un proceso.

  • Descarga de objetos divididos: Descarga objetos grandes.

  • Descargas autenticadas del navegador: Descarga contenido desde el navegador con una Cuenta de Google.

Compatibilidad de carga y descarga por herramienta

Haz clic en las pestañas a continuación para ver las operaciones que admite cada herramienta:

Solicita extremos

Si usas API de REST para subir y descargar contenido, consulta la sección Solicita extremos a fin de obtener un análisis completo sobre los extremos de solicitud que puedes usar.

¿Qué sigue?