グローバルセカンダリインデックス(GSI)
分散データベースで、メインデータとは独立に、インデックスの値そのものでパーティション分割されるセカンダリインデックス。インデックスでの検索は正しいパーティションへ直接向かうが、書き込みは別ノードにあるかもしれないインデックスの更新を伴う。
仕組みはこうだ。インデックスはテーブルのパーティションキーではなく、インデックス対象の列でシャーディングされる。利点は、インデックスを使った読み取りが効率的なこと(全ノードへのscatter-gatherが不要で、1つのパーティションで済む)。代償は、行の書き込みが別の場所のインデックスパーティションの更新も要求するため、ノードをまたぐ書き込みになり、テーブルとインデックスの間が結果整合性にとどまることが多い点だ(たとえばDynamoDBのGSIは非同期で更新される)。
データと同じ単位で分割されるローカルセカンダリインデックスとは対照的で、あちらは書き込みが安く、読み取りが散らばって高くつく。DynamoDB、Cassandra(SAI/マテリアライズドビュー)、分散SQLデータベースで古典的なトレードオフであり、読み取りと書き込みのどちらを安くするかを決める。