

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Creación de índices
<a name="index-creation"></a>

La compilación de índices en Amazon DocumentDB requiere tomar una serie de decisiones:
+ ¿Con qué rapidez debe completarse?
+ ¿Es posible que no se pueda acceder a la colección mientras se realiza la compilación?
+ ¿Cuánta potencia de cómputo de una instancia se puede asignar a la compilación?
+ ¿Qué tipo de índice se debe crear?

Esta sección le ayuda a responder a estas preguntas y proporciona los comandos y ejemplos de supervisión para crear un índice de Amazon DocumentDB en su colección de clústeres basada en instancias.

## Directrices
<a name="index-creation-guidelines"></a>

Las siguientes pautas incluyen los límites básicos y las desventajas de configuración a la hora de crear nuevos índices:
+ **Compatibilidad con la versión de Amazon DocumentDB**: si bien la indexación de un solo proceso de trabajo se admite en todas las versiones de Amazon DocumentDB, la indexación de varios procesos de trabajo solo se admite en las versiones 4.0 y 5.0 de Amazon DocumentDB.
+ **Compensación de rendimiento**: aumentar el número de procesos de trabajo en el proceso de creación del índice aumenta la utilización de la CPU y la E/S de lectura en la instancia principal de la base de datos Amazon DocumentDB. Los recursos necesarios para crear un índice nuevo no estarán disponibles para su carga de trabajo en ejecución.
+ **Clústeres elásticos**: la indexación em paralelo no se admite en los clústeres elásticos de Amazon DocumentDB.
+ **Número máximo de procesos de trabajo**: el número máximo de procesos de trabajo que puede configurar depende del tamaño de la instancia principal en el clúster de base de datos. Es la mitad del número total de vCPU de la instancia principal del clúster de base de datos. Por ejemplo, puede ejecutar un máximo de 32 procesos de trabajo en una instancia db.r6g.16xlarge que tenga 64 vCPU.

**nota**  
La creación de índices en paralelo es compatible con las instancias 2xlarge y superiores.
+ **Número mínimo de procesos de trabajo**: el número mínimo de procesos de trabajo que puede configurar es uno. La configuración predeterminada para la creación de índices en clústeres basados en instancias es de dos procesos de trabajo. Sin embargo, puedes reducir el número de trabajadores a uno mediante la opción «hilos de trabajo». Esto ejecutará el proceso con un solo proceso de trabajo.
+ **Compresión de índices**: Amazon DocumentDB no admite la compresión de índices. Los tamaños de datos para índices pueden ser superiores que cuando utiliza otras opciones.
+ **Indexación de varias colecciones**: la mitad de las vCPU de la instancia principal del clúster de base de datos se pueden usar para los procesos de trabajo configurados que realizan la creación de índices en varias colecciones.
+ **Tipos de índices**: consulte [Tipos de índices](index-types.md) la lista de tipos de índices admitidos en Amazon DocumentDB.

## Tipos de creación de índices
<a name="index-creation-build-types"></a>

Los cuatro tipos de compilaciones de índices son:
+ **Primer plano:** la compilación del índice en primer plano bloquea todas las demás operaciones de la base de datos de la colección en la que se crea el índice, hasta que se complete la creación del índice. La compilación en primer plano de Amazon DocumentDB consta de cinco etapas.
+ **Primer plano (único):** las compilaciones de índices en primer plano de un solo documento (únicas) bloquean otras operaciones de la base de datos como las compilaciones normales en primer plano. A diferencia de la compilación básica en primer plano, la compilación única utiliza una etapa adicional (clasificación de claves 2) para buscar claves duplicadas. La compilación en primer plano (única) consta de seis etapas.
+ **En segundo plano:** la creación del índice en segundo plano permite que otras operaciones de la base de datos se ejecuten en primer plano mientras se crea el índice. La compilación de fondo de Amazon DocumentDB consta de ocho etapas.
+ **Fondo (único):** las compilaciones de índices de fondo de un solo documento (único) permiten que otras operaciones de la base de datos se ejecuten en primer plano mientras se crea el índice. A diferencia de la compilación básica de fondo, la compilación única utiliza una etapa adicional (clasificación de claves 2) para buscar claves duplicadas. La compilación de fondo (única) se compone de nueve etapas.

El tipo de construcción del índice predeterminado es en primer plano.

Para crear un índice en segundo plano, añada el parámetro «background»: true al crear el índice.

## Introducción
<a name="index-creation-getting-started"></a>

Para iniciar la creación de índices en una colección, utilice el comando CreateIndexes. De forma predeterminada, el comando ejecutará dos elementos de trabajo paralelos, lo que aumentará dos veces la velocidad del proceso de creación del índice.

Por ejemplo, el siguiente proceso de comandos muestra cómo crear un índice para el campo «nombre\_usuario» de un documento y cómo aumentar la velocidad del proceso de indexación a cuatro elementos de trabajo:

1. Cree índices en segundo plano utilizando dos elementos de trabajo paralelos en el clúster:

   ```
   db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx", "background":true }]})
   ```

1. Para optimizar la velocidad del proceso de creación del índice, puede especificar el número de trabajadores mediante la opción «hilos de trabajo» («workers»:<number>) del comando db.runCommand CreateIndexes.

   Aumente la velocidad del proceso a cuatro procesos de trabajo paralelos:

   ```
   db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx", "workers":4}]})
   ```

**nota**  
Cuanto mayor sea el número de procesos de trabajo, más rápido avanzará la creación del índice. Sin embargo, cuanto mayor sea el número de procesos de trabajo, mayor será el aumento de la carga en las vCPU y la E/S de lectura de la instancia principal. Asegúrese de que el clúster esté lo suficientemente aprovisionado para soportar el aumento de la carga sin degradar otras cargas de trabajo.

## Estado del progreso de indexación
<a name="index-creation-progress-status"></a>

El proceso de creación de índices funciona inicializando, escaneando las colecciones, clasificando las claves y, finalmente, insertándolas mediante un generador de índices. El proceso tiene hasta seis etapas cuando se ejecuta en primer plano y hasta nueve etapas cuando se ejecuta en segundo plano. Puede ver las métricas de estado, como el porcentaje de finalización, el número total de bloques de almacenamiento escaneados, las claves clasificadas y las claves insertadas, etapa por etapa.

Supervise el progreso del proceso de indexación mediante el comando db.currentOp () del shell mongo. Una finalización del 100 % de la última etapa indica que todos los índices se han creado correctamente:

```
db.currentOp({"command.createIndexes": { $exists : true } })
```

**nota**  
La visualización del estado del progreso de la indexación se admite solamente en Amazon DocumentDB 5.0.

## Etapas de compilación del índice
<a name="index-creation-build-stages"></a>


| Etapa | Primer plano | Primer plano (único) | Introducción | Fondo (único) | 
| --- | --- | --- | --- | --- | 
| Inicializando | 1 | 1 | 1 | 1 | 
| creando índice: inicializando | 2 | 2 | 2 | 2. | 
| creando índice: escaneando colección | 3 | 3 | 3 | 3 | 
| creando índice: clasificando claves 1 | 4 | 4 | 4 | 4 | 
| creando índice: clasificando claves 2 |  | 5 |  | 5 | 
| creando índice: insertando claves | 5 | 6 | 5 | 6 | 
| validando: escaneando índice |  |  | 6 | 7 | 
| validando: clasificando tuplas |  |  | 7 | 8 | 
| validando: escaneando colección |  |  | 8 | 9 | 
+ **inicializando**: createIndex está preparando el generador de índices. Esta fase debe ser muy breve.
+ **creando índice: inicializando**: el generador de índices se está preparando para crear el índice. Esta fase debe ser muy breve.
+ **creando índice: escaneando colección**: el generador de índices está escaneando la colección para recopilar las claves del índice. La unidad de medida son los «bloques».

**nota**  
Si hay más de un elemento de trabajo configurado para la compilación del índice, se mostrará en esta etapa. La etapa de «recopilación de escaneos» es la única etapa en la que se utilizan varios trabajadores durante el proceso de creación del índice. En todas las demás etapas se mostrará un único proceso de trabajo.
+ **creando índice: clasificando claves 1**: el generador de índices está clasificando las claves de índice recopiladas. La unidad de medida son las «claves».
+ **creando índice: clasificando claves 2**: el generador de índices está clasificando las claves de índice recopiladas que corresponden a tuplas muertas. Esta fase solo existe para la compilación de índices únicos. La unidad de medida son las «llaves».
+ **creando índice: insertando claves**: el generador de índices está insertando claves de índice en el nuevo índice. La unidad de medida son las «llaves».
+ **validando: escaneando índice**: createIndex está escaneando el índice para buscar las claves que deben validarse. La unidad de medida son los «bloques».
+ **validando: clasificando tuplas**: createIndex está ordenando el resultado de la fase de escaneo del índice.
+ **validando: escaneando colección**: createIndex está escaneando la colección para validar las claves de índice encontradas en las dos fases anteriores. La unidad de medida son los «bloques».

## Ejemplo de salida de compilación del índice
<a name="index-creation-build-output"></a>

En el siguiente ejemplo de salida (creación del índice en primer plano), se muestra el estado de la creación del índice. El campo «msg» resume el progreso de la construcción al indicar la etapa y el porcentaje de finalización de la construcción. El campo «trabajadores» indica el número de trabajadores utilizados durante esa etapa de la creación del índice. El campo «progreso» muestra los números reales utilizados para calcular el porcentaje de finalización.

**nota**  
Los campos IndexBuildName «actual», «msg» y «progreso» no son compatibles con la versión 4.0 de Amazon DocumentDB.

```
{
    "inprog" : [{
    … 
        "command": {
            "createIndexes": "test",
            "indexes": [{
                "v": 2,
                "key": {
                    "user_name": 1
                },
                "name": "user_name_1"
            }],
            "lsid": {
                "id": UUID("094d0fba-8f41-4373-82c3-7c4c7b5ff13b")
            },
            "$db": "test"
        },
        "currentIndexBuildName": user_name_1,
        "msg": "Index Build: building index number_1, stage 6/6 building index: 656860/1003520 (keys) 65%",
        "workers": 1,
        "progress": {
            "done": 656861,
            "total": 1003520
        },
    … 
    ],
 
    "ok" : 1
}
```

## Recursos para la resolución de problemas
<a name="index-creation-troubleshooting"></a>

Consulte los siguientes recursos para solucionar problemas de creación de índices:
+ [La compilación del índice falla](troubleshooting.index-creation.md#troubleshooting.index-build-fails)
+ [Problemas de latencia en la creación del índice en segundo plano y falla](troubleshooting.index-creation.md#troubleshooting.background-index-build-fails)