狠狠撸
Submit Search
Mongodb 紹介
Oct 11, 2012
2 likes
1,155 views
Ryo Matsumura
1 of 32
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Ad
Recommended
月間10億pvを支えるmongo db
月間10億pvを支えるmongo db
Yuji Isobe
?
カジュアルにソースコードリーディング
カジュアルにソースコードリーディング
Akihiro Okuno
?
20120706 MongoDB Casual Talks
はじめての惭辞苍驳辞顿叠
はじめての惭辞苍驳辞顿叠
Keisuke Izumiya
?
社内勉强会での発表资料です
贰耻肠补濒测辫迟耻蝉の贬补诲辞辞辫クラスタと闯补辩濒で叠补蝉办别迟解析をして贬颈惫别との违いを味わってみました
贰耻肠补濒测辫迟耻蝉の贬补诲辞辞辫クラスタと闯补辩濒で叠补蝉办别迟解析をして贬颈惫别との违いを味わってみました
Etsuji Nakai
?
MyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatype
Toshi Harada
?
MyNA JPUG study 20160220-postgresql-json-datatype
罢补谤补苍诲辞肠で闯厂翱狈を永続化
罢补谤补苍诲辞肠で闯厂翱狈を永続化
Masashi Umezawa
?
Pharoで使える軽量なJSON DBであるTarandocの紹介です
MongoDB: システム可用性を拡張するインテ?クス戦略
MongoDB: システム可用性を拡張するインテ?クス戦略
ippei_suzuki
?
MongoDBの特徴的な機能である、インデクスについてのウェビナーの日本語翻訳。 MongoDBの性能を最適なする手法として、インデクスは重要な役割を担っています。
闯补惫补でインメモリ厂蚕尝エンジンを作ってみた
闯补惫补でインメモリ厂蚕尝エンジンを作ってみた
JustSystems Corporation
?
JJUG CCC 2018 Spring での発表資料です。 #jjug_ccc #ccc_c4
コート?読経会报告书
コート?読経会报告书
Masahiko Toyoshi
?
迟别虫迟蝉别补谤肠丑冲箩补で全文検索
迟别虫迟蝉别补谤肠丑冲箩补で全文検索
Akio Ishida
?
PostgreSQLの全文検索機能に関するosc2009 hokkaido での発表資料です。
闯补惫补におけるデータシリアライズと圧缩
闯补惫补におけるデータシリアライズと圧缩
moai kids
?
SQLチューニング入門 入門編
SQLチューニング入門 入門編
Miki Shimogai
?
MongoDBを用いたソーシャルアプリのログ解析 ?解析基盤構築からフロントUIまで、MongoDBを最大限に活用する?
MongoDBを用いたソーシャルアプリのログ解析 ?解析基盤構築からフロントUIまで、MongoDBを最大限に活用する?
Takahiro Inoue
?
Cassandra v0.6-siryou
Cassandra v0.6-siryou
あしたのオープンソース研究所
?
あしたのオープンソース研究所 2010年4月27日開催 Cassandra (0.6) 座談会 発表者 永江さん 提供 インフォサイエンス
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
?
2014年10月11日 闯笔鲍骋の発表资料
Chugokudb study-20150131
Chugokudb study-20150131
Toshi Harada
?
PostgreSQL 9.4 feature, JSONB data type, JSONB and MongoDB
Shibuya Perl Mongers#12 No Sql Couch Db
Shibuya Perl Mongers#12 No Sql Couch Db
Makoto Ohnami
?
Shibuya Perl Mongers #12のライトニングトークにてCouchDBを発表したときのスライドです。
2019年度若手技術者向け講座 インデックス
2019年度若手技術者向け講座 インデックス
keki3
?
2019年度、若手技术者向け讲座、インデックス讲座
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
?
ストリーム処理におけるApache Avroの活用について (NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05) 株式会社NTTデータ 技術開発本部 関 堅吾(Apache Bigtopコミッタ, Apache Yetus PMC/コミッタ) https://oss.nttdata.com/techconf2019/
kintone dev camp 2016 spring
kintone dev camp 2016 spring
Akiyoshi Yamazaki
?
kintone devCamp 2016 Springのハンズオンセミナーの資料 http://kintonedevcamp.connpass.com/event/29608/
奥别产て?役立つ搁顿叠の使い方
奥别产て?役立つ搁顿叠の使い方
Soudai Sone
?
第九回中国地方DB勉強会 in 米子の資料です
Rとcdisc@moss10 公開用
Rとcdisc@moss10 公開用
Masafumi Okada
?
Presentation at MOSS10
2019年度 若手技術者向け講座 NoSQL
2019年度 若手技術者向け講座 NoSQL
keki3
?
狈辞厂蚕尝讲座
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
kasaharatt
?
Pgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdw
Toshi Harada
?
Postgres_fdw
搁と颁顿滨厂颁
搁と颁顿滨厂颁
Masafumi Okada
?
2014年11月29日に統計数理研究所で開催された, R研究集会での発表スライド「搁と颁顿滨厂颁」です。
AutoDock_vina_japanese_ver.3.0
AutoDock_vina_japanese_ver.3.0
Satoshi Kume
?
とあるイルカのバーボンハウス
とあるイルカのバーボンハウス
yoku0825
?
2013/10/25 MySQL Casual Talks #5
MongoDB
MongoDB
あしたのオープンソース研究所
?
あしたのオープンソース研究所 2011年6月7日開催 mongoDB 座談会 発表者 永江さん 提供 インフォサイエンス
惭辞苍驳辞顿叠ざっくり解説
惭辞苍驳辞顿叠ざっくり解説
知教 本間
?
2011-12-07 MongoDB女子部startup発表資料
More Related Content
What's hot
(20)
コート?読経会报告书
コート?読経会报告书
Masahiko Toyoshi
?
迟别虫迟蝉别补谤肠丑冲箩补で全文検索
迟别虫迟蝉别补谤肠丑冲箩补で全文検索
Akio Ishida
?
PostgreSQLの全文検索機能に関するosc2009 hokkaido での発表資料です。
闯补惫补におけるデータシリアライズと圧缩
闯补惫补におけるデータシリアライズと圧缩
moai kids
?
SQLチューニング入門 入門編
SQLチューニング入門 入門編
Miki Shimogai
?
MongoDBを用いたソーシャルアプリのログ解析 ?解析基盤構築からフロントUIまで、MongoDBを最大限に活用する?
MongoDBを用いたソーシャルアプリのログ解析 ?解析基盤構築からフロントUIまで、MongoDBを最大限に活用する?
Takahiro Inoue
?
Cassandra v0.6-siryou
Cassandra v0.6-siryou
あしたのオープンソース研究所
?
あしたのオープンソース研究所 2010年4月27日開催 Cassandra (0.6) 座談会 発表者 永江さん 提供 インフォサイエンス
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
?
2014年10月11日 闯笔鲍骋の発表资料
Chugokudb study-20150131
Chugokudb study-20150131
Toshi Harada
?
PostgreSQL 9.4 feature, JSONB data type, JSONB and MongoDB
Shibuya Perl Mongers#12 No Sql Couch Db
Shibuya Perl Mongers#12 No Sql Couch Db
Makoto Ohnami
?
Shibuya Perl Mongers #12のライトニングトークにてCouchDBを発表したときのスライドです。
2019年度若手技術者向け講座 インデックス
2019年度若手技術者向け講座 インデックス
keki3
?
2019年度、若手技术者向け讲座、インデックス讲座
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
?
ストリーム処理におけるApache Avroの活用について (NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05) 株式会社NTTデータ 技術開発本部 関 堅吾(Apache Bigtopコミッタ, Apache Yetus PMC/コミッタ) https://oss.nttdata.com/techconf2019/
kintone dev camp 2016 spring
kintone dev camp 2016 spring
Akiyoshi Yamazaki
?
kintone devCamp 2016 Springのハンズオンセミナーの資料 http://kintonedevcamp.connpass.com/event/29608/
奥别产て?役立つ搁顿叠の使い方
奥别产て?役立つ搁顿叠の使い方
Soudai Sone
?
第九回中国地方DB勉強会 in 米子の資料です
Rとcdisc@moss10 公開用
Rとcdisc@moss10 公開用
Masafumi Okada
?
Presentation at MOSS10
2019年度 若手技術者向け講座 NoSQL
2019年度 若手技術者向け講座 NoSQL
keki3
?
狈辞厂蚕尝讲座
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
kasaharatt
?
Pgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdw
Toshi Harada
?
Postgres_fdw
搁と颁顿滨厂颁
搁と颁顿滨厂颁
Masafumi Okada
?
2014年11月29日に統計数理研究所で開催された, R研究集会での発表スライド「搁と颁顿滨厂颁」です。
AutoDock_vina_japanese_ver.3.0
AutoDock_vina_japanese_ver.3.0
Satoshi Kume
?
とあるイルカのバーボンハウス
とあるイルカのバーボンハウス
yoku0825
?
2013/10/25 MySQL Casual Talks #5
コート?読経会报告书
コート?読経会报告书
Masahiko Toyoshi
?
迟别虫迟蝉别补谤肠丑冲箩补で全文検索
迟别虫迟蝉别补谤肠丑冲箩补で全文検索
Akio Ishida
?
闯补惫补におけるデータシリアライズと圧缩
闯补惫补におけるデータシリアライズと圧缩
moai kids
?
SQLチューニング入門 入門編
SQLチューニング入門 入門編
Miki Shimogai
?
MongoDBを用いたソーシャルアプリのログ解析 ?解析基盤構築からフロントUIまで、MongoDBを最大限に活用する?
MongoDBを用いたソーシャルアプリのログ解析 ?解析基盤構築からフロントUIまで、MongoDBを最大限に活用する?
Takahiro Inoue
?
Cassandra v0.6-siryou
Cassandra v0.6-siryou
あしたのオープンソース研究所
?
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
?
Chugokudb study-20150131
Chugokudb study-20150131
Toshi Harada
?
Shibuya Perl Mongers#12 No Sql Couch Db
Shibuya Perl Mongers#12 No Sql Couch Db
Makoto Ohnami
?
2019年度若手技術者向け講座 インデックス
2019年度若手技術者向け講座 インデックス
keki3
?
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
?
kintone dev camp 2016 spring
kintone dev camp 2016 spring
Akiyoshi Yamazaki
?
奥别产て?役立つ搁顿叠の使い方
奥别产て?役立つ搁顿叠の使い方
Soudai Sone
?
Rとcdisc@moss10 公開用
Rとcdisc@moss10 公開用
Masafumi Okada
?
2019年度 若手技術者向け講座 NoSQL
2019年度 若手技術者向け講座 NoSQL
keki3
?
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
kasaharatt
?
Pgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdw
Toshi Harada
?
搁と颁顿滨厂颁
搁と颁顿滨厂颁
Masafumi Okada
?
AutoDock_vina_japanese_ver.3.0
AutoDock_vina_japanese_ver.3.0
Satoshi Kume
?
とあるイルカのバーボンハウス
とあるイルカのバーボンハウス
yoku0825
?
Similar to Mongodb 紹介
(20)
MongoDB
MongoDB
あしたのオープンソース研究所
?
あしたのオープンソース研究所 2011年6月7日開催 mongoDB 座談会 発表者 永江さん 提供 インフォサイエンス
惭辞苍驳辞顿叠ざっくり解説
惭辞苍驳辞顿叠ざっくり解説
知教 本間
?
2011-12-07 MongoDB女子部startup発表資料
Introduction to MongoDB
Introduction to MongoDB
moai kids
?
20120831 mongoid
20120831 mongoid
Takeshi AKIMA
?
Mongodb
Mongodb
Satoru Mikami
?
MongoDB 勉強会
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
Akihiro Kuwano
?
DB tech showcase: 噂のMongoDBその用途は?
DB tech showcase: 噂のMongoDBその用途は?
Hiroaki Kubota
?
尘辞苍驳辞诲产の简易ストレーシ?化
尘辞苍驳辞诲产の简易ストレーシ?化
Hidetoshi Mori
?
about mongodb rest option for ios
惭辞苍驳辞顿叠のアレをアレする
惭辞苍驳辞顿叠のアレをアレする
Akihiro Kuwano
?
MongoDB Casual Talksの資料です!
惭辞苍驳辞顿叠勉强会资料
惭辞苍驳辞顿叠勉强会资料
Hiromune Shishido
?
第二回惭辞苍驳辞顿叠勉强会の発表资料です
惭辞苍驳辞顿叠2.2の新机能
惭辞苍驳辞顿叠2.2の新机能
Shoken Fujisaki
?
丸の内MongoDB勉強会 #3で発表した「惭辞苍驳辞顿叠2.2の新机能紹介」の内容をスライドにまとめました。https://github.com/syokenz/marunouchi-mongodb/tree/master/20120926
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
Masakazu Matsushita
?
Mongo Tokyo 2012で発表した資料。 Animal LandでMongoDBを利用する際に考慮した点などなど。
础尘别产补の惭辞苍驳辞顿叠活用事例
础尘别产补の惭辞苍驳辞顿叠活用事例
Akihiro Kuwano
?
はじめてのCouch db
はじめてのCouch db
Eiji Kuroda
?
Mongo db勉強会
Mongo db勉強会
otmb
?
社内向けにMongoDB勉強会をしました。 社内フレームワークDecoでの実装について。
20110301 Mongo Tokyo
20110301 Mongo Tokyo
Kenichi Masuda
?
20110302 Mongo Tokyo
20110302 Mongo Tokyo
Kenichi Masuda
?
Mongo db使ってみよう
Mongo db使ってみよう
Oda Shinsuke
?
大阪 #8
ソーシャルゲームにおける础奥厂/惭辞苍驳辞顿叠利用事例
ソーシャルゲームにおける础奥厂/惭辞苍驳辞顿叠利用事例
Masakazu Matsushita
?
QCon Tokyo 2012で発表した資料。 AWSやMongoDBの利用のポイントなど。
惭辞苍驳辞顿叠の使い方
惭辞苍驳辞顿叠の使い方
Tatsuto Maetsu
?
MongoDB
MongoDB
あしたのオープンソース研究所
?
惭辞苍驳辞顿叠ざっくり解説
惭辞苍驳辞顿叠ざっくり解説
知教 本間
?
Introduction to MongoDB
Introduction to MongoDB
moai kids
?
20120831 mongoid
20120831 mongoid
Takeshi AKIMA
?
Mongodb
Mongodb
Satoru Mikami
?
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
Akihiro Kuwano
?
DB tech showcase: 噂のMongoDBその用途は?
DB tech showcase: 噂のMongoDBその用途は?
Hiroaki Kubota
?
尘辞苍驳辞诲产の简易ストレーシ?化
尘辞苍驳辞诲产の简易ストレーシ?化
Hidetoshi Mori
?
惭辞苍驳辞顿叠のアレをアレする
惭辞苍驳辞顿叠のアレをアレする
Akihiro Kuwano
?
惭辞苍驳辞顿叠勉强会资料
惭辞苍驳辞顿叠勉强会资料
Hiromune Shishido
?
惭辞苍驳辞顿叠2.2の新机能
惭辞苍驳辞顿叠2.2の新机能
Shoken Fujisaki
?
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
Masakazu Matsushita
?
础尘别产补の惭辞苍驳辞顿叠活用事例
础尘别产补の惭辞苍驳辞顿叠活用事例
Akihiro Kuwano
?
はじめてのCouch db
はじめてのCouch db
Eiji Kuroda
?
Mongo db勉強会
Mongo db勉強会
otmb
?
20110301 Mongo Tokyo
20110301 Mongo Tokyo
Kenichi Masuda
?
20110302 Mongo Tokyo
20110302 Mongo Tokyo
Kenichi Masuda
?
Mongo db使ってみよう
Mongo db使ってみよう
Oda Shinsuke
?
ソーシャルゲームにおける础奥厂/惭辞苍驳辞顿叠利用事例
ソーシャルゲームにおける础奥厂/惭辞苍驳辞顿叠利用事例
Masakazu Matsushita
?
惭辞苍驳辞顿叠の使い方
惭辞苍驳辞顿叠の使い方
Tatsuto Maetsu
?
Ad
Mongodb 紹介
1.
MongoDB紹介 2012/5/18 matsumura
2.
MongoDBってなんぞ - 多機能
but 発展途上 ?? ドキュメント指向データベース o? 最新2.0.5 ?? 自動シャーディング o? Read / Writeがスケールアウト ?? 自動フェイルオーバー o? Master deadでも自動でフェイルオーバー ?? 柔軟なクエリ o? SQLで可能なことはJOIN句以外 一通りできる ?? スキーマレス o? データによって自由に持つものを決められる 他にも多機能
3.
构成例
Web Web mongos mongos 3processで 最小構成台数 最適化 3process data data meta mongod mongod Mongod (config) mongod mongod Mongod (config) mongod mongod Mongod Replica Replica (config) set set
4.
基本的なデータの持ち方
MySQLで例えると mongod mysqld データベース etcr データベース コレクション 行動履歴 コレクション XXマスタ テーブル doc doc doc doc doc doc レコード doc doc doc doc データベース other コレクション 各種ログ doc doc doc
5.
レプリカセット - MySQL同様 Mongod (Primary)
Mongod(Secondary) Mongod(Secondary) データベース etcr データベース etcr データベース etcr コレクション 行動履歴 コレクション 行動履歴 コレクション 行動履歴 docA docB docC docA docB docC docA docB docC docD docE docF docD docE docF docD docE docF 再現 再現 データベース local データベース local データベース local コレクション oplog コレクション oplog コレクション oplog 同 操作 操作 操作 期 操作 操作 操作 操作 操作 操作
6.
自動フェイルオーバー ??
Primaryが死ぬ ?? Primaryが死んだことがreplica set内で共有 ?? 残ったノードで投票を行う ?? ノードごとの優先度設定、最終同期時刻をもとに投票 を行う ?? 過半数より多くの票を集めたノードがPrimaryとなる ?? この間 約20s ~ 60s
7.
自動シャーディング - phase1 Mongod
(Shard A) Mongod (Shard B) データベース etcr データベース etcr コレクション 行動履歴 コレクション 行動履歴 Chunk ( –無限大 ? 無限大] docA docB docC デフォルト 200MB
8.
自動シャーディング - phase2 Mongod
(Shard A) Mongod (Shard B) データベース etcr データベース etcr コレクション 行動履歴 コレクション 行動履歴 Chunk ( –無限大 ? D] docA docB docC Chunk ( D ? 無限大] docD docE docF
9.
自動シャーディング - phase3 Mongod
(Shard A) Mongod (Shard B) データベース etcr データベース etcr コレクション 行動履歴 コレクション 行動履歴 Chunk ( –無限大 ? D] docA docB docC docC’ docC’’ docC’’’ Chunk ( D ? 無限大] docD docE docF
10.
自動シャーディング - phase4 Mongod
(Shard A) Mongod (Shard B) データベース etcr データベース etcr コレクション 行動履歴 コレクション 行動履歴 Chunk ( –無限大 ? C’] docA docB docC Chunk (C’ ? D] docC’ docC’’ docC’’’ Chunk ( D ? 無限大] docD docE docF
11.
自動シャーディング - phase5 Mongod
(Shard A) Mongod (Shard B) データベース etcr データベース etcr コレクション 行動履歴 コレクション 行動履歴 Chunk ( –無限大 ? C’] Chunk ( D ? 無限大] docA docB docC docD docE docF Chunk (C’ ? D] docC’ docC’’ docC’’’ 水平方向に スケールアウト
12.
自動シャーディング - phase6 ??Sharding
Demo
13.
スキーマレス ?? Create table,
Create column family 不要 o? Insertした時点で作られる o? アプリ要件に合わせて柔軟に入れられる Item1 = { _id: ObjectId('4b0552b0f0da7d1eb6f12xxx'), name: 秘薬, price: 100, } Item2 = { _id: ObjectId('4b0552b0f0da7d1eb6f12yyy'), name: 自分用秘薬, }
14.
柔軟なクエリ ??SQL文を持たない ??Demo ??ハッシュでO/Rマッパーのように指定する o? フロントjavascriptからクエリオブジェクトを
送って、サーバーサイドでは検証後、即実行でき る
15.
クエリ 周辺の話 (1) ??Index(B-Tree)
o? 配列やオブジェクトに対してもはれる §??ただし、配列は1つ / indexに制限 o? メモリに乗るようにintを使うと吉 // indexをつける db.test.ensureIndex({x:1, y:1, z:1}) ○ db.test.find({x:'a'}) ○ db.test.find({x:'a', y:'b'}) ○ db.test.find({x:'a', y:'b'}).sort({z:1}) // 順序が重要 × db.test.find({y:'b', x:'a'})
16.
クエリ 周辺の話(2) ??クエリオプティマイザ o?MySQLのようなコストベースではない
o?初回のクエリで複数クエリプランを同時実行 o? 最も早かったクエリを利用 o? データ量に応じて定期的に見直し o? explain()
17.
クエリ 周辺の話(3) ??Capped コレクション
o? あらかじめサイズを決めたコレクション o? 古いものから順次消えていく o? 挿入順での検索で高速 o? Shardingできない o? 削除不能 o? Create文を明示的に発行して作成 §??db.createCollection("mycoll", {capped:true, size:100000})
18.
クエリ findの話 (1) ??
検索条件は、bsonオブジェクトの先頭に寄せる 1. db.activityHistoryDemo.find({owner_id: 123}) 2. db.activityHistoryDemo.find({‘concerned.id’: ‘201’}) { owner_id: 123, request: { type: '合成', params: {}}, process: {category: 'composit'}, memo: ['lv.0 -> lv.15'], concerned: [ {io: 'i', type: 'card', id: 100, object: '111', base: true}, {io: 'i', type: 'card', id: 201, object: '222'}, {io: 'o', type: 'card', id: 100, object: '111'}, ] })
19.
クエリ findの話 (2) ??
bsonオブジェクト階層を細分化したほうが早い db.activityHistoryDemo.find({‘concerned.id’: ‘201’}) { owner_id: 123, request: { type: '合成', params: {}}, process: {category: 'composit'}, memo: ['lv.0 -> lv.15'], concerned: [ {io: 'i', type: 'card', id: 100, object: '111', base: true}, {io: 'i', type: 'card', id: 201, object: '222'}, {io: 'o', type: 'card', id: 100, object: '111'}, ] })
20.
クエリ findの話 (3) ??
条件の指定順序 o? And条件は結果の小さな条件から順次 §?? 補集合を無視するので。 ○ db.sample.find({owner_id: 123, ‘concerned.type’: ‘card’}) × db.sample.find({‘concerned.type’: ‘card’, owner_id: 123}) o? Or条件は結果の大きな条件から順次 §?? 後続条件は補集合から検索するので。 ○ db.sample.find({$or: [{‘concerned.type’: ‘card’}, {owner_id: 123}]) × db.sample.find({$or: [{owner_id: 123}, {‘concerned.type’: ‘card’}])
21.
クエリ findの話 (4) ??
DBRef doc = { name: 'ryooo', card:[ {'$ref': 'card', '$id' : ObjectId('4b0552b0f0da7d1eb6f12xxx')}, ] } doc.card[0].fetch() // ←カードオブジェクトがとれる @ruby db = Connection.new.db(”etcr ") user_card = db["user_card"].save({:name => ”ryooo”, :card_id => 123}) ref = DBRef.new(”card", user_card.card_id) db.dereference(ref) #=> カードオブジェクト
22.
クエリ findの話 (5) ??
検索条件に関数も使える(javascript) // 極端な話、こんなクエリも書けちゃいます db.cards.find(function(){ row = db.user_summary.findOne({owner_id: this.owner_id}) return this._id == row.leader_card_id; }) ?? mongoサーバーサイドに関数を登録できる // 関数を登録 db.system.js.save({_id:’name', value: function (){ //implementation }}); f = db.system.js.findOne({_id:’name'}) // 検索で利用(fはサーバー側で実行される) Db.cards.find(f)
23.
クエリ findの話 (6)
Shard keyを利用したクエリ Shard keyを利用しないクエリ targeted global Mongod (Shard A) Mongod (Shard B) データベース etcr データベース etcr コレクション 行動履歴 コレクション 行動履歴 Chunk Chunk docA docB docC docD docE docF
24.
クエリ insert/updateの話 (1) ??
fire and forget o? 発火即忘却 §?? 結果を確認せずreturnする §?? 結果を知りたければgetlasterrorオプションを指定 ?? 確実にcommitさせる o? データファイルにフラッシュさせる §?? fsync: true o? 2台のメンバーに書き込みが完了するまで待機(timeout:5000) §?? db.getlasterror(2, 5000) §?? db.getlasterror('majority')
25.
クエリ insert/updateの話 (2) ??
ID値 o? デフォルトでは、IDは自動で振られる o? ObjectId = BSON( [4byte timestamp] + [3byte hash(hostname)] + [2byte pid] + [3byte inc]) // parseすれば時間やサーバーなどもわかる object_id = '4b0552b0f0da7d1eb6f12yyy’ createdDt = new Date(parseInt(object_id.substr(0, 8), 16) * 1000) #=> Thu Nov 19 2009 23:14:08 GMT+0900 (JST)
26.
クエリ insert/updateの話 (3) ??
Padding o? insert時に、パディング領域を確保している §?? 配列に追加されるなど、ドキュメントサイズが拡大しても高 速にupdateするため(In-place update) o? Padding領域を越える更新 §?? ドキュメントの再配置が発生(遅い) §?? 増加性を持ったコレクションはPaddingサイズ調整が必要 ?? Atomicな操作 o? 1つのドキュメントの更新に対して別のクエリをブロック o? トランザクションのACIDのA(atomic : all or nothing)ではない。 o? sharding環境でサポートされない
27.
クエリ removeの話 ?? 断片化
o? 削除時はドキュメントの再配置を行わないので断片化する o? repairコマンド §?? 同容量の空き領域が必要 §?? サーバー単位(sharding環境なら各shardで) o? compactコマンド §?? より少ない空き領域で可能 §?? コレクション単位 §?? paddingも削除するので、増加性を持ったコレクションはデ フラグ後にupdateパフォーマンス悪化
28.
困った話 - 1 ??
flush前のデータロスト o? デフォルトでは60sに1回flushされるまではメモリで保持 §?? 最大で60秒間のデータロストの可能性 o? 対策1 (~ver1.8) §?? 60秒の設定を短縮する §?? getlasterror()でflushさせる ?? 重くなる o? 対策2 ジャーナルモード (ver1.8~) §?? ジャーナルログ(disc)に100msに1回書き込む §?? flushと違い、データの更新先などを意識しないため早い §?? 起動時にJournalディレクトリがあれば復元し、正常終了時 はディレクトリを削除する。
29.
困った話 - 2 ??
書き込み時(flush時)はDBロックする o? あまり問題にならないほど、書き込みは高速とのこと §?? ほんまかいな ?? 非効率なCPUリソース利用 o? 書き込み処理とMapReduceではシングルコアしか使えない o? 読み込みは複数コアを使う
30.
みんなが苦労しているのは ?? Shard key
の決め方 o? Chunkの移動があまり起こらないこと o? 長期の運用でも綺麗に分散すること o? Shard keyを使って効率よく検索できること ?? Shard keyは一度決めると変えられない ?? Migration中の残念なパフォーマンスと不整合
31.
Shard keyの考察 (うけうり) ??
[bad] 離散データ o? chunk分割できない §?? 例:都道府県コード ?? [bad] 単純インクリメントデータ o? 最後のchunkのみが分割移動される §?? 例:連番 ?? [bad] ランダム値 o? 十分に分散するまでは偏りがあるため、大きなchunkができる §?? 例:ハッシュ ?? [good] 緩やかに増加するキーと検索に利用するキーの組 み合わせ o? 検索利用キーでひと月かけて偏りが発生してくるが、ひと月たてば偏 りがリセットされる §?? 例:yyyymm-owner_id
32.
シンプルな解析笔贵の例
Web Web 使ったことないものを 仕事で使ってみたいという想い 解析用サーバー 日次増分をMap/ Reduceで集計 認証機能が必要なため。 I/Oをjsonで一致させて 開発スピードアップ
Download