mongodb world 2014

Post on 20-Nov-2014

488 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

忙しい人向けの MongoDB World

@y_iwanaga_

丸の内 MongoDB 勉強会 #14

MongoDB World を5分に凝縮。

・新機能

・設計、運用の間違いパターン集

基調講演まとめ

Operations, Development, Internal セッションまとめ

誰?

@y_iwanaga_

@quake_alert

@WeatherAlertJP

地震速報。テレビより早い。

千代田区の気象警報。

@IT で Arduino + JavaScript + IoT 連載中

会場が一番 盛り上がった 瞬間

基調講演

その場で実演

update の処理性能が

$ mongod --setParameter useExperimentalDocLocking=true

約 10 倍に。

新機能、続々。Multi-Document Transaction

Schema Validation

Automation with MMS

ロールバック処理をアプリで実装なくて済む。

Shard + Replica 構築、 Shard 追加、 Background Indexing

複雑なオペレーションまで自動化

将来の布石複数のデータストアが連携する際、 Data Hub の座を狙っている

見落としがちな   設計・運用のミス

・何がダメだったの?・正しい解決策は?

設計・運用セッションのまとめ

その1

小売業界。20ヶ国 以上で展開。

スキーマ

{ id : 709, en_US : { name: ..., description: ..., ... }, en_GB : { name: ..., description: ..., ... }, fr_FR : { name: ..., description: ..., ... }, ...}

検索される製品は 国ごとに偏り がある

1つの document に全言語のデータを詰め込んでいる

アクセスパターン

製品カタログ

どこがダメなの?

ポイント: 使わないデータも RAM にロードされる

1回の検索で使うのは全体の 1/20 のみ

メモリの無駄遣い

mongod は document に何が入っているか知らない

{ id : 709, en_US : { name: ..., description: ..., ... }, en_GB : { name: ..., description: ..., ... }, fr_FR : { name: ..., description: ..., ... }, ...}

→ ドキュメントを取得した後、 projection を行う。

改善策:スキーマを変更する

{ _id : “709-en_US”, name : ... , description : ... , ...},{ _id : “709-en_GB”, ...,}

本当に必要とされるデータのみがメモリに乗る。Disk I/O 減少。レスポンスを劇的に改善。

国ごとに document を分割

結果

その2

sh.shardCollection( “mydb.trades”, { analytics_server_id: 1 })

解析用サーバから送信されたデータを保存

「ある期間内」に、「どんなインシデント」が、何回発生したかを集計

解析サーバが増えても、 Shard 追加で追従できる

クエリパターン

取引ログを解析

Shard Key

どこがダメなのか?

write パターンのみで shard key を決定

→ ほとんどが “ security_id” と “ timestamp” がベース

Shard Key の選び方

Read のパターン

Aggregation する度に scatter & gather

「ある期間内」に、「どんなインシデント」が、何回発生したか

改善策: Shard Key を変更

{ security_id : 1, ts : 1 }

適切な Shard key を設定

ポイント: write と read 両方のアクセスパターンを考慮

compound shard key を利用

その3

heavy bulk update

あるときは 10% の更新あるときは 100% 更新

5 倍 の処理性能が必要に。→ Shard 追加 で追従しようとした

ランダムな update が多い

あるとき、サービスが急成長

意図:スキーマ変更ではこれ以上の改善が見込めない

何がダメなの?

正しい運用: scale up

本当に強化したいのは Random I/O 性能HDD を SSD に変更

・ ホスト1台あたりのコストは上がった。

ポイント

   scale out だけでなく、 scale up も検討すべし

・ しかし、全台数の合計コストは下がった。

以上

・新機能

・設計、運用の間違いパターン集

基調講演まとめ

Operations, Development, Internal セッションまとめ

top related