23
DynamoDB とととと ととととととととと17F_ ととととととと とととと ととと

DynamoDBとはとは

Embed Size (px)

Citation preview

Page 1: DynamoDBとはとは

DynamoDB とはとはスキルウェンズデー@ 17F_ アトリエエリアいしばし げんき

Page 2: DynamoDBとはとは

自己紹介名前:石橋 弦樹(@b0941015)

経歴・趣味で iOS アプリを開発・ 3D プリンタに関する研究・ 2015 年 7 月 CyberZ に入社サーバーサイドエンジニアとして Scala の修行中

Page 3: DynamoDBとはとは

DynamoDB ってご存知??

Page 4: DynamoDBとはとは

DynamoDB とは何か• RDBMS のスケールの限界を超えるため開発された KVS システム

http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf日本語版: https://gist.github.com/matope/2657692

• 高可用性• 高拡張性• 低い運用負荷

Page 5: DynamoDBとはとは

DynamoDB とは何か• 完全マネージド型の NoSQL データベースサービス• 型があるスキーマレスな KVS

• プロビジョンドスループット• 整合性モデル

Page 6: DynamoDBとはとは

DynamoDB とは何か• 完全マネージド型の NoSQL データベースサービス

単一障害点が存在しない構成データは 3 箇所に保存ストレージは必要に応じて自動的にパーテショニング

管理不要で信頼性が高い

Page 7: DynamoDBとはとは

• 型があるスキーマレスな KVS

DynamoDB とは何か

スキーマレス事前にプライマリキーのみ決定

データ型スカラー型…数値、文字列、バイナリ、ブール、 nullドキュメント型… JSON( リスト、マップ )設定型…文字セット、数値セット、バイナリセット

Page 8: DynamoDBとはとは

• プロビジョンドスループットDynamoDB とは何か

書き込み性能・読み込み性能をテーブル毎に予約

ストレージの容量制限がない

スループットは運用中に変更可能( ただし、スケールダウンは一日 4 回まで )

Page 9: DynamoDBとはとは

• 整合性モデルDynamoDB とは何か

書込読込少なくとも 2 つの AZ で書込完了時点で Ack

デフォルトでは結果整合性のある読込→ 最新の書込結果が反映されない場合がある一貫性のある読込 ( 強力な整合性のある読込 )→Write が全て反映されたレスポンスを保証→Capacity Unit を 2 倍消費する

Page 10: DynamoDBとはとは

使い分け ~vs RDS~RDS

一貫性 強力 結果整合なので基本的には無い

原始性 ある 同じテーブル内のみ検索条件 SQL で自由自在 事前に指定キーまたは

インデックス可用性 メンテナンスあり 基本的に常に利用可拡張性 スケールアップで天井

ありシャーディングによる

スケールアウト

DynamoDB

検索・集計・トランザクション→ RDBキーによるデータ取得・管理がめんどくさい→ DynamoDB

Page 11: DynamoDBとはとは

使い分け ~vs S3~S3 DynamoD

B

保存データ ~5TB ~400KB

保存形式 非構造化 Blob インデックス化された構造化データ

大きなオブジェクトまたはアクセス頻度の少ないデータ→ S3比較的小さなデータ , S3 オブジェクトのポインタなど→ DynamoDB

Page 12: DynamoDBとはとは

開発環境

Page 13: DynamoDBとはとは

開発環境オペレーションは HTTP ベースの API で提供

clientSDK

API Database

クライアント サーバーサイド (AWS)

HTTP API 仕様 : http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/MakingHTTPRequests.html

Page 14: DynamoDBとはとは

開発環境SDK 対応言語 ( 公式 )

SDK 対応言語 ( 非公式 )

Page 15: DynamoDBとはとは

開発環境ローカルでも開発可能

ブラウザで GUI 操作も可能

Page 16: DynamoDBとはとは

DynamoDB 使ってみた

Page 17: DynamoDBとはとは

DynamoDB 使ってみた

Page 18: DynamoDBとはとは

DynamoDB 使ってみた

Page 19: DynamoDBとはとは

DynamoDB 使ってみた

Page 20: DynamoDBとはとは

• GetItem…1 件のアイテム取得• PutItem…1 件のアイテム挿入• Update… 更新• Delete…削除• Query… 条件よりアイテムの検索• BatchXXX…複数のアイテム操作• Scan… 全件の取得

DynamoDB 使ってみたテーブル操作について

Page 21: 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

Page 22: DynamoDBとはとは

次回予告• Scala で DynamoDB 使ってみた• DynamoDB の性能ってどうなの??

Page 23: DynamoDBとはとは

まとめ

ご清聴ありがとうございました!!