Trabajar con colecciones limitadas de MongoDB desde Java

Introducción

En MongoDB, normalmente no hay límite en el tamaño de una colección. Cuantos más documentos indexe, mayor será la colección. Sin embargo, para almacenamiento de registros o aplicaciones de alto rendimiento, una colección de tamaño ilimitado no siempre es una estructura ideal. En estos casos, a menudo es preferible usar un tipo diferente de colección llamada colección tapada. En este artículo, aprenderemos más sobre este tipo de colección especial y discutiremos las ventajas y desventajas de trabajar con colecciones con tapa MongoDB en Java.

Requisitos previos

Antes de echar un vistazo más de cerca a las colecciones con límites y a cómo funcionan, es importante revisar los requisitos del sistema. Para esta tarea, solo hay un requisito previo: Debe asegurarse de que MongoDB y el controlador Java de MongoDB se hayan configurado correctamente de antemano.

¿Qué son las colecciones con tapa MongoDB?

Como dijimos en la introducción, la mayoría de las colecciones de MongoDB no están limitadas en tamaño. Las colecciones con tapa, por otro lado, son colecciones circulares de tamaño fijo que siguen el orden de inserción. El término «circular» se refiere al hecho de que, cuando se alcanza el tamaño fijo asignado a una colección limitada, comenzará a eliminar automáticamente los documentos más antiguos de la colección y a sobrescribirlos para acomodar los nuevos documentos, al igual que un búfer circular. Otra característica clave de las colecciones con tapa es la preservación del orden de inserción; esto elimina la necesidad de un índice para devolver documentos en orden de inserción. En general, la estructura y funcionalidad de una colección limitada admite un alto rendimiento para las operaciones de creación, lectura y eliminación.

Casos de uso para una colección limitada de MongoDB

Aunque una colección estándar de MongoDB funcionará bien en la mayoría de las circunstancias, hay ciertos casos de uso en los que el rendimiento se puede optimizar utilizando una colección limitada en su lugar. Algunos casos de uso comunes incluyen:

  1. Información de registro
  2. Datos de caché
  3. Información de auditoría

En todos estos casos de uso, el rendimiento se optimiza mediante la eliminación de un índice, así como la naturaleza circular (primero en entrar, primero en salir) de la colección, que mantiene el orden y el uso del almacenamiento bajo control.

Cómo crear una colección limitada de MongoDB usando Java

Ahora que entendemos cómo funcionan las colecciones limitadas, veamos un código que las utiliza. El siguiente código muestra un ejemplo de cómo crear una colección limitada de MongoDB:

Están pasando muchas cosas en estas pocas líneas de código, así que echemos un vistazo más de cerca y repasemos lo que está sucediendo, línea por línea:

  1. En primer lugar, nos conectamos a una implementación de MongoDB que se ejecuta localmente.
  2. Una vez que la instancia del cliente de MongoDB está conectada a la implementación de MongoDB, usamos el método getDatabase() para acceder a la base de datos.
  3. Finalmente, usamos el método createCollection() para crear explícitamente una colección. Este método permite al usuario proporcionar varias opciones utilizando CreateCollectionOptions(). En este ejemplo, indicamos que la colección estaría limitada y que su tamaño en bytes sería de 256.

Después de que se ejecute el código, tendremos una nueva colección heroColl en la base de datos heroDB con un tamaño limitado de 256 bytes.

NOTA: MongoDB creará automáticamente un índice en el campo _id, pero este índice automático se puede desactivar para mejorar el rendimiento en inserciones.

Si decide desactivar la función de índice, el código se verá algo como esto:

1
2
3
4
db.createCollection («heroColl», nueva CreateCollectionOptions ()
.limitado (verdadero)
.autoIndex (false)
.Tamaño de los bytes(256));

Cómo insertar un Documento MongoDB en una Colección limitada de MongoDB usando Java

A continuación, veremos un ejemplo en el que insertamos un documento en nuestra colección limitada:

Después de ejecutar este código, podemos verificar la operación de inserción utilizando el Shell de MongoDB.

  • Primero, acceda a la base de datos «heroDB» :
1
2
uso heroDB
cambia a db heroDB
  • a Continuación, se encuentran los documentos dentro de la «heroCall» colección:
1
db.heroColl.encontrar().bastante()
  • Los resultados que se devuelven debe tener el siguiente aspecto:
1
2
3
4
5
6
7
{
«_id» : ObjectId («5ce4dc71a7986c1842433d0f»),
«heroName»: «Ethan»,
«age»: 25,
«nationality»: «American»,
«movie»: «mission impossible»
}

Ventajas de una colección con tapa MongoDB

Hay algunas ventajas clave al trabajar con colecciones con tapa MongoDB:

  1. Las colecciones limitadas de MongoDB proporcionan un mayor rendimiento porque las consultas no necesitan un índice para devolver documentos en orden de inserción.

  2. Una colección limitada solo realizará una actualización si el documento actualizado se ajusta al tamaño del documento original. Esto garantiza que los documentos no cambien su ubicación en el disco.

  3. El tamaño fijo y la naturaleza circular de una colección con tapa la convierten en una opción ideal para almacenar archivos de registro.

Desventajas de una colección con tapa MongoDB

Aunque hay varios beneficios de usar una colección con tapa, hay algunos inconvenientes a tener en cuenta:

  1. Una operación de actualización fallará si la actualización aumenta el tamaño original de una colección limitada de MongoDB.

  2. No puede eliminar documentos de una colección limitada. La eliminación se produce automáticamente cuando se alcanza el tamaño fijo y se elimina el documento más antiguo para dejar espacio para uno nuevo. Sin embargo, puede usar {emptycapped: theCollection} para eliminar todos los documentos de una colección limitada.

  3. No se puede fragmentar una colección con tapa de MongoDB.

Conclusión

Si acaba de familiarizarse con las colecciones limitadas en MongoDB, puede ver que son bastante diferentes de las colecciones estándar. Las colecciones con tapa ofrecen muchas ventajas para el almacenamiento de registros de alto volumen y las aplicaciones de alto rendimiento, por lo que es importante comprender cómo funcionan y saber cómo utilizarlas. Con las instrucciones proporcionadas en este tutorial, no tendrá problemas para trabajar con colecciones limitadas de MongoDB en sus propias aplicaciones.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.