Submit Search
Upload
[Black Belt Online Seminar] AWSで使うMongoDB
•
11 likes
•
12,235 views
Amazon Web Services Japan
Follow
2016/04/26 [Black Belt Online Seminar] AWSで使うMongoDB カテゴリ:ソリューションカット
Read less
Read more
Technology
Report
Share
Report
Share
1 of 96
Download now
Download to read offline
Recommended
WiredTigerストレージエンジン楽しい
WiredTigerストレージエンジン楽しい
Akihiro Kuwano
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
Amazon Web Services Japan
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
Amazon Web Services Japan
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
Amazon Web Services Japan
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
Amazon Web Services Japan
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
Amazon Web Services Japan
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
Amazon Web Services Japan
Recommended
WiredTigerストレージエンジン楽しい
WiredTigerストレージエンジン楽しい
Akihiro Kuwano
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
Amazon Web Services Japan
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
Amazon Web Services Japan
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
Amazon Web Services Japan
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
Amazon Web Services Japan
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
Amazon Web Services Japan
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
Amazon Web Services Japan
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Web Services Japan
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
Amazon Web Services Japan
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
Amazon Web Services Japan
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
Amazon Web Services Japan
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
Amazon Web Services Japan
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon Web Services Japan
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
Amazon Web Services Japan
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
Amazon Web Services Japan
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
Amazon Web Services Japan
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Web Services Japan
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
Amazon Web Services Japan
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
Amazon Web Services Japan
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
Amazon Web Services Japan
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
Amazon Web Services Japan
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
Amazon Web Services Japan
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
Amazon Web Services Japan
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
Amazon Web Services Japan
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Amazon Web Services Japan
20211109 JAWS-UG SRE keynotes
20211109 JAWS-UG SRE keynotes
Amazon Web Services Japan
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
More Related Content
More from Amazon Web Services Japan
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Web Services Japan
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
Amazon Web Services Japan
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
Amazon Web Services Japan
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
Amazon Web Services Japan
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
Amazon Web Services Japan
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon Web Services Japan
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
Amazon Web Services Japan
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
Amazon Web Services Japan
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
Amazon Web Services Japan
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Web Services Japan
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
Amazon Web Services Japan
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
Amazon Web Services Japan
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
Amazon Web Services Japan
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
Amazon Web Services Japan
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
Amazon Web Services Japan
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
Amazon Web Services Japan
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
Amazon Web Services Japan
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Amazon Web Services Japan
20211109 JAWS-UG SRE keynotes
20211109 JAWS-UG SRE keynotes
Amazon Web Services Japan
More from Amazon Web Services Japan
(20)
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDD
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
20211109 JAWS-UG SRE keynotes
20211109 JAWS-UG SRE keynotes
Recently uploaded
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
Hiroshi Tomioka
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
Recently uploaded
(9)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
[Black Belt Online Seminar] AWSで使うMongoDB
1.
1 【Black Belt Online
Seminar】 AWSで使うMongoDB 2016/04/26 アマゾン ウェブ サービス ジャパン株式会社 ソリューションアーキテクト 桑野 章弘
2.
22 自己紹介 桑野 章弘(くわの あきひろ) ソリューションアーキテクト •
主にメディア系のお客様を担当しております。 • 渋谷のインフラエンジニア(仮)をしてました • 好きなAWSのサービス:ElastiCache • 好きなデータストア:MongoDB
3.
3 本資料では2016年4月26日時点のサービス内容および価格についてご説明しています。 最新の情報はAWS公式ウェブサイト(http://aws.amazon.com)にてご確認ください。 資料作成には十分注意しておりますが、資料内の価格とAWS公式ウェブサイト記載の価 格に相違があった場合、AWS公式ウェブサイトの価格を優先とさせていただきます。 内容についての注意点 AWS does not
offer binding price quotes. AWS pricing is publicly available and is subject to change in accordance with the AWS Customer Agreement available at http://aws.amazon.com/agreement/. Any pricing information included in this document is provided only as an estimate of usage charges for AWS services based on certain information that you have provided. Monthly charges will be based on your actual use of AWS services, and may vary from the estimates provided. 価格は税抜表記となっています。日本居住者のお客様がサービスを使用する場合、別途消 費税をご請求させていただきます。
4.
4 アジェンダ • Introduction • MongoDBとは •
AWS環境でのMongoDB • MongoDBのユースケース • まとめ
5.
5 アジェンダ • Introduction • MongoDBとは •
AWS環境でのMongoDB • MongoDBのユースケース • まとめ
6.
66 Introduction • Amazon Web
Service(AWS)では、様々なマ ネージドデータベースサービスを提供すると同 時にEC2上で様々なデータベースを運用するこ とができます。 • 今回はドキュメント指向データストアである MongoDBを題材にMongoDBのメリット・デメ リット、AWSでの活用方法についてお話します。
7.
7 アジェンダ • Introduction • MongoDBとは •
AWS環境でのMongoDB • MongoDBのユースケース • まとめ
8.
88 MongoDBとは
9.
9 MongoDB とは • ドキュメント指向データストアの一つ •
ドキュメント指向データストアとしては最も使わ れているプロダクトで高機能なNoSQLデータス トア
10.
10 マネージドサービスとの比較 • AWSにも様々なサービスが存在しるので必要に 応じマネージドサービスの使用も検討に入れる – ゲームなどのアプリケーションの場合はDynamoDBや RDS –
ログ解析用途であれば小規模ならElasticsearch Service, 大規模ならS3+EMR or Redshift
11.
11 DynamoDBの特徴 • AWSの提供するマネージドサービス • シームレスな拡張性 •
高速なパフォーマンス • データの耐久性(3AZにデータレプリカ) • 従量課金
12.
12 DynamoDBとの検討ポイント • DynamoDB – 高パフォーマンス/可用性 –
従量課金 – ユーザ側でのリソース拡張不要 – 構築が必要ない • MongoDB – Javascriptによるリッチなクエリが必要 – JSONが格納できれば良いのか、JSONの要素に対してクエ リを投げたいのか – スキーマレスを活かせる構成か
13.
13 S3の特徴 • AWSの提供するオブジェクトストレージ • どこからでも任意のデータを保存/取得可能 •
99.999999999%の耐久性 • 容量無制限 • スケーラブル • 従量課金
14.
14 S3との検討ポイント • S3 – 容量無制限 –
使った容量と転送量のみの従量課金 – ユーザ側でのリソース拡張不要、スケーラブル – 構築が必要ない • MongoDB – JSONが格納できれば良いだけなのか、JSONの要素に対し てクエリを投げたいのか – MongoDBのみで解析を行う必要がある
15.
15 それ以外にもマネージドサービス • Aggregation Framework等を使用したいのであ ればElasticsearch
serviceのAggsが使える • 大規模な解析を行う場合にS3に格納したデータ をEMRやRedshiftで解析する
16.
16 MongoDB の基本的な機能 • スキーマレス •
冗長化 – レプリカセット • 負荷分散 – シャーディング • ストレージエンジン – 複数の選べるストレージエンジン (MMAPv1,WiredTiger他)
17.
17 スキーマレス • データの形を厳密に 決める必要が無い – 例:後から趣味の項目 を追加した場合 { "_id"
: "1234567889", "userid" : "akuwano", "username" : "Akihiro Kuwano" } { "_id" : "1234567889", "userid" : "akuwano", "hobby" : “MongoDB”, "username" : "Akihiro Kuwano" }
18.
18 冗長化 • レプリカセット – 3台のmongodでVoteして Primaryのサーバを決定、 Failoverを行う –
Arbiterプロセス • データを持たずにVote権だ け持つプロセス プライマリ セカンダリ セカンダリ プライマリ->Failed セカンダリ セカンダリ->プライマリ
19.
19 負荷分散 • シャーディング – データをChunkの細かい 粒度に分割、各mongod に負荷を分散 Clients ChunkA
-> ShardA ChunkB -> ShardB ChunkC -> ShardC mongoc mongod ShardA mongod ShardB mongod ShardC mongos ChunkA ChunkB ChunkC ChunkA ChunkB ChunkC ChunkA ChunkB
20.
20 ストレージエンジン • MongoDB 3.0
からストレージエンジンを選択で きるようになった – MMAPv1 – WiredTiger • 現在では殆どのワークロードではWiredTigerを 使用した方が良い結果が出る
21.
21 アジェンダ • Introduction • MongoDBとは •
AWS環境でのMongoDB • MongoDBのユースケース • まとめ
22.
22 AWSでMongoDBを構築するメリット • 容易に始められる • 運用効率化 –
簡単なスケールアップ/アウト – バックアップ – 構築自動化 • AWSの他サービスとの連携 – S3 – EMR
23.
23 MongoDBの構成 • mongod – データノード •
mongoc – シャーディング情報を保存 する特殊なデータノード • mongos – シャーディング時に適切な シャードへと処理を振り分 けるルーティングプロセス mongod App + mongos mongoc mongoc:シャー ディング情報の 格納 mongos:適切な シャードへの割 り振り mongod:実際の データの格納
24.
24 MongoDBの構成種別例 • MongoDB on
EC2の基本的な構成例 • 事業のステージや規模によって使い分ける – スタンドアロン – 冗長化構成 – シャーディング構成
25.
25 スタンドアロン • 1ノードで処理出来る程 度のワークロードで使 う場合 • 消えても良いデータ •
一時的な使い方 • 使用例 – 開発環境や試験環境 – 他のデータベースからの 抽出データを持つ Availability Zone Clients mongod App
26.
26 冗長化構成 • データ量は多くないが、 消えると困るデータ • 負荷にはスケールアッ プで対応(参照はス ケールアウト可) •
使用例 – 直近のログ保存 – マスタデータ用DB Availability Zone Clients mongod レプリカセット App Availability Zone
27.
27 シャーディング構成 • データを多数のノードに 分散し大規模に使う場合 • 消えると困るデータ •
負荷にはスケールアップ とスケールアウトで対応 • 使用例 – ゲームのユーザデータ用 DB – DMP基盤 Availability Zone Clients mongod レプリカセット + シャーディング App Availability Zone
28.
28 MongoDB on EC2環境の考え方
29.
2929 mongodのインスタンスタイプの選定 • 用途によって以下のタイプから選定する – MMAPv1ストレージエンジン •
r3インスタンス 仕様上CPUは使い切れず、キャッシュコントロー ルができないためメモリが多く必要 – WiredTigerストレージエンジン • r3, m4, c3, c4を使い分け ユースケース、リソースの使用状況に よって選択 – 高スループットを求める場合 • i2インスタンス エフェメラルディスクを使用する前提
30.
3030 その他のプロセスのインスタンスタイプの選定 • 選定基準は以下の通り考える – mongos •
アプリケーションサーバに同居することが多いが、アクセス量や、 Aggregation Frameworkを使用する場合にはCPUリソースを多く使う 場合が感がられるので負荷試験等で必要なリソースを確認する – mongoc • シャードの情報を持っているだけなので基本的には殆どデータ量は持 たない • CPUも使わないので基本的にはt2シリーズでも十分事足りる – Arbiter • レプリカセットのVoteのやり取りを行うだけのサーバなので、リソー スはほぼ使わないためt2シリーズなどで。他サーバへの同居も検討す る。
31.
31 ディスク選定 • 各ノードのディスク選定指針 – 基本的には汎用SSDのEBS –
高スループットが必要な場合は • 汎用SSDのEBSボリュームのソフトウェアRAID0 • Provisioned IOPS SSDのEBSボリューム • i2インスタンスタイプ等のインスタンスボリューム – インスタンスボリュームはEBSよりも高速だが、再起動でデータ が失われる – バックアップ用のノードはEBSにする
32.
32 AZ構成の考え方 • レプリカセットはスプリットブレイ ン対策のためレプリカセット全体の 過半数のノードにアクセス出来なけ ればプライマリ昇格できない • AZの数が重要 •
AZの数による生存戦略 – 3AZ以上あるリージョンの場合は各AZに ノードを配置 – 2AZのリージョンの場合は片側AZ断時に は即時プロセスをあげられるようにする か、別リージョンにプロセスを置く プライマリ セカンダリ セカンダリ レプリカセット 1ノードでは プライマリに 昇格できないネットワーク分断 2ノードある のでプライマ リ昇格できる
33.
33 AZ構成の考え方:3AZ mongoc 3AZあるリージョ ンの場合は各 AZにノード配置Availability Zone Availability
Zone mongod Availability Zone
34.
34 AZ構成の考え方:2AZ mongoc Availability Zone Availability
Zone mongod Availability Zone Availability Zone AZ断した際には生 き残っているサー バから再構築
35.
35 AZ構成の考え方:2AZ mongoc Availability Zone Availability
Zone mongod Availability Zone 1つのサーバを別リージョン(東 京であればソウルなど)に置く priorityを低くしたり、Hiddenメ ンバにすることでこのノード郡 は使用しない。 Arbiterとしてもよい。
36.
36 構築
37.
37 構築の種類 • AWS環境構築 • ノード環境構築
38.
38 AWS環境の構築 • フルスクラッチ • 自動化サービス –
AWS CloudFormation • AWSリソースのプロビジョニン グサービス • AWSで出している クイックスタートリファレンスも あります – Terraform • Hashicorp社のオーケストレー ションツール
39.
39 各ノード環境の構築 • フルスクラッチ • 自動化プロダクトの使用 –
Packer – Ansible – Chef
40.
40 MongoDBのPaaSサービス • MongoDBをAWS上で構築・運用するための DaaSサービス – mLab(旧mongoLab) –
MongoDB Cloud Manager
41.
41 監視・可視化
42.
42 主な監視項目 • CLIコマンド – mongostatコマンド(実データはdb.serverStatus()) •
可視化等はCloudwatchのカスタムメトリクスや、 munin等のソフトウェア、各種監視SaaS • mLabや、MCM等を使うことで可視化までをワン ストップで行う事も可能
43.
43 主な監視項目:mongostat MMAPv1 insert query
update delete getmore command flushes mapped vsize res faults qr|qw ar|aw netIn netOut conn time 26632 *0 *0 *0 0 1|0 0 16.0G 32.4G 2.1G 0 1|0 0|31 5m 14k 34 2016-04- 21T07:21:57Z 29378 *0 *0 *0 0 1|0 0 16.0G 32.4G 2.1G 0 0|0 0|32 6m 14k 34 2016-04- 21T07:21:58Z 27159 *0 *0 *0 0 1|0 0 16.0G 32.4G 2.2G 0 0|32 0|0 6m 14k 34 2016-04- 21T07:21:59Z (snip) 8187 *0 *0 *0 0 2|0 0 72.0G 144.3G 2.5G 1609 0|0 0|18 2m 13k 35 2016-04- 21T17:09:54Z 7885 *0 *0 *0 0 1|0 0 72.0G 144.3G 2.5G 1566 0|0 0|17 1m 13k 35 2016-04- 21T17:09:55Z 8286 *0 *0 *0 0 1|0 0 72.0G 144.3G 2.5G 1566 0|0 0|18 2m 13k 35 2016-04- 21T17:09:56Z 7129 *0 *0 *0 0 1|0 0 72.0G 144.3G 2.5G 1420 0|0 0|18 1m 13k 35 2016-04- 21T17:09:57Z
44.
44 主な監視項目:mongostat WiredTiger insert query
update delete getmore command % dirty % used flushes vsize res qr|qw ar|aw netIn netOut conn time 38548 *0 *0 *0 0 2|0 93.5 95.0 0 2.6G 2.4G 0|0 0|31 8m 38k 37 2016-04- 22T02:17:23Z 53887 *0 *0 *0 0 2|0 95.0 95.0 0 2.6G 2.4G 0|0 0|29 13m 39k 37 2016-04- 22T02:17:24Z 47004 *0 *0 *0 0 2|0 94.8 94.8 0 2.6G 2.4G 0|0 0|30 10m 39k 37 2016-04- 22T02:17:25Z 47350 *0 *0 *0 0 3|0 95.0 95.0 0 2.6G 2.4G 0|0 0|31 11m 39k 37 2016-04- 22T02:17:26Z (snip) 12716 *0 *0 *0 0 1|0 94.3 96.0 0 3.6G 3.3G 0|0 0|19 3m 19k 35 2016-04- 22T04:39:37Z 10683 *0 *0 *0 0 1|0 94.3 96.0 0 3.6G 3.3G 0|0 0|19 2m 19k 35 2016-04- 22T04:39:38Z 11740 *0 *0 *0 0 1|0 94.3 96.0 0 3.6G 3.3G 0|0 0|19 2m 19k 35 2016-04- 22T04:39:39Z
45.
45 mongostatの主な監視項目 • 全体的な項目 – qr|qw •
この値が多ければクエリが滞留している • サーバ負荷が低ければ、ロックの可能性を疑う • サーバ負荷が高ければ、クエリ増による高負荷を疑う
46.
46 mongostatの主な監視項目 • MMAPv1の項目 – faults
が多い場合 • キャッシュメモリ溢れの可能性 • メモリ、もしくはシャード追加 – Locked % が高い場合 • 書き込みのクエリを見直す or クラスタ分割 • WireTigerの項目 – Dirty % が高い場合 • マージ前のデータの目安で単位時間での更新量が多い • 一定の値で安定していれば問題なし
47.
47 その他確認項目 • スロークエリの調査 – ログに実行時間が遅かったクエリが出る –
profileに一定以上時間の掛かったクエリを出力する事 が可能
48.
48 バックアップ・リストア
49.
49 バックアップ・リストア • mongodump – mongodか、シャード環境ならmongoc,
mongosから dump取得 – Point In Time Recovery(以下PITR)にはならない BackupServer mongos shard mongoc mongodump 実行
50.
50 バックアップ・リストア • Snapshot取得 – 主にシャード環境、レプリ カセット環境時に使用 –
レプリカセットから各バッ クアップ用のメンバを指定 してEBS Snapshotを取得 – db.fsyncLock()で読み書き ロック、db.fsyncUnLock() でアンロック 読み書きロック後 にSnapshot取得 mongoc mongod
51.
51 バックアップ・リストア • MongoDB Cloud
Managerでのバックアップ – PITRをSaaSとしてサービス提供 – バックアップのみの使用も可能
52.
52 セキュリティ
53.
53 セキュリティ • MongoDBの認証 – ユーザ認証 •
データベースに対するユーザロールベースのアクセスコン トール – 鍵認証 • レプリカセット、シャード環境で使用可能 • キーファイルによるアクセスコントール
54.
54 セキュリティ • AWSのセキュリティ – VPC構成 •
Public/Private構成 – セキュリティグループ • 必要なNW以外からのアクセ スをブロック • デフォルトでは、27017- 27019, 28017ポートを使用 する Availability Zone mongodb App Availability Zone Public Subnet Public Subnet PrivateSubnet PrivateSubnet セキュリティグ ループを設定 Ohter Subnet
55.
55 性能面でのTIPS
56.
56 性能面でのTIPS • クエリ関連 – INDEX –
Targetedオペレーション – Write concern • データモデリング – 正規化/非正規化 – シャードキーの選定
57.
57 INDEX • 各クエリから適切なINDEXを貼る – Profilingでリリース前のテスト時に全クエリ出すよう にしてチェック •
INDEXを張り過ぎるとメモリを圧迫するので必要 な物を最低限作成する • DEXツールの活用
58.
58 DEX • mLab製のツール、遅かったクエリと必要な Indexをレコメンドする $ dex
-f /var/log/mongodb/mongodb.log mongodb://localhost { (snip) 'results': [ { 'queryMask': '{"$query":{"name":"<val>"}}', 'namespace': 'd1.users', 'recommendation': { 'index': '{"name": 1}', 'namespace': 'd1.users', 'shellCommand': 'db[”users"].ensureIndex({"name": 1}, {"background": true})' },
59.
59 Targeted オペレーション • シャード環境時のオペレーションタイプには Targeted、Broadcastの2つがある •
Targetedは必要なシャードにだけアクセスする が、Broadcastは全シャードにアクセスする • Targeted オペレーションを行うにはINDEXが必 要なのでINDEX作成の際の指標にする
60.
60 Targeted オペレーション 必要なシャードへ のみアクセス App mongos shard Targeted
オペレーションBroadCast オペレーション App mongos shard
61.
61 Write Concern • 書き込みの整合性保証 –
デフォルトはPrimaryが成功したらAckを返す – 全台OKまで待ったり、1台もOKじゃなくてもすぐAck を返したりできる Write Concern w=1 Write Concern w=3 App Primaryが書き込 みOKならAckを 返す App 全てのメンバが書き込 みOKなのをまってAck を返す
62.
62 データモデリング • MongoDBはJSONを使って柔軟なデータモデル を表現できるが、RDBの様なリレーショナルモデ ルではない • 正規化/非正規化 •
シャードキーの選定
63.
63 正規化/非正規化 • 非正規化すればアクセスするデータ量が減るかど うか/どのようなクエリが支配的かがポイント { "_id" :
"1234567889", "userid" : "akuwano", "hobby" : “MongoDB”, "username" : "Akihiro Kuwano" } { "_id" : "1234567889", "userid" : "akuwano", } { "_id" : "1234567889-akuwano", "hobby" : “MongoDB”, "username" : "Akihiro Kuwano" }
64.
64 シャードキーの選定 • シャードキーはRDBMSで言えばプライマリキー • デフォルトでは“45feae009015221f”の様なキーが 割り振られるが自分で決めても良い –
シャード分散にも使われるのでできるだけカーディナリ ティが高く、ランダム性の高いキー – シャードを特定しやすいように決まった値を設定する(日 時、ユーザID等) • 最初に決まったシャードキーの値を他のコレクショ ン側でも引き回すのもアリ
65.
65 コスト削減
66.
66 コスト削減のポイント • MongoDBで最低限の冗長 化と2シャード環境を実現 するには9台のサーバが必 要 – mongod
* 6 – mongoc * 3 – mongosはアプリケーショ ンサーバと同居 mongod App + mongos mongoc
67.
67 対向のレプリカ セットに属す Arbiterプロセスを 常駐 コスト削減のポイント • レプリカセット中1台の サーバをArbiterプロセス にする – 冗長性は落ちるがArbiterプ ロセスはリソースを食わな いためインスタンス数
or タイプを節約 mongod App + mongos mongoc 対向のレプリカセット に属すArbiterプロセ スを常駐するか、別途 集約したArbiterサー バを構築する arbiter
68.
68 コスト削減のポイント • 確定したリソースにはリザーブドインスタンスを 活用する – 1年間または3年間、常に利用可能なキャパシティ予約 により、最大75%の割引 http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/instance-purchasing-options.html
69.
69 アジェンダ • Introduction • MongoDBとは •
AWS環境でのMongoDB • MongoDBのユースケース • まとめ
70.
70 「MongoDBは運用が辛い」
71.
71 誤「MongoDBは運用が辛い」 正「分散型データストアは運用が辛い」
72.
72 分散データベースの運用が辛い理由 • こういった事が殆ど – ユースケースが間違っている –
運用ナレッジが溜まっていない • 基本的に1プロセスで動いているRDBとくらべて多数のノード が強調して動く分散データストアは非常に運用ナレッジを貯 めるのが大変 • ユースケースを明確にする事が大事
73.
73 MongoDBのユースケース • ホットデータが存在するアクセスパターン • 全データを舐めていくようなアクセスパターン
74.
74 MongoDBが得意なユースケース • ホットデータが存在するアクセスパターン • CappedCollectionが活用できる •
主な使用用途 – ゲーム – 短期的なログ解析 – 他DBから抽出した一時データ
75.
75 MongoDBが得意なユースケース • ゲームのアーキテクチャはアクティブユーザによ るホットデータが支配的 ユーザ Game
app mongodb
76.
76 MongoDBが得意なユースケース • 数十GB程度のログ保存/解析には CappedCollectionを使用しキャッシュを効率的 に使わせる ユーザ Game
app mongodb 分析者
77.
77 MongoDBが得意なユースケース • 大量のデータベース解析から一部の対象だけを フィルタしてMongoDB側に送る データベース ETL
Application mongodb Amazon EMR
78.
78 MMAPv1のメモリ管理:ホットデータ mongod プロセス メモリ (MMAP) ストレージ層
79.
79 MongoDBが苦手なユースケース • 全データを舐めていくようなアクセスパターン • 主な使用用途 –
長期的なログ解析基盤 – SNS等でのソーシャルグラフ • 大量のデータに同時にアクセスして複雑な処理を頻繁に行う 処理がMMAPv1では特に苦手
80.
80 MongoDBが苦手なユースケース • DMP基盤の様な大量のログ(数TB〜)を処理し たい場合にはシャード数を増やす必要が出てくる • EC2等で動的に増やしていく事は可能だがコスト はかかる ユーザ
Game app mongodb Amazon EMR
81.
81 MMAPv1のメモリ管理:大量アクセス mongod プロセス メモリ (MMAP) ストレージ層 データへのアクセス範囲& 回数が多すぎるとキャッシュ 改廃が大量に発生し、スト レージへのアクセスが頻発 する
82.
82 アジェンダ • Introduction • MongoDBとは •
AWS環境でのMongoDB • MongoDBのユースケース • まとめ
83.
83 まとめ • 実際のワークロードに適しているかを良く確認する • MongoDBの性能を最大化し、コストを最小化するための構成を 検討する •
AWSをうまく活用することでMongoDBでの弱点である運用負 荷を軽減することが可能 • マネージドサービスを活用できる部分には活用し運用コストを 下げる、AWSにはそのための部品として、DynamoDBや、 Elasticsearch Serviceを始め様々なサービスが揃っている
84.
84 Q&A
85.
8585 参照リンク • MongoDB マニュアル –
https://docs.mongodb.org/manual/ • MongoDB FAQ – https://docs.mongodb.org/manual/faq/ • ホワイトペーパー:MongoDB on AWS – https://d0.awsstatic.com/whitepapers/AWS_NoSQL_MongoDB.pdf • AWS 上の MongoDB クイックスタートリファレンスデプロイガイド – http://docs.aws.amazon.com/ja_jp/quickstart/latest/mongodb/MongoDB_on_AWS- ja_jp.pdf
86.
8686 参照リンク • Amazon Elasticsearch
Serviceユーザーガイド – http://docs.aws.amazon.com/ja_jp/elasticsearch-service/latest/developerguide/what-is-amazon- elasticsearch-service.html • Amazon Elasticsearch Service FAQ – http://aws.amazon.com/jp/elasticsearch-service/faqs/ • DynamoDBユーザーガイド – http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Introduction.html • DynamoDB FAQ – http://aws.amazon.com/jp/dynamodb/faqs/
87.
8787 参照リンク • Amazon Elastic
MapReduce ユーザーガイド – https://aws.amazon.com/jp/documentation/elasticmapreduce/ • Amazon Elastic MapReduce FAQ – https://aws.amazon.com/jp/elasticmapreduce/faqs/ • Redshift ユーザーガイド – http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/welcome.html • Redshift FAQ – https://aws.amazon.com/jp/redshift/faqs/
88.
88 MongoDB その他の機能 • Javascriptによる柔軟なクエリ •
WiredTigerの主な設定値 • Aggregation Framework • CappedCollection 本編で紹介しきれなかった機能について
89.
89 JavaScriptによる柔軟なクエリ • 制御構造等も含んだ様々なクエリが実行可能 # Insert
(データ入力) db.user.insert({userid:’kuwano', username:’ Akihiro Kuwano’}); # find (データ取得) db.user.find() {"_id" : "1234567889", "userid" : "kuwano" , "username" : "Akihiro Kuwano" } # update (データ更新) db.user.update({userid:’kuwano'}, {$set:{username:’MongoDB'}}) db.user.find() {"_id" : "1234567889", "userid" : "kuwano" , "username" : "MongoDB" } # remove (データ削除) db.user.remove({userid:"kuwano"})
90.
90 ストレージエンジン:WiredTiger • WiredTigerストレージエンジンの主な設定値 – cacheSizeGB •
キャッシュするメモリ領域の指定 • スレッドやIndexでもメモリを使うのでシステムメモリの6〜 7割とる形が良い – blockCompressor • データ圧縮を行うか。デフォルトはsnappy。 – 速度:none>snappy>gzip – 圧縮率:gzip>snappy>none
91.
91 WiredTigerが3 割増 ベンチマーク結果 • ストレージエンジンによる暫定 比較 – 実ワークロードでは無く、実行時 の要素によって変わるので参考値 –
構成 • ycsb使用 – 9000000 obj – 10000000 ops – 500 thread • MongoDBサーバ - c4.xlarge • 負荷サーバ - c4.2xlarge
92.
92 マルチコア対応 WiredTigerはマ ルチコア MMAPv1はシン グルコア
93.
93 Aggregation Framework • Aggregation
Framework – 主に集計処理のために使用されるフレームワーク – パイプラインとして定義された処理をつなぎ合わせる 事で複雑なクエリを実現する – 例:ユーザ”kuwano”の点数の合計値を返す 1. $matchでnameが「kuwano」のデータを抽出 2. $projectで集計対象のフィールドをpointに指定 3. $groupで、集計処理を実行、$sumで、該当するpointの値 を合計して表示
94.
94 Aggregation Framework • 例:ユーザ”kuwano”の点数の合計値を返す >
db.point.find() { "_id" : ObjectId("101"), "name" : "tsukada", "point" : 100 } { "_id" : ObjectId("102"), "name" : "narita", "point" : 100 } { "_id" : ObjectId("103"), "name" : "mori", "point" : 150 } { "_id" : ObjectId("104"), "name" : "kuwano", "point" : 500 } { "_id" : ObjectId("105"), "name" : "kuwano", "point" : 100 } { "_id" : ObjectId("106"), "name" : "kuwano", "point" : 200 } { "_id" : ObjectId("107"), "name" : "tateoka", "point" : 1000 } > db.point.aggregate( ... { $match : { "name" : "kuwano" } }, ←(1) ... { $project : { "point" : 1 } }, ←(2) ... { $group : { "name" : "kuwano", "totalpoint" : { "$sum" : "$point" } } } ←(3) ... ); { "result" : [ { "name" : "kuwano", "totalpoint" : 800 } ], "ok" : 1 }
95.
95 CappedCollection • コレクション作成時に最大データ量を指定し、そ れ以上のデータを保存する場合は古いデータから 削除を行う特殊なコレクション • 最大データ量をメモリ量以下にすれば効率よく キャッシュされたデータを扱うことが出来る Data
Data Data Data Data Data CappedCollection
96.
96 mongocサーバの集約 • MongoDB 3.2からレ プリカセット内に mongocの機能を集 約可能 •
サーバ台数が削減可 mongod App + mongos mongoc レプリカセットの 数台がmongoc の機能を兼ねる
Download now