Visão geral do índice

Esta seção descreve a indexação da edição Enterprise do Cloud Firestore. A edição Enterprise do Cloud Firestore não cria índices por padrão. Para melhorar o desempenho do banco de dados, crie índices para as consultas mais usadas.

Os índices têm um grande impacto no desempenho de um banco de dados. Se houver um índice para uma consulta, o banco de dados poderá retornar resultados de maneira eficiente, reduzindo a quantidade de dados que precisam ser verificados e o trabalho necessário para classificar os resultados. No entanto, as entradas de índice aumentam os custos de armazenamento e a quantidade de trabalho realizado durante uma operação de gravação em campos indexados.

Diferenças entre as edições

A tabela a seguir oferece uma visão geral das principais diferenças de indexação entre a edição Standard e a edição Enterprise do Cloud Firestore.

Recurso Edição Standard do Cloud Firestore Edição Enterprise do Cloud Firestore
Requisito de indexação Todas as consultas exigem índices para serem executadas. As consultas geralmente têm bom desempenho devido a esse requisito. Os índices não são necessários para consultas. É possível fazer leituras não indexadas, removendo uma barreira para a criação de protótipos.
Indexação automática Por padrão, os índices de campo único são criados automaticamente para todos os campos nos documentos. Sem índices automáticos. Você precisa gerenciar todos os índices manualmente.
Densidade de índice É esparsa por padrão. Um documento em um grupo de coleções só é indexado se ele tiver um valor para cada campo indexado. Não esparsa por padrão. Todos os documentos no grupo de coleções são indexados. Os campos indexados sem um valor são definidos como NULL. O comportamento pode ser mudado com a opção de índice esparso.
Tipos e opções de índice compatíveis
  • Campo único (índices automáticos)
  • Índices compostos
  • Escopo da coleção ou do grupo de coleções
  • Matriz contém
  • Vetor
  • Escopo da coleção ou do grupo de coleções
  • Densidade de índice não esparsa ou esparsa
  • Matriz contém
  • Vetor
  • Índices exclusivos

Definição e estrutura dos índices

Um índice consiste no seguinte:

  • um ID de coleção
  • uma lista de campos na coleção especificada
  • uma ordem, crescente ou decrescente, para cada campo

Um índice também pode ativar as opções esparso ou único.

Ordenação de índice

A ordem e a direção de classificação de cada campo definem o índice de maneira exclusiva. Por exemplo, os índices a seguir são distintos e não podem ser trocados:

Coleção Campos
cidades país (ascendente), população (descendente)
cidades population (ascendente), country (descendente),

Ao criar um índice para oferecer suporte a uma consulta, inclua os campos na mesma ordem da consulta.

Densidade de índice

Por padrão, as entradas de índice armazenam dados de todos os documentos em uma coleção. Isso é conhecido como um índice não esparso. Uma entrada de índice será adicionada a um documento, independente de ele conter algum dos campos especificados no índice. Campos inexistentes são tratados como tendo um valor NULL ao gerar entradas de índice. Para mudar esse comportamento, defina o índice como esparso.

Índices esparsos

Um índice esparso indexa apenas os documentos da coleção que contêm um valor (inclusive nulo) para pelo menos um dos campos indexados. Um índice esparso reduz os custos de armazenamento e pode melhorar o desempenho.

Índices exclusivos

Defina a opção de índice exclusivo para aplicar valores únicos aos campos indexados. Para índices em vários campos, cada combinação de valores precisa ser exclusiva em todo o índice. O banco de dados rejeita qualquer operação de atualização e inserção que tente criar entradas de índice com valores duplicados. Se os dados dos campos indexados contiverem valores duplicados e você tentar criar um índice exclusivo, a criação do índice vai falhar com uma mensagem de erro nos detalhes da operação.

Campos ausentes em um índice exclusivo

Se você inserir um documento com campos ausentes para o índice exclusivo, o índice definirá valores null para os campos ausentes. A entrada de índice resultante precisa ser única, ou a operação vai falhar.

Por exemplo, com este índice:

Coleção Campos indexados Escopo da consulta
cidades Nome (crescente) Coleção

Se você adicionar o documento {"abbreviation": "LA"} à coleção, o índice exclusivo vai criar uma entrada com name definido como null. Se você tentar adicionar o documento {"abbreviation": "NYC"}, a operação vai falhar porque a entrada resultante para o índice exclusivo é a mesma.

O mesmo comportamento se aplica a índices exclusivos com vários campos. Ao criar ou atualizar um documento, os campos indexados ausentes são definidos como null, e a entrada de índice resultante precisa ser única no índice.

Resolver problemas de erros na criação do índice

Talvez você encontre erros na criação ao gerenciar seus índices. A indexação pode falhar se o banco de dados encontrar um problema com os dados. As operações de indexação podem falhar pelos seguintes motivos:

  • Você atingiu um limite de índice. Por exemplo, a operação pode ter atingido o número máximo de entradas de índice por documento. Se a criação do índice falhar, você vai receber uma mensagem de erro. Se você não atingiu um limite de índice, tente de novo a operação de indexação.
  • Você define a opção de índice exclusivo, e os dados dos campos indexados criam entradas de índice duplicadas. Para continuar, remova as combinações duplicadas de valores dos dados.

A seguir

Saiba como criar e gerenciar índices.