7/26~28/2018 @ New York City
MongoDB World 2018: Keynote
& Product Announcements
2018/09/14 クリエーションライン
鈴木いっぺい
Dev Ittycheria
MongoDB CEO
• 顧客開拓、製品エンハンスに加え、昨年は
MongoDBはIPOを達成
→ データベース企業としては、26年ぶり
• MongoDB Worldの主役はもはや顧客であ
って、キーノートでは4社の顧客に登壇し
てもらう予定
• 最初の顧客は保険業界からの登壇で、創業
150年のTravelers Insurance社
Travelers社
• データベース=RDB only と呼ばれていた時代はもはや終わりつつある。
• MongoDBのような新しいデータベース技術は
• 昨年のイベント際は2つのコレクションをやっと作り上げつつある状況だったの
が、今年のイベントでは、120個のコレクションがプロダクションで運用されて
いて、毎日1000万のドキュメントを書き込むようなトラフィックを生んでいる
。
• MongoDBの大きな特長は、使い始めてから習熟するまでの期間が非常に短いと
いう事。
• また、MongoDBを採用した大きな理由は次の3つ:
• JSON is the Next SQL
MongoDBのデータ表記言語であるJSONは次世代のSQL言語である、とい
う強い確信と共に、MongoDBのAggregation PipelineがJSONデータをRDB
よりはるかに柔軟にアプリケーションに渡す機能を提供してくれる
• Scalability with your business
データベースが、業務のニーズに合わせてスケールをしてくれる事。High
AvailablilityとHigh Consistencyを提供してくれるだけではなく、その特性を
活かしたまま、700万のドキュメントを7億のドキュメントまで増やすこと
が容易にできる
• Supports all cloud configurations
データのクラウド移行に関しても、パブリッククラウド、プライベートク
ラウド、マルチクラウドであろうと、柔軟に対応してくれる
Dev Ittycheria氏が再び登壇
MongoDBが選ばれた理由は次の3つのポイントにまとめられ
る。
• MongoDBはデータベースとして最も現代のニーズに対応し
ている
• ドキュメントモデル
• クエリーのAPIが充実
• Aggregation Framework
• MongoDBはデータを保存する場所として最も安心
• レプリケーションによるデータの自動的フェールオー
バーと可用性
• シャーディングによる分散処理
• ワークロードの独立化
• ゾーン機能によるデータの地理的な分散化
• MongoDBは全てのプラットホーム上でサポートされている
• オンプレミス
• プライベート/パブリッククラウド
• DBaaS (クラウド)
Coinbase社
• Coinbase社は6年前にビットコインの売買を運用するサイトを立ち上げた会社
• 当時は、既に多数のベンダーが存在していたが、Coinbase社は技術力をもって市場
で最も成長の早く、$20B規模の資産価値を持つ企業として成長した。
• 創業してからの6年は、エコシステムが大きく変遷をしたため、成功するための技術
の選択は非常に重要な要件でした。
• MongoDBを選択した最大の理由は、こういった大きな変遷に対応できるデータベー
スが必要だったから
• 当初提供していたサービスはCoinbase Walletだけ
• Coinbase Exchangeをさらに追加
• 複数の仮想通貨を追加(Etherium、Litecoin等)
• Asset ManagementとかIndex Fundのような企業向けのサービスも開始
• 新規機能を追加するたびに、データストアのMongoDBのコレクションを変更する必
要が出るが、それが非常に簡単だったことがMongoDBを選択した大きな要因
• また、金融事業者であるため、セキュリティ、特に不正防止の配慮が非常に重要で、
認証機能を提供する3rd PartyベンダーのコンポーネントをMongoDBとたった2週間で
接続し連携されることに成功している。
• 開発者にとって最も重要なことは、楽しく開発しつつ、最も重要な要件に集中できる
ことを保障すること。CoinbaseはRuby On Rails中心の開発チームで、オブジェクト
思考のプログラミング環境においてドキュメント型データベースであるMongoDBは
、プログラマのオブジェクトに対するプログラミングを非常に容易にしてくれた。
• MongoDBをコアのデータストアとして採用することにより、コードリリースは数日
の間に完了し、従来の数週間のインターバルを大きく改善している。このようなスケ
ールの中で、Coinbaseは昨年だけでも2000万ユーザ増やすことに成功している。
Braze社
• Braze社は、Customer Lifecycle Engagement Platformアプリ。マーケティングツールの
一種で、モバイル端末をプラットホームにする点が特徴。
• Lyftから届く、運転手からのメッセージや、宅配ピザの注文であと5分で届く、というメ
ッセージも、すべてBraze社の技術によるもの。
• Brazeが登録されているアプリをダウンロードやウェブサイトを訪問する度に、Brazeは
データベースにそのユーザのアカウントを作成する。このデータが各々のユーザに対する
ユニークなユーザ情報を記録する。現時点で、100億ユーザが登録されている。
• 2011年からこのデータベースとしてMongoDBが採用されており、事業にとっては重要な
役割をもっている。
• 顧客の位置情報などの情報もスキーマ構成で登録する
• 14億人のアクティブユーザ
• 毎日、1.5Bのメッセージ(メール、テキストメッセージ、等)を送信
• これらをすべてかなり大きいMongoDBのクラスターで運用
• 1000個のシャードによって構成されている。
• 毎秒、25万ものオペレーション
• アメリカとヨーロッパでそれぞれ、12のデータベースクラスターで運用
• 新規顧客が登録されるたびに、そのユーザに関する属性情報をMongoDBクラスターに登
録
• 今年は、20億人のアクティブユーザをサポートする予定
• 来年以降は、これが30億〜50億人/月に登る見込み
• このような環境でMongoDBは重要な要件に対応してくれている
• スケーラビリティ:今後も大量に増えるユーザをサポートできる
• スピード:そのユーザ増加のスピードにも対応できる
• 性能:ユーザが増加しても、システムの性能は維持できる
• 現在、Atlasへの移行を計画中
Snag社
• Snag社はフリーランス系のジョブサイトを運営する企業
• 具体的には、時間単位のジョブを提供することに特化
• 現在、9000万人を対象に数千箇所の地域に対してサービスを提供し、そのシステムの中
核としてMongoDBを7年前から採用
• RDBからMongoDBに移行した大きなメリット:
• RDBのスケーラビリティや性能の限界を解消
• 開発者の開発スピード/効率性が大幅に向上
• ORM (Object Relational Mapping)の工数を完全になくした
• データベースデプロイメントの工数もなくした
• 結果的にスキーマの責任を、DBAから各製品チームに移譲することができた
• 驚くほど安定稼働し、特にスケール面ではビジネスの成長にリニアにMongoDBも規
模拡大が容易に対応
• MongoDBの規模は現在は非常に大きく、運用工数も自然と増えていく中、MongoDB
Atlasが発表され、移行を検討開始
• すでに規模の大きいAWS上のMongoDBインフラをAtlasに移行する際には、
MongoDBチームを力を借りた
• Atlasを評価している点
• TLS暗号化をサポート
• VPC Peering接続をサポートし、AWSの既存システムとの接続が容易に
• 監視機能が充実していて、MongoDBの下層部の動きもよく見ることができる
• サイジングが非常に緻密で、無駄なインスタンスを買わずに済む
• 従来の運用コストが大幅に削減:これらは全てAtlasでは自動化されている
• 分散しているデータベースシステムのバックアップ工数
• 結構細かいセキュリティパッチのアップデート
• メジャーリリースのアップデータの工数 ← クラスターが巨大ゆえ、これが大
きい
• StackOverflowの調査を報告
- 2位以下に大きな差をつけて、Stack Overflowに
て「最も求められるデータベース技術」として
過去2年間、評価されている
• その人気の度合いが、現時点で4000万以上のダウンロ
ード数の背景を説明している。
• 過去12ヶ月の間のダウンロード数は、1200万を超えて
いる
• 現在、ソフトウェア開発者人口は、2000〜2500万人と
いう統計がある。
• 非常に広い範囲のユーザベースに成長
• Seven Eleven: 全米に商店をもつBrick and Mortar企業
からモバイルコマース企業への変遷を行なっている
• Pitney Bowes: 郵便切手を印刷する機械を製造してい
た会社が、デジタルeコマース企業に変身
• こういった顧客でのAtlasの利用が非常に活発になってきている
。
• 2年前のMongoDBWorldで発表された当時は、世界で4箇所でし
た運用されていなかった。
• この2年間の間に、2箇所が54箇所に増加 → 世界で最も広く提
供されているデータベースのマネージドサービス
• AWS, Azure, GCPのリージョンほぼ全てで運用されていて、各
社の今後のリージョン展開にMongoDBは追随する予定
• Atlasの成長も顕著
• 顧客数も、2年前は400社しかいなかったが、現在は
4400社に増えている。
• さらにAtlasの無償枠も運用を昨年からスタート、当初
は1万ユーザだったのが、現在は13万ユーザに増加
• MongoDBのグローバル事業は広がっている。
• 65000人が115のMongoDBミートアップイベントに参加
• 100カ国に顧客がいる
• 20カ国に従業員がいて、さらに拡張中
• パートナーとの協業関係も強化中
• 過去の4年間の売り上げは毎年、70%以上の成長を遂げ
ている
• 特に昨年からの一年で80%以上の成長
• この売り上げの大部分はR&Dに投資
• 2012年〜2014年の間は合計$630万ドル
• この投資が、2015年〜2017年には、$244万ドル(約260億円)に
増加している。
• Atlasの開発、トランザクション機能のサポート、等重要な機能/
サービスに寄与している
Eliot Horowitz
MongoDB CTO
MongoDB CTO, Elliott Horowitz氏の登壇
まずは、MongoDB 4.0 の マルチドキュメントACIDトランザクション機能の発表
MongoDB
Transactions
• 実際にMongoDBの上でどの様に使われるのかは、eコマースのサイトの事例を通して説明
• アプリ流れは次の通り:
• このドキュメント (doc) はこのeコマースサイトでの商品発注を、品物番号 (item) と注文数 (quantity) の配列
構造で表現
• db.orders.insertOne コマンドを通して、商品発注 (doc) ドキュメントを発注コレクション (orders) に挿入
• db.inventory.update コマンドを通して、発注が起きるたびに、在庫コレクション (inventory) 内の商品 (item)
の在庫 (qty) の数値を減らす。
• もし、InsertOneコマンド実行後、updateコマンドを実行する直前に障害が発生して、ordersコレクションと
inventoryコレクションの間に不整合が発生したをする。
• もしくは、inventoryコレクションのqtyの数値のアップデートのループの途中で障害が発生したとする。
• MongoDBのトランザクション機能はこのように表記する
• セッションの開始は:session.start_transaction() で宣言
• 全ての read/writeトランザクションを明記 (session=session挿入)
• セッション終了時にコミット
• 3つの特長
• Familliar: 記述方法は、従来のRDBと全く同じ文法
• Conversational: RDBと同様、対話型で記述
• Performant: ベンチマークで非常に高速処理を記録
• MongoDB v4.0では、レプリカセットでのトランザクション機能がサポートされる
• シャーディング環境でのトランザクション機能サポートは、v4.2 にて提供予定
• トランザクション機能への道のりは段階的なステップを踏んでいる
• v3.6でChange Stream機能(リアルタイムでデータ変更情報をアクセス)や、Retryable Writes機能(
ネットワーク障害やプライマリ不在時に書き込みを再度行う機能)等の提供
• MongoDBでのトランザクションの適切な使い方の紹介
• RDBからテーブルをMongoDBのドキュメントに移行し、従来と同じシーケンスでトランザクション処理をプログラ
ミングはできるが、MongoDBの特性を活かした、もっと適切な方法がある。
• 図では、RDBから移行した次のテーブルをドキュメントに書き換え、トランザクション処理で両方のデータを同時
に書き換え
• order_id : customer_id テーブル(発注ID : 顧客ID)
• line_item_id : order_id テーブル(商品ID : 発注ID)
• MongoDBでは、この2つのテーブルを一つのドキュメント/コレクションに統合する方が有効
• 2つのテーブルを統合したのが左のドキュメント
• order_id : customer_id : line_items (name, price, quantityの配列) を一つのドキュメントで表
記
• 右の処理
• ordersコレクションの中のorder_total(発注合計)とline_items.$[ ].price(商品価格)の両方に
discount(割引率)を乗算する処理を一気に行う
• これは、RDBの場合は、各テーブルに対してそれぞれ処理を行う必要がある。
そもそも、トランザクションを無為に使うのではなく、的確なケースに使う事
が重要
• 明確なビジネスオブジェクト
• eコマースアプリの発注処理
• 在庫管理
• 人との間のお金のやりとり
• そうでないもの
• 商品などの配列内のデータの操作
• ユーザプロファイルの属性情報
• 複数のデータソースからデータを収集/統合
• IoTアプリでセンサーデータを収集し、データベースにInsertする際
に、同時にそこから派生しているRoll-upビューやAggregateされた
データビューも反映させる
• ドキュメント内のシャードキーを変更(v4.2 で提供予定)
• シャード化されたコレクション内のドキュメントのシャードキーを
変更可能(v4.2 で提供予定)
今後の利用の割合
• MongoDBユーザの50%がトランザクション機能を使うのでは、と予測
• とはいえ、全体のオペレーションの非常に小さな%しか使わない
MongoDB v4.0 のリリースは今日(7/25)からダウンロード開始
• 従来は新規バージョンは年末にGAになるのが通例であるが今年は早い
$lookup 機能:v4.0のトランザクション機能と組み合わせて、RDBと全く同じデータ参
照が可能
• RDBの JOIN と同じ機能:異なるコレクション内のドキュメントを連携
• v3.2 (3年前)に提供
MongoDB
Best DB for Modern Apps
MongoDBはデータリレーション(データ同士の関係)の表現に優れていて、大きく2種類の
方法がある。
• REFERENCE RELATIONSHIPS: 上記のトランザクション+$lookup でデータを参照
→ RDBにもあるデータ管理方式(テーブル+JOIN)
• EMBEDDED RELATIONSHIPS: 同一のドキュメント内に配列でデータを表記し、直接
参照 → ドキュメント型DBであるMongoDBに固有な価値
RDBは元来、一つのデータリレーション表現に統一されている
• 全てのデータ表記は参照モデル(REFERENCE RELATIONSHIP)
• トランザクション、JOIN等を通して、複雑な参照のプログラミングを可能にしている
これは本質的には、スプレッドシートの上でデータを構築しているだけ。
• 世の中のデータは、もはやこのモデルには当てはまらないデータが多すぎる時代に
==> これがMongoDBの「ドキュメントモデル」の真の価値であり、目指す領域
MongoDB
Best DB for Modern Apps
1. Document Model
2. Distributed Model
3. Runs Anywhere
ドキュメントモデルの特長
• 自然な表記:
ドキュメントモデルは実データを最も自然に表現できる方法
ユーザプロファイル、eコマースストアの発注データ、等を複数のテーブルに分割してデータ表記する必要が無い
• 動的に運用できるスキーマ
ビジネス要件に伴ってデータのスキーマを柔軟に変更可能
同時に、JSONスキーマの属性設定で特定のフォーマットを強制する事も可能
• 優れたクエリー言語
単なる参照から、複雑なデータAggregationにも対応
バッチ/リアルタイムに対応
• 言語ドライバー
分散システム対応の特長
• HA機能
レプリカセットによる高い可用性
• スケールアウト機能
レプリカセットやシャード機能により並列分散処理が容易
• ワークロードのアイソレーション(隔離)
BCP等の複数データセンタの運用でレプリカを異なる場所に配置
• ソーンシャーディング
どこででも運用可能
• 一貫性
ラップトップ/クラウド/オンプレミスであろうと、全く同じ開発/運用環境
• ポータビリティ
1箇所で開発したアプリを容易に他のロケーションに移動できる
• セキュリティ
場所に限らずセキュリティレベルも一定
MongoDB Key Value
Document Model
MongoDB
Compass
• プロダクションで動いているドキュメントの編集を細かく行いたい、というニーズが多い
◦ シェルでの編集が難しい、という意見が多かった
• MongoDB Compassを3年前に発表
◦ GUIでデータの編集を可能に
◦ このGUIをAtlasで直接使えるようにした
Data Explorer = Atlas上のCompass相当の機能
• Atlas の Aggregation Pipeline Builder機能
◦ コレクションを選択し、Aggregation Pipelineのステージ
を追加するたびに、右側にサンプルが表示される機能
◦ 追加されるステージの結果を編集する度にサンプルが反
映されて表示される。
◦ 途中でステージを追加/削除/編集 しながら最適化され
• 容易にコレクションの生成、追加、削除が可能
• ドキュメントの中身を全て見る事が可能
• Data Explorer (Compass相当機能)
◦ Index View
- インデックスの生成/編集/削除
◦ Find View
- ドキュメントの編集/アップデート/
インサート/コピー
- クエリーの実行
MongoDB
Aggregation Pipeline
• MongoDB 4.0のAggregation Pipelineの3つのエンハンス項目
◦ Date Manipulation
日付情報を自由に加工する事が可能
◦ String Manipulation
文字列情報を自由に編集可能
◦ Type Operators
文字列/数字を自由に変換可能
• 新機能:Atlas の Aggregation Pipeline Builder機能
◦ コレクションを選択し、Aggregation Pipelineのステージを追加するたびに、右
側にサンプルが表示される機能
◦ 追加されるステージの結果を編集する度にサンプルが反映されて表示される。
◦ 途中でステージを追加/削除/編集 しながら最適化されたAggregation
Pipelineを構築できる
MongoDB
Stitch
MongoDB
Stitch Query Anywhere
• MongoDB 4.0のStitchの基本機能
◦ Stitch Functions
Stitch環境でJavaスクリプトをプログラミングできる環
境
◦ Stitch QueryAnywhere
Atlasから直接データベースに対してクエリーを発行でき
る機能
• MongoDB 4.0のStitch機能
‣ 認証機能が提供
facebook、Googleでの認証を利用可能
‣ アクセス権ルールの設定も用意
Stitch上でユーザのアクセス権限を設定可能
‣ MongoDBのクエリー言語を100%サポート
• 病院でのアプリの事例
‣ 患者、医者、看護師、保険会社、それぞれの医療デ
ータに対するアクセス権を管理
‣ データを別の場所にコピーする事なく別のアプリか
らStitchを経由して直接操作可能
‣ MongoDBのクエリーがすべて使える
MongoDB
Stitch Triggers
‣ データベースでのイベントを監視し、任意のアクションに基づいてMongoDBに通知
し、特定の操作を自動的に実行
‣ 元はv3.6の機能にあった、Change Streamsの機能
→ アプリサーバの関与が必要だった
‣ Atlas上でのChange Streams = Stitch Trigger
‣ DB内のアクションに基づいて、Java Scriptプログラムを実行
例:ドキュメントが挿入されると、Twilloを起動し携帯にテキストメッセージを送信
‣ アプリサーバ介在せず、コーディングもほとんど必要なし
‣ MongoDB外で処理が行われるため、DB性能に全く影響なし
MongoDB
Stitch Mobile Sync
• MongoDB Mobile Sync機能
‣ MongoDBが稼働する他のプラットホーム、MongoDB Mobileを同期
‣ モバイル機器の上でオフラインアプリの開発
‣ Mobile Appの同期機能をコールするだけ
- ドキュメントIDを入力
- Conflict Resolverの定義(データ不一致の倍の対応ルール)
- eventListenerの設定(モバイル機器のアクション:振動、Notification Pop Up、等)
‣ 常にMobile App上のデータを最優先
- 高速なローカルR/W
- オフラインでの利用
- Stitch経由で自動的にデータはホストと同期(バックでChange Streams機能)
• MongoDB Mobile
‣ モバイル機器上でMongoDBを稼働
‣ MongoDB Mobile
- iOSもしくはAndroid上で動く内蔵型のMongoDB
- 既存のMongoDBと全く同じAPI,機能セット
- 現在ベータ
MongoDB
BI Connector
• BI Connectorの新機能
‣ BI Connector v2.5
‣ ODBCドライバー
MongoDBにMS SQLを接続、Atlas上のMongoDBドキュメント
からExcelファイルにデータを展開する
‣ MongoDB Charts
中間レイヤを介さずに、直接MongoDBからグラフや表を作成、
表示
MongoDB
BI Connector: ODBC
Driver
• ODBCドライバーデモ
‣ AtlasダッシュボードでBI Connector を
Enabledに設定
‣ MongoDBのネストされているドキュメントを
複数のテーブルに移行し、Excelで表示
‣ PIVOT Tableを生成
MongoDB
BI Connector: Charts
• MongoDB Charts
‣ 広範囲にグラフ/表モデルを提供
‣ 配列も含め、ドキュメントが自動的に展開、個別
に表示可能
‣ ダッシュボード上で複数のグラフ/表を表示
‣ ダッシュボードを共有
‣ 全て、MongoDBに直接アクセス
MongoDB Key Value
Distributed Model
• 分散型データベースのキーポイント
‣ High Availability
障害が起きても稼働保証が容易
‣ スケールアウト
ワークロードの急激な増加にも迅速、柔軟に対応
‣ ワークロード分離
お互いの性能に影響を及びさない
‣ Zone Sharding
データを地理的に異なる場所において管理
MongoDB
Atlas
• Atlasでのエンハンス項目
‣ Global Clustersのサポート
‣ Google Computing Platformでの無償枠の提供開始
‣ エンタプライズセキュリティ機能
‣ AWS KMS(Key Management Service)サポート
自分のAWS KMSキーを使って暗号化(Data encryption at rest)
‣ 社内のLDAPサーバを利用、Atlasでの認証を実施
‣ Atlas上でのフル監査機能
‣ HIPAA(米国医療業界のセキュリティ規制)サポート
‣ 無停止でオンプレミスMongoDBクラスターからAtlasへ移行可能
MongoDB
Zone Sharding
• Zone Shardingのキーポイント
‣ データを特定の国の中で運用するニーズ
- 各国の法律や規制に基づく制限
- 各国での運用Latencyを最小限に
‣ 短時間にグローバル規模でAtlasクラスターを構築可能
- 普通のデータベースだとものすごい時間がかかる
• Zone Shardingのデモ
‣ Global Cluster Configuration設定画面
‣ 各国でのWrite Latencyが色で表示
‣ Global Write テンプレート
‣ 3つのクラウドで提供(AWS, Azure, GCP)
‣ 複数の段階を選択可能
‣ アプリケーションを接続
‣ Data Explorerでコレクションの最適化
‣ 国コードを設定し、シャードキーとする
‣ 各リージョンを個別に変更可能
‣ 新規リージョンの追加
‣ 特定リージョンでシャードを増やしキャパシティ増強
‣ Read専用のレプリカを追加 (Readだけローカル)
MongoDB Key Value
Runs Anywhere
MongoDB
Cross Cloud Support
• Cross Cloud サポート
‣ 複数のパブリッククラウドにまたがったMongoDBクラスターが構築/運用可能に
‣ 今年の後半に提供開始
MongoDB
Private Cloud
• Private CloudでのMongoDBユースケース
‣ Kubernetesがプライベートクラウドのデフォルトプラットホームになり
つつある。
‣ Native Kubernetes
‣ OpenShift
‣ CloudFoundry
‣ MongoDB Ops ManagerとKubernetesの統合
‣ Kubernetes上で簡単にMongoDBクラスターを立ち上げ、運用する
MongoDB
Mobile

Mongo db world 2018