Un Global Secondary Index (GSI) es un tipo de índice en bases de datos NoSQL, particularmente en sistemas de clave-valor y documentos, que permite consultar una tabla utilizando atributos que no forman parte de su clave primaria. A diferencia de los Local Secondary Indexes (LSI), un GSI tiene su propia clave de partición y clave de ordenación, que pueden ser completamente diferentes de las de la tabla base. Esto significa que un GSI se almacena en un espacio de partición distinto al de la tabla principal, lo que le permite escalar de forma independiente y soportar patrones de consulta con alta cardinalidad o acceso a datos distribuidos de manera diferente.

El ejemplo más prominente de implementación de GSIs se encuentra en Amazon DynamoDB. En DynamoDB, un GSI es una tabla completamente separada que se mantiene de forma asíncrona por el servicio. Los datos se replican desde la tabla base al GSI, y las lecturas en el GSI son eventualmente consistentes. Otros sistemas NoSQL, como Apache Cassandra (a través de Materialized Views, que pueden emular la funcionalidad de un GSI) o Google Cloud Firestore (donde los índices son globales por defecto para colecciones), ofrecen capacidades similares para permitir consultas eficientes sobre atributos no primarios, aunque la terminología y la implementación subyacente pueden variar.

Para un arquitecto, los GSIs son cruciales para diseñar esquemas de bases de datos NoSQL flexibles y eficientes. Permiten soportar múltiples patrones de acceso a datos sobre la misma tabla base sin tener que duplicar datos manualmente o realizar escaneos costosos. Sin embargo, implican trade-offs importantes: introducen latencia de replicación (consistencia eventual), aumentan los costos de almacenamiento y escritura (cada escritura en la tabla base debe replicarse en el GSI) y añaden complejidad operacional. La elección de qué atributos indexar y cómo configurar las claves de un GSI es una decisión estratégica que impacta directamente el rendimiento, la escalabilidad y el costo de la solución, requiriendo un profundo entendimiento de los patrones de acceso de la aplicación.