Descripción general del índice

En esta sección, se describe la indexación para la edición Enterprise de Cloud Firestore. De forma predeterminada, la edición Enterprise de Cloud Firestore no crea ningún índice. Para mejorar el rendimiento de la base de datos, crea índices para las consultas que se usan con mayor frecuencia.

Los índices tienen un gran impacto en el rendimiento de una base de datos. Si existe un índice para una consulta, la base de datos puede devolver resultados de manera eficiente, ya que reduce la cantidad de datos que se deben analizar y el trabajo necesario para ordenar los resultados. Sin embargo, las entradas de índice aumentan los costos de almacenamiento y la cantidad de trabajo que se realiza durante una operación de escritura en los campos indexados.

Diferencias entre las ediciones

En la siguiente tabla, se proporciona una descripción general de las principales diferencias de indexación entre la edición Standard de Cloud Firestore y la edición Enterprise de Cloud Firestore.

Función Edición Standard de Cloud Firestore Edición Enterprise de Cloud Firestore
Requisito de indexación Todas las consultas requieren índices para ejecutarse. En general, las consultas son eficientes debido a este requisito. Los índices no son obligatorios para las consultas. Es posible realizar lecturas sin indexar, lo que elimina un obstáculo para la creación de prototipos.
Indexación automática De forma predeterminada, los índices de campo único se crean automáticamente para todos los campos dentro de los documentos. No hay índices automáticos. Debes administrar todos los índices de forma manual.
Densidad de indexación Es disperso de forma predeterminada. Un documento de un grupo de colecciones solo se indexa si contiene un valor para cada campo indexado. No es disperso de forma predeterminada. Se indexan todos los documentos del grupo de colecciones. Los campos indexados sin un valor se establecen en NULL. El comportamiento se puede cambiar con la opción de índice disperso.
Tipos y opciones de índices admitidos
  • De campo único (índices automáticos)
  • Índices compuestos
  • Alcance de la colección o del grupo de colecciones
  • Array-contains
  • Vector
  • Alcance de la colección o del grupo de colecciones
  • Densidad del índice disperso o no disperso
  • Array-contains
  • Vector
  • Índices únicos

Definición y estructura de los índices

Un índice consta de lo siguiente:

  • ID de una colección
  • una lista de los campos de la colección determinada
  • un orden, ya sea ascendente o descendente, para cada campo

Un índice también puede habilitar las opciones disperso o único.

Orden de los índices

El orden y la dirección de clasificación de cada campo definen de forma única el índice. Por ejemplo, los siguientes índices son distintos y no se pueden intercambiar:

Colección Campos
cities país (ascendente), población (descendente)
cities población (descendente), país (ascendente)

Cuando crees un índice para admitir una consulta, incluye los campos en el mismo orden que en la consulta.

Densidad de indexación

De forma predeterminada, las entradas de índice almacenan datos de todos los documentos de una colección. Esto se conoce como índice no disperso. Se agregará una entrada de índice para un documento, independientemente de si el documento contiene alguno de los campos especificados en el índice. Los campos no existentes se tratan como si tuvieran un valor NULL cuando se generan entradas de índice. Para cambiar este comportamiento, puedes definir el índice como un índice disperso.

Índices dispersos

En un índice disperso, solo se indexan los documentos de la colección que contienen un valor (incluido el nulo) para al menos uno de los campos indexados. Un índice disperso reduce los costos de almacenamiento y puede mejorar el rendimiento.

Índices únicos

Establece la opción de índice único para aplicar valores únicos a los campos indexados. En el caso de los índices en varios campos, cada combinación de valores debe ser única en todo el índice. La base de datos rechaza cualquier operación de actualización o inserción que intente crear entradas de índice con valores duplicados. Si los datos de los campos indexados contienen valores duplicados y se intenta crear un índice único, la compilación del índice falla y se muestra un mensaje de error en los detalles de la operación.

Campos ausentes en un índice único

Si insertas un documento con campos faltantes para el índice único, el índice establece valores de null para los campos faltantes. La entrada de índice resultante debe ser única o la operación fallará.

Por ejemplo, con este índice:

Colección Campos indexados Alcance de la consulta
cities Nombre (en orden ascendente) Colección

Si agregas el documento {"abbreviation": "LA"} a la colección, el índice único crea una entrada con name establecido en null. Si luego intentas agregar el documento {"abbreviation": "NYC"}, la operación falla porque la entrada resultante para el índice único es la misma.

El mismo comportamiento se aplica a los índices únicos con varios campos. Cuando se crea o actualiza un documento, los campos indexados faltantes se establecen en null y la entrada de índice resultante debe ser única en el índice.

Soluciona problemas de errores en la compilación de índices

Es posible que encuentres errores en la compilación de los índices cuando los administres. Una operación de indexación puede fallar si la base de datos encuentra un problema con los datos. Las operaciones de indexación pueden fallar por los siguientes motivos:

  • Alcanzaste un límite de indexación. Por ejemplo, es posible que la operación haya alcanzado la cantidad máxima de entradas permitidas en un índice de un documento. Si falla la creación de los índices, aparecerá un mensaje de error. Si no alcanzaste un límite de índices, reintenta la operación de índices.
  • Si estableces la opción de índice único, los datos de los campos indexados crearán entradas de índice duplicadas. Para continuar, quita las combinaciones duplicadas de valores de los datos.

¿Qué sigue?

Obtén más información para crear y administrar índices.