Hatena::ブログ(Diary)

日々の記録 別館

2016-07-27

MongoDB最新動向

f:id:nuko_yokohama:20160727210355p:image

ということで、Database Lounge Tokyo #1 に落選したのですが、幸か不幸か同日・ほぼ同ロケーションの恵比寿MongoDB最新動向が開催されていたので、そっちを聞きに行くことにしましたよ。
MongoDBは2年くらい前にPostgreSQL JSONB型との比較ということで、MongoDB 2.4/2.6くらいを使ったんだけど、それ以降、あまり追っていなかったから、最新動向を聞いてみることにした。



MongoDB World 2016 キーノート報告

講師は鈴木いっぺいさん

CEOからのふわっとした話
  • MongoDB World、3000人くらい来場する。
  • 今年のキーワード "Giant Ideas" 大きなアイディア
    • スピード重視。いろんなデータを集めて早く分析し、AI/Deep Learningにかけたい。

  • MongoDBコンセプト
  • 事例紹介
  • MongoDB使われているよーという話。
    • MongoDBのユーザ数は増加。既に2000万DLされている。
    • 開発者数も増えている。アクティブ。
    • NoSQL内ではMongoDB過半数のシェア

CTOからの話
  • MongoDBコンセプト
    • 人間の考え方に近い⇒ドキュメント型
    • RDBコンセプト(CRUD)も取り込み

MongoDB 3.2の話
  • WiredTigerを取り込んだMongoDB 3.2の話。
    • Replica Set Election 1.7秒で投票完了。
    • ドキュメントバリデーションの追加
    • JOIN相当の$lookup, pipeline, 複数ストレージエンジンの採用。インメモリストレージなど。

MongoDB 3.4の話
  • 今年の後半にリリース?
  • Initial Sync、同期のパラレル化、途中再開を可能に。
  • Collation Per Operation
  • BI-Connector, Tableau等可視化ツールとの間の性能向上。
  • Compassスキーマ可視化
  • Read-Only View:データのマスキングもできる?
  • なんとグラフ検索ができるようになる! $Lookup の拡張(recursive lookup)
    • あれかなー、PostgreSQLでいうところのCTEっぽいやつ?非循環グラフとか限定されるのかしらん。
  • #facet 1つのクエリ内で複数のクエリを含められる?うーん、MongoDBそのものというより可視化の話なのか・・・?
  • Zones Sharding
    • 複数データを利用者近くに集中させるケース
    • 新しいデータと古いデータを分けるケース。

Compassの話
  • スキーマ分析という言葉から誤解していたけど、文書構造の分析ではなくて、データの値を分析するものか。
    • CompassではExplainの可視化もするので、開発ツールとしても有効。
    • Explainを元に性能改善する例
    • データ分析のデモ:1899年生まれのデータがある。間違いでは?⇒データ削除や編集のデモ。
    • Compass v1.3beta DL可能。

Atlasの話
ユーザ紹介
  • IBM
  • Comcast
    • 2700万ユーザ、1400万箇所のWifiスポット
    • CDN peek 30Tbit
    • オリンピック放映権を取得。10億ドルの投資
    • コンテンツ配信の場合、ピーク時対応が重要な問題。1秒に10万リクエスト。
    • LAST KNOWN GOODモデルの話。MongoDBはそれが非常にやりやすい。
    • Reuse Quivalency Principleの話。うーん、良くわからん。ACIDの話がここで出てくる。
  • CaptalOne (クレジット会社,米国第4位)
    • 金融ではなくIT会社であるという自負。
    • お金をより賢く使うソリューション提供
    • 銀行に対する期待が変わっている。いつでもどこでもバンキング
    • 大量のデータ。深い・多角的な分析
    • MongoDBを基盤としたHYGIEAという分析ダッシュボードを開発した。



MongoDBは迷走気味?

本題に入る前に、まさかの MongoDB World 2016 キーノート報告 をDisるとかw

  • MongoDBの2つの用途がある。これをごっちゃにできない。
  • 米国と日本で使い方違う説。
  • 日本ではアジャイル開発・半構造データ

  • そもそもMongoDBは分析用途ではない!
    • Mongoは小さいCRUDを大量に処理するのに向いているのでは?

なぜ分析に向かないか。

指向でない
SQLか書けない
機械学習計算ができない
Spark/Hadoop界隈と断絶している

  • MongoDBグラフは遅いんじゃね?
  • イケてる部分
    • スピード開発、Compass、MonfoDB Atlas 地図情報、



本題:MongoDB 最新情報

API
新しいCRUD
  • 3.0で4種類だったのが、3.2で大幅に増加した。
  • 明確に更新するドキュメント数がAPIでわかるようになった。

$lookup
  • Left outer join相当ができる。
  • 他のコレクションにクエリを投げつけているだけ。
  • ACIDないし、RDBの感覚で使うと痛い目見るかも。

アグリゲーションの性能改善
  • プライマリシャードに負荷集中というのを解消したらしい。
  • PoistgreSQLで言えばインデックスオンリースキャンっぽい動作の追加?

全文検索対応
高可用化の改善
  • レプリカセット構成の変更

Read Concern
  • 過半数にデータが更新されるのを待って読む機能・・・なんとなくわかったが難しい。
  • MongoDBのRollbackはRDBとは違う!
    • 切り離されたプライマリがセカンダリとして再接続するときに、旧プライマリにしかないデータをパージする処理(で、合ってるのかな?)

ストレージ(WiredTiger)
  • Version 2 MMAPベース
  • Version 3.0
  • Version 3.2
  • MMAP v1とは
    • ディスクにあるファイルをそのままメモリに乗せるというか、OSに任せている。
    • 更新は in place ⇒ 書き込みロックが必要。
    • V2.x系はデータベース全体、V3.0 ではコレクション全体のロック。
    • ディスク再配置時が問題。処理が重い。

  • WiredTiger
    • MVCC採用
    • ドキュメントレベルロックを実現
    • きちんとMongoDBストレージを管理。
    • チェックポイント時(ファイルへの書き戻しタイミング)にVACUUM相当の処理を行う。
    • ジャーナル有効化でWAL相当の永続化を行う。
    • インデックスとデータファイル間の同期のためにトランザクション処理。複数コレクション対応ではない。

他のストレージ
  • インメモリ
  • 暗号化対応のWiredTiger
    • 有償版のみ。

その他
QA.
  • MMAP v1 から WiredTigerへの切り替え⇒レプリカセット+ローリングを有効に使う。
  • V3.0⇒V3.2の性能改善効果って?
  • セキュリティ関連は?
    • 暗号化くらい?
  • バリデーションの記述はどの程度できる?
    • レンジやリストは可能。MongoQueryと同じ書き方と同じものができる。

最後に
  • はじめてのMongoDB の紹介。
    • アプリ開発者向けの本だよー。DBA向きではないっぽい。
    • じゃんけん大会で2冊デリバリ。残念ながらGetできず。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/nuko_yokohama/20160727/1469620820
Connection: close