¿Alguna vez has creado una aplicación en la que necesitabas guardar un documento en Couchbase y luego consultar inmediatamente ese documento creado? Me pasa todo el tiempo cuando estoy desarrollando. Tomemos, por ejemplo, la adición de nuevos datos en una lista donde cada elemento de la lista es un nuevo documento. En muchos casos, querrás actualizar la interfaz de usuario que muestra la lista inmediatamente después de añadirla. El problema aquí es que el documento que acabas de crear puede no aparecer en los resultados de la consulta. Esto se debe a que los indexadores de Couchbase pueden no haber procesado las últimas mutaciones contra el Bucket de Couchbase.

Vamos a ver cómo definir nuestra propia consistencia de escaneo dentro de una aplicación Node.js que producirá resultados variables en nuestras consultas N1QL de Couchbase.

La definición de la consistencia del escaneo en una aplicación será similar independientemente de la tecnología de programación utilizada. Para este ejemplo en particular vamos a usando Node.js tanto con N1QL como con Ottoman.js.

Antes de seguir adelante, se supone que tienes Couchbase instalado y configurado para N1QL. Esto significa que tienes al menos un índice listo para funcionar, aunque sea un índice primario.

Definición de la Consistencia de Escaneo con Consultas N1QL

Lo primero de lo que nos vamos a preocupar es de las consultas relacionadas con N1QL. Echa un vistazo al siguiente fragmento de código JavaScript de Node.js:

Por defecto, el SELECCIONE es ilimitada. Esto significa que la consulta sólo devolverá los datos que estén indexados en ese momento, con lo que se obtendrá la respuesta más rápida posible. Recuerde, si nuestros nuevos datos no han sido indexados, no serán devueltos en los resultados.

Si quisiéramos esperar hasta que nuestros datos estuvieran indexados, podemos definir nuestra consistencia de escaneo haciendo lo siguiente:

Observe que hemos cambiado la coherencia en el fragmento anterior por SOLICITUD_PLUS en lugar de dejarlo sin límite. Esto significa que la consulta no se ejecutará hasta que se hayan procesado todas las mutaciones del Bucket.

¿Y si no utilizamos N1QL, sino Ottoman.js?

Definición de la coherencia de exploración con Ottoman.js

Ottoman es un poco diferente, pero las reglas se siguen aplicando porque cuando se utiliza el encontrar operador, N1QL se está utilizando bajo las cubiertas.

Eche un vistazo al siguiente fragmento de JavaScript:

El objetivo aquí es conseguir lo mismo que habíamos visto anteriormente. En lo anterior, estamos haciendo una consulta no limitada y sólo recibiremos los resultados que fueron procesados por el índice.

Esto se puede cambiar fácilmente de la siguiente manera:

En el código anterior, LOCAL coherencia es lo mismo que decir SOLICITUD_PLUS.

No está tan mal, ¿verdad?

Conclusión

Acabas de ver cómo definir tu propia consistencia de escaneo en Couchbase usando Node.js y N1QL u Ottoman. Por defecto las consultas son performance first, pero si necesitas hacer ajustes, al menos está disponible como opción.

Si desea obtener más información sobre la coherencia del escaneado y las opciones disponibles, consulte la página Documentación de Couchbase sobre el tema.

Autor

Publicado por Nic Raboy, Defensor del Desarrollador, Couchbase

Nic Raboy es un defensor de las tecnologías modernas de desarrollo web y móvil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y móvil más fácil de entender.

Dejar una respuesta