はじめに
最初に設定したプライマリーキーでは、レコードの検索がうまく行かなかったので、GSIを使ってみた
目次
- GSIについて
- GSI利用時のDB探索の書き方
GSIについて
パーティションキーやソートキーをプライマリーキー以外の組み合わせで追加することができるもの。
よくある例を出すと、IDをプライマリーキーとしておくと、IDでのみしか検索ができないが、GSIでパーティションキー、ソートキーをID以外のキーに貼っておくことで、ID以外のキーで検索することが可能となる。
GSI利用時のDB探索の書き方
GSIの貼り方
マネジメントコンソールで目的のテーブルを選択し、インデックスタブを開く。
インデックスの作成をクリックし、目的のキーをパーティションキー、ソートキーに設定する。
※注意点とし、パーティションキー、ソートキーに設定できるのは、文字列、数値、バイナリの3種類の型のみである。ブーリアンとかはNG。
GSIを利用するpython書き方
GSIでデータを引くときには、引数にIndexNameを追加するだけでOK。
テーブルにpkというキー、skというキーがあったとする。
それらのキーをそれぞれパーティションキー、ソートキーとしたpk-sk-indexという名前のGSIを作ると下記のように記載できる。
import boto3
from boto3.dynamodb.conditions import Key
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('TABLE_NAME')
response = table.query(
IndexName = 'pk-sk-index',
KeyConditionExpression = Key('pk').eq('XXX') & Key('sk').eq('YYY')
)