Overview
PyMongo ofrece opciones de conexión para comprimir mensajes, lo que reduce la cantidad de datos transferidos a través de la red entre MongoDB y tu aplicación.
Especificar algoritmos de compresión
PyMongo admite los siguientes algoritmos de compresión:
Snappy: Esta opción requiere el paquete python-snappy.
Zlib: Esta opción requiere el módulo zlib, incluido en la librería estándar en Python v1.5 y posteriormente.
Para habilitar la compresión en la conexión a tu instancia de MongoDB, utiliza el
compressors la opción de conexión y especifica los algoritmos de compresión que deseas utilizar. Puedes hacerlo de dos maneras:
Pase los algoritmos como argumento al constructor
MongoClient.Especificar los algoritmos en tu cadena de conexión.
El siguiente ejemplo de código muestra ambas opciones:
Las siguientes pestañas demuestran cómo especificar todos los compresores disponibles al conectarse a MongoDB:
client = pymongo.MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>", compressors = "snappy,zstd,zlib")
uri = ("mongodb://<db_username>:<db_password>@<hostname>:<port>/?" "compressors=snappy,zstd,zlib") client = pymongo.MongoClient(uri)
client = pymongo.AsyncMongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>", compressors = "snappy,zstd,zlib")
uri = ("mongodb://<db_username>:<db_password>@<hostname>:<port>/?" "compressors=snappy,zstd,zlib") client = pymongo.AsyncMongoClient(uri)
Si no se especifica un algoritmo de compresión, PyMongo no comprime el tráfico de red. Si especificas varios algoritmos de compresión, el driver seleccionará el primero en la lista que sea compatible con tu instancia de MongoDB.
Especifica el nivel de compresión zlib
Si especifica zlib como uno de sus algoritmos de compresión, también puede usar la opción zlibCompressionLevel para especificar un nivel de compresión. Esta opción acepta un valor entero entre -1 y 9:
-1: (por defecto). zlib utiliza su nivel de compresión por defecto (normalmente
6).0: Sin compresión.
1: La velocidad más rápida, pero la compresión más baja.
9: Mejor compresión pero velocidad más lenta.
El siguiente ejemplo de código especifica el algoritmo de compresión zlib y un valor de 1 para la opción zlibCompressionLevel:
client = pymongo.MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>", compressors = "zlib", zlibCompressionLevel=1)
uri = ("mongodb://<db_username>:<db_password>@<hostname>:<port>/?" "compressors=zlib" "zlibCompressionLevel=1") client = pymongo.MongoClient(uri)
client = pymongo.AsyncMongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>", compressors = "zlib", zlibCompressionLevel=1)
uri = ("mongodb://<db_username>:<db_password>@<hostname>:<port>/?" "compressors=zlib" "zlibCompressionLevel=1") client = pymongo.AsyncMongoClient(uri)
Documentación de la API
Para aprender más sobre cualquiera de los métodos o tipos discutidos en esta guía, consulta la documentación MongoClient API.