La caducidad de los documentos, a veces denominada "tiempo de vida" , o TTLha sido una característica de Servidor Couchbase desde hace algún tiempo. El nuevo lanzamiento de la versión 1.3 añade esta capacidad a Couchbase Móvil. Exploremos un poco.
Documentos y revisiones
Couchbase almacena los datos en forma de JSON documentos. Más precisamente, Couchbase almacena revisiones de documentos. Los detalles van más allá del alcance de lo que quiero enfocar aquí, pero las revisiones son importantes de entender. Puedes leer más sobre ellas en esta guía.
Borrar frente a purgar
En su base de datos local, sólo querrá almacenar lo que sea necesario. Supongamos que, por alguna razón, un documento concreto ya no es relevante. Digamos, por ejemplo, que se ha completado una transacción y el usuario ya no quiere conservar los detalles.
Puedes borrar el documento. Esto tiene dos efectos. Primero, el documento no desaparece del todo localmente. Couchbase Lite mantiene alguna información de revisión y reemplaza el documento con una entrada "lápida". Segundo, el hecho de que el documento ha sido borrado se propaga a cualquier réplica.
Así que borrar un documento no libera totalmente espacio en tu dispositivo. Y es posible que no desee eliminar el documento en otras copias de la base de datos. En nuestro ejemplo, puedes imaginar que el usuario no quiere los detalles de la transacción en su dispositivo actualmente, pero puede querer recuperarlos de nuevo más tarde.
Purgar un documento hace algo muy distinto. Purgar un documento elimina todo rastro del mismo, pero sólo en la base de datos local. Si está sincronizando su base de datos, puede ser útil pensar en un documento purgado como uno que, para empezar, nunca se replicó localmente. El documento sigue existiendo remotamente. De hecho, si la versión remota cambia, el documento podría aparecer en el feed de replicación, por lo que puede terminar con una copia local de nuevo.
Esto encaja perfectamente con nuestro ejemplo. A un usuario ya no le importan los detalles de una transacción, por lo que los registros se eliminan localmente, liberando espacio. Si algo cambia en los detalles de la transacción, una aplicación podría ver esos cambios pasados en una replicación, y alertar al usuario.
Expiración = Purga automática
Ahora, volvamos a la caducidad de los documentos. Le dije que otra información para poner la expiración en contexto. Cuando un documento expira, automáticamente se trata como si hubiera sido purgado.
Para que un documento caduque, hay que ponerle una fecha de caducidad. Aquí tienes un fragmento de código que muestra cómo hacerlo en Java.
1 2 3 4 5 6 7 8 9 10 11 |
Fecha ttl = nuevo Fecha(Sistema.currentTimeMillis() + 5000); Documento doc = base de datos.crearDocumento(); Mapa<Cadena, Objeto> propiedades = nuevo HashMap<Cadena, Objeto>(); propiedades.poner("foo", "bar"); pruebe { doc.putProperties(propiedades); } captura (CouchbaseLiteException e) { e.printStackTrace(); } doc.setFechaCaducidad(ttl); |
Puedes ver que estás estableciendo un tiempo absoluto, no uno relativo. Una vez transcurrido ese tiempo, el documento se comporta como si hubiera sido purgado.
Digo que se comporta como si hubiera sido purgado. Puede llevar un poco de tiempo procesar las cosas entre bastidores. El documento será realmente purgado, pero eso puede retrasarse brevemente por varias razones. No esperes una precisión de milisegundos.
Posdata
Consulte más recursos en nuestra portal para desarrolladores y síganos en Twitter @CouchbaseDev.
Puede enviar preguntas a nuestro foros. Y participamos activamente en Stack Overflow.
Puede seguirme personalmente en @HodGreeley