Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Comprimir el tráfico de la red

Los controladores de MongoDB pueden comprimir los mensajes enviados y recibidos desde el servidor de MongoDB. Esto reduce la cantidad de datos transferidos en cada operación. La compresión puede mejorar el rendimiento en redes con recursos limitados y disminuir los costos de transferencia de datos asociados con la ejecución de MongoDB Atlas.

La compresión opera a nivel de protocolo de red, por lo que se aplica a todas las operaciones que realiza su aplicación. Si especifica más de un algoritmo, el controlador utilizará el primero de la lista que también sea compatible con MongoDB Server.

Los controladores de MongoDB admiten los siguientes algoritmos de compresión:

MongoDB Atlas charges for data transferred across cloud regions, cloud providers, and between your infrastructure and MongoDB Atlas. Network compression reduces the amount of data that your application sends and receives, which can lower these data transfer costs. To learn more about pricing, see Data Transfer Costs.

La compresión de red también ofrece ventajas en cuanto a productividad. Los mensajes comprimidos tardan menos en transferirse a través de la red, lo que puede mejorar los tiempos de respuesta de su aplicación. Además, la compresión reduce el ancho de banda que utiliza el tráfico de MongoDB, lo que deja más ancho de banda disponible para otras aplicaciones en la misma red.

Al elegir un algoritmo de compresión, tenga en cuenta las siguientes pautas:

  • Utilice Zstandard para lograr un equilibrio entre la eficiencia de compresión y el uso de recursos. Zstandard es una buena opción predeterminada para la mayoría de las aplicaciones.

  • Utilice Snappy para aplicaciones sensibles a la latencia que requieren una mínima sobrecarga computacional.

  • Utilice Zlib para una amplia compatibilidad con los controladores y entornos de MongoDB.

Tip

Monitorear el uso de la CPU

Compression trades network bandwidth for CPU usage. After you enable network compression, monitor your application's CPU utilization to confirm that the trade-off benefits your workload. To learn more about these trade-offs, see the CPU Utilization and Network Compression in MongoDB blog post.

La siguiente tabla enumera el controlador mínimo compatible y la versión del servidor MongoDB para cada algoritmo de compresión:

Algoritmo de compresión
Versión mínima del controlador
Versión mínima del servidor

2.1

4.2

2.1

4.2

2.1

4.2

Para usar un compresor, añade la bandera de característica relevante a la lista de funcionalidades de la dependencia mongodb en el archivo Cargo.toml del proyecto.

Seleccione la pestaña de su compresor preferido para ver cómo añadir el indicador de funcionalidad necesario a su dependencia mongodb:

[dependencies.mongodb]
version = "3.9.1"
features = ["snappy-compression"]
[dependencies.mongodb]
version = "3.9.1"
features = ["zlib-compression"]
[dependencies.mongodb]
version = "3.9.1"
features = ["zstd-compression"]

Tip

Para especificar múltiples compresores, debes agregar la funcionalidad de activación para cada compresor a tu dependencia mongodb.

Puede habilitar la compresión en su instancia Client especificando los compresores de las siguientes maneras:

  • Agregar el parámetro compressors a su cadena de conexión. Para ver un ejemplo que permite la compresión de esta manera, consulta la sección Cadena de conexión.

  • Configurar el campo compressors de una instancia ClientOptions. Después puedes pasar las opciones al método with_options() al instanciar un Client. Para ver un ejemplo que habilite la compresión de esta manera, consulta la sección ClientOptions.

Para habilitar la compresión mediante el uso de una cadena de conexión, especifique el parámetro compressors. Puede especificar uno o más de los siguientes valores para el parámetro compressors:

  • "snappy" para compresión Snappy

  • "zlib" para la compresión Zlib

  • "zstd" para la compresión Zstandard

El siguiente ejemplo muestra cómo especificar Snappy, Zlib y Zstandard como los compresores para una conexión:

let uri = "mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd";
let client = Client::with_uri_str(uri).await?;

Para obtener más información sobre cómo configurar las opciones del cliente, consulta la guía sobre Especificar opciones de conexión.

Para activar la compresión en tu instancia ClientOptions, configura el campo compressors y luego pasa las opciones al crear un cliente.

El campo compressors toma un valor del tipo Vec<Compressor>. El tipo Compressor tiene los siguientes valores posibles:

  • Compressor::Snappy

  • Compressor::Zstd { level: <integer> }

  • Compressor::Zlib { level: <integer> }

Para los compresores que tienen un campo level, ajuste el valor a None para indicar el nivel por defecto. La siguiente tabla describe los niveles de compresión por defecto y aceptados para Zlib y Zstandard:

Compresor
Nivel por defecto
Niveles aceptados

Zlib

6

Números enteros de 0 a 9 o None

Zstandard

3

Números enteros de 1 a 22 o None

Un valor level más alto resulta en una mayor compresión, que es más lenta.

El siguiente ejemplo muestra cómo especificar Snappy, Zlib y Zstandard como los compresores para una conexión:

let uri = "<connection string>";
let mut client_options = ClientOptions::parse(uri).await?;
let compressors = vec![
Compressor::Snappy,
Compressor::Zstd { level: Some(1) },
Compressor::Zlib { level: None }
];
client_options.compressors = Some(compressors);
let client = Client::with_options(client_options)?;

Para más información sobre los conceptos de esta guía, consulta la siguiente documentación:

Para obtener más información sobre cualquiera de los métodos o tipos mencionados en esta guía, consulta la siguiente documentación API: