Edits of

Copia de la partitura original de Haendel

Foto cortesía de Adrian Pallant con permiso bajo licencia CC BY-SA 2.0

La U de CRUD

En este post anterior, escribí sobre cómo empezar con las operaciones CRUD básicas en Couchbase Lite en Android. En esta nota rápida, quiero profundizar un poco más en la actualización de documentos. Esto abrirá la puerta a todo un nuevo conjunto de cuestiones. Vamos a echar un vistazo dentro.

Couchbase Lite es una base de datos orientada a documentos. Los documentos se almacenan como JSON objetos. Como se describe en el post anterior, es fácil trabajar directamente con el contenido del documento. Se almacenan en el objeto documento como un mapa. Eso encaja muy bien con las formas nativas de manipular los contenidos.

Modificar el enfoque directo

Cuando recuperas un documento, obtienes una copia que contiene una versión inmutable de los datos. Puedes hacer frente a esto copiando el mapa en un objeto map separado, y luego sobrescribiendo el mapa antiguo. Esto se muestra en este fragmento de código:

Esto en realidad crea un nuevo revisión del documento, utilizando el nuevo cuerpo del documento.

También puede utilizar crearRevisión() para obtener un nuevo UnsavedRevision. Esto devuelve una copia de la última revisión, pero con contenidos mutables. Puede entonces manipular el mapa de propiedades directamente. Los cambios se confirman llamando a guardar(). Este fragmento de código tiene el mismo efecto final que el anterior:

¿Revisiones, dice?

Eso es estupendo para muchas aplicaciones. Aún no he hablado mucho de las revisiones. Tienes la idea de que un documento está cambiando. Couchbase Lite tiene una noción de revisiones de documentos para ir junto con esos cambios.

Sin embargo, las revisiones van más allá del mero seguimiento de un conjunto lineal de cambios. Lo que no salta a la vista en ejemplos como los que he mostrado es la posibilidad de conflictos. Los conflictos ocurren cuando más de una actualización de una revisión específica de un documento es enviada a la base de datos.

Piénsalo como si fuera un documento del mundo real. Tal vez escribas un artículo (o una entrada de blog) y lo envíes a varias personas para que lo comenten. Recibes una serie de comentarios y haces algunos cambios. Luego recibes otra serie de comentarios, basados en el mismo documento original. Si lo haces con la frecuencia suficiente, es casi seguro que algunos cambios se solapen. (Bueno, para los desarrolladores de software, probablemente el mejor ejemplo sea el de los conflictos de fusión al utilizar el control de código fuente). ¡Conflicto!

Actualizador de documentos

Tratar con conflictos de documentos, historial de revisiones, y demás, es más de lo que quiero tratar en este post. Pero podemos echar un vistazo a cómo ayuda Couchbase. Esta última aproximación a la actualización puede parecer exagerada, pero llegarás a apreciarla una vez que la resolución de conflictos entre en juego. Aquí está el código:

Vaya, esto parece mucho más complejo que los ejemplos anteriores. En realidad sólo es un poco más complicado. Esa estructura añadida acaba facilitando mucho las cosas. ¿Qué está pasando?

Esta construcción permite a Couchbase Lite encargarse del trabajo sucio de manejar conflictos. Se define un callback basado en el método Actualizador de documentos interfaz. Couchbase Lite se encargará de crear un nuevo UnsavedRevision como en el ejemplo anterior. Tu método entonces necesita hacer los cambios que quieras. Al volver, Couchbase Lite automáticamente intenta guardar el documento. Si detecta un conflicto Couchbase Lite simplemente llama a actualizar() de nuevo. Volver verdadero si ha realizado cambios que desea guardar, o falso de lo contrario.

Si quieres saber más sobre revisiones, colisiones y resolución de conflictos, echa un vistazo a nuestra guía aquí

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

Autor

Publicado por Hod Greeley, Defensor del Desarrollador, Couchbase

Hod Greeley es desarrollador de Couchbase y vive en Silicon Valley. Tiene más de dos décadas de experiencia como ingeniero de software y director de ingeniería. Ha trabajado en una variedad de campos de software, incluyendo física computacional y química, seguridad informática y de redes, finanzas y móviles. Antes de unirse a Couchbase en 2016, Hod dirigió las relaciones con desarrolladores para móviles en Samsung. Hod es doctor en física química por la Universidad de Columbia.

2 Comentarios

  1. [...] Así que, en pocas palabras, tenemos un ejemplo tanto de creación como de actualización de documentos. Esta no es la forma preferida de actualizar, aunque es suficiente en muchos casos. Puede leer más sobre actualizaciones aquí. [...]

Dejar una respuesta