Hay muchas formas diferentes de consultar datos en Servidor Couchbase. Puede realizar búsquedas directas de documentos
basándose en su clave, puede consultar vistas o incluso escribir consultas N1QL.
Cuando se trata de obtener datos, realizar una búsqueda basada en una clave de documento siempre será más rápido que realizar una consulta.
¿Qué ocurre cuando hay que buscar un puñado de claves? Podrías recorrerlas fácilmente
utilizando uno de los SDK, pero eso supone una nueva solicitud de red por operación. ¿Sabías que puedes hacer lotes de
estas claves en una única solicitud?
Me lo han preguntado varias veces, así que he pensado que sería útil escribir sobre cómo conseguirlo. Vamos a
utilizar el escenario de que tenemos 1000 claves que necesitamos buscar en una aplicación Node.js. Para ello, nuestro
podría tener el siguiente aspecto:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
var Couchbase = requiere("couchbase"); var grupo = nuevo Couchbase.Grupo("couchbase://localhost"); var cubo = grupo.openBucket("por defecto", ""); cubo.getMulti(["234adsf", "bab7", "fe3f9921"], función(error, resultados) { si(error) { consola.registro(error + "no se ha podido recuperar"); } para(var clave en resultados) { si(resultados.hasOwnProperty(clave)) { si(resultados[clave].error) { consola.registro("`" + clave + "`: " + JSON.stringify(resultados[clave])); } } } proceso.salida(0); }); |
En el ejemplo anterior nos conectamos a una instancia de Couchbase que se ejecuta localmente y abrimos el archivo por defecto
cubo. La intención es hacer una única petición para obtener tres documentos diferentes en función de su clave. Este
es posible gracias a getMulti
en Node.js. Si las claves del documento no existen en
Couchbase o hay algún otro problema, se devolverán errores en los resultados.
Si te interesa el tema del rendimiento, Kirk Kirkconnel escribió una entrada en su blog en la que explica el
diferencias. Se puede encontrar aquí. Usted
también puede consultar información sobre las operaciones por lotes en el sitio web de Couchbase documentación.
[...] Si miras el EXPLAIN de la consulta anterior notarás que no se usó ningún índice en la consulta. El tipo de consulta anterior sería útil si conocieras las claves que quieres obtener y quisieras un rendimiento increíblemente rápido similar a como se hizo en un artículo anterior que escribí titulado, Obteniendo Múltiples Documentos por Clave en una Única Operación con Node.js. [...]