Comments
Description
Transcript
スライド 1 - OpenStandia
MongoDB 2.4 新機能紹介 OSSCセミナー@丸の内 株式会社野村総合研究所 OpenStandia 藤崎 祥見 1 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. 自己紹介 • 藤崎 祥見(フジサキ ショウケン) • 研究室でLinuxを使用したことをきっかけにオープンソースに興味を持ち、 Debian/Ubuntuのコミュニティで活動を始め、Ubuntu 5.04 の翻訳に関わる。 • 2008年 野村総合研究所(NRI)入社 OpenStandiaへ配属。以後、オープンソース を使用したシステム開発に携わる。 • 2012年 MongoDBの翻訳に関わる。 • 丸の内MongoDB勉強会やってます。次回は第7回 2013年2月19日開催 • 技術評論社 gihyo.jpで連載しています。「MongoDBでゆるふわDB体験」 http://gihyo.jp/dev/serial/01/mongodb 2 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. NRI OpenStandia • OSSの運用・構築をワンストップでサポート • 対象OSSは50種類 • MongoDBのサポートも準備中、お問い合わせください • http://openstandia.jp/ 3 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. 丸の内MongoDB勉強会 • 一ヶ月に1回開催、次回で7回目 • 特徴 • 無料 • ハンズオン式 • 過去の資料は全てGithubで 公開. http://github.com/syokenz/m arunouchi-mongodb 丸の内mongodb 4 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. 丸の内MongoDB勉強会 • テーマ 第1回 – 第6回 • #1. SQLと比較して学ぶMongoDBクエリ • #2. みんなでシャーディングしてみよう • #3. “v2.2 の新機能” と ”レプリケーションハンズオン” • #4. “REST I/Fを使ったサンプルアプリ” と“設定ファイル全解説” • #5. “ソースコードリーディング”と“カスタムビルド” • #6. “GridFS”、”事例紹介(SnapDish)”、”Sharding時のC10K問題” • 次回以降 • 地理空間インデックス, パフォーマンスチューニング, 事例紹介など 5 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. 目次 1.NoSQLとMongoDB 2.MongoDB 2.4 新機能 3.事例紹介:Hybrid MySQL and MongoDB 4.まとめ 6 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. 1.NoSQLとMongoDB 2.MongoDB 2.4 新機能 3.事例紹介:Hybrid MySQL and MongoDB 4.まとめ 7 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. Not only SQL • 「No! SQL」ではなく、「Not only SQL」 • RDBが得意なことはRDBで、得意でないことは無理にRDBにこだわらず、用途に合 ったデータストアを使おう、というのが最近のコンセンサス • 競合関係ではなく、補完関係という考え方が浸透してきている • RDBの強み • トランザクションによってデータの一貫性を保証できる • 正規化を前提としているため、更新時のコストが小さい • JOINや複雑な検索条件での検索が可能 • RDBが得意ではないこと RDBが得意でないことを、 NoSQLで補完する • 大量データの書き込み/更新処理(特にindexがあるテーブル) • 更新系のスケールアウト • DR(ディザスタリカバリ)対応 8 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. NoSQLへの流れ • Web 1.0 • Web 2.0 • 通信回数は1回 • AJAXを利用した複数通信、随時通信 • DB性能はスケールアップで対応 • DB性能はスケールアウトで対応 • データは1つのデータセンター内 で完結 • データは複数拠点のデータセンターに 配置 • Strong Consistency(強い一貫 性)は必須 • Eventual Consistency(結果整合性) という考え方 データストアに求められるものが変わってきている • 軽い大量のRead/Write処理できること • ノード数に比例したスケーラビリティ • DR対応可能なこと • Consistencyは柔軟に、システムによってはEventualで良い 9 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. NoSQLの種類 • NoSQLと呼ばれている代表的なものは大きく分けて3つに分類される 出所: http://openstandia.jp/oss_info/mongodb/ 10 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. 代表的なNoSQL:KVS • KVS(Key-Value ストア) • 最も一般的なNoSQL。データをkeyとvalueの形で持 つ。 • 基本的にはkeyでの完全一致検索でしかデータを取 得できない制限があるが、高速に動作する。 • シンプルな方式なので気軽に使用することが可能。 • Valueを条件とした検索、KeyでのLike検索はできな い。 • 代表的なプロダクト • Memcashed, Redis, Tokyo Tyrant, ROMA, Infinispan(JBoss Cache) KeyとValueしか無く、Keyでの 完全一致でしかデータを取得 できない。 11 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. key value app2020120420 ‘www.xxx.com’ app2020120421 ‘ [552.9565,N,1401]’ app2020120423 {Javaオブジェクト} 代表的なNoSQL:ドキュメント指向データベース • ドキュメント指向データベース • スキーマを定義しなくても使用できるスキーマ レスである。 • ドキュメント内でネストが可能。 • 複雑な検索条件でデータを取得することが可 能。 • 一部の機能はRDBライクに使用することがで きる。 • { "_id" : ObjectId("4f769ba675c676"), "created_info" : { “owner” : “本田”, “date" : 2012/07/07, “grope”:{ “id”:10, “name”:”営業本部” } }, "title" : "test title", "body" : "test body", MongoDB, CouchDB MongoDBの例。ドキュメント内 でのネストが可能。 } 12 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. 代表的なNoSQL:列指向データベース • 列指向データベース • RDBMSのような行単位では無く、列単位での処理に 特化している。 • 全行に対する特定列の一括更新や、指定した範囲の 大量行に対する複数列の取得に向いている。 • 強力なスケーラビリティを備えており、データが増えて も処理速度がそれほど低下しない。 • RDBのデータストアとは考え方が大きく異なっている ので、扱いが難しい。 • Cassandra, HBase Hbaseの例。Column単位で処 理を行う。 13 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. NoSQLの種類:まとめ • • • • • 共通点 • Join、Transactionなど一部のRDBMSの機能をサポートしないことによりハイパフォーマンスを実現している • スケールアウト、分散管理を前提に設計されている KVS(Key-Value ストア) • データをkeyとvalueで持つHash形式。 • 基本的にはkeyでの完全一致検索でしかデータを取得できない制限があるが、高速に動作する。 ドキュメント指向データベース • スキーマを定義しなくても使用できるスキーマレスである。 • 複雑な検索条件でデータを取得することが可能。 • 一部の機能はRDBライクに使用することができる。 列指向データベース • 行単位では無く、列単位での処理に特化している。 • 書き込みに対して強力なスケーラビリティを発揮する。 NoSQLと呼ばれているものは3つに大きく分けられ、MongoDBはその中で 「ドキュメント指向データベース」に当てはまる 14 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. MongoDBとその他NoSQLとの比較 MongoDB memcached HBase Cassandra SQLライクな検索 ○ × × × 性能 ○ ◎ ○ ○ 分散/スケーラビリティ ○ △ ◎ ◎ 開発のしやすさ ◎ ◎ × × 日本語ドキュメント ○ ○ ○ ○ 商用サポート ○ × ○ ○ MongoDBは、 KVSや列指向DBほど特化していないが、RDBライクに 開発できる。 15 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. MongoDBの思想 トランザクション/JOINを実装しないことに より、KVSに近い性能を出している。 一方で、トランザクション/JOIN以外は RDBに近い機能を持っている。 16 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. MongoDBとは ドキュメント指向データベースで、NoSQLの一つに分類される スキーマレス 軽いRead/Write処理のパフォーマンスが高い スケールアウトが容易 任意のIndexが作成可能で、SQLライクな検索が可能 集計処理用のコマンド集を実装 高パフォーマンス・スケーラビリティを保持しつつRDBライクな 機能をバランスよく組み込むことを目指して開発されている。 17 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. MongoDBが向いているケース データフォーマットの柔軟性が求められるものや非常に更新頻度が高シ ステムに向いている 1. Webサイトの操作データログの蓄積 • 多くの事例がある • Capped Collection(サイズの制限付きコレクション)やTTL Collection(期限付きコレクション)が 使える • アプリによって出力フォーマットの違うログを一括して扱える 2. アドホックなフィールドを検索対象とするようなコンテンツ • ユーザによって独自項目を定義できるようなシステムや、拡張要件のあるシステム • 独自項目を検索対象にすることも可能 3. スマートフォンゲーム、ソーシャルゲーム • 18 小規模な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 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. MongoDBがあまり向いないケース 1. 銀行系のように複雑なトランザクションに重点を置くシステム • 複数のトランザクションを必要としたクエリが必要になる場合,MongoDBは向いていま せん。ただし,1つのドキュメントに対するAtomicな操作はサポートしていますので,ネ ストしたドキュメントを使用して設計を工夫することにより対応可能になります。 2. 伝統的なビジネスインテリジェンス(BI) • MongoDBはバッチ処理が不可能でこそないですが,リアルタイム処理のほうが得意 です。 3. SQLを必要とする問題 • MongoDBはSQLをサポートしていません。 19 ※出所 [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 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. 1.NoSQLとMongoDB 2.MongoDB 2.4 新機能 3.事例紹介:Hybrid MySQL and MongoDB 4.まとめ 20 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. MongoDB 2.4 新機能紹介 • リリースノートをもとに、2013/02末 にリリース予定の MongoDB 2.4の新機能を解説します • リリースノート http://docs.mongodb.org/manual/release-notes/2.4/ 21 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. MongoDB 2.4の新機能:ダイジェスト • 全文検索機能 • ケルベロス認証のサポート(サブスクリプション版のみ) • JavaScriptエンジンをV8へ変更 • GeoJSONを使用した球面地理空間インデックス • インデックス構築の自動再開(resume機能) • ハッシュドシャードキーを用いたシャーディング 22 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. 全文検索機能 • ついにインデックス付き全文検索機能をサポート! • しかし、日本語は未対応。。 • [参考] MySQLでは5.6(2013/02/05 リリース)でInnoDBのFULLTEXTインデックスがサポートされました • これまではLuceneなどのプロダクトが担当していた部分 • まだLucene並の性能は無く、一通り動くレベルとのこと • http://www.youtube.com/watch?v=KVEFsib7ouo 日本語音声付きの解説 • クエリに正規表現を使用可能 • 複数のフィールドを重み付けして検索できるScore Hit方式を採用 • 実験的機能の位置づけ(experimental feature) • 注意 リリースノートより 23 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. 全文検索機能のコマンド • 全文検索を有効化 • db.adminCommand( { setParameter: 1, textSearchEnabled: true } ) • または、mongod --setParameter textSearchEnabled=true • インデックス作成 • db.collection.ensureIndex( { <field> : "text" }) • 検索 • db.collection.runCommand( "text", { search : “xxx"}) 24 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. ケルベロス認証のサポート • サブスクリプション版のみサポート • mongodの認証で利用可能 • mongodの起動時にパラメータで指定する • env KRB5_KTNAME=/opt/etc/mongodb.keytab • authenticationMechanisms=GSSAPI 25 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. JavaScriptエンジンをV8へ変更 • デフォルトJavaScriptエンジンをSpiderMonkeyからV8へスイッチ • mongo shellからdb.serverBuildInfo()で確認できます • "javascriptEngine" : "V8" • または interpreterVersion()で確認できます • > interpreterVersion() V8 3.12.19 26 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. GeoJSONを使用した 球面地理空間インデックス • 2.4から球面地理空間( Spherical Geospatial )インデックスのindex typeが 2dsphereになりました • ノーマルインデックスと併用可能に • db.collection.ensureIndex( { type: 1, geo: "2dsphere" } ) • GeoJSONに対応 • http://geojson.org/geojson-spec.html • 今のところPoint, LineString, Polygonだけ • それぞれで今までのクエリーオペレータ( $within , $box, $near 等)で検索可能 • 新オペレータ $geoIntersects • 引数に{ $geometry : “GeoJSON document” }を指定 • “GeoJSON document”と交差したオブジェクトを返す • 例: db.collection.find( { $geoIntersects: { $geometry: { "type": "Point", "coordinates": [ 40, 5 ] } }}) 27 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. インデックス構築の自動再開 (resume機能) • インデックス構築中にmongodを停止してしまった場合でも、 次回起動後に自動的に再開 • 2.4以前だと、mongodを停止する前にインデックス構築を終える必要が あった • noIndexBuildRetryオプションで無効にできる • デフォルトではインデックス構築の自動再開は有効 28 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. ハッシュドシャードキーを用いた シャーディング • シャードキーをハッシュ化することでデータの偏りを防ぐことが可能に • 例えば、シャードキーがメールアドレスだった場合 • アルファベットごとに偏りが生まれ、均等なレンジ指定が難しくなる 例:携帯のメールアドレス帳 • シャードキー、つまりメールアドレスをハッシュ化することで、ランダム な文字列となり、ほぼ均等に分けることが可能 • シャーディングの設定を容易にすることと、データを均等に分散させ ることを目的に導入された機能 29 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. 再掲 MongoDB 2.4の新機能:ダイジェスト • 全文検索機能 • ケルベロス認証のサポート(サブスクリプション版のみ) • JavaScriptエンジンをV8へ変更 • GeoJSONを使用した球面地理空間インデックス • インデックス構築の自動再開(resume機能) • ハッシュドシャードキーを用いたシャーディング 30 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. 1.NoSQLとMongoDB 2. MongoDB 2.4 新機能 3.事例紹介:Hybrid MySQL and MongoDB 4.まとめ 31 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. Hybrid MySQL and MongoDB • 事例紹介 • 金融業界/投資家向けのSNSサービス • 2012年4月リリース、本番稼働中 • MySQL (and Java) SNS サービス MySQL 32 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. Hybrid MySQL and MongoDB • 事例紹介 • 金融業界/投資家向けのSNSサービス • 2012年4月リリース、本番稼働中 • MySQL (and Java) • CRM機能を追加、データストアはMongoDBを採用 SNS サービス CRM MySQL MongoDB 33 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. ユーザごとの独自項目定義 • 要件 • ユーザが顧客管理のための独自項目を定義できること • 独自項目はテキスト型、リスト型、チェックボックス型で定 義できること • 独自項目を検索できること SNS サービス Customers Search salses_level = 3 CRM MySQL MongoDB User B 34 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. Customer Fields -name -email -address -interests -assets -… User A Customer Fields -name -email -address -sales_level -industry -… Extended fields depents on the user スキーマ設計 MongoDB CRM extended_definition collection extended_values collection user user collection user collection collection 35 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. スキーマ設計 MongoDB CRM extended_definition collection extended_values collection user user collection user collection collection 36 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. スキーマ設計 extended_definition collection Defined for each user { “_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”]} ] } type … =0 : text extended_values collection =1 : list =2 : check box { “_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”]} ] } 37 … NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. 1.NoSQLとMongoDB 2. MongoDB 2.4 新機能 3.事例紹介:Hybrid MySQL and MongoDB 4.まとめ 38 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. まとめ • MongoDBは顧客の要件に柔軟に対応できる機能 を持つ • スキーマレス • SQLライクな検索 • スケーラブル • MySQLで稼働しているシステムへのMongoDB の導入 • Hybrid MySQL and MongoDB • データ特性に応じて適切なデータストアを選択 39 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. 本資料に掲載されている会社名、製品名、サービス名 は各社の登録商標、又は商標です。 [email protected] 40 NRIオープンソースソリューションセンター Copyright© Nomura Research Institute, Ltd. All rights reserved. http://openstandia.jp/