Overview
En esta guía, puede aprender a configurar la compresión de red para su conexión a MongoDB utilizando el controlador Rust.
La compresión de red es una función que le permite comprimir y descomprimir los mensajes enviados entre su aplicación y MongoDB, reduciendo la cantidad total de datos que pasan por la red.
El controlador admite los siguientes compresores:
Nota
Selección del compresor
Si especifica varios compresores para usar en su conexión, el controlador selecciona el primero que sea compatible con la instancia de MongoDB a la que está conectado el controlador.
Esta guía incluye las siguientes secciones:
Agregar indicadores de características de compresión describe cómo agregar indicadores de características a su aplicación para diferentes compresores
Habilitar compresión de red describe cómo habilitar la compresión de red en su
ClientinstanciaInformación adicional proporciona enlaces a recursos y documentación de API para los tipos y métodos mencionados en esta guía.
Agregar indicadores de función de compresión
Para utilizar un compresor, agregue el indicador de característica relevante a la lista de características de su dependencia mongodb en el archivo Cargo.toml de su proyecto.
Seleccione la pestaña de su compresor preferido para ver cómo agregar la función necesaria a su dependencia mongodb:
[dependencies.mongodb] version = "3.5.1" features = ["snappy-compression"]
[dependencies.mongodb] version = "3.5.1" features = ["zlib-compression"]
[dependencies.mongodb] version = "3.5.1" features = ["zstd-compression"]
Tip
Para especificar varios compresores, debe agregar el indicador de función para cada compresor a su dependencia mongodb.
Habilitar la compresión de red
Puede habilitar la compresión en su instancia Client especificando compresores de las siguientes maneras:
Añadiendo el
compressorsparámetro a la cadena de conexión. Para ver un ejemplo que permite la compresión de esta manera, consulte la sección Cadena de conexión.Configurando el
compressorscampo de unaClientOptionsinstancia. Luego, puede pasar las opciones alwith_options()método al instanciar unaClientinstancia. Para ver un ejemplo que habilita la compresión de esta manera, consulte la sección "Opciones del Cliente".
Cadena de conexión
Para habilitar la compresión mediante 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 compresión Zstandard
El siguiente ejemplo muestra cómo especificar Snappy, Zlib y Zstandard como 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, consulte la guía en Opciones de conexión.
Opciones del cliente
Para habilitar la compresión dentro de su instancia ClientOptions, configure el campo compressors y luego pase las opciones al crear un cliente.
El campo compressors acepta un valor de tipo Vec<Compressor>. El tipo Compressor tiene los siguientes valores posibles:
Compressor::SnappyCompressor::Zstd { level: <integer> }Compressor::Zlib { level: <integer> }
Para los compresores con un campo level, establezca el valor en None para indicar el nivel predeterminado. La siguiente tabla describe los niveles de compresión predeterminados y aceptados para Zlib y Zstandard:
Compresor | Nivel predeterminado | Niveles aceptados |
|---|---|---|
Zlib |
| Enteros de |
Zstandard |
| Enteros de |
Un valor level más alto da como resultado una mayor compresión, lo que es más lento.
El siguiente ejemplo muestra cómo especificar Snappy, Zlib y Zstandard como 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)?;
Información Adicional
Para más información sobre los conceptos de esta guía, consulta la siguiente documentación:
Opciones de compresión de la cadena de conexión en el manual del servidor
Documentación de la API
Para obtener más información sobre cualquiera de los métodos o tipos mencionados en esta guía, consulte la siguiente documentación de API: