aws初心者向けwebinar awsでのnosqlの活用

94
【初心者向けWebinar】 AWSでのNoSQLの活用 2015/07/14 アマゾン データ サービス ジャパン株式会社 ソリューションアーキテクト 森 祐孝

Upload: amazon-web-services-japan

Post on 07-Aug-2015

2.395 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: AWS初心者向けWebinar AWSでのNoSQLの活用

【初心者向けWebinar】AWSでのNoSQLの活用

2015/07/14

アマゾン データ サービス ジャパン株式会社

ソリューションアーキテクト 森 祐孝

Page 2: AWS初心者向けWebinar AWSでのNoSQLの活用

初心者向けWebinarのご紹介

• AWSについてこれから学ぶ方向けのソリューションカットの技術Webinarです。

• 過去のWebinar資料– AWSクラウドサービス活用資料集ページにて公開

http://aws.amazon.com/jp/aws-jp-introduction/

• イベントの告知– 国内のイベント・セミナースケジュールページにて告知

http://aws.amazon.com/jp/about-aws/events/

(オンラインセミナー枠)

Page 3: AWS初心者向けWebinar AWSでのNoSQLの活用

アジェンダ

• Introduction

• 基本的なサービスのご紹介

• NoSQLとRDB

• AWS環境でのNoSQL

• まとめ

Page 4: AWS初心者向けWebinar AWSでのNoSQLの活用

アジェンダ

• Introduction

• 基本的なサービスのご紹介

• NoSQLとRDB

• AWS環境でのNoSQL

• まとめ

Page 5: AWS初心者向けWebinar AWSでのNoSQLの活用

Introduction

• Amazon Web Service(AWS)では、様々なデータベースサービスを提供しています。データベースサービスの中でNoSQLサービスにフォーカスし、NoSQLに関する機能やRDBMSとの違いを紹介致します

• 現在NoSQLはRDBMSでは処理し辛い領域を補いながら活用されており、NoSQLサービスの典型的な使い方や使いどころについて紹介いたします

Page 6: AWS初心者向けWebinar AWSでのNoSQLの活用

アジェンダ

• Introduction

• 基本的なサービスのご紹介

• NoSQLとRDB

• AWS環境でのNoSQL

• まとめ

Page 7: AWS初心者向けWebinar AWSでのNoSQLの活用

基本的なAWS上でのWeb+DBサーバの構成

• よくある構成

– DNSサーバ

– Load Balancer (LB)

– WEBサーバ

– DBサーバ

– CDN+Origin

Availability Zone Availability Zone

Clients

Page 8: AWS初心者向けWebinar AWSでのNoSQLの活用

• AWSのリージョン内の区分け• 地域的に近いデータセンタ群

• リージョン内のAZは、同時障害の確率が低くなる様に設計• 2箇所が同時に障害になること

はほぼない• 複数のAZを利用する構成にすること

でサービスの可用性を上げられる

Availability Zone (AZ)

基本的なAWS上でのWeb+DBサーバの構成Clients

Availability Zone Availability Zone

Page 9: AWS初心者向けWebinar AWSでのNoSQLの活用

Clients

Availability Zone

Amazon EC2

Availability Zone

• クラウド上の仮想サーバ• 用途に応じた様々なタイプ

• CPU重視、メモリ重視、等• 1時間単位の従量課金

• 不要になったら止めればいい• 様々なOSを選択可能

• Window Server、Redhat、CentOS等

• イメージを保存して複製できる• 簡単バックアップ• 必要な時にすぐサーバ追加可能

Amazon Elastic Compute Cloud (EC2)

基本的なAWS上でのWeb+DBサーバの構成

Page 10: AWS初心者向けWebinar AWSでのNoSQLの活用

Clients

Availability Zone Availability Zone

• クラウド上のRDBMS• MySQL, PostgreSQL,

ORACLE, SQLServerから選択可• 用途に応じた様々なタイプ

• スタンダード、メモリ重視、等• 1時間単位の従量課金

• タイプ変更も単価が変わるだけ• AWSのマネージドサービス

• バックアップや障害時自動切替• 高度な運用スキルは必要ない

Amazon RDS

Amazon Relational Database Services (RDS)

基本的なAWS上でのWeb+DBサーバの構成

Page 11: AWS初心者向けWebinar AWSでのNoSQLの活用

Clients

Availability Zone Availability Zone

• クラウド上の負荷分散機• 複数のEC2にリクエストを分散• ヘルスチェックで可用性もUP

• 負荷状況に応じて自動でスケール• ELB自体が自動で拡大・縮小

• 1時間単位の従量課金• 不要になったら止めればいい• API、機能毎にELB分けても安価

• AWSのマネージドサービス• LB運用はAWSにお任せ

Elastic LoadBalancing

Elastic Load Balancing (ELB)

基本的なAWS上でのWeb+DBサーバの構成

Page 12: AWS初心者向けWebinar AWSでのNoSQLの活用

Clients

Availability Zone Availability Zone

• クラウド上のオブジェクトストレージ• 無限に置けるファイル置き場• 複数AZに自動で複製する耐久性

• S3単体でHTTPのファイル配信も• 画像や動画などのアセット配信• 静的サイトならEC2不要

• 使った分だけの従量課金• AWSのマネージドサービス

• ファイル置き場にもう悩まない

Amazon S3

Amazon Simple Storage Service (S3)

基本的なAWS上でのWeb+DBサーバの構成

Page 13: AWS初心者向けWebinar AWSでのNoSQLの活用

Clients

Availability Zone Availability Zone

• クラウド上のCDN• 静的ファイルを高速配信する

ネットワーク• 自動で近くのエッジサーバから

配信• S3をオリジンに設定することも

• S3との通信は無料• 使った分だけの従量課金• AWSのマネージドサービス

Amazon CloudFront

CloudFront

基本的なAWS上でのWeb+DBサーバの構成

Page 14: AWS初心者向けWebinar AWSでのNoSQLの活用

Clients

Availability Zone Availability Zone

• クラウド上のDNSサービス• 独自ドメインのレコードを設定• API経由でも簡単操作

• 使った分だけの従量課金• AWSのマネージドサービス

Amazon Route 53

Amazon Route 53

基本的なAWS上でのWeb+DBサーバの構成

Page 15: AWS初心者向けWebinar AWSでのNoSQLの活用

AWS SDKs and CLI

• 各種言語むけのオフィシャルSDKやCLIを利用

Java Python PHP .NET Ruby nodeJS

iOS AndroidJavascript

in the Browser AWS CLI

Page 16: AWS初心者向けWebinar AWSでのNoSQLの活用

アジェンダ

• Introduction

• 基本的なサービスのご紹介

• NoSQLとRDB

• AWS環境でのNoSQL

• まとめ

Page 17: AWS初心者向けWebinar AWSでのNoSQLの活用

NoSQL?

「NoSQL(一般に”Not only SQL”と解釈される)とは、リレーショナルデータベース管理システム (RDBMS) 以外のデータベース管理システムを指すおおまかな分類語である。リレーショナルデータベースをやみくもに使用してきた長い歴史を打破し、それ以外のデータベースの利用・発展を促進させようとする運動の標語としての意味合いを持つ。」

NoSQL - ウィキペディア

https://ja.wikipedia.org/wiki/NoSQL

Page 18: AWS初心者向けWebinar AWSでのNoSQLの活用

RDBMS?

• データは表形式で保存

• データベース言語SQLを利用してデータを操作

• トランザクション処理– 関連付けられた複数の処理が「すべて成功」か「すべて失敗」のどちらかであ

ることを保証

• データ一貫性

• スケールアウトが困難– 高負荷時、アクセスが集中した場合、構造的にスケールアウトが難しいのでレ

イテンシを稼ぐのが難しい

Page 19: AWS初心者向けWebinar AWSでのNoSQLの活用

NoSQL

• RDBMSではないデータストアの特徴

– 固定されたスキーマに縛られないこと

– 関係モデルの結合操作を利用しないこと(場合によっては単にそのような機能が欠落しているだけ)

– 水平スケーラビリティが確保しやすい事が多いこと

– トランザクションを利用できないものが多いこと

NoSQL - ウィキペディアhttps://ja.wikipedia.org/wiki/NoSQL

Page 20: AWS初心者向けWebinar AWSでのNoSQLの活用

よく見かけるNoSQLデータベース

• Neo4j

• Couchbase

• DynamoDB

• Redis

• MongoDB

• Riak

• HBase

• Cassandra

• BigTable

• HyperTable

Page 21: AWS初心者向けWebinar AWSでのNoSQLの活用

NoSQLの4つのデータモデル• キーバリューストア(Key-Value Store)

– キーに対してバリュー(値)という単純な構造

– 高速なパフォーマンスとデータ分散が行えるため拡張性に優れている

– データの読込がRDBと比較して高速であることが特徴

– 例)Riak、Redis

• カラムストア(Column Store)– ワイドカラムストア(Wide-column Store)とも呼ばれます

– 列指向とも言われることもありますが、データはRDBのようにレコード(行)で管理される。アクセスはキーバリューと同じようにキーを使用して列単位

– 非定型の大規模データを格納することを主な目的としており、行ごとに任意の名前のカラム(列)を無数に(時には1行に数百万カラム)格納でき、RDBより柔軟性とパフォーマンス、拡張性で優れていていると言われ、データの書き込みが高速であることが特徴です

– 例)HBase、BigTable

Page 22: AWS初心者向けWebinar AWSでのNoSQLの活用

NoSQLの4つのデータモデル• ドキュメントデータベース(Document Database)

– キーに対してバリューではなく、 JSONやXMLのスキーマレスでデータ構造が柔軟なより、複雑なドキュメントとしてデータを格納

– 複雑なデータ構造を扱うアプリケーションにおいては、生産性高く柔軟に開発できるメリットがありる

– 例)MongoDB、CouchDB

• グラフデータベース(Graph Database)– グラフ理論に基づき、相互に結びついた要素で構成され、それぞれの間に任意の数の

結びつきのあるデータ同士の関係をグラフとして表すのが適切なデータを対象とするように設計

– グラフデータベースは、従来のRDBでは不可能だった形でデータの関係をモデル化し探索するのに役立つように作られており、データをグラフ型で格納した場合、RDBと比較して高速に横断検索をすることが可能

– 例)Neo4J、Polyglot

Page 23: AWS初心者向けWebinar AWSでのNoSQLの活用

NoSQL vs RDBMS

トランザクション特性➔BASE

得意/メリット➔スケーラビリティ

不得意/デメリット➔複雑なクエリ➔トランザクション

トランザクション特性➔ACID

得意/メリット➔柔軟なクエリ➔トランザクション

不得意/デメリット➔スケーラビリティ

NoSQL RDBMS

Page 24: AWS初心者向けWebinar AWSでのNoSQLの活用

ACID?

Page 25: AWS初心者向けWebinar AWSでのNoSQLの活用

Atomicity、Consistency、Isolation、Durability

• 原子性(atomicity、不可分性)– トランザクションに含まれるタスクが全て実行されるか、あるいは全く実行されない

ことを保証する性質

• 一貫性(consistency)– トランザクション開始と終了時にあらかじめ与えられた整合性を満たすことを保証す

る性質

– 整合性条件を満たさない状態を起こすようなトランザクションは実行が中断

• 独立性(isolation)– トランザクション中に行われる操作の過程が他の操作から隠蔽

• 永続性(durability)– トランザクション操作の完了通知をユーザが受けた時点で、その操作は永続的となり、

結果が失われないこと

Page 26: AWS初心者向けWebinar AWSでのNoSQLの活用

BASE?

Page 27: AWS初心者向けWebinar AWSでのNoSQLの活用

Basically Available, Soft-state, Eventually consistent

• 主に分散システム上でのスケーラビリティを確保するために厳密なトランザクションをあきらめている– Basically Available:サービス提供中であっても、古いデータが返ることや、

データ更新作業のためにクエリが失敗する可能性がある

– Soft-state:入力がない状態でも、結果整合性をたもつためのデータ更新作業により、状態の変化がある可能性がある

– Eventually consistent:データ更新モデルは結果整合性が取られており、入力後の即時更新は保証されない

• すべてのNoSQLが完全にBASEとは限らない(実装による)

Page 28: AWS初心者向けWebinar AWSでのNoSQLの活用

NoSQLの使いドコロ?

Page 29: AWS初心者向けWebinar AWSでのNoSQLの活用

RDBMS vs. NoSQL

• 日本ではSQL対応のデータベース(RDBMS)が多用されている。– RDBMSによる:トランザクション処理 or 分析処理(データウェアハウス)– ACID属性 vs. BASE属性

• 一般的にNoSQLの特徴として、下記の点があげられる– ストレージ容量をスケールさせやすい– スループットをスケールさせやすい– 実際にストレージやスループットが増えてきた時に性能劣化しにくい

Page 30: AWS初心者向けWebinar AWSでのNoSQLの活用

NoSQLの使いドコロ

• NoSQLの利用価値は?– 低レイテンシ・高スループット、シンプルなAPI

– Webセッション管理

– Publish・Subscribeモデル、イベント処理

– JSON形式データの格納

– ソーシャル・グラフ、BOM(Bill of material)ツリーの検索

これらの特徴が必要とされるところがNoSQLの使いドコロ。

ただし、これもNoSQLの一般的な特徴として、自前で運用するのにはかなりの労力が必要とされる。

Page 31: AWS初心者向けWebinar AWSでのNoSQLの活用

アジェンダ

• Introduction

• 基本的なサービスのご紹介

• NoSQLとRDB

• AWS環境でのNoSQL

• まとめ

Page 32: AWS初心者向けWebinar AWSでのNoSQLの活用

Compute Storage

AWS Global Infrastructure

Application Services

Deployment & Administration

Networking

Database

Amazon DynamoDB

Amazon RDS

Amazon ElastiCache

Amazon Redshift

スケーラブルで高パフォーマンス AWS上で利用可能なデータベース・サービス

AWSデータベース・サービス

Page 33: AWS初心者向けWebinar AWSでのNoSQLの活用

AWSデータベース・サービスの概要

• フルマネージド・データベースの特性に応じた使い分け

NoSQL

SQL

Amazon ElastiCache

• 低レンテンシ• インメモリ

Amazon DynamoDB

• 3拠点間でのレプリケーション

• SSDに永続化

Amazon RDS

• トランザクション処理

• RDBMSの容易な運用管理

Amazon Redshift

• 集計・分析処理• データウェアハウス

(大容量データ)

Page 34: AWS初心者向けWebinar AWSでのNoSQLの活用

DynamoDBNoSQLデータベースサービス保証されたパフォーマンスとスケーラビリティ

ElastiCacheインメモリキャッシュサービスデプロイ、操作、スケールが簡単

NoSQLデータベース・サービス

Page 35: AWS初心者向けWebinar AWSでのNoSQLの活用

Amazon ElastiCache

Page 36: AWS初心者向けWebinar AWSでのNoSQLの活用

Amazon ElastiCacheとは

• 構築– キャッシュクラスタを数クリックで起動– EC2、RDSと同様、初期費用無し、時間単位の従量課金

• 移行– 2種類のエンジン(memcached, redis)をサポート– 既存アプリケーションの変更不要

• 運用– 可用性を向上させる機能– モニタリング、自動障害検出、復旧、拡張、パッチ管理

機能を提供

• セキュリティ– セキュリティグループ、VPC対応、

メモリ内キャッシュをマネージドで提供するサービス→キャッシュに読み込まれたオブジェクトを保存し、性能負荷を軽減する

Page 37: AWS初心者向けWebinar AWSでのNoSQLの活用

アプリケーションの高速化

目的アプリを高速化する手法の一つ消えても良いデータを格納してDBアクセス・負荷を低減メモリにキャッシュしたデータを再利用し 低遅延化・負荷低減

ELB App

External APIs

ElastiCache用途クエリ結果を再利用 (DBサーバの負荷低減、高速化)揮発性の高いデータを格納 (セッション情報管理)複雑な計算結果・二次データを再利用 (APPサーバの負荷軽減)

Page 38: AWS初心者向けWebinar AWSでのNoSQLの活用

メモリキャッシュとは?

• Web+DBアプリケーションの典型的な構成

App RDBMS

1. クライアントからのリクエスト

2. Appサーバが、DBサーバに問い合わせ

3. DBサーバが結果を戻す

4. Appサーバがレスポンスをクライアントに返す

Page 39: AWS初心者向けWebinar AWSでのNoSQLの活用

メモリキャッシュとは?

• トラフィックが増えると

App RDBMS

5. Appサーバ,DBサーバをスケール6. 効果・効率・コスト的な面、DBをスケールさせる難易度は?⇒ RDBをスケール“アウト”させるのは難しい。

App RDBMS

Page 40: AWS初心者向けWebinar AWSでのNoSQLの活用

メモリキャッシュとは?

• DB負荷を軽減するためにキャッシュにデータを載せる– アプリケーション側で、DBとキャッシュを使い分ける

App RDBMS

Appキャッシュ

Page 41: AWS初心者向けWebinar AWSでのNoSQLの活用

メモリキャッシュとは?

• データ参照時の操作

キャッシュ

App RDBMS

■キーを検索軸に属性データがキャッシュにあるか?

取得して完了

②なければDBへクエリ

クエリ結果を取得

DBにクエリを実行した場合、クエリ結果をキャッシュ

繰り返し⇒(Point)キャッシュに最新結果が反映される

①あればキャッシュへ

Page 42: AWS初心者向けWebinar AWSでのNoSQLの活用

メモリキャッシュとは?

• 更新時の操作

常にDBにInsert / Update

その結果をオブジェクト書き込み

キャッシュ

RDBMS

⇒(Point)キャッシュには最新結果が反映される

■キーを検索軸に属性データをキャッシュに配置する

App

繰り返し

Page 43: AWS初心者向けWebinar AWSでのNoSQLの活用

セッション管理

• 共有キャッシュとして使った構成 複数のAppサーバで共有するセッション用メモリ空間を実現

多くの言語やフレームワークが対応済み

セッションレプリケーションやロードバランサに依存しない構成が可能

App

App

キャッシュLB

■セッションIDのキーを検索軸に属性データを参照

Page 44: AWS初心者向けWebinar AWSでのNoSQLの活用

2 つのインメモリキャッシュエンジン

マルチノードクラスタ

オートディスカバリ

非永続化

リードレプリカ

バックアップリストア

永続化オプション

ElastiCache

Redis

memcached

Page 45: AWS初心者向けWebinar AWSでのNoSQLの活用

memcachedとは?

• インメモリ key-value ストアキャッシュサーバ 2003年にDanga Interactiveが開発(BSDライセンス) ブログサービス「Live Journal」の負荷対策用に作られたもの 多くのサイトで採用 (YouTube, Wikipedia, mixi, etc. )

• 特徴 KVSのデファクトスタンダードプロトコル

• Key-valueのシンプルなデータ構造• パフォーマンス向上を重視

主要機能のみのシンプルな機能• アクセス制御などのセキュリティ機能無し• マスタノード、シャーディング、レプリケーションなどの機構無し

– データ削除は明示的、期限、LRUの3方式

Page 46: AWS初心者向けWebinar AWSでのNoSQLの活用

Amazon ElastiCache for memcached

• 特徴– 対応バージョン 1.4.5、1.4.14 (2015.7.14現在)

– memcached プロトコル準拠

– Cache Clusterという論理グループに、Cache Nodeを複数台起動

– ノードの自動検出機能のAuto Discovery対応Client Libraryを提供

– バックアップ機能(Snapshot)は持たない

CacheCluster A CacheCluster B

ConfigrationEndpoint

ConfigrationEndpoint

NodeEndpoin

t

NodeEndpoin

t

NodeEndpoin

t

NodeEndpoin

t

Page 47: AWS初心者向けWebinar AWSでのNoSQLの活用

Redisとは?

• In-memory Key-Value Store

• 高機能なデータ構造、データ操作– List, Set, Sorted Set, Hash

• 永続化機構– SAVE/BGSAVE

• Snapshot,フルダンプ

– Append only File

• 書き込みコマンドの記録

• 冗長化機構

– Replication

• Pub/Sub機能– 非同期メッセージング

• Lua scripting– 高度な計算をRedisで実行可能

http://redis.io/

Page 48: AWS初心者向けWebinar AWSでのNoSQLの活用

ElastiCache for Redis• 特徴

– 対応バージョン: 2.6.13、2.8.6、2.8.19 (2015.7.14現在)– 複数のCluster Group から構成されるReplication Group を構成し複数ノードで同期が取

れる– S3上のスナップショット(RDB)プリロード機能でElastiCache 上へのデータ移行も容易– Multi-AZ配置での自動フェイルオーバーにも対応– Snapshotベースでのバックアップリスト機能にも対応– Redisの機能をほぼサポート

• Lua Scripting• Pub/Sub• Append Only File

• 対応しない機能– CONFIG, SLAVEOFなど一部コマンドのみ無効– パスワード (アクセス制御はセキュリティグループにて実施)

Page 49: AWS初心者向けWebinar AWSでのNoSQLの活用

ElastiCache for Redisの高可用性と永続性

• マルチAZのための非同期レプリケーション機能• ElastiCache は自動的に障害を検知し、1 つのリー

ドレプリカへフェイルオーバーを行う

• クラスターのスナップショットを作成することでデータの保護に役立つ

• スナップショットは、新しい Redis 用 ElastiCacheクラスターをシードするためにも使用できる

Page 50: AWS初心者向けWebinar AWSでのNoSQLの活用

ElastiCacheの料金体系

• オンデマンド キャッシュノード

– 初期費用無し、時間単位の従量課金モデル

– MemcachedとRedisでどちらも料金は変わらず

• リザーブド キャッシュノード

– 予約金を支払うことで時間当たり価格を割引(最大70%節減)

– アベイラビリティゾーンの指定が不要

時間あたりの料金(東京リージョン)※2015年7月14日現在

Standard Cache Nodes - Current Generation

cache.t2.micro $0.026

cache.t2.small $0.052

cache.t2.medium $0.104

cache.m3.medium $0.120

cache.m3.large $0.240

cache.m3.xlarge $0.485

cache.m3.2xlarge $0.965

Memory Optimized Cache Nodes - Current Generation

cache.r3.large $0.273

cache.r3.xlarge $0.546

cache.r3.2xlarge $1.092

cache.r3.4xlarge $2.184

cache.r3.8xlarge $4.368

Page 51: AWS初心者向けWebinar AWSでのNoSQLの活用

ElastiCacheの料金体系

• バックアップストレージ

– Redis向け機能

– 各クラスタに対して1つのSnapshotは無料

– 2つ以上のSnapshotから毎月 0.085 USD/GBが課金

• AZ間データ転送量– 同AZ内でのEC2とElastiCache間の通信は課金対象外

– 同一リージョンの異なる AZにある EC2とElastiCache間のみ、0.01 USD/GB が課金

http://aws.amazon.com/jp/elasticache/pricing/http://aws.amazon.com/jp/elasticache/reserved-cache-nodes/

Page 52: AWS初心者向けWebinar AWSでのNoSQLの活用

Availability Zone Availability Zone

Amazon ElastiCache

ElastiCache

AWS上でのWeb+DBサーバの構成(キャッシュサーバ)

• クエリ結果を再利用• DBサーバの負荷低減• 高速化

• 揮発性の高いデータを格納• セッション情報管理

• 複雑な計算結果、二次データを再利用• APPサーバの負荷軽減

Clients

Page 53: AWS初心者向けWebinar AWSでのNoSQLの活用

マネックス証券様 Monex Insight

• Webベースのリアルタイム市場データ配信システム

– 投資家による取引の判断基準に使われるため、リアルタイム性が要求される。

– 指数情報、業種情報、通貨ペア、コモディティ等を表示

• 大規模な顧客基盤を支えるために高いスケーラビリティも求められる。

• 株式市場の取引時間に合わせて、リソースの増減を制御

* AWS Summit Tokyo 2014 マネックス証券様のセッションより引用

Page 54: AWS初心者向けWebinar AWSでのNoSQLの活用

マネックス証券様 Monex Insight

• 各Tierが数分で自由にスケール可能

Page 55: AWS初心者向けWebinar AWSでのNoSQLの活用

ElastiCacheの使いどころ

• キー・ベースでのアクセス

– set(key, value)、value = get(key)

• あくまでキャッシュであり、主はRDBMS等に永続化されることを前提とする

• 更新頻度が低く、アクセス頻度が高いデータをキャッシュ-> キャッシュ・ヒット率が高い

http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-elasticache

詳しくはAWS Black Belt ElastiCache 資料を参照

Page 56: AWS初心者向けWebinar AWSでのNoSQLの活用

Amazon DynamoDB

Page 57: AWS初心者向けWebinar AWSでのNoSQLの活用

Amazon DynamoDBの特徴

• 完全マネージド型の NoSQL データベースサービス– ストレージの容量制限がない

– OSやソフトウェアのパッチ等の運用管理の必要なし

– サーバーの設定、サーバのプロビジョニングも必要なし

• ハイスケーラブル、低レイテンシー

• 高可用性– 3x レプリケーション

• シンプル且つパワフルAPI

クライアント

Page 58: AWS初心者向けWebinar AWSでのNoSQLの活用

Flexible

キーバリューデータストア

• テーブル内のそれぞれのアイテ

ムは属性と値のリストで保持さ

れる

• 1つ以上のAttributeを持ち、

アイテム間で不揃いであっても

問題ない

• 属性はあとから追加できる

ドキュメントデータベース

• Jsonデータのサポート

Page 59: AWS初心者向けWebinar AWSでのNoSQLの活用

DynamoDBを使い始めるには

1. テーブルのKeyやIndexを決める

2. Read/Writeそれぞれのスループットを決める

That’s it, write your code!

Page 60: AWS初心者向けWebinar AWSでのNoSQLの活用

Tabletable

items

attributes

HashKey

RangeKey

必須キーバリュー型のアクセスパターンデータ分散に利用される

オプション1:Nモデルのリレーションシップ豊富なQueryをサポート

ハッシュキー検索用

==, <, >, >=, <=“begins with”“between”sorted resultscounts先頭/末尾 N件ページ単位出力

name/value 型、JSON 型アイテム間で不揃いであっても問題ない

Page 61: AWS初心者向けWebinar AWSでのNoSQLの活用

Local Secondary Index (LSI)• Range key以外に絞り込み検索を行うkeyを持つことができる

• Hash keyが同一で、他のアイテムからの検索のために利用

A1(hash)

A3(range)

A2(table key)

A1(hash)

A2(range)

A3 A4 A5

LSIs A1(hash)

A4(range)

A2(table key)

A3(projected)

Table

KEYS_ONLY

INCLUDE A3

A1(hash)

A5(range)

A2(table key)

A3(projected)

A4(projected)

ALL

Page 62: AWS初心者向けWebinar AWSでのNoSQLの活用

Global Secondary Index (GSI)• Hash Key属性の代わりとなる

• Hash Keyをまたいで検索を行うためのインデックス

A1(hash)

A2 A3 A4 A5

GSIs A5(hash)

A4(range)

A1(table key)

A3(projected)

Table

INCLUDE A3

A4(hash)

A5(range)

A1(table key)

A2(projected)

A3(projected)

ALL

A2(hash)

A1(table key)

KEYS_ONLY

Page 63: AWS初心者向けWebinar AWSでのNoSQLの活用

Data Types

• String (S)

• Number (N)

• Binary (B)

• String Set (SS)

• Number Set (NS)

• Binary Set (BS)

• Boolean (BOOL)

• Null (NULL)

• List (L)

• Map (M)

JSON用に定義

Page 64: AWS初心者向けWebinar AWSでのNoSQLの活用

Documentデータ型 (JSON)

• データタイプ (M, L, BOOL, NULL) としてJSONをサポート

• Document SDKs

– 単純なプログラミングモデル

– JSONから、JSONへの変換

– Java, JavaScript, Ruby, .NET

Javascript DynamoDB

string S

number N

boolean BOOL

null NULL

array L

object M

Page 65: AWS初心者向けWebinar AWSでのNoSQLの活用

プロビジョンドスループット

• テーブルごとにReadとWriteそれぞれに対し、必要な分だけのスループットキャパシティを割り当てる(=プロビジョンする)ことができる

• 例えば下記のようにプロビジョンする– Read : 1,000

– Write : 100

• 書き込みワークロードが上がってきたら– Read : 500

– Write : 1,000

• この値はDB運用中にオンラインで変更可能

Page 66: AWS初心者向けWebinar AWSでのNoSQLの活用

• CreateTable

• UpdateTable

• DeleteTable

• DescribeTable

• ListTables

• GetItem

• PutItem

• UpdateItem

• DeleteItem

• Query

• Scan

• BatchGetItem

• BatchWriteItem• Liststreams

• DescribeStream

• GetShardIterator

• GetRecords

Table API

Streams API

DynamoDB

In preview

Page 67: AWS初心者向けWebinar AWSでのNoSQLの活用

DynamoDBの料金体系

• プロビジョンドスループットで決まる時間料金– Read/Writeそれぞれプロビジョンしたスループットによって時間あたりの料金

がきまる

– 大規模に利用するのであればリザーブドキャパシティによる割引もあり

• ストレージ利用量– 保存したデータ容量によって決まる月額利用料金

– 計算はGBあたりの単価が適用される

– GBあたり$0.285(2015/07/14現在@東京リージョン)

http://aws.amazon.com/jp/dynamodb/pricing/

Page 68: AWS初心者向けWebinar AWSでのNoSQLの活用

DynamoDBの料金体系• プロビジョンドスループット

– 書き込み

• $0.00742 :10 ユニットの書き込み容量あたり/1 時間

– 読み込み

• $0.00742 : 50 ユニットの読み込み容量あたり/1 時間

• キャパシティユニット上記で「ユニット」と呼ばれている単位のこと

– 書き込み

• 1ユニット:最大1KBのデータを1秒に1回書き込み可能

– 読み込み

• 1ユニット:最大4KBのデータを1秒に1回読み込み可能(強一貫性を持たない読み込みであれば1秒辺り2回)

Page 69: AWS初心者向けWebinar AWSでのNoSQLの活用

DynamoDBが使われているユースケース

• KVSとして– Webアプリケーションの永続的なセッションデータベース

– ユーザー情報の格納するデータベース

• 広告やゲームなどのユーザー行動履歴DBとして– ユーザーIDごとに複数の行動履歴を管理するためのデータベース

• ソーシャルアプリのバックエンドとして– モバイルアプリから直接参照できるデータベースとして

• 他にも– バッチ処理のロック管理

– フラッシュマーケティング

– ストレージのインデックス

Page 70: AWS初心者向けWebinar AWSでのNoSQLの活用

Availability Zone Availability Zone

Amazon DynamoDB

AWS上でのWeb+DBサーバの構成(NoSQL)

DynamoDB

• シンプルにKVSで管理が可能なレベルであれば・・• 3箇所冗長の可用性• 容量制限なし• OSやソフトウェアのパッチ等

の運用管理の必要なし• ダウンタイムゼロで変更可能

なスループット

Clients

Page 71: AWS初心者向けWebinar AWSでのNoSQLの活用

Availability Zone Availability Zone

Amazon DynamoDB

AWS上でのWeb+DBサーバの構成(NoSQL、RDBMSハイブリット)

• NoSQL、RDBMS併用• トランザクション処理が必須• NoSQLを高速化のためのキャッシュ• NoSQLで大量データを扱うために使

例)ECショッピングサイトカート処理、商品情報

NoSQL(DynamoDB)在庫管理、決済関連

RDBMS(MySQL等)

Clients

DynamoDB

Page 72: AWS初心者向けWebinar AWSでのNoSQLの活用

東急ハンズ株式会社様でのAWSご活用事例

参考 DynamoDBの紹介と東急ハンズでの活用についてより。詳細は以下をご参照ください。

https://www.hands-lab.com/tech/entry/99.html

• 毎年8月末にハンズ恒例の大セール

「ハンズメッセ」開催。

• ネットストア(ハンズネット)も同時開催

• セール開始時(00:00)にお客様が殺到

• サーバーが落ちる

• というのを2年くらい経験

コストを抑えつつ、セールの爆発的なトラフィックにも耐えられる仕組みの構築が急務

Amazon DynamoDB導入の背景

Page 73: AWS初心者向けWebinar AWSでのNoSQLの活用

東急ハンズ株式会社様でのAWSご活用事例

Page 74: AWS初心者向けWebinar AWSでのNoSQLの活用

株式会社マイネット様でのAWSご活用事例

DynamoDBをメインDBにすることで、可用性向上のための運用はAWSが実施。トラフィック増減もアーキテクチャを変えずにパラメータ変更だけで対応。

DynamoDBで管理が難しいデータはRDB(RDS)で管理するも、全体のボ

リュームは小さくなるため運用が容易に。

参考 AWS事例のページより。詳細は以下をご参照ください。

http://aws.amazon.com/jp/solutions/case-studies/mynet/

Page 75: AWS初心者向けWebinar AWSでのNoSQLの活用

AWSの利用: 人気のドット絵ファンタジー「騎士とドラゴン」のインフラをAWSで運用

ビジネス効果:少数精鋭で開発を行う中で、運用面の負担を最小化、ゲームの開発リソースを最大化

株式会社リプレーション様でのAWSご活用事例

参考 AWS事例のページより。詳細は以下をご参照ください。

http://www.awsmicrosite.jp/game/case-studies/ripplation.html

短期間でのユーザー数の急上昇にもわずかなスケールパラメータの調整で対応

Page 76: AWS初心者向けWebinar AWSでのNoSQLの活用

デイリーアクティブユーザーがわずか6日間で5,000/日から30,000/日に跳ね上がった時に行った作業

AWS EC2のインスタンス数を増やしてAmazon DynamoDBのスループットを上げただけ

Page 77: AWS初心者向けWebinar AWSでのNoSQLの活用

DynamoDBの使いどころ

• キーとクエリーでのアクセス

• 3拠点でデータが保全されることによる堅牢なシステムの構築

• スループットの容易な増減によるピーク負荷への対応

• 事実上の容量無制限なデータベース-> サイジングが不要

http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-dynamodb

詳しくはAWS Black Belt DynamoDB資料を参照

Page 78: AWS初心者向けWebinar AWSでのNoSQLの活用

NoSQL on EC2

Page 79: AWS初心者向けWebinar AWSでのNoSQLの活用

NoSQL on EC2

• EC2上にNoSQLデータベース・ソフトをインストールし、自ら運用管理を行う

• AWS上では、スケーラブル、従量課金、高可用性で他のマネージドサービスとの連携することができ、また、ハードウェアを管理すことなく様々なNoSQL製品を使う事ができる

• マネージド・データベースのメリットは享受できないが特殊な要件が必要とされた場合– AWSで提供されていないNoSQLを利用したい– データベースのOSにログインし、ローカル・アクセスでバッチ処理を実行した

い 等々

• 運用管理コストが上がる点も考慮する– 構築から運用(バックアップや障害時切替など)を行う必要がある

Page 80: AWS初心者向けWebinar AWSでのNoSQLの活用

Magazine Luizaレコメンデーション・システム

• Eコマース・サイト向けのレコメンデーションシステム

• ソーシャル・ネットワーク機能を実装

• 5万以上の製品

• 月間 2億PV

• ユーザの行動をグラフで表現・分析

• サイトとメールでのレコメンデーション

* AWS re:Invent 2013 セッションBDT303 より引用

Graph Databaseの活用

Page 81: AWS初心者向けWebinar AWSでのNoSQLの活用

Magazine Luizaレコメンデーション・システム

• Graph DBのエンジンとしてTITANとFAUNUSを採用

Page 82: AWS初心者向けWebinar AWSでのNoSQLの活用

Magazine Luizaレコメンデーション・システム

• 既存システムと比較して、10倍の高速化と60%のコスト削減に成功

• 6か月でレコメンデーションからの売上が約190%向上

Page 83: AWS初心者向けWebinar AWSでのNoSQLの活用

アジェンダ

• Introduction

• 基本的なサービスのご紹介

• NoSQLとRDB

• AWS環境でのNoSQL

• まとめ

Page 84: AWS初心者向けWebinar AWSでのNoSQLの活用

まとめ• ワークロードに適したデータベースを選択する

(複数DBを併用しても良い)

• NoSQLアプリケーションのコストを最小化するため、スケールする設計を行う

• マネージドサービスを上手に活用して運用コストを下げる

• AWSのマネージド・サービスでカバーしきれないシナリオの場合、NoSQL on EC2を活用• バックアップやパッチ適用作業等も考慮

Page 85: AWS初心者向けWebinar AWSでのNoSQLの活用

Q&A

Page 86: AWS初心者向けWebinar AWSでのNoSQLの活用

参照リンク

• ElasiCashe ユーザーガイド

– http://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/UserGuide/WhatIs.html

• ElasiCashe FAQ

– http://aws.amazon.com/jp/elasticache/faqs/

• DynamoDBユーザーガイド

– http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Introduction.html

• DynamoDB FAQ

– http://aws.amazon.com/jp/dynamodb/faqs/

Page 87: AWS初心者向けWebinar AWSでのNoSQLの活用

参照リンク

• ホワイトペーパー:Riak on AWS

– http://media.amazonwebservices.com/AWS_NoSQL_Riak.pdf

• ホワイトペーパー:MongoDB on AWS

– https://d0.awsstatic.com/whitepapers/AWS_NoSQL_MongoDB.pdf

• ホワイトペーパー:Amazon ElastiCache を使用したスケールに応じたパフォーマンス

– http://d0.awsstatic.com/whitepapers/performance-at-scale-with-amazon-elasticache.pdf

• AWSクラウド活用資料集

– http://aws.amazon.com/jp/aws-jp-introduction/

• 国内のお客様のAWS活用事例

– http://aws.amazon.com/jp/solutions/case-studies-jp/

Page 88: AWS初心者向けWebinar AWSでのNoSQLの活用

詳しくは、http://aws.amazon.com/training をご覧ください

メリット

• AWS について実習や実践練習を通じて学習できる

• AWS を熟知したエキスパートから直接 AWS の機能について学び、疑問の答えを得られる

• 自信をもって IT ソリューションに関する決定を下せるようになる

提供方法

e ラーニングや動画

セルフペースラボ

クラスルームトレーニング

AWSトレーニングでは様々な学習方法をご提供しています

Page 89: AWS初心者向けWebinar AWSでのNoSQLの活用

公式Twitter/FacebookAWSの最新情報をお届けします

@awscloud_jp

検索

最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを日々更新しています!

もしくはhttp://on.fb.me/1vR8yWm

Page 90: AWS初心者向けWebinar AWSでのNoSQLの活用

AWS初心者向けWebinar

• AWSをこれからご使用になる技術者向け、ソリューションカット

• 今後の配信予定

– 7/28(火) 【AWS 初心者向け Webinar】RDB の AWS への移行方法(Oracle を例に)

※18時~19時15分の時間帯です!

• 申し込みサイト

– http://aws.amazon.com/jp/about-aws/events/

Page 91: AWS初心者向けWebinar AWSでのNoSQLの活用

AWS Black Belt Tech Webinar 2015

• AWS中上級者向け、サービスカット

• 今後の配信予定7月は「AWS 運用機能月間」です!– 7/15(水)12:00〜【緊急特番】Amazon API Gateway– 7/15(水)18:00〜 AWS CloudTrail & Config– 7/22(水)12:00〜【緊急開催】AWS Device Farm– 7/22(水)18:00〜 AWS CLI & AWS Tools for Windows PowerShell– 7/29(水)18:00〜 AWS CloudHSM & AWS Key Management

Service

• 申し込みサイト– http://aws.amazon.com/jp/about-aws/events/

•EC2上にNoSQLデータベース・ソフトをインストールし、自ら運用管理を行う

Page 92: AWS初心者向けWebinar AWSでのNoSQLの活用

AWS Black Belt Tech Webinar 2015

• 今後の配信予定

8月は「AWS DB月間」です!

– 8/5 (水)18:00〜 Amazon DynamoDB

– 8/12(水)お盆のためお休み

– 8/19(水)18:00〜 Amazon ElastiCache

– 8/26(水)18:00〜 Amazon DynamoDB

• 申し込みサイト

– http://aws.amazon.com/jp/about-aws/events/

Page 93: AWS初心者向けWebinar AWSでのNoSQLの活用

AWSの導入、お問い合わせのご相談

• AWSクラウド導入に関するご質問、お見積り、資料請求をご希望のお客様は、以下のリンクよりお気軽にご相談ください。https://aws.amazon.com/jp/contact-us/aws-sales/

Page 94: AWS初心者向けWebinar AWSでのNoSQLの活用

ご参加ありがとうございました