O que são índices de cobertura?
No mundo relacional/SQL, é possível economizar tempo de consulta com o uso criterioso de índices: se você tiver um índice em cada coluna que a consulta tocar, o DBMS poderá retornar os resultados sem ter que mergulhar nas próprias tabelas.
Esses são índices de cobertura.
O que são índices de cobertura no Couchbase?
O Couchbase Server 4.1 traz os índices de cobertura para o N1QL. Se você tiver um índice que cubra todos os dados exigidos pela sua consulta N1QL, o Couchbase Server poderá retornar os dados diretamente desse índice. Isso elimina pelo menos uma, e possivelmente várias, leituras de documentos do processo de consulta.
Como isso funciona?
Quando você envia uma consulta N1QL ao Couchbase, ela passa pelas seguintes etapas:
- Analisa sua consulta, analisa o que ela faz e, em seguida, cria um plano de consulta.
- Verifica os índices relevantes.
- Obtém as chaves dos documentos que contêm os resultados e, em seguida, busca os próprios documentos.
- Extrai os dados relevantes desses documentos para criar o resultado.
- Retorna o resultado para seu aplicativo.
Com um índice de cobertura, todos os dados do resultado estão no próprio índice, portanto, você elimina as etapas 3 e 4.
Como uso os índices de cobertura?
Nada muda na forma como você escreve suas consultas. Em vez disso, o que importa é como você configura os índices. Um único índice - GSI ou visualização - deve abranger todas as chaves JSON que sua consulta tocar.
Tem um exemplo?
Digamos que estejamos armazenando perfis de clientes. Eles podem ter a seguinte aparência:
{
"nome": "Sherlock Holmes",
"endereço": "221b Baker Street",
"city" (cidade): "London",
"country": "UK",
"newsletter": true,
"joinedDate": 1168041600
}
Se quiséssemos encontrar o nome e a cidade de todos os assinantes do nosso boletim informativo, poderíamos escrever uma consulta N1QL como esta:
1 |
SELECIONAR nome, cidade DE `clientes` ONDE boletim informativo=verdadeiro; |
Sem um índice de cobertura, essa consulta extrairia nome e cidade de nossos registros de clientes, fazendo uma consulta a esses documentos.
Podemos criar um índice de cobertura para essa consulta da seguinte forma:
1 |
CRIAR ÍNDICE newsletter_subs ON `clientes`(nome, cidade, boletim informativo) USO GSI; |
Agora, a consulta pode ser satisfeita inteiramente a partir do índice.
Onde posso ler mais?
Há um seção sobre cobertura de índices na documentação do Couchbase Server.