プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • AWS
  • 【AWS】DynamoDBの基本的な仕組み
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【AWS】DynamoDBの基本的な仕組み

01.03

  • miyabisan2
  • コメントを書く

この記事は3分で読めます

DynamoDBとは?

AWSが提供するフルマネージドなNoSQLデータベース(キーバリューストア)、どんな規模にも対応する高速で柔軟なキーバリュデータベース

RDBとの違い

  • スキーマ(カラムのデータ型や桁数指定したもの)が使えない。
  • SQLが使えない。

特徴

  • SQLに比べたらシンプルなクエリ
  • 1日10兆規模のアクセスがある。
  • 毎秒2000万件以上のリクエストを捌ける。
  • 規模関係なく、数ミリ秒のレスポンスを返せます。

テーブルの作成

「テーブル名」と「パーティションキー」は必須で入力します。(ソートキーはオプションなので任意入力です。)

「テーブルの作成」をクリックします。

少し待つと以下のようにテーブルが作成されます。

レコードの確認

テーブル名をクリックします。

「テーブルアイテムの探索」をクリックします。

テーブルを作成したばかりだと、まだ何も登録していないので「返された項目(すなわちレコード)」が空の状態になっています。

テーブル構成

Items

一行一行を示します。Attributesの個数はバラバラです。

Attributes

Itemsの中の一つ一つの属性のことです。

partition keys

必須になります。RDBでいえばテーブルのプライマリキーになります。一行の中に必ず一つは必要という意味になります。データの分布を決定するキーとして使われます。

  • Itemを一意に識別できます。
  • これを元にItemがどこのパーテーションに位置するかが決まります。(DynamoDBは内部ではスケールのためにパーテーションを保持しているため。)

sort key

オプションになります。partition keyのみで十分の場合は必要ありません。使用するとQueryによる幅広い探索が可能になります。

  • パーテーション内でソートキーは昇順で配置されます。
  • パーテーションキーごとのソートキーの数は制限はありません。

オプション

リザーブドキャパシティ

長期利用(1年)における割引料金の適用がある。意外と知らない人が多い。

アーキテクチャ

スケールに応じたパフォーマンス

事実上無制限のスループットでどんな規模にも対応できます。

例えば、Amazon.comのようなサイトでも対応可能

ストレージ容量も制限なし

高速で一貫した性能

フルマネージド

メンテナンスフリー

サーバレス

Auto Scalling

バックアップ/リストア

Global tables(グローバルデータベース)

エンタープライズ対応

通信と保存データの暗号化

柔軟な権限管理

PCI、HIPAA、FIPS140-2等を認証

SLAの提供

99.9%のSLAを実現します。

DynamoDB Transactions

  • DynamoDBで複数Item、複数Tableに対する書き込み操作や読み込み操作でACIDトランザクションが可能になります。
  • トランザクション分離レベルはserializableでロックは取りません。
  • トランザクションの進行中にアイテムがトランザクション外で変更された場合、トランザクションはキャンセルされ、例外を発生させたItemまたはItemに関する詳細がスローされます。
  • GlobalTableではデフォルトで向こうで、有効にした場合もトランザクションはリージョン単位になります。
  • 全ての商用リージョンで利用可能です。

Item操作

読み込み

GetItem

Partition KeyとSort Keyを指定して対象Itemを決定する。

TransactGetItems

Partition KeyとSort Keyを指定して対象Itemを決定する。トランザクション処理が可能になります。(ロールバックさせるか、リトライするか等)

BatchGetItem

Partition KeyとSort Keyを指定して対象Itemを決定する。複数のItemを操作することが可能です。

Query

Partition Keyのみ指定し、Sort Keyは条件指定による範囲探索も可能

Scan

書き込み

「このAttributesがあったら書き込む」といったような条件付き書き込み設定も可能

PutItem

Partition KeyとSort Keyを指定して対象Itemを決定する。

Update

Partition KeyとSort Keyを指定して対象Itemを決定する。

TransactWriteItems

トランザクション処理が可能になります。(ロールバックさせるか、リトライするか等)

BatchWriteItem

複数のItemを操作することが可能です。

Delete

Partition KeyとSort Keyを指定して対象Itemを決定する。

Local Secondary Index(LSI)

Partition keyを変えることができないです。

  • Sort key以外にも絞り込み検索を行うkeyを保持することが可能です。
  • Partition keyが同一で他のattributesでQueryによる検索のために利用できます。
  • 全ての要素の合計サイズを各Partationキーごとに10GBに制限します。

Global Secondary Index(GSI)

Partition keyを変えることができます。

  • Partition key属性の代わりになります。
  • Partition keyをまたいで検索を行うためのインデックスです。
  • 元のテーブルとキャパシティは別で管理します。
スポンサーリンク
  • 2021 01.03
  • miyabisan2
  • コメントを書く
  • AWS
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2020 12.28

    【AWS】EC2の「インスタンスタイプ」、「購入オプション」について

  2. 2021 01.03

    【AWS】「Lambda」のパフォーマンスチューニング

  3. 2020 12.29

    【AWS】EBSの基本、EC2へ「EBS」をマウントする手順

  4. 2020 11.10

    【AWS】「Lambda」、関数の定義

  5. 2020 12.31

    【AWS】「アーキテクチャ」の種類(モノリシック、SOA、マイクロサービス、サーバレス)

  6. 2020 06.15

    【AWS】WebサーバーにWordPressをインストールする。

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【AWS】「Lambda」のパフォーマンスチューニング

【Ruby on Rails】「bullet」、「N+…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー