Mais conteúdo relacionado Semelhante a Amazon DynamoDBの紹介と東急ハンズでの活用について (20) Amazon DynamoDBの紹介と東急ハンズでの活用について1. Copyright © 2014. All rights reserved.
2015年2月7日
JAWS-UG KANSAI特別編
ハンズラボ株式会社 井上 泰治
DynamoDBの紹介と東急ハンズでの活用について
5. 4
1. Amazon DynamoDBの紹介
- 構築不要
- 自分でインストールする必要がない
- 運用不要
- 落ちないように中の人が頑張ってくれる
- 万が一何かあったらAWSのせいにできる
エンジニアの精神衛生
の向上!!
特徴1: AWS完全マネージドのデータストア
6. 5
1. Amazon DynamoDBの紹介
- 必要に応じて自動的にスケールアウト
- 必要性=データ容量 or スループット
特徴2: スケーラビリティ
レプリケーションやシャーディングなどを考慮する必要がない。
▶ データ量、アクセス数が増えても、アプリケーションに手を入れ
なくて済む
Read Capacity
2,000
Read Capacity
10,000 :
scale
7. 6
1. Amazon DynamoDBの紹介
- 1回の書き込みリクエストで、3ヶ所のAZ
に保存される
特徴3: 高信頼性
Availability Zone
Availability Zone
Availability Zone
instance
Write
8. 7
1. Amazon DynamoDBの紹介
• スループットと容量により決定
• 指定したスループットにより時間あたりの
料金が決定。
• 容量による課金は、めちゃ安いので考え
るのやめた。
• リザーブド(前払い)による割引あり。
特徴4: 柔軟な料金体系
9. 8
1. Amazon DynamoDBの紹介
- スキーマレスKey-Valueストア(インデックス以外)
- 検索はインデックスでのみ可能
- インデックスは事前に作成しておく
- JSON形式のデータ型もサポート
user_id name age created_at
1 John 20 2015-01-03
2 David 33 2015-01-11
3 Anthony 18 2015-01-18
テーブル
項目(≒レコード)
属性(≒カラム)
特徴5: データ・モデル
GSIが後から作成できる
ようになりました!
(2015/1/27 発表)
11. 10
1. Amazon DynamoDBの紹介
• 属性(Attribute)は型を持つ
• インデックスは指定した型の値を入れる必要がある
• それ以外はレコード毎に型や属性名はバラバラでOK
• 利用できるデータ型は以下のとおり
1. データ型
名称 説明
String 文字列
Number 数値
Binary バイナリ
String Set 文字列の配列
Number Set 数値の配列
Binary Set バイナリの配列
名称 説明
List JSONの配列のよう
な順序付き集合
Map JSONのオブジェクト
のようなKey-Value
ペア
Boolean 真偽値
Null NULL値
※ インデックスに使用できるのは String、Number、Binaryのみ
13. 12
1. Amazon DynamoDBの紹介
プライマリインデックス
- テーブルに必ず1つ作成するインデックス
- Hash Keyのみと、Hash Key + Range Key の2種類から選択
- 各インデックスでユニークになる必要がある
- データ型は、String / Number / Binary から選択
id name age
1 John 20
2 David 33
3 Anthony 18
user_id friend_id
1 2
1 3
2 1
HK HK RK
テーブル: users (HKの例) テーブル: friends (HK+RKの例)
2. インデックス
14. 13
1. Amazon DynamoDBの紹介
ローカルセカンダリインデックス(LSI)
- プライマリインデックスのHash Key に別のRange
Keyを設定できるようなイメージ
- 同じ Hash Key内でのみ検索、ソートが可能
user_id friend_id mute_flag
1 2 1
1 3 0
2 1 1
HK LSI:RK
SELECT * FROM friends
WHERE user_id = 1
AND mute_flag = 0
<Queryイメージ>RK
テーブル: friends
2. インデックス
15. 14
1. Amazon DynamoDBの紹介
グローバルセカンダリインデックス(GSI)
- プライマリインデックスとは別にHash Key , Range
Key を追加できる
- Hash Keyをまたいだ検索が可能
user_id name country age
1 John Japan 20
2 David US 33
3 Anthony Australia 18
GSI:RKGSI:HKHK
SELECT * FROM users
WHERE country = ‘US’
AND age >= 20
<Queryイメージ>
テーブル: users
2. インデックス
プライマリのHKとは関係ない
テーブル縦断したクエリが実行でき
る
19. 18
1. Amazon DynamoDBの紹介 (1)
ローカルで開発するには、DynamoDB Localを
DynamoDBの始め方
• 無料で使えるDynamoDB疑似環境
• Javaが動く環境であれば動く(はず)
• JavaScript Shell が同胞されており、ブラウザから試せる
28. 27
3. おまけ
DynamoDB最新情報
• オンラインでGlobal Secondary Indexが作成できるように。
• リザーブドキャパシティが 100Unitから購入できるように。
• 以前は4000Unitだったので、より小規模でも導入しやすく
• 月額課金に比べて53%(1年)から76%(3年)のコスト削減が可
能
• DynamoDB Streams が Preview リリース
• Redshiftや、CloudSearchなどとの連携がやりやすく
Notas do Editor
----- 会議メモ (15/02/04 22:08) -----
あああ
----- 会議メモ (15/02/06 01:56) -----
せっかく大阪まで来たのにのんびりしていられない。
----- 会議メモ (15/02/04 23:02) -----
○○ と言った内容で紹介していきたいと思います。
----- 会議メモ (15/02/04 23:02) -----
MySQLなどのRDBを使っていると、シャーディングしたり、レプリケーションしたりといったことが必要になってきますが、DynamoDBは裏側で勝手にやってくれる。
書き込みは、こっちのDB、読み込みはこっちのDB
とか、シャードを考慮した実装をしなくて良い。
----- 会議メモ (15/02/04 23:02) -----
S3とかと同様に
オンプレミス環境で同じような仕組みをつくろうとしたら
とても大変。
----- 会議メモ (15/02/04 23:02) -----
使っただけ支払う形
----- 会議メモ (15/02/04 23:04) -----
データ・モデルについては、
もう少し掘り下げて見てみたいと思います。
----- 会議メモ (15/02/07 09:57) -----
各言語のSDKなどで、言語のデータ型と、DynamoDBのデータ型を相互変換してくれる機能などが実装されている。
あまり、考慮しなくてもよいかもしれない。
ただ、きちんとキャストしてないとエラーになることも。
----- 会議メモ (15/02/04 23:12) -----
リザーブドキャパシティ=前払い
以上が、DynamoDBの紹介と、東急ハンズでの使い方の紹介になります。
話を聞くだけだと分からない部分もあると思うので、実際に手を動かして使ってみていただければと思います。
・好きに喋ってください