Submit Search
Upload
カジュアルにソースコードリーディング
•
Download as KEY, PDF
•
5 likes
•
6,908 views
Akihiro Okuno
Follow
20120706 MongoDB Casual Talks
Read less
Read more
Technology
Business
Report
Share
Report
Share
1 of 25
Download now
Recommended
月間10億pvを支えるmongo db
月間10億pvを支えるmongo db
Yuji Isobe
Mongodb 紹介
Mongodb 紹介
Ryo Matsumura
MongoDBの使い方
MongoDBの使い方
Tatsuto Maetsu
AmebaのMongoDB活用事例
AmebaのMongoDB活用事例
Akihiro Kuwano
JavaでインメモリSQLエンジンを作ってみた
JavaでインメモリSQLエンジンを作ってみた
JustSystems Corporation
はじめてのCouch db
はじめてのCouch db
Eiji Kuroda
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
Yohei Sasaki
MyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatype
Toshi Harada
Recommended
月間10億pvを支えるmongo db
月間10億pvを支えるmongo db
Yuji Isobe
Mongodb 紹介
Mongodb 紹介
Ryo Matsumura
MongoDBの使い方
MongoDBの使い方
Tatsuto Maetsu
AmebaのMongoDB活用事例
AmebaのMongoDB活用事例
Akihiro Kuwano
JavaでインメモリSQLエンジンを作ってみた
JavaでインメモリSQLエンジンを作ってみた
JustSystems Corporation
はじめてのCouch db
はじめてのCouch db
Eiji Kuroda
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
Yohei Sasaki
MyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatype
Toshi Harada
データベースのお話
データベースのお話
Hidekazu Tanaka
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
Makoto Setoh
SQLチューニング入門 入門編
SQLチューニング入門 入門編
Miki Shimogai
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
弘毅 露崎
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Takahiro Inoue
Chugokudb study-20150131
Chugokudb study-20150131
Toshi Harada
MongoDB: システム可用性を拡張するインデクス戦略
MongoDB: システム可用性を拡張するインデクス戦略
ippei_suzuki
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
kasaharatt
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
Nao Minami
CyberAgentにおけるMongoDB
CyberAgentにおけるMongoDB
Akihiro Kuwano
Postgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etc
kasaharatt
20171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-10
Toshi Harada
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
Etsuji Nakai
はじめてのMongoDB
はじめてのMongoDB
Keisuke Izumiya
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)
Hiromu Shioya
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10
Toshi Harada
とあるイルカのバーボンハウス
とあるイルカのバーボンハウス
yoku0825
コード読経会報告書
コード読経会報告書
Masahiko Toyoshi
Parse触ってみた
Parse触ってみた
Naoya Harasawa
Cassandra v0.6-siryou
Cassandra v0.6-siryou
あしたのオープンソース研究所
CasualなMongoDBのサービス運用Tips
CasualなMongoDBのサービス運用Tips
Naoki Sega
カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明
Masakazu Matsushita
More Related Content
What's hot
データベースのお話
データベースのお話
Hidekazu Tanaka
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
Makoto Setoh
SQLチューニング入門 入門編
SQLチューニング入門 入門編
Miki Shimogai
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
弘毅 露崎
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Takahiro Inoue
Chugokudb study-20150131
Chugokudb study-20150131
Toshi Harada
MongoDB: システム可用性を拡張するインデクス戦略
MongoDB: システム可用性を拡張するインデクス戦略
ippei_suzuki
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
kasaharatt
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
Nao Minami
CyberAgentにおけるMongoDB
CyberAgentにおけるMongoDB
Akihiro Kuwano
Postgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etc
kasaharatt
20171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-10
Toshi Harada
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
Etsuji Nakai
はじめてのMongoDB
はじめてのMongoDB
Keisuke Izumiya
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)
Hiromu Shioya
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10
Toshi Harada
とあるイルカのバーボンハウス
とあるイルカのバーボンハウス
yoku0825
コード読経会報告書
コード読経会報告書
Masahiko Toyoshi
Parse触ってみた
Parse触ってみた
Naoya Harasawa
Cassandra v0.6-siryou
Cassandra v0.6-siryou
あしたのオープンソース研究所
What's hot
(20)
データベースのお話
データベースのお話
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
SQLチューニング入門 入門編
SQLチューニング入門 入門編
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Chugokudb study-20150131
Chugokudb study-20150131
MongoDB: システム可用性を拡張するインデクス戦略
MongoDB: システム可用性を拡張するインデクス戦略
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
CyberAgentにおけるMongoDB
CyberAgentにおけるMongoDB
Postgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etc
20171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-10
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
はじめてのMongoDB
はじめてのMongoDB
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10
とあるイルカのバーボンハウス
とあるイルカのバーボンハウス
コード読経会報告書
コード読経会報告書
Parse触ってみた
Parse触ってみた
Cassandra v0.6-siryou
Cassandra v0.6-siryou
Viewers also liked
CasualなMongoDBのサービス運用Tips
CasualなMongoDBのサービス運用Tips
Naoki Sega
カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明
Masakazu Matsushita
MongoDB on EC2 #mongodbcasual
MongoDB on EC2 #mongodbcasual
Yasuhiro Matsuo
Casual Compression on MongoDB
Casual Compression on MongoDB
moai kids
MongoDBではじめるカジュアルなタイムラインシステム
MongoDBではじめるカジュアルなタイムラインシステム
Hitoshi Asai
MongoDBのアレをアレする
MongoDBのアレをアレする
Akihiro Kuwano
Viewers also liked
(6)
CasualなMongoDBのサービス運用Tips
CasualなMongoDBのサービス運用Tips
カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明
MongoDB on EC2 #mongodbcasual
MongoDB on EC2 #mongodbcasual
Casual Compression on MongoDB
Casual Compression on MongoDB
MongoDBではじめるカジュアルなタイムラインシステム
MongoDBではじめるカジュアルなタイムラインシステム
MongoDBのアレをアレする
MongoDBのアレをアレする
Similar to カジュアルにソースコードリーディング
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料
Recruit Technologies
Scala on Hadoop
Scala on Hadoop
Shinji Tanaka
Hadoop jobbuilder
Hadoop jobbuilder
Taku Miyakawa
1072: アプリケーション開発を加速するCUDAライブラリ
1072: アプリケーション開発を加速するCUDAライブラリ
NVIDIA Japan
MapReduce入門
MapReduce入門
Satoshi Noto
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
Takuya ASADA
Mongodb
Mongodb
Satoru Mikami
Distributed processwithapex&flow lowcode
Distributed processwithapex&flow lowcode
furuCRM株式会社 CEO/Dreamforce Vietnam Founder
データベースシステム論12 - 問い合わせ処理と最適化
データベースシステム論12 - 問い合わせ処理と最適化
Shohei Yokoyama
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Atsuo Yamasaki
Spring Data in a Nutshell
Spring Data in a Nutshell
Tsuyoshi Miyake
Introduction new features in Spark 3.0
Introduction new features in Spark 3.0
Kazuaki Ishizaki
今さら始めるCoffeeScript
今さら始めるCoffeeScript
Ashitaba YOSHIOKA
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発
Mitsuru Katoh
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz
Tomoharu ASAMI
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
Masahiro Nagano
x86とコンテキストスイッチ
x86とコンテキストスイッチ
Masami Ichikawa
PostgreSQL 12の話
PostgreSQL 12の話
Masahiko Sawada
Nodejs
Nodejs
Masanobu Masuda
MongoDB
MongoDB
あしたのオープンソース研究所
Similar to カジュアルにソースコードリーディング
(20)
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料
Scala on Hadoop
Scala on Hadoop
Hadoop jobbuilder
Hadoop jobbuilder
1072: アプリケーション開発を加速するCUDAライブラリ
1072: アプリケーション開発を加速するCUDAライブラリ
MapReduce入門
MapReduce入門
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
Mongodb
Mongodb
Distributed processwithapex&flow lowcode
Distributed processwithapex&flow lowcode
データベースシステム論12 - 問い合わせ処理と最適化
データベースシステム論12 - 問い合わせ処理と最適化
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Spring Data in a Nutshell
Spring Data in a Nutshell
Introduction new features in Spark 3.0
Introduction new features in Spark 3.0
今さら始めるCoffeeScript
今さら始めるCoffeeScript
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
x86とコンテキストスイッチ
x86とコンテキストスイッチ
PostgreSQL 12の話
PostgreSQL 12の話
Nodejs
Nodejs
MongoDB
MongoDB
More from Akihiro Okuno
qpstudy 2013.07 NoSQL
qpstudy 2013.07 NoSQL
Akihiro Okuno
SQLの話
SQLの話
Akihiro Okuno
Write parser with fun!
Write parser with fun!
Akihiro Okuno
groonga with PostgreSQL
groonga with PostgreSQL
Akihiro Okuno
Start Vim script @Ujihisa.vim 2011/11/19
Start Vim script @Ujihisa.vim 2011/11/19
Akihiro Okuno
Mongo db勉強会20110730
Mongo db勉強会20110730
Akihiro Okuno
第一回Mongo dbソースコードリーディング 20110628
第一回Mongo dbソースコードリーディング 20110628
Akihiro Okuno
2010/7/31 LTの虎@LL Tiger
2010/7/31 LTの虎@LL Tiger
Akihiro Okuno
More from Akihiro Okuno
(8)
qpstudy 2013.07 NoSQL
qpstudy 2013.07 NoSQL
SQLの話
SQLの話
Write parser with fun!
Write parser with fun!
groonga with PostgreSQL
groonga with PostgreSQL
Start Vim script @Ujihisa.vim 2011/11/19
Start Vim script @Ujihisa.vim 2011/11/19
Mongo db勉強会20110730
Mongo db勉強会20110730
第一回Mongo dbソースコードリーディング 20110628
第一回Mongo dbソースコードリーディング 20110628
2010/7/31 LTの虎@LL Tiger
2010/7/31 LTの虎@LL Tiger
Recently uploaded
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Recently uploaded
(8)
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
カジュアルにソースコードリーディング
1.
カジュアルに ソースコードリーディング 2012/7/6
MongoDB Casual by @choplin
2.
自己紹介 •@choplin •Web/DBエンジニア(でした) •(MongoDBあまり使ってません) •Love SQL &
PostgreSQL
3.
Agenda •追記型 •In-place Update •Padding Factor
4.
追記型
5.
追記型とは •更新を削除と挿入の組み合せで実現する •PostgreSQL •SQLite
•MongoDB •CouchDB •KVSいろいろ
6.
Insert Tableの物理表現 Record
A Record A Record B Record B Insert C Record C
7.
Update Record A
Record A Record B Record B Update A Record A
8.
Pros. Cons. •Pros •同時実行制御の処理が簡潔に
•MVCC •Cons •データ容量の肥大 •書き込み処理の負荷 •ガベージの発生 •Vacuum, Compact •(あれば)Indexの更新
9.
In-place Update
10.
In-place Update •既存のサイズを超えない場合は、ドキュメ ント丸ごとの追記を行わず、必要な値のみ を書き換える
11.
Update {a:1}
{a:1} {a:1,b:2} {$set: {b:2}}
12.
In-place Update {a:1}
{a:2} {$inc: {a:1}}
13.
Padding Factor
14.
Padding Factor •In-place Updateに倒すために予め paddingを含めた領域を確保する
•どれだけのpaddingをとるかのfactor •設定はできない
15.
Padding Factor
case. Padding Factor = 1.0 Insert Header (16B) + BSON (12B) On disk 28B
16.
Padding Factor
case. Padding Factor = 1.5 Insert Header (16B) + BSON (12B) + Padding(14B) On disk 42B
17.
collStatsで確認 > db.test.insert({a:1}) > db.test.stats() {
"ns" : "test2.test", "count" : 1, "size" : 36, "avgObjSize" : 36, "storageSize" : 4096, "numExtents" : 1, "nindexes" : 1, "lastExtentSize" : 4096, "paddingFactor" : 1, "flags" : 1, "totalIndexSize" : 8176, "indexSizes" : { "_id_" : 8176 }, "ok" : 1 } >
18.
How?
19.
db/namespace.h class NamespaceDetails {
... double paddingFactor; ... void paddingFits() { double x = paddingFactor - 0.01; if ( x >= 1.0 ) { *getDur().writing(&paddingFactor) = x; //getDur().setNoJournal(&paddingFactor, &x, sizeof(x)); } } void paddingTooSmall() { double x = paddingFactor + 0.6; if ( x <= 2.0 ) { *getDur().writing(&paddingFactor) = x; //getDur().setNoJournal(&paddingFactor, &x, sizeof(x)); } } ... } ※ namespaceとはcollectionだと思ってもらってOK
20.
db/namespace.cpp NamespaceDetails::NamespaceDetails( const DiskLoc
&loc, bool _capped ) { ... paddingFactor = 1.0; ... } ※ namespaceとはcollectionだと思ってもらってOK
21.
db/pdfile.cpp const DiskLoc DataFileMgr::updateRecord(...,
NamespaceDetails *d, ...){ ... if ( toupdate->netLength() < objNew.objsize() ) { ... d->paddingTooSmall(); ... deleteRecord(ns, toupdate, dl); return insert(ns, objNew.objdata(), objNew.objsize(), god); } ... d->paddingFits(); ... } DiskLoc DataFileMgr::insert(const char *ns, ...) { ... NamespaceDetails *d = nsdetails(ns); ... d->paddingFits(); ... } ※DataFileMgrはデータの物理表現を管理するクラス
22.
Update > db.test.update({a:1}, {$set:
{b:1}}) > db.test.stats() { "ns" : "test2.test", "count" : 1, "size" : 80, "avgObjSize" : 80, "storageSize" : 4096, "numExtents" : 1, "nindexes" : 1, "lastExtentSize" : 4096, "paddingFactor" : 1.59, "flags" : 1, "totalIndexSize" : 8176, "indexSizes" : { "_id_" : 8176 }, "ok" : 1 } >
23.
Insert > db.test.insert({c:1}) > db.test.stats() {
"ns" : "test2.test", "count" : 2, "size" : 144, "avgObjSize" : 72, "storageSize" : 4096, "numExtents" : 1, "nindexes" : 1, "lastExtentSize" : 4096, "paddingFactor" : 1.58, "flags" : 1, "totalIndexSize" : 8176, "indexSizes" : { "_id_" : 8176 }, "ok" : 1 }
24.
In-place Update > db.test.update({c:1},
{$set:{c:2}}) > db.test.stats() { "ns" : "test2.test", "count" : 2, "size" : 144, "avgObjSize" : 72, "storageSize" : 4096, "numExtents" : 1, "nindexes" : 1, ? "lastExtentSize" : 4096, "paddingFactor" : 1.58, "flags" : 1, "totalIndexSize" : 8176, "indexSizes" : { "_id_" : 8176 }, "ok" : 1 }
25.
まとめ •MongoDBは追記型 •追記を避けるためのIn-place Update •In-place UpdateのためのPadding
Factor •default 1.0 •Min 1.0, Max 2.0 •Update +0.6 •Insert / (In-place Update?) -0.01
Editor's Notes
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Download now