SlideShare a Scribd company logo
しみず @shimy_net
2013 / 6 / 22
Amazon DynamoDB
初心者向け 超速マスター編
自己紹介
しみず @shimy_net
Webアーキテクト
アマゾン芸人
無駄に技術を使って
面白いことをする
本を執筆しました
http://goo.gl/QtaK6
やること
□ 概説
□ Management Console から利用する
・Table の作成
・Throughput の変更
・Item の登録、取得、更新
□ Eclipse から利用する(Java)
・デモンストレーション
□ 手乗りDynamoDB
・デモンストレーション
Amazon DynamoDB とは
□ 完全マネージド型の NoSQL データベースサービス
・管理不要で高い拡張性を提供
・ハードウェア調達、インストール、設定、レプリケーション、
 ソフトウェア修正プログラムの適用、クラスタ化 が不要
・開発者はAPI経由で利用するだけ(SDK)
□ 高い拡張性
・データベース容量は自動的に拡張
・パフォーマンスを指定できる
  ・利用者がダイヤルを設定するようにパフォーマンスを設定
  ・秒間あたりの、読み込み/書き込みスループットを指定
Amazon DynamoDB とは
□ データへの高速なアクセス
・AWSクラウドの特性を活用
 ・十分な数のハードウェアに分散し、安定した高いパフォーマンスを提供
 ・SSDを利用して高速アクセス
・データベースが大規模になっても、数ミリ秒のアクセス速度を期待
□ 高い信頼性
・同期レプリケーションアーキテクチャ
  ・データを複数のAZ(データセンター)にコピー
  ・データセンターレベルの障害からもデータを守る
Amazon DynamoDB とは
□ 整合性モデル
 ・読み込みに対して結果的に整合性のある読み込みを設定するか
  強い整合性を設定するかを指定できる
□ Local Secondary Indexes
 ・テーブル毎に最大5つのローカルセカンダリインデックスをサポート
 ・テーブルの属性の一部もしくは全てを射影できる
□ Amazon EMR 連携
 ・S3 への Export / Import、Query、Join
Data Model
□ Tables Items Attributes
DynamoDB Table1
Table2
Table N
・・・
Item1
Item2
Item3
Item N
・・・
{
Id = 101
ProductName = "Book 101 Title"
ISBN = "111-1111111111"
Authors = [ "Author 1", "Author 2" ]
Price = -2
Dimensions = "8.5 x 11.0 x 0.5"
PageCount = 500
InPublication = 1
ProductCategory = "Book"
}
Attribute
{
Id = 201
ProductName = "18-Bicycle 201"
Description = "201 description"
BicycleType = "Road"
Brand = "Brand-Company A"
Price = 100
Gender = "M"
Color = [ "Red", "Black" ]
ProductCategory = "Bike"
}
Item1
Item2
利用可能な型
・Scalar data types
  Number, String, Binary
・Multi-valued types
  Number Set, String Set, Binary Set
64KBまで
スキーマレス
Primary Key
□ Hash Type Primary Key
 ・1つの Attribute が Primary Key
 ・DynamoDB は Primary Key に対して Hash Index を作成
 
□ Hash and Range Type Primary Key
 ・2つの Attribute が Primary Key
     1: Hash Primary Key
     2: Range Primary Key
 ・DynamoDB は Hash Primary Key に対して Hash Index を作成
 ・DynamoDB は Range Primary Key に対して整列した Range Index を作成
Attribute 1
(Hash Primary Key)
Attribute 2 Attribute 3
Attribute 1
(Hash Primary Key)
Attribute 2
(Range Primary Key)
Attribute 3
Map<HashKey,Object>
Map<HashKey, SortedMap<RangeKey,Object>>
Primary Key(具体例)
□ サンプルデータ
Table Name Primary Key Type Hash Attribute Name Range Attribute Name
Forum ( Name, ... ) Hash Attribute Name: Name -
Thread (ForumName, Subject, ... ) Hash and Range Attribute Name: ForumName Attribute Name: Subject
Reply ( Id, ReplyDateTime, ... ) Hash and Range Attribute Name: Id Attribute Name: ReplyDateTime
Amazon DynamoDB
Amazon DynamoDB#DynamoDB Thread 1
2011-12-11 00:40:57
Amazon DynamoDB
DynamoDB Thread1
Amazon S3
Amazon DynamoDB
DynamoDB Thread2
Amazon S3
S3 Thread2
Amazon DynamoDB#DynamoDB Thread 1
2011-12-18 00:40:57
Amazon DynamoDB#DynamoDB Thread 1
2011-12-25 00:40:57
Amazon DynamoDB#DynamoDB Thread 2
2011-12-25 00:40:57
Amazon DynamoDB#DynamoDB Thread 2
2012-01-03 00:40:57
Forum Thread Reply
Hash Primary key
Range Primary key
Hash Primary key
Range Primary key
Hash Primary key
Primary Key(具体例)
□ Forum
Name (Primary Key) Other Attributes
"Amazon DynamoDB" {
Category="Amazon Web Services"
Threads=3
Messages=4
Views=1000
LastPostBy="User A"
LastPostDateTime= "2012-01-03T00:40:57.165Z"
}
"Amazon S3" {
Category="Amazon Web Services"
Threads=1
}
Primary Key(具体例)
□ Thread
Name (Primary Key) Other Attributes
ForumName = "Amazon DynamoDB"
Subject = "DynamoDB Thread 1"
{
Message = "DynamoDB thread 1 message text"
LastPostedBy = "User A"
Views = 0
Replies = 0
Answered = 0
Tags = [ "index", "primarykey", "table" ]
LastPostDateTime = "2012-01-03T00:40:57.165Z"
}
ForumName = "Amazon DynamoDB"
Subject = "DynamoDB Thread 2
{
Message = "DynamoDB thread 2 message text"
LastPostedBy = "User A"
Views = 0
Replies = 0
Answered = 0
Tags = [ "index", "primarykey", "rangekey" ]
LastPostDateTime = "2012-01-03T00:40:57.165Z"
}
ForumName = "Amazon S3"
Subject = "S3 Thread 1"
{
Message = "S3 Thread 1 message text"
LastPostedBy = "User A"
Views = 0
Replies = 0
Answered = 0
Tags = [ "largeobject", "multipart upload" ]
LastPostDateTime = "2012-01-03T00:40:57.165Z"
}
Primary Key(具体例)
□ Reply
Name (Primary Key) Other Attributes
Id = "Amazon DynamoDB#DynamoDB Thread 1"
ReplyDateTime = "2011-12-11T00:40:57.165Z
{
Message = "DynamoDB Thread 1 Reply 1 text"
PostedBy = "User A"
}
Id = "Amazon DynamoDB#DynamoDB Thread 1"
ReplyDateTime = "2011-12-18T00:40:57.165Z
{
Message = "DynamoDB Thread 1 Reply 1 text"
PostedBy = "User A"
}
Id = "Amazon DynamoDB#DynamoDB Thread 1"
ReplyDateTime = "2011-12-25T00:40:57.165Z
{
Message = "DynamoDB Thread 1 Reply 3 text"
PostedBy = "User B"
}
Id = "Amazon DynamoDB#DynamoDB Thread 2"
ReplyDateTime = "2011-12-25T00:40:57.165Z
{
Message = "DynamoDB Thread 2 Reply 1 text"
PostedBy = "User A"
}
Id = "Amazon DynamoDB#DynamoDB Thread 2"
ReplyDateTime = "2012-01-03T00:40:57.165Z
{
Message = "DynamoDB Thread 2 Reply 2"
PostedBy = "User A"
}
Local Secondary Indexes
second=4
id=3
y=xx(Projected)
Primary key Secondary Index
□ Local Secondary Indexes とは
 ・テーブル毎に最大5つのローカルセカンダリインデックスをサポート
 ・テーブルの属性の一部もしくは全てを射影できる
・・・
id=3
x=xx
y=xx
z=xx
id=3
x=xx
y=xx
z=xx
Local Secondary Indexes
□ LSI がないとき
□ LSI があるとき
Table Item1
Item2
Item N
プログラム
loop (items) {
  //処理
}
Item2
・・・
Item9
必要な Item を抽出
するフィルタが必要
Table Item2
Item9
Query
Query
Provisioned Throughput
□ Unit とは
書き込みの場合
1 ユニット = 1KB の Item に対して 1 秒あたり 1 回の書き込みできる
読み込みの場合
1 ユニット = 4KB のItemに対して強い整合性のある読み込みを 1 秒あたり 1 回
できる ※結果整合性のある読み込みは 1 秒あたり 2 回できる
整合性モデル
□ 結果的に整合性のある読み込み(デフォルト)
‒ 結果的に整合性のあるオプションを選択すると、読み込みスループットが最大限
に向上します。ただし、結果的に整合性のある読み込みには、最新の書き込み結
果が反映されない可能性があります。データの全コピーの整合は通常 1 秒以内に
行われます。短時間後に読み込みを繰り返すことによって、更新されたデータが返
されます。
□ 強い整合性の読み込み
‒ 結果的に整合性のある読み込みに加えて、Amazon DynamoDB は、お客様のア
プリケーションまたはお客様のアプリケーションの要素が必要とする場合に強い
整合性のある読み込みをリクエストするための、柔軟性とコントロールを提供し
ます。強い整合性のある読み込みが返す結果には、読み込みの前に適切な応答を
受け取ったすべての書き込みが反映されています。
API
CREATETABLE
‒ テーブルを作成し、データアクセスに使用するプライマリインデックスを指定します。
UPDATETABLE
‒ 指定されたテーブルについて、 プロビジョニングされたスループット値を更新します。
DELETETABLE
‒ テーブルを削除します。
DESCRIBETABLES
‒ テーブルサイズ、ステータス、およびインデックス情報を返します。
LISTTABLES
‒ 現在のアカウントおよびエンドポイントに関連付けられたすべてのテーブルのリストを返します。
PUTITEM
‒ 新しい項目を作成するか、古い項目を(すべての属性を含め)新しい項目で置き換えます。指定したテーブルに同じプライ
マリキーを持つ項目が存在する場合、既存の項目は新しい項目に完全に置き換えられます。条件付き演算子を使用して、所定
の条件に一致する属性値を持つ項目のみを置き換えたり、その項目が存在しない場合にのみ新しい項目を挿入したりすること
もできます。
BATCHWRITEITEM
‒ 1回のトランザクションとしてではなく、1回のリクエストで、複数のテーブル間で複数の項目を挿入、置換、削除します。
PUT または DELETE で最大25項目のバッチをサポートし、合計リクエストサイズは最大1 MB です。
UPDATEITEM ‒ 既存の項目の属性を編集します。条件付き演算子を使用して、項目の属性値が所定の条件に一致する場合に
のみ更新を実行することもできます。
DELETEITEM
‒ プライマリキーを使用してテーブルから1つの項目を削除します。条件付き演算子を使用して、項目の属性値が所定の条件
に一致する場合にのみ項目を削除することもできます。
API
GETITEM
‒ GETITEM 演算は、プライマリキーに一致する項目の属性セットを返します。GETITEM 演算は、デフォルトでは、結果的
に整合性のある読み込みを提供します。ご利用のアプリケーションで結果的に整合性のある読み込みを使用できない場合は、
CONSISTENTREAD を使用します。
BATCHGETITEMS
‒ BATCHGETITEMS 演算は、複数の項目の属性を複数のテーブルから、それぞれのプライマリキーを使用して返します。1
回の応答のサイズ制限は 1 MB で、最大 100 個の項目を返します。強い整合性と結果整合性の両方をサポートします。
QUERY
‒ テーブルのプライマリキーを使用して、または、セカンダリインデックスからセカンダリインデックスキーを使用して、1
つ以上の項目を取得します。範囲キー値またはセカンダリインデックスキーに対して比較演算子を使用することで、クエリの
範囲を絞り込むことができます。強い整合性と結果整合性の両方をサポートします。応答1つあたりのサイズ上限は1 MBです。
SCAN
‒ テーブルに対して完全スキャンを実行し、1つ以上の項目と属性を取得します。返される項目は、1つ以上の属性に対して指
定したフィルタで制限されている場合があります。したがって、この API は、テーブルのプライマリキーではない属性に対し
て一時的なクエリを有効にするときに使用できます。ただし、これはインデックスを使用しない完全テーブルスキャンなので、
予測可能なパフォーマンスが必要なアプリケーションクエリには使用しないでください。スキャン API リクエストの結果
セットは結果的に整合性があります。スキャン API をインジケータと考えることができます。あるスキャン API リクエスト
のスキャン項目の合計サイズが 1 MB の上限を超えると、そのリクエストは終了し、取得された結果は(以降のオペレーショ
ンでスキャンを続行できるように)LASTEVALUATEDKEY と共に返されます。
デフォルトでは、スキャンオペレーションはデータを順次処理します。テーブルのスキャンを並列で行うことも可能です。ス
キャンオペレーションでは、そのスキャンをいくつのセグメントに分割するかを指定し、複数のセグメントを同時にスキャン
することができます。並列処理を使用したテーブルのスキャンの詳細については、並列スキャンのドキュメントを参照してく
ださい。
料金表
開発・管理ツール
□ AWS Management Console(Webブラウザ)
□ AWS SDK for XXXX
やること
□ 概説
□ Management Console から利用する
・Table の作成
・Throughput の変更
・Item の登録、取得、更新
□ Eclipse から利用する(Java)
・デモンストレーション
□ 手乗りDynamoDB
・デモンストレーション
Management Console から利用
① ここからスタート
② DynamoDBを選択
Table の作成
③ Create Table
をクリック
Table の作成
④ テーブル名を指定
⑤ Primary Key を指定
Table の作成
⑥ Local Secondary Index
を指定
Table の作成
⑦ Throughput を指定
Table の作成
⑧ 通知先 を指定
Table の作成
⑨ 完了
Table の作成
Table が作成された
Throughput の変更
① Modify Throughput
をクリック
Throughput の変更
② Throughput を変更
スループットを減らす作業は1日に4回まで
※グリニッジ標準時基準
1回の作業で最大2倍までスケール可能
③ 完了
Item の登録
① Explore Table をクリック
Item の登録
② New Item をクリック
Item の登録
③ 属性データを入力
④完了
Item の取得(Scan)
① Scan を選択 ② Go をクリック
Item の取得(Scan)
③ Item Details
をクリック
Item 一覧が
表示される
④ Item 詳細が
表示される
Item の取得(Query)
① Query を選択
② Hash Key と Range Key
で検索
Item の更新
① Edit Item をクリック
② Attribute を更新
③ 完了
やること
□ 概説
□ Management Console から利用する
・Table の作成
・Throughput の変更
・Item の登録、取得、更新
□ Eclipse から利用する(Java)
・デモンストレーション
□ 手乗りDynamoDB
・デモンストレーション
手乗りDynamoDBの仕組み
LRMIC G
センサー
WebSocket
(SocketRocket)
- (void)remoteControlReceived
WithEvent:(UIEvent *)event {}
EC2
DynamoDB
websocket
aws-sdk
応答結果により
色が変わる
手乗りDynamoDB
!
    以上!
ありがとうございました!
Items(参考)
Hash Key Range Key

More Related Content

What's hot (20)

PDF
20200617 AWS Black Belt Online Seminar Amazon Athena
Amazon Web Services Japan
 
PDF
DevOps with Database on AWS
Amazon Web Services Japan
 
PPTX
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
 
PDF
Aurora MySQL Backtrack을 이용한 빠른 복구 방법 - 진교선 :: AWS Database Modernization Day 온라인
Amazon Web Services Korea
 
PDF
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
 
PDF
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
 
PDF
Hadoopエコシステムのデータストア振り返り
NTT DATA OSS Professional Services
 
PDF
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
Amazon Web Services Japan
 
PDF
クラウド上のデータ活用デザインパターン
Amazon Web Services Japan
 
PPTX
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
 
PDF
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
Amazon Web Services Japan
 
PDF
20190911 AWS Black Belt Online Seminar AWS Batch
Amazon Web Services Japan
 
PDF
Amazon Athena 初心者向けハンズオン
Amazon Web Services Japan
 
PDF
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
Amazon Web Services Japan
 
PDF
AWSのNoSQL入門
Akihiro Kuwano
 
PDF
AWSのログ管理ベストプラクティス
Akihiro Kuwano
 
PDF
20190821 AWS Black Belt Online Seminar AWS AppSync
Amazon Web Services Japan
 
PDF
20190319 AWS Black Belt Online Seminar Amazon FSx for Lustre
Amazon Web Services Japan
 
PDF
20190806 AWS Black Belt Online Seminar AWS Glue
Amazon Web Services Japan
 
PDF
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
Amazon Web Services Japan
 
20200617 AWS Black Belt Online Seminar Amazon Athena
Amazon Web Services Japan
 
DevOps with Database on AWS
Amazon Web Services Japan
 
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
 
Aurora MySQL Backtrack을 이용한 빠른 복구 방법 - 진교선 :: AWS Database Modernization Day 온라인
Amazon Web Services Korea
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
 
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
 
Hadoopエコシステムのデータストア振り返り
NTT DATA OSS Professional Services
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
Amazon Web Services Japan
 
クラウド上のデータ活用デザインパターン
Amazon Web Services Japan
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
 
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
Amazon Web Services Japan
 
20190911 AWS Black Belt Online Seminar AWS Batch
Amazon Web Services Japan
 
Amazon Athena 初心者向けハンズオン
Amazon Web Services Japan
 
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
Amazon Web Services Japan
 
AWSのNoSQL入門
Akihiro Kuwano
 
AWSのログ管理ベストプラクティス
Akihiro Kuwano
 
20190821 AWS Black Belt Online Seminar AWS AppSync
Amazon Web Services Japan
 
20190319 AWS Black Belt Online Seminar Amazon FSx for Lustre
Amazon Web Services Japan
 
20190806 AWS Black Belt Online Seminar AWS Glue
Amazon Web Services Japan
 
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
Amazon Web Services Japan
 

Similar to Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪 (20)

PDF
DynamoDB Streamを使ったリアルタイム分析
ShinsukeYokota
 
PDF
LINEのMySQL運用について
LINE Corporation
 
PDF
[db tech showcase Tokyo 2015] A33:Amazon DynamoDB Deep Dive by アマゾン データ サービス ...
Insight Technology, Inc.
 
KEY
Web Operations and Perl kansai.pm#14
Masahiro Nagano
 
KEY
XPages 開発 Tips 百連発
Mitsuru Katoh
 
PPT
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
dcubeio
 
PDF
States of Dolphin - MySQL最新技術情報2013秋 -
yoyamasaki
 
PDF
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
Yuko Mori
 
PDF
Deep Dive: Amazon DynamoDB (db tech showcase 2016)
Amazon Web Services Japan
 
PPTX
DynamoDBのテーブル設計手法.pptx
Tetsuya Wada
 
PPTX
AIやマイクロサービスを活用したDynamoDB節約術
gree_tech
 
PDF
Amazon dynamo db、cloudant、blockchainの紹介 20160706
Tsuyoshi Hirayama
 
PPTX
AWS Dev Day Tokyo 2018 | Amazon DynamoDB Backed な テレコムコアシステムを構築・運用してる話
SORACOM,INC
 
PPT
Handlersocket 20110517
akirahiguchi
 
PDF
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Takahiro Inoue
 
PDF
SQL Azure のシームレスな管理
junichi anno
 
PDF
Developers.IO 2019 Effective Datalake
Satoru Ishikawa
 
PDF
AWS Black Belt Techシリーズ AWS re:Invent 2014 最新情報のアップデート
Amazon Web Services Japan
 
PDF
WindowsでMySQL入門
Hidenori Ishii
 
PDF
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
Yoshifumi Kawai
 
DynamoDB Streamを使ったリアルタイム分析
ShinsukeYokota
 
LINEのMySQL運用について
LINE Corporation
 
[db tech showcase Tokyo 2015] A33:Amazon DynamoDB Deep Dive by アマゾン データ サービス ...
Insight Technology, Inc.
 
Web Operations and Perl kansai.pm#14
Masahiro Nagano
 
XPages 開発 Tips 百連発
Mitsuru Katoh
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
dcubeio
 
States of Dolphin - MySQL最新技術情報2013秋 -
yoyamasaki
 
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
Yuko Mori
 
Deep Dive: Amazon DynamoDB (db tech showcase 2016)
Amazon Web Services Japan
 
DynamoDBのテーブル設計手法.pptx
Tetsuya Wada
 
AIやマイクロサービスを活用したDynamoDB節約術
gree_tech
 
Amazon dynamo db、cloudant、blockchainの紹介 20160706
Tsuyoshi Hirayama
 
AWS Dev Day Tokyo 2018 | Amazon DynamoDB Backed な テレコムコアシステムを構築・運用してる話
SORACOM,INC
 
Handlersocket 20110517
akirahiguchi
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Takahiro Inoue
 
SQL Azure のシームレスな管理
junichi anno
 
Developers.IO 2019 Effective Datalake
Satoru Ishikawa
 
AWS Black Belt Techシリーズ AWS re:Invent 2014 最新情報のアップデート
Amazon Web Services Japan
 
WindowsでMySQL入門
Hidenori Ishii
 
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
Yoshifumi Kawai
 
Ad

More from 崇之 清水 (20)

PDF
WordPress RESTful API & Amazon API Gateway (English version)
崇之 清水
 
PDF
知らなきゃ損なアップデートを振り返り(2020年分)- いにしえのサービスから勝手にチョイス
崇之 清水
 
PDF
マイクロサービスを AWS サーバレス&コンテナで実装する方法
崇之 清水
 
PDF
RESTful API を Chalice で紐解く 〜 Python Serverless Microframework for AWS 〜
崇之 清水
 
PDF
クラウドを活用したセンシング/モニタリングなどデータ分析の実現
崇之 清水
 
PDF
AWS 主要なサービスアップデート 6/3-11/28
崇之 清水
 
PDF
5分でサーバーレスの環境構築から本番デプロイまでやったろやないか! - Serverless Meetup Osaka #4 LT
崇之 清水
 
PDF
サーバレスアプリケーションの入門と実践 - AWS Cloud Roadshow 2017 Osaka
崇之 清水
 
PDF
AWS における サーバーレスの基礎からチューニングまで
崇之 清水
 
PDF
データ分析 on AWS
崇之 清水
 
PDF
日本語でおk AI スピーカーを作ってみた
崇之 清水
 
PDF
Amazon Web Services (AWS) のご紹介
崇之 清水
 
PDF
Amazon AI のスゴいデモ(仮) - Serverless Meetup Osaka
崇之 清水
 
PDF
Amazon Pinpoint - re:Invent Serverless Follow Up - 20161207
崇之 清水
 
PDF
AWS SDK for PHP のインストールから 始めるクラウドマスターへの道 〜 Promise による非同期オペレーション 〜
崇之 清水
 
PDF
WordPress RESTful API & Amazon API Gateway - WordCamp Kansai 2016
崇之 清水
 
PDF
Amazon API Gateway を活用したゲームサーバー構築
崇之 清水
 
PDF
関西スタートアップAWS勉強会 スタートアップ最新事例
崇之 清水
 
PDF
スタートアップ向け構成例とAWS活用事例(福岡市スタートアップカフェ)
崇之 清水
 
PDF
Amazon Aurora の活用 - Developers.IO in OSAKA
崇之 清水
 
WordPress RESTful API & Amazon API Gateway (English version)
崇之 清水
 
知らなきゃ損なアップデートを振り返り(2020年分)- いにしえのサービスから勝手にチョイス
崇之 清水
 
マイクロサービスを AWS サーバレス&コンテナで実装する方法
崇之 清水
 
RESTful API を Chalice で紐解く 〜 Python Serverless Microframework for AWS 〜
崇之 清水
 
クラウドを活用したセンシング/モニタリングなどデータ分析の実現
崇之 清水
 
AWS 主要なサービスアップデート 6/3-11/28
崇之 清水
 
5分でサーバーレスの環境構築から本番デプロイまでやったろやないか! - Serverless Meetup Osaka #4 LT
崇之 清水
 
サーバレスアプリケーションの入門と実践 - AWS Cloud Roadshow 2017 Osaka
崇之 清水
 
AWS における サーバーレスの基礎からチューニングまで
崇之 清水
 
データ分析 on AWS
崇之 清水
 
日本語でおk AI スピーカーを作ってみた
崇之 清水
 
Amazon Web Services (AWS) のご紹介
崇之 清水
 
Amazon AI のスゴいデモ(仮) - Serverless Meetup Osaka
崇之 清水
 
Amazon Pinpoint - re:Invent Serverless Follow Up - 20161207
崇之 清水
 
AWS SDK for PHP のインストールから 始めるクラウドマスターへの道 〜 Promise による非同期オペレーション 〜
崇之 清水
 
WordPress RESTful API & Amazon API Gateway - WordCamp Kansai 2016
崇之 清水
 
Amazon API Gateway を活用したゲームサーバー構築
崇之 清水
 
関西スタートアップAWS勉強会 スタートアップ最新事例
崇之 清水
 
スタートアップ向け構成例とAWS活用事例(福岡市スタートアップカフェ)
崇之 清水
 
Amazon Aurora の活用 - Developers.IO in OSAKA
崇之 清水
 
Ad

Recently uploaded (9)

PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 

Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪

  • 1. しみず @shimy_net 2013 / 6 / 22 Amazon DynamoDB 初心者向け 超速マスター編
  • 4. やること □ 概説 □ Management Console から利用する ・Table の作成 ・Throughput の変更 ・Item の登録、取得、更新 □ Eclipse から利用する(Java) ・デモンストレーション □ 手乗りDynamoDB ・デモンストレーション
  • 5. Amazon DynamoDB とは □ 完全マネージド型の NoSQL データベースサービス ・管理不要で高い拡張性を提供 ・ハードウェア調達、インストール、設定、レプリケーション、  ソフトウェア修正プログラムの適用、クラスタ化 が不要 ・開発者はAPI経由で利用するだけ(SDK) □ 高い拡張性 ・データベース容量は自動的に拡張 ・パフォーマンスを指定できる   ・利用者がダイヤルを設定するようにパフォーマンスを設定   ・秒間あたりの、読み込み/書き込みスループットを指定
  • 6. Amazon DynamoDB とは □ データへの高速なアクセス ・AWSクラウドの特性を活用  ・十分な数のハードウェアに分散し、安定した高いパフォーマンスを提供  ・SSDを利用して高速アクセス ・データベースが大規模になっても、数ミリ秒のアクセス速度を期待 □ 高い信頼性 ・同期レプリケーションアーキテクチャ   ・データを複数のAZ(データセンター)にコピー   ・データセンターレベルの障害からもデータを守る
  • 7. Amazon DynamoDB とは □ 整合性モデル  ・読み込みに対して結果的に整合性のある読み込みを設定するか   強い整合性を設定するかを指定できる □ Local Secondary Indexes  ・テーブル毎に最大5つのローカルセカンダリインデックスをサポート  ・テーブルの属性の一部もしくは全てを射影できる □ Amazon EMR 連携  ・S3 への Export / Import、Query、Join
  • 8. Data Model □ Tables Items Attributes DynamoDB Table1 Table2 Table N ・・・ Item1 Item2 Item3 Item N ・・・ { Id = 101 ProductName = "Book 101 Title" ISBN = "111-1111111111" Authors = [ "Author 1", "Author 2" ] Price = -2 Dimensions = "8.5 x 11.0 x 0.5" PageCount = 500 InPublication = 1 ProductCategory = "Book" } Attribute { Id = 201 ProductName = "18-Bicycle 201" Description = "201 description" BicycleType = "Road" Brand = "Brand-Company A" Price = 100 Gender = "M" Color = [ "Red", "Black" ] ProductCategory = "Bike" } Item1 Item2 利用可能な型 ・Scalar data types   Number, String, Binary ・Multi-valued types   Number Set, String Set, Binary Set 64KBまで スキーマレス
  • 9. Primary Key □ Hash Type Primary Key  ・1つの Attribute が Primary Key  ・DynamoDB は Primary Key に対して Hash Index を作成   □ Hash and Range Type Primary Key  ・2つの Attribute が Primary Key      1: Hash Primary Key      2: Range Primary Key  ・DynamoDB は Hash Primary Key に対して Hash Index を作成  ・DynamoDB は Range Primary Key に対して整列した Range Index を作成 Attribute 1 (Hash Primary Key) Attribute 2 Attribute 3 Attribute 1 (Hash Primary Key) Attribute 2 (Range Primary Key) Attribute 3 Map<HashKey,Object> Map<HashKey, SortedMap<RangeKey,Object>>
  • 10. Primary Key(具体例) □ サンプルデータ Table Name Primary Key Type Hash Attribute Name Range Attribute Name Forum ( Name, ... ) Hash Attribute Name: Name - Thread (ForumName, Subject, ... ) Hash and Range Attribute Name: ForumName Attribute Name: Subject Reply ( Id, ReplyDateTime, ... ) Hash and Range Attribute Name: Id Attribute Name: ReplyDateTime Amazon DynamoDB Amazon DynamoDB#DynamoDB Thread 1 2011-12-11 00:40:57 Amazon DynamoDB DynamoDB Thread1 Amazon S3 Amazon DynamoDB DynamoDB Thread2 Amazon S3 S3 Thread2 Amazon DynamoDB#DynamoDB Thread 1 2011-12-18 00:40:57 Amazon DynamoDB#DynamoDB Thread 1 2011-12-25 00:40:57 Amazon DynamoDB#DynamoDB Thread 2 2011-12-25 00:40:57 Amazon DynamoDB#DynamoDB Thread 2 2012-01-03 00:40:57 Forum Thread Reply Hash Primary key Range Primary key Hash Primary key Range Primary key Hash Primary key
  • 11. Primary Key(具体例) □ Forum Name (Primary Key) Other Attributes "Amazon DynamoDB" { Category="Amazon Web Services" Threads=3 Messages=4 Views=1000 LastPostBy="User A" LastPostDateTime= "2012-01-03T00:40:57.165Z" } "Amazon S3" { Category="Amazon Web Services" Threads=1 }
  • 12. Primary Key(具体例) □ Thread Name (Primary Key) Other Attributes ForumName = "Amazon DynamoDB" Subject = "DynamoDB Thread 1" { Message = "DynamoDB thread 1 message text" LastPostedBy = "User A" Views = 0 Replies = 0 Answered = 0 Tags = [ "index", "primarykey", "table" ] LastPostDateTime = "2012-01-03T00:40:57.165Z" } ForumName = "Amazon DynamoDB" Subject = "DynamoDB Thread 2 { Message = "DynamoDB thread 2 message text" LastPostedBy = "User A" Views = 0 Replies = 0 Answered = 0 Tags = [ "index", "primarykey", "rangekey" ] LastPostDateTime = "2012-01-03T00:40:57.165Z" } ForumName = "Amazon S3" Subject = "S3 Thread 1" { Message = "S3 Thread 1 message text" LastPostedBy = "User A" Views = 0 Replies = 0 Answered = 0 Tags = [ "largeobject", "multipart upload" ] LastPostDateTime = "2012-01-03T00:40:57.165Z" }
  • 13. Primary Key(具体例) □ Reply Name (Primary Key) Other Attributes Id = "Amazon DynamoDB#DynamoDB Thread 1" ReplyDateTime = "2011-12-11T00:40:57.165Z { Message = "DynamoDB Thread 1 Reply 1 text" PostedBy = "User A" } Id = "Amazon DynamoDB#DynamoDB Thread 1" ReplyDateTime = "2011-12-18T00:40:57.165Z { Message = "DynamoDB Thread 1 Reply 1 text" PostedBy = "User A" } Id = "Amazon DynamoDB#DynamoDB Thread 1" ReplyDateTime = "2011-12-25T00:40:57.165Z { Message = "DynamoDB Thread 1 Reply 3 text" PostedBy = "User B" } Id = "Amazon DynamoDB#DynamoDB Thread 2" ReplyDateTime = "2011-12-25T00:40:57.165Z { Message = "DynamoDB Thread 2 Reply 1 text" PostedBy = "User A" } Id = "Amazon DynamoDB#DynamoDB Thread 2" ReplyDateTime = "2012-01-03T00:40:57.165Z { Message = "DynamoDB Thread 2 Reply 2" PostedBy = "User A" }
  • 14. Local Secondary Indexes second=4 id=3 y=xx(Projected) Primary key Secondary Index □ Local Secondary Indexes とは  ・テーブル毎に最大5つのローカルセカンダリインデックスをサポート  ・テーブルの属性の一部もしくは全てを射影できる ・・・ id=3 x=xx y=xx z=xx id=3 x=xx y=xx z=xx
  • 15. Local Secondary Indexes □ LSI がないとき □ LSI があるとき Table Item1 Item2 Item N プログラム loop (items) {   //処理 } Item2 ・・・ Item9 必要な Item を抽出 するフィルタが必要 Table Item2 Item9 Query Query
  • 16. Provisioned Throughput □ Unit とは 書き込みの場合 1 ユニット = 1KB の Item に対して 1 秒あたり 1 回の書き込みできる 読み込みの場合 1 ユニット = 4KB のItemに対して強い整合性のある読み込みを 1 秒あたり 1 回 できる ※結果整合性のある読み込みは 1 秒あたり 2 回できる
  • 17. 整合性モデル □ 結果的に整合性のある読み込み(デフォルト) ‒ 結果的に整合性のあるオプションを選択すると、読み込みスループットが最大限 に向上します。ただし、結果的に整合性のある読み込みには、最新の書き込み結 果が反映されない可能性があります。データの全コピーの整合は通常 1 秒以内に 行われます。短時間後に読み込みを繰り返すことによって、更新されたデータが返 されます。 □ 強い整合性の読み込み ‒ 結果的に整合性のある読み込みに加えて、Amazon DynamoDB は、お客様のア プリケーションまたはお客様のアプリケーションの要素が必要とする場合に強い 整合性のある読み込みをリクエストするための、柔軟性とコントロールを提供し ます。強い整合性のある読み込みが返す結果には、読み込みの前に適切な応答を 受け取ったすべての書き込みが反映されています。
  • 18. API CREATETABLE ‒ テーブルを作成し、データアクセスに使用するプライマリインデックスを指定します。 UPDATETABLE ‒ 指定されたテーブルについて、 プロビジョニングされたスループット値を更新します。 DELETETABLE ‒ テーブルを削除します。 DESCRIBETABLES ‒ テーブルサイズ、ステータス、およびインデックス情報を返します。 LISTTABLES ‒ 現在のアカウントおよびエンドポイントに関連付けられたすべてのテーブルのリストを返します。 PUTITEM ‒ 新しい項目を作成するか、古い項目を(すべての属性を含め)新しい項目で置き換えます。指定したテーブルに同じプライ マリキーを持つ項目が存在する場合、既存の項目は新しい項目に完全に置き換えられます。条件付き演算子を使用して、所定 の条件に一致する属性値を持つ項目のみを置き換えたり、その項目が存在しない場合にのみ新しい項目を挿入したりすること もできます。 BATCHWRITEITEM ‒ 1回のトランザクションとしてではなく、1回のリクエストで、複数のテーブル間で複数の項目を挿入、置換、削除します。 PUT または DELETE で最大25項目のバッチをサポートし、合計リクエストサイズは最大1 MB です。 UPDATEITEM ‒ 既存の項目の属性を編集します。条件付き演算子を使用して、項目の属性値が所定の条件に一致する場合に のみ更新を実行することもできます。 DELETEITEM ‒ プライマリキーを使用してテーブルから1つの項目を削除します。条件付き演算子を使用して、項目の属性値が所定の条件 に一致する場合にのみ項目を削除することもできます。
  • 19. API GETITEM ‒ GETITEM 演算は、プライマリキーに一致する項目の属性セットを返します。GETITEM 演算は、デフォルトでは、結果的 に整合性のある読み込みを提供します。ご利用のアプリケーションで結果的に整合性のある読み込みを使用できない場合は、 CONSISTENTREAD を使用します。 BATCHGETITEMS ‒ BATCHGETITEMS 演算は、複数の項目の属性を複数のテーブルから、それぞれのプライマリキーを使用して返します。1 回の応答のサイズ制限は 1 MB で、最大 100 個の項目を返します。強い整合性と結果整合性の両方をサポートします。 QUERY ‒ テーブルのプライマリキーを使用して、または、セカンダリインデックスからセカンダリインデックスキーを使用して、1 つ以上の項目を取得します。範囲キー値またはセカンダリインデックスキーに対して比較演算子を使用することで、クエリの 範囲を絞り込むことができます。強い整合性と結果整合性の両方をサポートします。応答1つあたりのサイズ上限は1 MBです。 SCAN ‒ テーブルに対して完全スキャンを実行し、1つ以上の項目と属性を取得します。返される項目は、1つ以上の属性に対して指 定したフィルタで制限されている場合があります。したがって、この API は、テーブルのプライマリキーではない属性に対し て一時的なクエリを有効にするときに使用できます。ただし、これはインデックスを使用しない完全テーブルスキャンなので、 予測可能なパフォーマンスが必要なアプリケーションクエリには使用しないでください。スキャン API リクエストの結果 セットは結果的に整合性があります。スキャン API をインジケータと考えることができます。あるスキャン API リクエスト のスキャン項目の合計サイズが 1 MB の上限を超えると、そのリクエストは終了し、取得された結果は(以降のオペレーショ ンでスキャンを続行できるように)LASTEVALUATEDKEY と共に返されます。 デフォルトでは、スキャンオペレーションはデータを順次処理します。テーブルのスキャンを並列で行うことも可能です。ス キャンオペレーションでは、そのスキャンをいくつのセグメントに分割するかを指定し、複数のセグメントを同時にスキャン することができます。並列処理を使用したテーブルのスキャンの詳細については、並列スキャンのドキュメントを参照してく ださい。
  • 21. 開発・管理ツール □ AWS Management Console(Webブラウザ) □ AWS SDK for XXXX
  • 22. やること □ 概説 □ Management Console から利用する ・Table の作成 ・Throughput の変更 ・Item の登録、取得、更新 □ Eclipse から利用する(Java) ・デモンストレーション □ 手乗りDynamoDB ・デモンストレーション
  • 23. Management Console から利用 ① ここからスタート ② DynamoDBを選択
  • 24. Table の作成 ③ Create Table をクリック
  • 26. Table の作成 ⑥ Local Secondary Index を指定
  • 31. Throughput の変更 ① Modify Throughput をクリック
  • 32. Throughput の変更 ② Throughput を変更 スループットを減らす作業は1日に4回まで ※グリニッジ標準時基準 1回の作業で最大2倍までスケール可能 ③ 完了
  • 33. Item の登録 ① Explore Table をクリック
  • 34. Item の登録 ② New Item をクリック
  • 36. Item の取得(Scan) ① Scan を選択 ② Go をクリック
  • 37. Item の取得(Scan) ③ Item Details をクリック Item 一覧が 表示される ④ Item 詳細が 表示される
  • 38. Item の取得(Query) ① Query を選択 ② Hash Key と Range Key で検索
  • 39. Item の更新 ① Edit Item をクリック ② Attribute を更新 ③ 完了
  • 40. やること □ 概説 □ Management Console から利用する ・Table の作成 ・Throughput の変更 ・Item の登録、取得、更新 □ Eclipse から利用する(Java) ・デモンストレーション □ 手乗りDynamoDB ・デモンストレーション