setIndexCommitQuorumEl comando
setIndexCommitQuorumestablece el número mínimo de nodos portadores de datos que deben estar preparados para confirmar sus creaciones de índices locales antes de que el nodo primario confirme el índice.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Sintaxis
El comando tiene la siguiente sintaxis:
db.runCommand( { setIndexCommitQuorum: <string>, indexNames: [ <document> ], commitQuorum: <int> | <string>, comment: <any> } )
Campos de comandos
El comando toma los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| El nombre de la colección para la que se están construyendo los índices. | |
| Un arreglo de creaciones de índices en progreso para modificar. Cada elemento del arreglo debe ser el nombre del índice. Los índices especificados para | |
| El número mínimo de miembros con datos en un set de réplicas (es decir, quórum de confirmación), incluido el principal, que debe informar una creación de índices exitosa antes de que el primario marque el A partir de MongoDB v5.0, es posible reanudar algunas creaciones de índices interrumpidas cuando el quórum de confirmación está configurado en Para actualizar el commitQuorum, los nodos de set de réplicas miembros deben tener Admite los siguientes valores:
| |
| any | Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:
Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.). |
Comportamiento
Nota
Requiere featureCompatibilityVersion 4.4+
Cada mongod en el set de réplicas o clúster debe tener featureCompatibilityVersion configurada al menos en 4.4 para iniciar la creación de índices simultáneamente en los miembros del set de réplicas.
La creación de índices es un proceso multietapa. El proceso de creación de índices utiliza el commit quorum para minimizar el atraso de la replicación en los nodos secundarios.
Cuando un nodo secundario recibe un registro oplog de commitIndexBuild, el nodo detiene otras aplicaciones de oplog hasta que la creación de índices local pueda ser confirmada. La creación de índices puede tardar desde momentos hasta días en completarse, por lo que el atraso de la replicación puede ser significativo si el nodo secundario se crea más lentamente que el primario.
Para administrar el retraso de replicación, el quórum de confirmación demora la confirmación de la compilación del índice en el nodo principal hasta que una cantidad mínima de secundarios también estén listos para confirmar la compilación del índice.
El quórum de confirmación no garantiza que los índices en los secundarios estén listos para su uso cuando el comando se complete. Para asegurar que un número específico de secundarios estén listos para su uso, establece un nivel de confirmación de escritura (write concern)adecuado.
Si un nodo secundario que no está incluido en el quórum de confirmación recibe una entrada de registro de operaciones commitIndexBuild, el nodo puede bloquear la replicación hasta que se complete la creación de su índice.
Emitir setIndexCommitQuorum no tiene efecto en la creación de índices iniciada con un commitQuorum de 0.
Importante
Los nodos del set de réplicas con buildIndexes configurados en false no pueden incluirse en un quórum de confirmación.
Quórum de confirmación en contraste con el nivel de confirmación de escritura
Existen diferencias importantes entre quórums de confirmación y niveles de confirmación de escritura:
La creación de índices utiliza quórums de confirmación.
Las operaciones de guardado utilizan el nivel de confirmación de escritura.
Cada nodo que lleva datos en un clúster es un miembro votante.
El quórum de confirmación especifica cuántos miembros con derecho a voto que contienen datos o qué miembros con derecho a voto, incluido el primario, deben estar preparados para comprometerse a una creación de índices simultánea antes de que el primario ejecute la confirmación.
El nivel de confirmación de escritura es el nivel de reconocimiento de que la escritura se propagó a la cantidad especificada de instancias.
Modificado en la versión 8.0: El quórum de confirmación especifica cuántos miembros deben estar listos para completar la creación de índices antes de que el primario confirme la creación de índices. Por el contrario, cuando el primario ha confirmado la creación de índices, el nivel de confirmación de escritura especifica cuántos nodos deben replicar la entrada del oplog de creación de índices antes de que el comando devuelva éxito.
En versiones anteriores, cuando el nodo primario confirmaba la creación de índices, el nivel de confirmación de escritura especificaba cuántos nodos debían completar la creación de índices antes de que el comando devolviera éxito.
Ejemplos
La creación de índices en un set de réplicas o en un clúster se realiza simultáneamente en todos los miembros del set de réplicas que contienen datos. Para clústeres fragmentados, la creación de índices solo ocurre en fragmentos que contienen datos para la colección que se está indexando. El primario requiere un número mínimo de nodos portadores de datos voting (es decir, quórum de confirmación), incluido él mismo, que deben completar la compilación antes de marcar el índice como listo para usar. Consulta creación de índices en entornos replicados para obtener más información.
La siguiente operación inicia una creación de índices de dos índices:
db.getSiblingDB("examples").invoices.createIndexes( [ { "invoices" : 1 }, { "fulfillmentStatus" : 1 } ] )
De forma predeterminada, las compilaciones de índices utilizan el quórum de confirmación "votingMembers", o todos los miembros del conjunto de réplicas con derecho a voto que contienen datos. La siguiente operación modifica el quórum de confirmación de la compilación de índices a "majority", o una mayoría simple de miembros con derecho a voto que contienen datos:
db.getSiblingDB("examples").runCommand( { "setIndexCommitQuorum" : "invoices", "indexNames" : ["invoices_1", "fullfillmentStatus_1"], "commitQuorum" : "majority" } )
Los índices especificados en
indexNamesdeben ser todo el conjunto de las compilaciones en progreso asociadas a un determinado creador de índices, es decir, la operacióncreateIndexes().El campo
indexNamesespecifica los nombres de los índices. Dado que los índices fueron creados sin un nombre explícito, MongoDB generó un nombre de índice concatenando los nombres de los campos indexados y el orden de clasificación.