Overview
Los drivers de MongoDB pueden comprimir los mensajes enviados y recibidos desde el servidor de MongoDB. Esto reduce la cantidad de transferencia de datos para cada operación. La compresión puede mejorar el rendimiento en redes restringidas y reducir 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 el servidor MongoDB.
Algoritmos de compresión
Los drivers de MongoDB admiten los siguientes algoritmos de compresión:
Beneficios de la compresión de red
MongoDB Atlas cobra por los datos transferidos entre regiones de la nube, proveedores de la nube y entre su infraestructura y MongoDB Atlas. La compresión de red reduce la cantidad de datos que su aplicación envía y recibe, lo que puede disminuir estos costos de transferencia de datos. Para obtener más información sobre los precios, consulte Costos de transferencia de datos.
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.
Cuando elijas un algoritmo de compresión, considera las siguientes directrices:
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 sobrecarga computacional mínima.
Utilice Zlib para una amplia compatibilidad con los controladores y entornos de MongoDB.
Tip
Monitorear el uso de la CPU
La compresión sacrifica ancho de banda de red a cambio de un mayor uso de la CPU. Tras habilitar la compresión de red, supervise el uso de la CPU de su aplicación para confirmar que esta compensación beneficia su carga de trabajo. Para obtener más información sobre estas compensaciones, consulte la entrada del blog «Uso de la CPU y compresión de red en MongoDB».
Compatibilidad de versiones
La siguiente tabla enumera la versión mínima compatible del driver y del servidor MongoDB para cada algoritmo de compresión:
Habilitar la compresión de red
Para habilitar la compresión de red para su conexión a MongoDB, instale las dependencias necesarias y especifique los algoritmos de compresión que desea utilizar.
Dependencias del algoritmo de compresión
La siguiente tabla enumera cada algoritmo y la dependencia que requiere, si la hay:
Algoritmo de compresión | Dependencia |
|---|---|
rápido |
|
Zlib | Ninguno. El controlador admite de forma nativa la compresión Zlib. |
Zstandard |
|
Especificar algoritmos de compresión
Puedes habilitar la compresión en tu conexión especificando los algoritmos de las siguientes maneras:
Añadiendo el parámetro
compressorsa tu instanciaConnectionStringInvocando el método
compressorList()desde el desarrolladorMongoClientSettings
Para habilitar la compresión en su conexión en una instancia de ConnectionString, especifique el compressors parámetro. Puede especificar uno o más de los siguientes valores para el compressors parámetro:
El siguiente ejemplo muestra cómo especificar Snappy, Zlib y Zstandard como los algoritmos de compresión para una conexión:
// Replace the placeholders with values from your MongoDB deployment's connection string val connectionString = ConnectionString("mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd") // Create a new client with your settings val mongoClient = MongoClient.create(connectionString)
Para habilitar la compresión mediante MongoClientSettings, llama al método builder compressorList() y envía una o más instancias de MongoCompressor como parámetro.
Puede especificar algoritmos de compresión llamando a los siguientes métodos desde MongoCompressor:
createSnappyCompressor()for Snappy compressioncreateZlibCompressor()for zlib compressioncreateZstdCompressor()for Zstandard compresión
El siguiente ejemplo muestra cómo especificar Snappy, Zlib y Zstandard como los algoritmos de compresión para una conexión:
// Replace the placeholder with your MongoDB deployment's connection string val uri = "<connection string>" val settings = MongoClientSettings.builder() .applyConnectionString(ConnectionString(uri)) .compressorList( listOf( MongoCompressor.createSnappyCompressor(), MongoCompressor.createZlibCompressor(), MongoCompressor.createZstdCompressor()) ) .build() // Create a new client with your settings val mongoClient = MongoClient.create(settings)