¿Qué son los índices de cobertura?
En el mundo relacional/SQL se puede ahorrar tiempo de consulta mediante el uso juicioso de índices: si se tiene un índice en cada columna que toca la consulta, el SGBD puede devolver los resultados sin bucear en las propias tablas.
Se trata de índices de cobertura.
¿Qué son los índices de cobertura en Couchbase?
Couchbase Server 4.1 trae índices de cobertura a N1QL. Si tienes un índice que cubre todos los datos requeridos por tu consulta N1QL, Couchbase Server puede devolver los datos directamente desde ese índice. Esto reduce al menos una, y posiblemente varias, lecturas de documentos del proceso de consulta.
¿Cómo funciona?
Cuando envías una consulta N1QL a Couchbase, ésta pasa por los siguientes pasos:
- Analiza la consulta, lo que hace y crea un plan de consulta.
- Comprueba los índices correspondientes.
- Obtiene las claves de los documentos que contienen los resultados y, a continuación, obtiene los documentos propiamente dichos.
- Extrae los datos pertinentes de esos documentos para crear el resultado.
- Devuelve el resultado a su aplicación.
Con un índice de cobertura, todos los datos del resultado se encuentran en el propio índice, por lo que se eliminan los pasos 3 y 4.
¿Cómo se utilizan los índices de cobertura?
No cambia nada en la forma de escribir las consultas. Se trata más bien de cómo configurar los índices. Un único índice - GSI o vista - debe cubrir cada clave JSON que toque tu consulta.
¿Tienes un ejemplo?
Supongamos que almacenamos perfiles de clientes. Podrían tener este aspecto:
{
"Nombre": "Sherlock Holmes",
"Dirección": "221b Baker Street",
"ciudad": "Londres",
"country": "REINO UNIDO",
"newsletter": true,
"joinedDate": 1168041600
}
Si quisiéramos encontrar el nombre y la ciudad de todas las personas suscritas a nuestro boletín, podríamos escribir una consulta N1QL como ésta:
|
1 |
SELECCIONE nombre, ciudad DESDE `clientes` DONDE boletín=verdadero; |
Sin un índice de cobertura, esta consulta sacaría nombre y ciudad de nuestros registros de clientes haciendo una búsqueda de esos documentos.
Podemos crear un índice de cobertura para esta consulta de la siguiente manera:
|
1 |
CREAR ÍNDICE boletín_subs EN `clientes`(nombre, ciudad, boletín) USO DE GSI; |
Ahora la consulta puede satisfacerse íntegramente a partir del índice.
¿Dónde puedo leer más?
Hay un sección sobre índices de cobertura en la documentación de Couchbase Server.