Inicio » MongoDB » “time to live” or “TTL” en mongodb

“time to live” or “TTL” en mongodb

Es una opción que permite el borrado de documentos de forma automática después de un determinado número de segundos o en una fecha determinada.
Todas las colecciones con un índice que utilice la opción expireAfterSeconds tienen usePowerOf2Sizes activado. Los usuarios no puede modificar esta opción. Si está activado usePowerOf2Sizes, MongoDB reserve más espacio en disco. Esto permite evitar la fragmentación de espacio que provoca los borrados frecuentes.
Para activar TTL en un colección, utilice el método ensureIndex(). TTL indeces permite queries cómo hacen los índices normales. Se puede utilizar los TTl inicies para dar por terminados los documentos en una de las siguientes formas:
• Borrar todos los documentos después de cierto número de segundos después de su creación
• Especificar una fecha de vencimiento explicita.
Borrar todos los documentos después de cierto número de segundos después de su creación
Se crea un índice con un campo tipo fecha y un valor en el campo expireAfterSeconds. El documento se borrara cuando se hayan vencido el número de segundos de expireAfterSeconds.

db.log_events.ensureIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )

Se añade un campo a la colección con el campo createdAt con la fecha de hoy:

db.log_events.insert( {
 "createdAt": new Date(),
 "logEvent": 2,
 "logMessage": "Success!"
} )

MongoDB borrara automáticamente el documento de la colección log_events cuando el campo createdAt sea mayor que el número de segundos especificados en expireAfterSeconds.
Caducidad de documentos en un determinado momento.

Para caducar documentos en tiempo determinado se tiene que crear un campo tipo fecha y especificar el campo expireAfterSeconds a cero. Para cada documento de la colección, dale un valor a campo indexado con el momento que el documento debe caducar.
Por ejemplo:

db.log_events.ensureIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )
db.log_events.insert( {
 "expireAt": new Date('July 22, 2013 14:00:00'),
 "logEvent": 2,
 "logMessage": "Success!"
} )

MongoDB borrara automáticamente los documentos que tengan un valor superior al número de segundos especificados en expireAfterSeconds, en este caso 0 segundos. Así como cuando la fecha especificada expireAt venza.
Más información:
http://docs.mongodb.org/manual/tutorial/expire-data/

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s