Couchbase y los diferentes SDKs del servidor ofrecen muchas formas diferentes de consultar datos. Puedes escribir consultas N1QL, consultas de vista, o incluso puedes buscar documentos por su clave. De las tres formas posibles de obtener datos, hacer búsquedas basadas en claves definidas siempre será más rápido que ejecutar una consulta que utilice un índice.

¿Qué ocurre cuando se tienen varias claves de documento y se necesita obtener todos los documentos correspondientes? Lo primero que se nos ocurriría sería realizar un bucle a través de estas claves, realizando una operación de búsqueda en cada iteración del bucle. Eso funciona, pero al precio de una nueva petición de red por cada búsqueda. ¿Existe un método mejor? Por supuesto.

Lo que puedes hacer es una operación masiva contra la base de datos. He visto esta pregunta numerosas veces e incluso escribió un tutorial sobre cómo realizar dicha tarea en Node.js. Sin embargo, ¿qué pasa si no eres un desarrollador de JavaScript? Esta vez vamos a ver cómo realizar una solicitud por lotes utilizando el lenguaje de programación Go.

Tomemos como ejemplo la siguiente aplicación Golang:

En la aplicación anterior tenemos un Persona que representa cada uno de nuestros documentos Couchbase. Después de establecer una conexión con el cluster de Couchbase y abrir un bucket en particular creamos una porción de operaciones masivas llamada artículos.

Cada clave que queramos buscar en nuestra petición irá en este campo artículos y el valor resultante también se almacenará en él.

Utilización de la Visite podemos ejecutar la operación masiva, vigilando que no se produzcan errores. En este caso los errores no son claves perdidas, son errores de ejecución. Después de ejecutar la petición, podemos recorrer cada elemento de la lista artículos slice. Si el valor de un elemento concreto es igual al de un elemento inicializado, pero vacío Persona significa que la clave no fue encontrada en el servidor. De lo contrario, sólo vamos a imprimir la clave y el documento encontrado.

Si te interesa el tema del rendimiento, Kirk Kirkconnel escribió una entrada en su blog que explica las diferencias. Puede encontrarlo en aquí. También puede consultar información sobre las operaciones por lotes en el sitio web de Couchbase documentación.

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