「DyanamoDBのプライマリーキー、パーティションキー、ソートキーの違いが分からない…」
「それぞれのキーの特徴を知りたい!」
DynamoDBってキーの種類が複数あって理解するのが大変ですよね…
私もAWS資格試験勉強しているときは、何が何だかさっぱり分かりませんでした…
この記事を読めば、DynamoDBのキーへの理解が深まり、DynamoDBでテーブルを作成するときのデータベース設計で困らないようになりるでしょう。
結論を言うと、DynamoDBには以下の3種類のキーがあります。
・プライマリーキー
・パーティションキー
・ソートキー
普段仕事でDynamoDBを扱っている私が、重要なポイントをまとめました。
キーを1つずつ紹介していくので、AWS資格試験の勉強中の方は参考にしてみて下さい!
プライマリーキー
まず最初にプライマリーキーについて紹介していきます。
プライマリーキーとは、データベースの中にあるデータを識別するために使用するキーを指します。
つまり、各レコードごとに他とは被らない一意のプライマリーキーを設定しないといけません。
プライマリーキーの設定には、以下の2パターンがあります。
2種類しかないので、しっかり覚えていきましょう!
1. パーティションキー
2. パーティションキー + ソートキー
用途に合わせて上記2パターンをプライマリーキーにセットすることで、特定のデータをデータベースから取得することができます。
実際に、この2パータンを用いたテーブル操作を後述しています。
そこで、プライマリーキーについてさらに理解を深めちゃって下さい!
その前に「パーティションキー?ソートキー?」となっていると思うので、それぞれのキーの特徴について説明していきます。
パーティションキー
2種類目のキーとして、「パーティションキーとは何か?」について紹介していきます。
DynamoDBのユースケースとして、大量のデータを扱うときがよくあります。
そこでDynamoDBでは、大量のデータを扱っていてもデータ処理速度を上げれるように、データを複数テーブルに分割して格納しています(パーティショニング)。
パーティションキーは、パーティショニングをする際に利用されるキーのことを指します。
ソートキー
DynamoDB3種類目のキー、ソートキーについて紹介していきます。
ソートキーは、パーティションキーの補助的な役割を担っています。
パーティションキーで絞り込んだデータをさらに絞り込んだり、順序付けたりする際にソートキーが使用されます。
ソートキーを使うことで、範囲クエリや順序付けされたデータの取得を効率的に行うことができるようになります。
パーティションキーとソートキーを使ったテーブル操作
ここからは、実際にデータを用いて、パーティションキーとソートキーの関係性について、深掘りしていきます。
プライマリーキーで紹介した以下の2パターンに分けて説明していきます。
1. パーティションキー
2. パーティションキー + ソートキー
サンプルとして、以下のデータを扱います。
パーティションキーを「Name」、ソートキーを「Pet」とします。
Name(パーティションキー) | Pet(ソートキー) | PetName |
---|---|---|
太郎 | 犬 | ポチ |
太郎 | 犬 | ジョン |
太郎 | 猫 | タマ |
次郎 | 猫 | 麦 |
花子 | 鳥 | ピー |
パーティションキーのみ
パーティションキーの「Name」が「太郎」という条件でクエリすると以下のような結果になります。
Name(パーティションキー) | Pet(ソートキー) | PetName |
---|---|---|
太郎 | 犬 | ポチ |
太郎 | 犬 | ジョン |
太郎 | 猫 | タマ |
サンプルデータから、パーティションキーの値が「太郎」のデータだけ抽出できていますね!
次に、パーティションキー + ソートキーを使った例を見てみましょう。
パーティションキー + ソートキー
パーティションキーの「Name」が「太郎」、ソートキーの「Pet」が「犬」という条件でクエリすると以下のような結果になります。
Name(パーティションキー) | Pet(ソートキー) | PetName |
---|---|---|
太郎 | 犬 | ポチ |
太郎 | 犬 | ジョン |
サンプルデータから、パーティションキーが「太郎」かつ、ソートキーが「犬」のデータだけ抽出できています。
このようにパーティションキーとソートキーを上手く用いることで、目的のデータを効率よく抽出できるようになります!
さいごに
今回は、「DynamoDB3種類のキーの特徴」についてそれぞれ紹介してきました!
これであなたもDynamoDBへの理解がさらに深まったと思います。
私のサイトでは他にもDynamoDBに関する記事を紹介しています。
AWS資格試験のお供に是非、参考にして下さい!
コメント