Upload
genki-ishibashi
View
242
Download
0
Embed Size (px)
Citation preview
DynamoDB とはとはスキルウェンズデー@ 17F_ アトリエエリアいしばし げんき
自己紹介名前:石橋 弦樹(@b0941015)
経歴・趣味で iOS アプリを開発・ 3D プリンタに関する研究・ 2015 年 7 月 CyberZ に入社サーバーサイドエンジニアとして Scala の修行中
DynamoDB ってご存知??
DynamoDB とは何か• RDBMS のスケールの限界を超えるため開発された KVS システム
http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf日本語版: https://gist.github.com/matope/2657692
• 高可用性• 高拡張性• 低い運用負荷
DynamoDB とは何か• 完全マネージド型の NoSQL データベースサービス• 型があるスキーマレスな KVS
• プロビジョンドスループット• 整合性モデル
DynamoDB とは何か• 完全マネージド型の NoSQL データベースサービス
単一障害点が存在しない構成データは 3 箇所に保存ストレージは必要に応じて自動的にパーテショニング
管理不要で信頼性が高い
• 型があるスキーマレスな KVS
DynamoDB とは何か
スキーマレス事前にプライマリキーのみ決定
データ型スカラー型…数値、文字列、バイナリ、ブール、 nullドキュメント型… JSON( リスト、マップ )設定型…文字セット、数値セット、バイナリセット
• プロビジョンドスループットDynamoDB とは何か
書き込み性能・読み込み性能をテーブル毎に予約
ストレージの容量制限がない
スループットは運用中に変更可能( ただし、スケールダウンは一日 4 回まで )
• 整合性モデルDynamoDB とは何か
書込読込少なくとも 2 つの AZ で書込完了時点で Ack
デフォルトでは結果整合性のある読込→ 最新の書込結果が反映されない場合がある一貫性のある読込 ( 強力な整合性のある読込 )→Write が全て反映されたレスポンスを保証→Capacity Unit を 2 倍消費する
使い分け ~vs RDS~RDS
一貫性 強力 結果整合なので基本的には無い
原始性 ある 同じテーブル内のみ検索条件 SQL で自由自在 事前に指定キーまたは
インデックス可用性 メンテナンスあり 基本的に常に利用可拡張性 スケールアップで天井
ありシャーディングによる
スケールアウト
DynamoDB
検索・集計・トランザクション→ RDBキーによるデータ取得・管理がめんどくさい→ DynamoDB
使い分け ~vs S3~S3 DynamoD
B
保存データ ~5TB ~400KB
保存形式 非構造化 Blob インデックス化された構造化データ
大きなオブジェクトまたはアクセス頻度の少ないデータ→ S3比較的小さなデータ , S3 オブジェクトのポインタなど→ DynamoDB
開発環境
開発環境オペレーションは HTTP ベースの API で提供
clientSDK
API Database
クライアント サーバーサイド (AWS)
HTTP API 仕様 : http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/MakingHTTPRequests.html
開発環境SDK 対応言語 ( 公式 )
SDK 対応言語 ( 非公式 )
開発環境ローカルでも開発可能
ブラウザで GUI 操作も可能
DynamoDB 使ってみた
DynamoDB 使ってみた
DynamoDB 使ってみた
DynamoDB 使ってみた
• GetItem…1 件のアイテム取得• PutItem…1 件のアイテム挿入• Update… 更新• Delete…削除• Query… 条件よりアイテムの検索• BatchXXX…複数のアイテム操作• Scan… 全件の取得
DynamoDB 使ってみたテーブル操作について
DynamoDB 使ってみた$ aws dynamodb scan --table-name foxla-dev-friends{ "Count": 0, "Items": [], "ScannedCount": 0, "ConsumedCapacity": null}$ aws dynamodb put-item --table-name foxla-dev-friends --item '{"mid": {"S":"123456"},"name": {"S":"Bashio"}}’$ aws dynamodb scan --table-name foxla-dev-friends { "Count": 1, "Items": [ { "name": { "S": "Bashio" }, "mid": { "S": "123456" } } ], "ScannedCount": 1, "ConsumedCapacity": null
次回予告• Scala で DynamoDB 使ってみた• DynamoDB の性能ってどうなの??
まとめ
ご清聴ありがとうございました!!