Amazon DynamoDB入門①
こんにちは!情報通信について学んでいる大学3年生のしゅんです。学習した内容を自分の中で整理するという目的で今回からこのブログを始めます。閲覧いただいている皆様に様々な情報を提供していけたらなと考えております。
DynamoDBとは?Amazonが提供しているNoSQLデータべースです。では、どのような特徴があるのでしょうか。下にまとめてみました。
- フルマネージドかつサーバレス
- 高いスケーラビリティ
- 高いパフォーマンス
- 管理不可が低い
- NoSQLデータベース
フルマネージド:ITインフラに関わる運用や保守全般を外部委託するサービス
サーバレス:サーバの構築や管理が不要であり、サーバを意識しない考え方
スケーラビリティ:利用者や仕事の増大に適応できる能力や度合い
NoSQL:半構造化データや非構造化データに適しており、データは事前に定められたスキーマに準拠していない。また、データ要素間の関係も十分に定められていない。SQLよりもWebアプリケーションやモバイルアプリなどで使用される。
非構造化データ:事前に成形されていない。メールやテキストデータ、画像、音声データなどが主な非構造化データである。
半構造化データ:ある程度は構造が決まっているデータであり、主にXMLやJSONデータのことを指す。整理すれば構造化データへの変換ができるものもある。非構造化データよりも効率的にデータの分析や検索などを実施できる。
XML:文章の見た目や構造を記述するためのマークアップ言語。HTMLとの違いは、機械と人間の両方が読み取れる形式でデータをエンコードするということである。
エンコード:いわゆる「符号化」。データを一定の規則に基づいて変換すること。
JSONデータ:JavaScriptのオブジェクトの書き方をもとにしたデータ定義方法。APIによるデータの受け渡しや、データの保存などに使われる。XMLよりも、より分かりやすいものとなっている。
DynamoDBでは、2種類のプライマリーキーを使用します。
- Partition Key (PK)
- Sort Key (SK)
PKだけでは判断できない場合にSKが使用されます。複合主キーのようなものです。
DynamoDB設計における重要な考え方
- アクセスパターンからテーブルを設計する。
- テーブルはできるだけ少なくする。
①アクセスパターンからテーブルを設計する。
DynamoDBはNoSQLなので、Webアプリケーションやモバイルアプリで使用されます。したがって、テーブルを作成するにあたってアクセスパターンから考えることが重要になります。まずは、管理するデータを洗い出し、UI/UXの確認を行ったうえでAPIをデザインすることが望ましいです。
設計は次の4つの手順で行います。
- テーブルの名前を決める
- Partition Keyの検討
- Sort Keyの検討
- 必要な情報を属性として追加
②テーブルをできるだけ少なくする。
まとめられるテーブルはできるだけまとめて効率の良いテーブルにすることが望ましいです。テーブルをまとめた時に正しく呼び出されるように条件式が必要になる可能性があります。それでは、そのDynamoDBの便利なクエリのキー条件式を紹介します。
begins_with()
begins_with()を使用すると、Sort Keyがある特定の文字列から始まることを条件に絞り込むことが出来ます。
まとめ
いかがでしたでしょうか。ブログを書き慣れていないため、まだまだ至らない点が多々あると思いますが、よろしくお願いいたします。もし、誤った情報が書かれていた場合は下にコメントをしていただけますと幸いです。