SlideShare a Scribd company logo
Amazon DynamoDB
初心者が理解した事
間違ってたら教えて下さい
JAWS-UG会津 德納
自己紹介
● 德納 弘和 (とくのう ひろかず)
● 某社の工場のITシステム部門
● 39才にして IT部門へ移動して4年目
– 遅れを取り戻すべく日夜勉強中
● 少し覚えた言語
– VBA, SQL, JavaScript, Java, Perl, Shell...
● コードを極力書かないのがお気に入り
– Pentaho ETL, Oracle APEX, Mojolicious
2013年の学びと挑戦
● ユニケージ開発手法
● Perl, Mojolicious
● Jenkins
● 自動テスト jUnit, Mockito, shUnit2
● Twitter Bootstrap, Google Maps APIなど
● 勉強会の楽しさ!
– エフスタ!
– オープンデータカフェ会津
– JAWS-UG会津
● CODE for AIZU参加
2014年の学びと挑戦
● LODチャレンジ応募
● Hack for Town in Aizu参加
● Meteor(Node.js, MongoDB) on Nitrous.IO
● GitHubデビュ〜
● Amazon DynamoDB 今ここ
クラウド素人です
アカウントを作ったのは7日前
DynamoDBって何?
● Fully Managed NoSQL Database Service
DynamoDBって何?
● Fully Managed NoSQL Database Service
なんのこっちゃ?
DynamoDBって何?
● Fully Managed NoSQL Database Service
– NoSQL
– Fully Managed Database Service
分けて考えよう
NoSQLの理解
● Not only SQL
● 巨大なデータの読み込み速度を上げる
– データ整合性を諦める
● 柔軟なデータ構造 (DynamoDB他一部のみ)
– レコード毎に持つデータを変えられる
● 集計とか検索は得意ではない
Fully Managed DB Service
● サーバーの様にデータベースを借りられる
– 読み書き速度、保存容量、転送量に課金
● 管理は全てAmazonにお任せ
– インストール、アップグレード、パッチ
– 保存容量確保 : 上限無し!
– パフォーマンス調整
– 3カ所に分散保存
簡単に言うと
● 面倒な事はAmazonにお任せ!
● パフォーマンスはSSDでバカっぱや!
● それでも不満なら金で解決!
● 容量の増加を気にしなくて良い!
● 3カ所に分散保管で信頼性抜群!
● 普通のDBと得意分野が違うので気を付けろ!
取り敢えず使ってみよう
● Service - DynamoDB
テーブル作成
● Create Table
テーブル設定
● Primary Key(主キー)
– Hashだけ、又はHashとRangeの組み合わせ
Primary Key
● Hash Key : データ分散用の項目
– UserIDなどデータが集中しない項目を選ぶ
– Game IDや年月など集中する項目を避ける
● Range Key :
– 範囲検索用の項目
● この2項目で一意になるよう詰め込む
Primary Keyの例
● フォーラムを3つのテーブルで表す
Table Primary Key Attributes
Hash Range
Group JAWS-UG奥の
細道
{
LastPostBy="Kurihara"
LastPostDateTime= "2012-01-
03T00:40:57.165Z"
}
Thread JAWS-UG奥の
細道
内容について {
Message = "アンカンファレンスをしては?"
Tags = [ "JAWS-UG", "東北" ]
LastPostDateTime = "2012-01-
03T00:40:57.165Z"
}
Reply JAWS-UG奥の
細道#内容につ
いて
2011-12-
11T00:40:57.
165Z
{
Message = "エクストリーム!"
PostedBy = "Kurihara"
}
項目名 Attributes
● Hash, Range以外の中身
● データ毎にAttributesが変わっても良い
● 型
– String
– Number
– Binary
– String Set (配列)
– Number Set (配列)
– Binary Set (配列)
日付などは文字列に変換
Index作成
● オプションなので何も設定しなくても良い
Index
● テーブル当り検索用に各5項目を設定出来る
– 裏では同期するHash-Rangeテーブルを作成
– 書き込み、保存コストが発生
● 作成時のみ設定可能。 追加、変更出来ない。
● Local secondary index
– Hash Keyはテーブルと同じ項目、Range Key
は別項目でHash-Rangeテーブルを作成
● Global secondary index
– HashもRangeもテーブルとは別項目でHas-
Rangeテーブルを作成
Index
● こんな風に動いているらしい
Hash Range Attribute1 Attribute2
A 1 あ い
B 2 う え
Hash Attribute2 Attribute1 Range
A い あ 1
B え う 2
Primary Key
Primary Key
Index
性能設定
● Read Capacity Unit
– 4KBのアイテムを1個/秒で読み込める
● Write Capacity Unit
– 1KBのアイテムを1個/秒で書き込める
警告の設定
● 設定した性能の75~95%を超えた場合にメール
通知を出せる
最後に確認
● お約束
¥60/月
出来上がり!
● 3つ作ってみました。
欠点
● Indexの修正が出来ない
– 変えたくなると作り替え
– 大量にデータを移すにはコストが発生
● ERD的な書類との同期の仕組みが無い (多分)
● 向き、不向きがある
– Primary Key, Index以外を検索するには全件
検索するしかない
– 一貫性のあるTransactionはRDBを使うか
JavaのTransaction Libraryを使う必要がある
– RDBと併用が推奨されているが複雑化
コンソール以外からも!
● 公式SDK達
● 非公式もPerlなどたくさん
Android Browser iOS
Java .NET Node.js
Python PHP Ruby
SDKに用意されているAPI
● Table操作
– CreateTable
– DeleteTable
– DescribeTable
– ListTables
– UpdateTable
● バッチ処理
– BatchGetItem
– BatchWriteItem
● Item操作
– PutItem
– GetItem
– UpdateItem
– DeleteItem
● 検索
– Query : Primary
or Index
– Scan : 総なめ
あそんでみよう!
NoSQLと言えばビッグデータ
ビッグデータと言えば
Twitter解析
気になる疑問を
徹底検証!
調べる事は、、、
自主規制
仕方ないので
WebSockで掲示板
多くの例があって面白く無い
RESTfull APIを作ってみよう!
こんな感じ
DynamoDBNitrous.IOWeb Client
● 全部ただ
RESTfull API
● 簡単なものだけ実装しました
– BatchGetItemとBatchWriteItemは未実装
操作 Function Method URL例
Create putItem POST /Group/Hash?p=1&q=A
Read scan
getItem
GET /Groups
/Groups/Hash
Update updateItem PUT /Group/Hash?p=A&q=1
Delete deleteItem DELETE /Group/Hash
Create by POST
● curl -i -X POST -H "Content-Type:
application/json" -d '{"datetime":"2013-03-
13T23:27:32.256Z" , "by":"とくのう"}'
http://your_host:8080/Group/JAWS-UG
Read all by GET
● curl -H "Content-Type: application/json"
http://your_host:8080/Groups
Read by GET
● curl -H "Content-Type: application/json"
http://your_host:8080/Group/JAWS-UG奥の細
道
日本語はURIエンコードしましょう
Update by PUT
● curl -i -X PUT -H "Content-Type:
application/json" -d '{"datetime":"2021-03-
14T00:04:01.951Z" , "by":"連れて行って貰った
事ありません"}'
http://your_host:8080/Group/JAWS-UG
Delete by DELETE
● curl -i -X DELETE
http://your_host:8080/Group/JAWS-UG
もう一捻り欲しい
Amazon DynamoDB 初心者が理解した事
こんな感じ
DynamoDBNitrous.IOPentaho ETL
● これも全部無料
データ処理ならPentaho
● でもDynamoDBの速度制限で早く無い
● 早くしたいなら金を出す
Group LastPostDateTime LastPostBy
あ 2013-03-13T23:27:32.256Z とくのう
い 2013-03-13T23:27:32.256Z とくのう
う 2013-03-13T23:27:32.256Z とくのう
え 2013-03-13T23:27:32.256Z とくのう
お 2013-03-13T23:27:32.256Z とくのう
か 2013-03-13T23:27:32.256Z とくのう
き 2013-03-13T23:27:32.256Z とくのう
く 2013-03-13T23:27:32.256Z とくのう
け 2013-03-13T23:27:32.256Z とくのう
こ 2013-03-13T23:27:32.256Z とくのう
あ1 2013-03-13T23:27:32.256Z とくのう
い1 2013-03-13T23:27:32.256Z とくのう
う1 2013-03-13T23:27:32.256Z とくのう
え1 2013-03-13T23:27:32.256Z とくのう
お1 2013-03-13T23:27:32.256Z とくのう
か1 2013-03-13T23:27:32.256Z とくのう
き1 2013-03-13T23:27:32.256Z とくのう
まとめ
● 管理は全てAmazonにお任せで楽!
● 外部キーが無いがアプリ側で実装しているのが
実態らしい
– けっこう面倒
● Indexの追加、削除が出来ないのは痛い
● 柔軟に検索出来ない。 1MB毎に再検索とか
● 実体とドキュメントを同期させる方法が欲しい
● 使い捨てと巨大なデータを持つシステムだけが
美味しい使い方?
ご清聴ありがとうございました
実績
● 2014.03.08 アカウント作成
● 2014.03.11 Hack for Town 3年の
2014.03.11 クロスオーバー振り返り参加
● 2014.03.12 Game Lab成果発表会参加
● 2014.03.13 RESTfull 開発、Pentahoで遊ぶ
● 2014.03.14 発表
Appendix
Region
● ここで使っているRegionを見つけた。
– http://docs.aws.amazon.com/general/latest/gr/rande.html
Credentialsの確認方法
IAM
Create a New Group of Users
Group名
Permissions
● 全部出来るPower User Accessを選択
Policy確認
● だから何って感じだけど見さされる
Create User
Userの確認
Credentials
● やっと確認

More Related Content

PPTX
DynamoDBだけでソシャゲを作ってみた
PPTX
Amazon DynamoDBの紹介と東急ハンズでの活用について
PDF
20120409 aws meister-reloaded-dynamo-db
PPTX
ハンズのDynamoDBクラウドパターン
PPTX
DynamoDB活用事例 株式会社マイネット
PDF
DynamoDBを導入した話
PDF
AWSのNoSQL入門
PDF
ゲームのインフラをAwsで実戦tips全て見せます
DynamoDBだけでソシャゲを作ってみた
Amazon DynamoDBの紹介と東急ハンズでの活用について
20120409 aws meister-reloaded-dynamo-db
ハンズのDynamoDBクラウドパターン
DynamoDB活用事例 株式会社マイネット
DynamoDBを導入した話
AWSのNoSQL入門
ゲームのインフラをAwsで実戦tips全て見せます

What's hot (20)

PDF
サーバーのおしごと
PDF
Rds徹底入門
PPTX
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
PPTX
初心者向け負荷軽減のはなし
PPTX
GREE 流!AWS をお得に使う方法
PDF
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
PPTX
AIやマイクロサービスを活用したDynamoDB節約術
PPTX
みんな大好き“全文検索 on AWS”を試してみました!
PDF
DynamoDBを利用したKPI保存システム
PDF
RDS(MySQL)の利用と注意点
PDF
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PDF
Data Engineering at VOYAGE GROUP #jawsdays
PDF
PHPで大規模ブラウザゲームを開発してわかったこと
PDF
CloudSearchによる全文検索 - CM:道 2014/08/01
PDF
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
PPTX
ゲームエンジニアのためのデータベース設計
PDF
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
PPT
大ヒットソーシャルアプリの裏側
PDF
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
PDF
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
サーバーのおしごと
Rds徹底入門
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
初心者向け負荷軽減のはなし
GREE 流!AWS をお得に使う方法
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
AIやマイクロサービスを活用したDynamoDB節約術
みんな大好き“全文検索 on AWS”を試してみました!
DynamoDBを利用したKPI保存システム
RDS(MySQL)の利用と注意点
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
Data Engineering at VOYAGE GROUP #jawsdays
PHPで大規模ブラウザゲームを開発してわかったこと
CloudSearchによる全文検索 - CM:道 2014/08/01
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
ゲームエンジニアのためのデータベース設計
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
大ヒットソーシャルアプリの裏側
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
Ad

Viewers also liked (20)

PDF
日本最大の即レスサービス「アンサー」を支える Amazon DynamoDB
PPTX
DynamoDBによるソーシャルゲーム実装 How To
PDF
[AWSマイスターシリーズ] Amazon DynamoDB
PDF
SQLite の暗号化
PDF
MySQLおじさんの逆襲
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
PDF
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
PPTX
AWSで始めるサーバレスな RESTful API システム
PDF
Amazon DynamoDBの概要説明
PPTX
NoSQL勉強会
PDF
cassandra 100 node cluster admin operation
PDF
NoSQLデータベースと位置情報
PDF
SQLによるDynamoDBの操作
PPTX
Applibot presents Smartphone Game on AWS
PDF
[よくわかるクラウドデータベース] CassandraからAmazon DynamoDBへの移行事例
PDF
Lambdaによるクラウド型言語の実装
PDF
Amazon DynamoDB Lessen's Learned by Beginner
PDF
はじめてのアマゾンクラウド②[仮想サーバ(Amazon EC2)を立ち上げる]
PDF
[db tech showcase Tokyo 2015] A33:Amazon DynamoDB Deep Dive by アマゾン データ サービス ...
PDF
JAWS-UG on ASCII.jp とは?
日本最大の即レスサービス「アンサー」を支える Amazon DynamoDB
DynamoDBによるソーシャルゲーム実装 How To
[AWSマイスターシリーズ] Amazon DynamoDB
SQLite の暗号化
MySQLおじさんの逆襲
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
AWSで始めるサーバレスな RESTful API システム
Amazon DynamoDBの概要説明
NoSQL勉強会
cassandra 100 node cluster admin operation
NoSQLデータベースと位置情報
SQLによるDynamoDBの操作
Applibot presents Smartphone Game on AWS
[よくわかるクラウドデータベース] CassandraからAmazon DynamoDBへの移行事例
Lambdaによるクラウド型言語の実装
Amazon DynamoDB Lessen's Learned by Beginner
はじめてのアマゾンクラウド②[仮想サーバ(Amazon EC2)を立ち上げる]
[db tech showcase Tokyo 2015] A33:Amazon DynamoDB Deep Dive by アマゾン データ サービス ...
JAWS-UG on ASCII.jp とは?
Ad

Similar to Amazon DynamoDB 初心者が理解した事 (20)

PDF
Amazon dynamo db、cloudant、blockchainの紹介 20160706
PDF
Lunch & Learn, AWS NoSQL Services
PDF
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
PDF
DynamoDBの初心者に伝えたい初めて触るときの勘所
PDF
Deep Dive: Amazon DynamoDB (db tech showcase 2016)
PDF
AWS Black Belt Online Seminar AWS 体験ハンズオン 〜 Amazon DynamoDB テーブル作成編 〜
PDF
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
PDF
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
PPTX
Dynamo db はじめの一歩
PDF
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
PDF
Data Engineering at VOYAGE GROUP #jawsdays
PDF
Cassandraとh baseの比較して入門するno sql
PDF
AWSによるグラフDB構築
PDF
Treasure Dataを支える技術 - MessagePack編
PDF
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
PDF
[よくわかるクラウドデータベース] AWSデータベースアップデート 20140117
PDF
DynamoDB を掌握しろ(JAWSUG京都 @shimy_net )
PPTX
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
PDF
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
Amazon dynamo db、cloudant、blockchainの紹介 20160706
Lunch & Learn, AWS NoSQL Services
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
DynamoDBの初心者に伝えたい初めて触るときの勘所
Deep Dive: Amazon DynamoDB (db tech showcase 2016)
AWS Black Belt Online Seminar AWS 体験ハンズオン 〜 Amazon DynamoDB テーブル作成編 〜
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Dynamo db はじめの一歩
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
Data Engineering at VOYAGE GROUP #jawsdays
Cassandraとh baseの比較して入門するno sql
AWSによるグラフDB構築
Treasure Dataを支える技術 - MessagePack編
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
[よくわかるクラウドデータベース] AWSデータベースアップデート 20140117
DynamoDB を掌握しろ(JAWSUG京都 @shimy_net )
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎

More from Hirokazu Tokuno (20)

PDF
Vibe Codingやってみた : 無課金でAI Agentを試した経験を簡単に
PDF
ChatGPTでしりとり
PDF
ChatGPTのLINEボット
PDF
初めてのRoblox.pdf
PDF
プログラミング講座【小学校高学年向け】 R4-20221227.pdf
PDF
プログラミング講座【小学校高学年向け】 R3-20211128.pdf
PDF
(非公式) 福島県 新型コロナウイルス感染症対策サイトに 貢献しよう
PDF
Stripe触ってみた! Jekyll + AWS S3に組み込み
PDF
福島県職員向けプログラミング
PDF
<女性限定>在宅ワーク講座 公開版 Django入門
PDF
会社作ってみた
PDF
小学校先生向けプログラミングワークショップ
PDF
シビックテックの勧め
PDF
徳納的シビックテック
PDF
マイコンボード色々 2017.03
PDF
マイコンボード色々
PDF
Kickstart, Puppet, Docker
PDF
IoT without Wiring
PDF
電子工作部(未公認) 第一回 後付け資料
PDF
One Button
Vibe Codingやってみた : 無課金でAI Agentを試した経験を簡単に
ChatGPTでしりとり
ChatGPTのLINEボット
初めてのRoblox.pdf
プログラミング講座【小学校高学年向け】 R4-20221227.pdf
プログラミング講座【小学校高学年向け】 R3-20211128.pdf
(非公式) 福島県 新型コロナウイルス感染症対策サイトに 貢献しよう
Stripe触ってみた! Jekyll + AWS S3に組み込み
福島県職員向けプログラミング
<女性限定>在宅ワーク講座 公開版 Django入門
会社作ってみた
小学校先生向けプログラミングワークショップ
シビックテックの勧め
徳納的シビックテック
マイコンボード色々 2017.03
マイコンボード色々
Kickstart, Puppet, Docker
IoT without Wiring
電子工作部(未公認) 第一回 後付け資料
One Button

Amazon DynamoDB 初心者が理解した事