Administración de índices - Amazon Quantum Ledger Database (Amazon QLDB)

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.

Administración de índices

En esta sección se describe cómo crear, describir y eliminar índices en Amazon QLDB. La cuota del número de índices por tabla que puede crear se define enCuotas y límites de Amazon QLDB.

Creación de índices

Como se describe también enCreación de tablas e índices, puede utilizar laCREAR ÍNDICEpara crear un índice en una tabla para un campo de nivel superior especificado, de la siguiente manera. El nombre de la tabla y el nombre del campo indexado distinguen entre mayúsculas y minúsculas.

CREATE INDEX ON VehicleRegistration (VIN)
CREATE INDEX ON VehicleRegistration (LicensePlateNumber)

Cada índice que crea en una tabla tiene un ID único asignado por el sistema. Para buscar este ID de índice, consulte la siguiente secciónDescripción de índices.

importante

QLDB requiere un índice para buscar un documento de forma eficiente. Sin un índice, QLDB necesita realizar un análisis completo de tablas al leer documentos. Esto puede provocar problemas de rendimiento en tablas grandes, incluidos conflictos de concurrencia y tiempos de espera de transacción.

Para evitar análisis de tablas, debe ejecutar sentencias con unWHEREcláusula predicado mediante unigualdadoperador (=oIN) en un campo indexado o en un ID de documento. Para obtener más información, consulte Optimización del rendimiento de consultas.

Tenga en cuenta las siguientes restricciones al crear índices:

  • Un índice solo se puede crear en un único campo de nivel superior. No se admiten índices compuestos, anidados, únicos y basados en funciones.

  • Puede crear un índice en cualquierTipos de datos Ion, incluidolistystruct. Sin embargo, solo puede realizar la búsqueda indexada por igualdad de todo el valor Ion, independientemente del tipo Ion. Por ejemplo, cuando se utiliza unalistescriba como índice, no puede realizar una búsqueda indexada por un elemento de la lista.

  • El rendimiento de las consultas se mejora solo cuando se utiliza un predicado de igualdad; por ejemplo,WHERE indexedField = 123oWHERE indexedField IN (456, 789).

    QLDB no respeta las desigualdades en los predicados de consulta. Como resultado, no se implementan escaneos filtrados por rango.

  • Los nombres de los campos indexados distinguen entre mayúsculas y minúsculas y deben tener 128 caracteres como máximo.

  • La creación de índices en QLDB es asíncrona. El periodo de tiempo que tarda en completarse un índice en una tabla no vacía varía según el tamaño de la tabla. Para obtener más información, consulte Administración de índices.

Descripción de índices

La creación de índices en QLDB es asíncrona. El periodo de tiempo que tarda en completarse un índice en una tabla no vacía varía según el tamaño de la tabla. Para comprobar el estado de una compilación de índices, puede consultar la tabla del catálogo del sistemainformation_schema.user_tables.

Por ejemplo, la siguiente instrucción consulta el catálogo del sistema para todos los índices delVehicleRegistrationtable.

SELECT VALUE indexes FROM information_schema.user_tables info, info.indexes indexes WHERE info.name = 'VehicleRegistration'
{
    indexId: "Djg2nt0yIs2GY0T29Kud1z",
    expr: "[VIN]",
    status: "ONLINE"
},
{
    indexId: "4tPW3fUhaVhDinRgKRLhGU",
    expr: "[LicensePlateNumber]",
    status: "FAILED",
    message: "aws.ledger.errors.InvalidEntityError: Document contains multiple values for indexed field: LicensePlateNumber"
}

Campos de índice

  • indexId— El ID exclusivo del índice.

  • expr— La ruta del documento indexado. Este campo es una cadena del formulario:[fieldName].

  • status— El estado actual del índice. El estado de un índice puede ser uno de los siguientes valores:

    • BUILDING— Está creando activamente el índice de la tabla.

    • FINALIZING— Ha terminado de construir el índice y está empezando a activarlo para su uso.

    • ONLINE— Está activo y listo para usar en consultas. QLDB no utiliza el índice en las consultas hasta que el estado esté en línea.

    • FAILED— No se puede crear el índice debido a un error irrecuperable. Los índices en este estado siguen contando con la cuota de índices por tabla. Para obtener más información, consulte Errores comunes.

    • DELETING— Elimina activamente el índice después de que un usuario lo haya eliminado.

  • message— El mensaje de error que describe el motivo por el que el índice tiene unFAILEDestado. Este campo solo se incluye para los índices fallidos.

También puede utilizar laAWS Management Consolepara comprobar el estado de un índice.

Para comprobar el estado de un índice (consola)

  1. Inicie sesión en laAWS Management Consoley abra la consola de Amazon QLDB enhttps://console.aws.amazon.com/qldb.

  2. En el panel de navegación, elijaLibros de contabilidad.

  3. En la lista deLibros de contabilidad, elija el nombre del libro mayor cuyos índices desee administrar.

  4. En la página de detalles del libro mayor, en la secciónTablas, elija el nombre de la tabla cuyo índice desea comprobar.

  5. En la página de detalles de tabla, localice laCampos indexadoscard. LaEstado del índicemuestra el estado actual de cada índice de la tabla.

DROP INDEX

UsarDROP INDEXpara eliminar un índice. Cuando sueltas un índice, se elimina permanentemente de la tabla.

Primero, busque el ID del índice deinformation_schema.user_tables. Por ejemplo, la siguiente consulta devuelve laindexIddel indexadoLicensePlateNumberen el campoVehicleRegistrationtable.

SELECT indexes.indexId FROM information_schema.user_tables info, info.indexes indexes WHERE info.name = 'VehicleRegistration' and indexes.expr = '[LicensePlateNumber]'

A continuación, utilice este ID para eliminar el índice. A continuación se muestra un ejemplo que elimina el ID de índice4tPW3fUhaVhDinRgKRLhGU. El ID de índice es un identificador único que debe incluirse entre comillas dobles.

DROP INDEX "4tPW3fUhaVhDinRgKRLhGU" ON VehicleRegistration WITH (purge = true)
nota

CláusulaWITH (purge = true)es obligatorio para todosDROP INDEXinstrucciones, ytruees actualmente el único valor admitido.

La palabra clavepurgedistingue entre mayúsculas y minúsculas y debe estar en minúsculas.

También puede utilizar laAWS Management Consolepara eliminar un índice.

Para eliminar un índice (consola)

  1. Inicie sesión en laAWS Management Consoley abra la consola de Amazon QLDB enhttps://console.aws.amazon.com/qldb.

  2. En el panel de navegación, elijaLibros de contabilidad.

  3. En la lista deLibros de contabilidad, elija el nombre del libro mayor cuyos índices desee administrar.

  4. En la página de detalles del libro mayor, en la secciónTablas, elija el nombre de la tabla cuyo índice desea eliminar.

  5. En la página de detalles de tabla, localice laCampos indexadoscard. Seleccione el índice que desee eliminar y, a continuación, elijaÍndice de caída.

Errores comunes

En esta sección se describen los errores comunes que pueden surgir al crear índices y se sugieren posibles soluciones.

nota

Índices que tienen un estado deFAILEDsigue contando con la cuota de índices por tabla. Un índice erróneo también impide modificar o eliminar cualquier documento que haya causado un error en la creación del índice en la tabla.

Debe explícitamentegotael índice para eliminarlo de la cuota.

El documento contiene varios valores para el campo indexado:fieldName.

QLDB no puede crear un índice para el nombre de campo especificado porque la tabla contiene un documento con varios valores para el mismo campo (es decir, nombres de campo duplicados).

Primero debe eliminar el índice que ha fallado. A continuación, asegúrese de que todos los documentos de la tabla tengan solo un valor para cada nombre de campo antes de volver a intentar la creación del índice. También puede crear un índice para otro campo que no tenga duplicados.

QLDB también devuelve este error si intenta insertar un documento que contiene varios valores para un campo que ya está indexado en la tabla.

Límite de índices superado: MesatableNameya haníndices y no se puede crear más.

QLDB aplica un límite de cinco índices por tabla, incluidos los índices fallidos. Debe eliminar un índice existente antes de crear uno nuevo.

Sin índice definido con identificador:IndexId.

Intentó eliminar un índice que no existe para la combinación de tabla e ID de índice especificada. Para obtener información sobre cómo comprobar los índices existentes, consulteDescripción de índices.