こんにちは、かずきゅーです。
今回はAWSのサービスの1つであるAmazon DynamoDB(以下DynamoDB)について、初心者向けに基本用語を解説していきます。
DynamoDBの勉強を始めたけど〇〇キーがいっぱいある。。〇〇インデックスって何?
わからない用語でわからないことを解説されて、挫折しそうになっているのではないでしょうか。
この記事を読めばAmazon DynamoDBの基本用語はばっちりですのでご安心ください!
Amazon DynamoDB とは
まずはじめにDynamoDBについて簡単に紹介します。
NoSQLの特徴としては以下のようなものが挙げられます。
このような特徴を持つDynamoDBですが、使用するには絶対に理解しておくべき用語が複数あります。
ここからは早速、基本用語の解説をしていきます。
用語解説
NoSQL(Not Only SQL)
NoSQLとは、リレーショナルデータベース(RDS)ではないのデータベースの総称のことです。ここではRDSの説明はしませんが、MySQLやPostgreSQLといったDBとは全く異なるということを覚えておいてください。
NoSQLという名前も、RDSのようにデータベースの操作にSQLを用いる必要がないことから、このように呼ばれています。
NoSQLの特徴としては以下のものが挙げられます。
NoSQLの特徴
- 高速な処理が可能
- データ構造の変更がRDSよりも容易
キーバリュー型(Key-Value)
キーバリュー型とはNoSQLの種類の1つのことを指し、中でも最も基本的なものとなっています。
NoSQLの種類は以下があります。
NoSQLの種類
- キーバリュー型
- カラム指向型
- ドキュメント指向型
- グラフ指向型
キーバリュー型のデータは名前の通り、「キー」と「バリュー」の組み合わせのみで表現される非常にシンプルな構造です。
「キー」はデータを識別するために一意である必要があり、それに紐づく「バリュー」はさまざまな項目を持つことが可能で、データごとに内容が異なっていても問題がありません。
キーバリュー型以外のNoSQLにもそれぞれ特徴がありますので、気になった方はぜひ調べてみてください。
プライマリーキー
DynamoDBのデータはRDS同様にプライマリキーで一意に識別されています。
プライマリキーとして扱われるものは、
- パーティションキー
- パーティションキーとソートキーの複合
の2つがあることが特徴です。
DynamoDBのデータの読み書きは基本的にプライマリキーを指定して行うため、使用する状況にあわせてパーティションキーとソートキーの設計をしていく必要があります。
続いて、プライマリキーの説明で登場した「パーティションキー」「ソートキー」について解説していきます。
パーティションキー
パーティションキーは単独でプライマリキーとして扱われる場合もある重要な構成要素の1つで、DynamoDBのテーブルを作成する場合には設定が必須の項目となっています。パーティションキーの別の呼び名としてハッシュキーと呼ばれる場合もあります。
DynamoDBのデータはパーティションという領域に分散して保存されているのですが、どのパーティションに保存されるかはこのパーティションキーによって決定されます。
ソートキー
ソートキーはその名の通り、データのソートや範囲の指定を行うことができます。こちらはパーティションキーとは違い、任意の設定項目となります。
DynamoDBのデフォルトでは、ソートキーに指定したもの以外でのソートやデータの検索を行うことができないため、データベースの設計をする際には注意する必要があります。
セカンダリインデックス
ソートキーの説明で、「ソートキーに指定したもの以外でソートやデータの検索を行うことはできない」と言いましたが、セカンダリインデックスを利用することで、ソートキー以外でのデータの絞り込みを行うことが可能になります。
セカンダリインデックスには
- グローバルセカンダリインデックス
- ローカルセカンダリインデックス
の2種類があります。
グローバルセカンダリインデックス(GSI)
グローバルセカンダリインデックスとは、テーブル作成時に設定した「パーティションキー」「ソートキー」とは異なる「パーティションキー」「ソートキー」を持つインデックスのことを指します。
テーブル作成時に設定したパーティションキーとは異なるパーティションキーを設定するため、パーティションの範囲が全てにまたがることで全てのデータが対象となることから、グローバルと呼ばれています。
ローカルセカンダリインデックス(LSI)
ローカルセカンダリインデックスとは、テーブル作成時に設定した「パーティションキー」はそのままに、異なる「ソートキー」を持つインデックスのことを指します。
こちらはグローバルセカンダリインデックスとは異なり、パーティションキーはテーブル作成時に設定されたもののままのため、パーティションの範囲が同じパーティションキーに絞られることからローカルと呼ばれています。
グローバルセカンダリインデックスとローカルセカンダリインデックスは例を用いた方が理解は捗ると思いますので、AWS公式等をご覧ください。
本記事でも後々追加したいと思いますので、しばしお待ちください。。。
まとめ
ここまでDynamoDBの基本用語をまとめてきましたが、いかがでしたでしょうか。今回紹介した用語をしっかり理解すれば、DynamoDBの基本を抑えることができると思います。
DynamoDBを活用するためにはこれらの用語を理解した上で、きちんとしたデータ設計をしていくことが重要です。これを足がかりに、AWSを使いこなせるようさらに学びを進めていきましょう!
以上、かずきゅーでした。