DynamoDB: índices
DynamoDB utiliza índices para los atributos de clave principal para mejorar los accesos. Aceleran el acceso a las aplicaciones y la recuperación de datos, y respaldan un mejor rendimiento al reducir el retraso de las aplicaciones.
Índice secundario
Un índice secundario contiene un subconjunto de atributos y una clave alternativa. Lo usa a través de una consulta o una operación de escaneo, que apunta al índice.
Su contenido incluye atributos que usted proyecta o copia. En la creación, define una clave alternativa para el índice y cualquier atributo que desee proyectar en el índice. Luego, DynamoDB realiza una copia de los atributos en el índice, incluidos los atributos de clave principal que se obtienen de la tabla. Después de realizar estas tareas, simplemente use una consulta / escaneo como si lo realizara en una mesa.
DynamoDB mantiene automáticamente todos los índices secundarios. En las operaciones de elementos, como agregar o eliminar, actualiza los índices de la tabla de destino.
DynamoDB ofrece dos tipos de índices secundarios:
Global Secondary Index- Este índice incluye una clave de partición y una clave de clasificación, que pueden diferir de la tabla de origen. Utiliza la etiqueta "global" debido a la capacidad de consultas / escaneos en el índice para abarcar todos los datos de la tabla y todas las particiones.
Local Secondary Index- Este índice comparte una clave de partición con la tabla, pero usa una clave de clasificación diferente. Su naturaleza "local" es el resultado de que todas sus particiones se dirijan a una partición de tabla con un valor de clave de partición idéntico.
El mejor tipo de índice a utilizar depende de las necesidades de la aplicación. Considere las diferencias entre los dos presentados en la siguiente tabla:
Calidad | Índice secundario global | Índice secundario local |
---|---|---|
Esquema clave | Utiliza una clave primaria simple o compuesta. | Siempre usa una clave primaria compuesta. |
Atributos claves | La clave de partición de índice y la clave de clasificación pueden constar de atributos de tabla binaria, numérica o de cadena. | La clave de partición del índice es un atributo compartido con la clave de partición de la tabla. La clave de clasificación puede ser una cadena, un número o atributos de tabla binaria. |
Límites de tamaño por valor de clave de partición | No tienen limitaciones de tamaño. | Impone un límite máximo de 10 GB en el tamaño total de los elementos indexados asociados con un valor de clave de partición. |
Operaciones de índice en línea | Puede generarlos en la creación de la tabla, agregarlos a tablas existentes o eliminar las existentes. | Debe crearlos al crear la tabla, pero no puede eliminarlos ni agregarlos a tablas existentes. |
Consultas | Permite consultas que abarcan toda la tabla y todas las particiones. | Abordan particiones individuales a través del valor de clave de partición proporcionado en la consulta. |
Consistencia | Las consultas de estos índices solo ofrecen la opción eventualmente consistente. | Las consultas de estos ofrecen las opciones eventualmente consistentes o fuertemente consistentes. |
Costo de producción | Incluye configuraciones de rendimiento para lecturas y escrituras. Las consultas / exploraciones consumen capacidad del índice, no de la tabla, lo que también se aplica a las actualizaciones de escritura de la tabla. | Las consultas / escaneos consumen la capacidad de lectura de la tabla. Las escrituras de tabla actualizan los índices locales y consumen unidades de capacidad de la tabla. |
Proyección | Las consultas / escaneos solo pueden solicitar atributos proyectados en el índice, sin recuperaciones de atributos de tabla. | Las consultas / escaneos pueden solicitar aquellos atributos no proyectados; además, se producen recuperaciones automáticas de ellos. |
Al crear varias tablas con índices secundarios, hágalo de forma secuencial; lo que significa hacer una tabla y esperar a que alcance el estado ACTIVO antes de crear otra y volver a esperar. DynamoDB no permite la creación simultánea.
Cada índice secundario requiere ciertas especificaciones:
Type - Especifique local o global.
Name - Utiliza reglas de nomenclatura idénticas a las de las tablas.
Key Schema - Solo se permiten cadenas, números o tipos binarios de nivel superior, y el tipo de índice determina otros requisitos.
Attributes for Projection - DynamoDB los proyecta automáticamente y permite cualquier tipo de datos.
Throughput - Especifique la capacidad de lectura / escritura para índices secundarios globales.
El límite de índices sigue siendo 5 globales y 5 locales por tabla.
Puede acceder a la información detallada sobre índices con DescribeTable. Devuelve el nombre, el tamaño y el número de artículos.
Note - Estos valores se actualizan cada 6 horas.
En las consultas o exploraciones que se utilizan para acceder a los datos del índice, proporcione los nombres de la tabla y del índice, los atributos deseados para el resultado y las declaraciones condicionales. DynamoDB ofrece la opción de devolver resultados en orden ascendente o descendente.
Note - La eliminación de una tabla también elimina todos los índices.