38
1 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. MongoDBを導入する前に 検討した7つのこと OSSCセミナー@丸の内 株式会社野村総合研究所 OpenStandia 藤崎 祥見

MongoDBを導入する前に 検討した7つのこと · 2. 伝統的なビジネスインテリジェンス(bi) 伝統的なビジネスインテリジェンス(BI) • MongoDBはバッチ処理が不可能でこそないですが,リアルタイム処理のほうが得意

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

1

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

MongoDBを導入する前に 検討した7つのこと

OSSCセミナー@丸の内

株式会社野村総合研究所 OpenStandia 藤崎 祥見

2

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

自己紹介

• 藤崎 祥見(フジサキ ショウケン)

• 研究室でLinuxを使用したことをきっかけにオープンソースに興味を持ち、Debian/Ubuntuのコミュニティで活動を始め、Ubuntu 5.04 の翻訳に関わる。

• 2008年 野村総合研究所(NRI)入社 OpenStandiaへ配属。以後、オープンソースを使用したシステム開発に携わる。

• 2009年 オープンソースであるLiferayの日本コミュニティ、日本Liferayユーザグループを共同設立。

• 2012年 MongoDBの翻訳に関わる。

• 丸の内MongoDB勉強会やってます。次回は第6回 2013年1月23日開催

• 技術評論社 gihyo.jpで連載しています。「MongoDBでゆるふわDB体験」 http://gihyo.jp/dev/serial/01/mongodb

3

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

• OSSの運用・構築をワンストップでサポート

• 対象OSSは50種類

• MongoDBのサポートも準備中、お問い合わせください

• http://openstandia.jp/

NRI OpenStandia

4

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

丸の内mongodb

丸の内MongoDB勉強会

• 一ヶ月に1回開催、次回で6回目

• 特徴

• 無料

• ハンズオン式

• 過去の資料は全てGithubで公開. http://github.com/syokenz/marunouchi-mongodb

5

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

• テーマ 第1回 – 第5回

• #1. SQLと比較して学ぶMongoDBクエリ

• #2. みんなでシャーディングしてみよう

• #3. “v2.2 の新機能” と ”レプリケーションハンズオン”

• #4. “REST I/Fを使ったサンプルアプリ” と“設定ファイル全解説”

• #5. “ソースコードリーディング”と“カスタムビルド”

• 次回以降

• GridFS, 地理空間インデックス, パフォーマンスチューニング, 事例紹介など

丸の内MongoDB勉強会

6

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

目次

1.NoSQLとMongoDB

2.MongoDBを導入する前に検討した7つのこと

3.事例紹介:Hybrid MySQL and MongoDB

4.まとめ

7

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

2.MongoDBを導入する前に検討した7つのこと

3.事例紹介:Hybrid MySQL and MongoDB

4.まとめ

1.NoSQLとMongoDB

8

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

• 「No! SQL」ではなく、「Not only SQL」

• RDBが得意なことはRDBで、得意でないことは無理にRDBにこだわらず、用途に合ったデータストアを使おう、というのが最近のコンセンサス

• 競合関係ではなく、補完関係という考え方が浸透してきている

• RDBの強み

• トランザクションによってデータの一貫性を保証できる

• 正規化を前提としているため、更新時のコストが小さい

• JOINや複雑な検索条件での検索が可能

• RDBが得意ではないこと

• 大量データの書き込み/更新処理(特にindexがあるテーブル)

• 更新系のスケールアウト

• DR(ディザスタリカバリ)対応

RDBが得意でないことを、NoSQLで補完する

Not only SQL

9

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

• Web 1.0

• 通信回数は1回

• DB性能はスケールアップで対応

• データは1つのデータセンター内で完結

• Strong Consistency(強い一貫性)は必須

データストアに求められるものが変わってきている

• Web 2.0

• AJAXを利用した複数通信、随時通信

• DB性能はスケールアウトで対応

• データは複数拠点のデータセンターに配置

• Eventual Consistency(結果整合性)という考え方

• 軽い大量のRead/Write処理できること

• ノード数に比例したスケーラビリティ

• DR対応可能なこと

• Consistencyは柔軟に、システムによってはEventualで良い

NoSQLへの流れ

10

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

• NoSQLと呼ばれている代表的なものは大きく分けて3つに分類される

出所: http://openstandia.jp/oss_info/mongodb/

NoSQLの種類

11

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

• KVS(Key-Value ストア)

• 最も一般的なNoSQL。データをkeyとvalueの形で持つ。

• 基本的にはkeyでの完全一致検索でしかデータを取得できない制限があるが、高速に動作する。

• シンプルな方式なので気軽に使用することが可能。

• Valueを条件とした検索、KeyでのLike検索はできない。

• 代表的なプロダクト

• Memcashed, Redis, Tokyo Tyrant, ROMA,

Infinispan(JBoss Cache) key value

app2020120420 ‘www.xxx.com’

app2020120421 ‘ [552.9565,N,1401]’

app2020120423 {Javaオブジェクト}

KeyとValueしか無く、Keyでの完全一致でしかデータを取得できない。

代表的なNoSQL:KVS

12

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

• ドキュメント指向データベース

• スキーマを定義しなくても使用できるスキーマレスである。

• ドキュメント内でネストが可能。

• 複雑な検索条件でデータを取得することが可能。

• 一部の機能はRDBライクに使用することができる。

• MongoDB, CouchDB

MongoDBの例。ドキュメント内でのネストが可能。

{ "_id" : ObjectId("4f769ba675c676"), "created_info" : { “owner” : “本田”, “date" : 2012/07/07, “grope”:{ “id”:10, “name”:”営業本部” } }, "title" : "test title", "body" : "test body", }

代表的なNoSQL:ドキュメント指向データベース

13

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

• 列指向データベース

• RDBMSのような行単位では無く、列単位での処理に特化している。

• 全行に対する特定列の一括更新や、指定した範囲の大量行に対する複数列の取得に向いている。

• 強力なスケーラビリティを備えており、データが増えても処理速度がそれほど低下しない。

• RDBのデータストアとは考え方が大きく異なっているので、扱いが難しい。

• Cassandra, HBase

Hbaseの例。Column単位で処理を行う。

代表的なNoSQL:列指向データベース

14

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

• 共通点

• Join、Transactionなど一部のRDBMSの機能をサポートしないことによりハイパフォーマンスを実現している

• スケールアウト、分散管理を前提に設計されている

• KVS(Key-Value ストア)

• データをkeyとvalueで持つHash形式。

• 基本的にはkeyでの完全一致検索でしかデータを取得できない制限があるが、高速に動作する。

• ドキュメント指向データベース

• スキーマを定義しなくても使用できるスキーマレスである。

• 複雑な検索条件でデータを取得することが可能。

• 一部の機能はRDBライクに使用することができる。

• 列指向データベース

• 行単位では無く、列単位での処理に特化している。

• 書き込みに対して強力なスケーラビリティを発揮する。

• NoSQLと呼ばれているものは3つに大きく分けられ、MongoDBはその中で 「ドキュメント指向データベース」に当てはまる

NoSQLの種類:まとめ

15

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

MongoDB memcached HBase Cassandra

SQLライクな検索 ○ × × ×

性能 ○ ◎ ○ ○

分散/スケーラビリティ ○ △ ◎ ◎

開発のしやすさ ◎ ◎ × ×

日本語ドキュメント ○ ○ ○ ○

商用サポート ○ × ○ ○

MongoDBは、 KVSや列指向DBほど特化していないが、RDBライクに開発できる。

MongoDBとその他NoSQLとの比較

16

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

MongoDBの思想

トランザクション/JOINを実装しないことにより、KVSに近い性能を出している。 一方で、トランザクション/JOIN以外はRDBに近い機能を持っている。

17

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

ドキュメント指向データベースで、NoSQLの一つに分類される

スキーマレス

高パフォーマンス・スケーラビリティを保持しつつRDBライクな機能をバランスよく組み込むことを目指して開発されている。

軽いRead/Write処理のパフォーマンスが高い

スケールアウトが容易

MongoDBとは

任意のIndexが作成可能で、SQLライクな検索が可能

集計処理用のコマンド集を実装

18

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

データフォーマットの柔軟性が求められるものや非常に更新頻度が高システムに向いている

1. Webサイトの操作データログの蓄積

• 多くの事例がある

• Capped Collection(サイズの制限付きコレクション)やTTL Collection(期限付きコレクション)が使える

• アプリによって出力フォーマットの違うログを一括して扱える

2. アドホックなフィールドを検索対象とするようなコンテンツ

• ユーザによって独自項目を定義できるようなシステムや、拡張要件のあるシステム

• 独自項目を検索対象にすることも可能

3. スマートフォンゲーム、ソーシャルゲーム

• 小規模なRead/Writesが大量にある場合

※出所 [Mongo] Use Cases http://www.mongodb.org/pages/viewpage.action?pageId=21266728 http://www.mongodb.org/display/DOCS/Use+Cases http://www.mongodb.org/display/DOCS/Production+Deployments

MongoDBが向いているケース

19

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

1. 銀行系のように複雑なトランザクションに重点を置くシステム • 複数のトランザクションを必要としたクエリが必要になる場合,MongoDBは向いていません。ただし,1つのドキュメントに対するAtomicな操作はサポートしていますので,ネストしたドキュメントを使用して設計を工夫することにより対応可能になります。

2. 伝統的なビジネスインテリジェンス(BI) • MongoDBはバッチ処理が不可能でこそないですが,リアルタイム処理のほうが得意です。

3. SQLを必要とする問題 • MongoDBはSQLをサポートしていません。

※出所 [Mongo] Use Cases http://www.mongodb.org/pages/viewpage.action?pageId=21266728 http://www.mongodb.org/display/DOCS/Use+Cases http://www.mongodb.org/display/DOCS/Production+Deployments

MongoDBがあまり向いないケース

20

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

1.NoSQLとMongoDB

3.事例紹介:Hybrid MySQL and MongoDB

4.まとめ

2.MongoDBを導入する前に検討した7つのこと

21

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

検討1

KVSでは実現できないか

22

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

検討2

本当にスケールアウトが必要か

23

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

検討3

メモリ/ディスクのコントロールは必要ないか

24

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

検討4

マルチトランザクションは 必要ないか

25

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

検討5

本番環境にリリース後、 バージョンアップできるか

26

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

検討6

データ暗号化、ユーザ権限は 必要ないか

27

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

検討7

顧客/開発メンバーがリスクとメリットを理解しているか

28

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

MongoDBを導入する前に検討した7つのこと

1. KVSでは実現できないか

2. 本当にスケールアウトが必要か

3. メモリ/ディスクのコントロールは必要ないか

4. マルチトランザクションは必要ないか

5. 本番環境にリリース後、バージョンアップできるか

6. データ暗号化、ユーザ権限は必要ないか

7. 顧客/開発メンバーがリスクとメリットを理解しているか

29

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

1.NoSQLとMongoDB

2.MongoDBを導入する前に検討した7つのこと

4.まとめ

3.事例紹介:Hybrid MySQL and MongoDB

30

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

Hybrid MySQL and MongoDB

• 事例紹介

• 金融業界/投資家向けのSNSサービス

• 2012年4月リリース、本番稼働中

• MySQL (and Java)

SNS サービス

MySQL

31

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

Hybrid MySQL and MongoDB

• 事例紹介

• 金融業界/投資家向けのSNSサービス

• 2012年4月リリース、本番稼働中

• MySQL (and Java)

• CRM機能を追加、データストアはMongoDBを採用

SNS サービス

CRM

MongoDB MySQL

32

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

ユーザごとの独自項目定義

• 要件

• ユーザが顧客管理のための独自項目を定義できること

• 独自項目はテキスト型、リスト型、チェックボックス型で定義できること

• 独自項目を検索できること

SNS サービス

Customer Fields -name -email -address -sales_level -industry -…

Customer Fields -name -email -address -interests -assets -…

Extended fields depents on the user

User B

User A CRM

MongoDB MySQL

Search salses_level = 3

Customers

33

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

スキーマ設計

CRM

extended_definition collection

extended_values collection

user collection

user collection

user collection

MongoDB

34

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

スキーマ設計

CRM

extended_definition collection

extended_values collection

user collection

user collection

user collection

MongoDB

35

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

スキーマ設計

{ “_id”:ObjectID(“50ad9b3976c25eb2096dd1da”), “userId”: 12233, “extendedItems”:[ {“name” : “sales_level”, “type”: 1,“selectValues” : [1,2,3,4,5]}, {“name” : “industry”, “type”: 2,“selectValues” : [“food”,“IT”,“vendor”,“retail”]} ] } …

{ “_id”:ObjectID(“50ad9b3976c27eb2096dd100”), “userId”: 12233, “name”:”Atsushi Sato”, “email”:”[email protected]”, “extendedValues”:[ {“name” : “sales_level”, “value”: [ 3 ]}, {“name” : “industry”, “value”: [“1”,”3”,“5”]} ] } { “_id”:ObjectID(“50ad9b3976c26eb2096dd101”), “userId”: 12233, “name”:”Bunta Suzuki”, “email”:”[email protected]”, “extendedValues”:[ {“name” : “sales_level”, “value”: [ 2 ]}, {“name” : “industry”, “value”: [“1”]} ] } …

extended_definition collection

extended_values collection

type =0 : text =1 : list =2 : check box

Defined for each user

36

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

1.NoSQLとMongoDB

2.MongoDBを導入する前に検討した7つのこと

3.事例紹介:Hybrid MySQL and MongoDB

4.まとめ

37

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

まとめ

• MongoDBは顧客の要件に柔軟に対応できる機能を持つ

• スキーマレス

• SQLライクな検索

• スケーラブル

• MySQLで稼働しているシステムへのMongoDBの導入

• Hybrid MySQL and MongoDB

• データ特性に応じて適切なデータストアを選択

38

NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved.

[email protected] http://openstandia.jp/

本資料に掲載されている会社名、製品名、サービス名は各社の登録商標、又は商標です。