0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

pythonを利用したdynamoDBの操作(GSI)

Posted at

はじめに

最初に設定したプライマリーキーでは、レコードの検索がうまく行かなかったので、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')
)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?