Suche senden
Hochladen
Mongo dbのgridfsについて
•
Als ODP, PDF herunterladen
•
7 gefällt mir
•
2,871 views
Masahiro Saito
Folgen
Mongo dbのgridfsについて
Weniger lesen
Mehr lesen
Diashow-Anzeige
Melden
Teilen
Diashow-Anzeige
Melden
Teilen
1 von 33
Jetzt herunterladen
Empfohlen
serverspecみんなで集めて(゚Д゚)ウマー?
serverspecみんなで集めて(゚Д゚)ウマー?
Sho Hashimoto
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Daisuke Ikeda
serverspecでサーバ環境のテストを書いてみよう
serverspecでサーバ環境のテストを書いてみよう
Daisuke Ikeda
Aerospike紹介-LT用
Aerospike紹介-LT用
Joongjin Bae
ポリドックにServerspecを教えよう!
ポリドックにServerspecを教えよう!
ftnk
Serverspecを使ってみた話
Serverspecを使ってみた話
Yasufumi Moritake
Varnish 4.0 Release Party in Tokyo発表資料
Varnish 4.0 Release Party in Tokyo発表資料
Iwana Chan
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
Masahiro Nagano
Empfohlen
serverspecみんなで集めて(゚Д゚)ウマー?
serverspecみんなで集めて(゚Д゚)ウマー?
Sho Hashimoto
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Daisuke Ikeda
serverspecでサーバ環境のテストを書いてみよう
serverspecでサーバ環境のテストを書いてみよう
Daisuke Ikeda
Aerospike紹介-LT用
Aerospike紹介-LT用
Joongjin Bae
ポリドックにServerspecを教えよう!
ポリドックにServerspecを教えよう!
ftnk
Serverspecを使ってみた話
Serverspecを使ってみた話
Yasufumi Moritake
Varnish 4.0 Release Party in Tokyo発表資料
Varnish 4.0 Release Party in Tokyo発表資料
Iwana Chan
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
Masahiro Nagano
Gossip事始め
Gossip事始め
Kazutaka Tomita
ノンプログラマのためのウェブサーバ入門
ノンプログラマのためのウェブサーバ入門
Atsu Yamaga
Redisいれてみた
Redisいれてみた
Yoshida Takumi
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
博文 斉藤
MongoDB2.2の新機能
MongoDB2.2の新機能
Shoken Fujisaki
Itamae-Serverspec入門
Itamae-Serverspec入門
辰徳 斎藤
tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)
tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)
Iwana Chan
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)
Iwana Chan
社内勉強会02 シリアライズ[公開用]
社内勉強会02 シリアライズ[公開用]
Keme Sato
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207
Jun Ohtani
中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング
勲 國府田
Varnishのログの眺め方
Varnishのログの眺め方
Iwana Chan
OpenIndiana vWire Demo (Japanese)
OpenIndiana vWire Demo (Japanese)
Shoji Haraguchi
OpenStack + Common Lisp
OpenStack + Common Lisp
irix_jp
Serverspecの活用tips紹介
Serverspecの活用tips紹介
Daisuke Ikeda
MongoDB Configパラメータ解説
MongoDB Configパラメータ解説
Shoken Fujisaki
Ruby Postgres 2009
Ruby Postgres 2009
Akio Ishida
Webサーバのチューニング
Webサーバのチューニング
Yu Komiya
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Masahiro Nagano
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
Yasutaka Hamada
シラサギハンズオン 東京
シラサギハンズオン 東京
Yu Ito
シラサギハンズオン 大阪
シラサギハンズオン 大阪
Yu Ito
Weitere ähnliche Inhalte
Was ist angesagt?
Gossip事始め
Gossip事始め
Kazutaka Tomita
ノンプログラマのためのウェブサーバ入門
ノンプログラマのためのウェブサーバ入門
Atsu Yamaga
Redisいれてみた
Redisいれてみた
Yoshida Takumi
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
博文 斉藤
MongoDB2.2の新機能
MongoDB2.2の新機能
Shoken Fujisaki
Itamae-Serverspec入門
Itamae-Serverspec入門
辰徳 斎藤
tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)
tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)
Iwana Chan
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)
Iwana Chan
社内勉強会02 シリアライズ[公開用]
社内勉強会02 シリアライズ[公開用]
Keme Sato
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207
Jun Ohtani
中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング
勲 國府田
Varnishのログの眺め方
Varnishのログの眺め方
Iwana Chan
OpenIndiana vWire Demo (Japanese)
OpenIndiana vWire Demo (Japanese)
Shoji Haraguchi
OpenStack + Common Lisp
OpenStack + Common Lisp
irix_jp
Serverspecの活用tips紹介
Serverspecの活用tips紹介
Daisuke Ikeda
MongoDB Configパラメータ解説
MongoDB Configパラメータ解説
Shoken Fujisaki
Ruby Postgres 2009
Ruby Postgres 2009
Akio Ishida
Webサーバのチューニング
Webサーバのチューニング
Yu Komiya
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Masahiro Nagano
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
Yasutaka Hamada
Was ist angesagt?
(20)
Gossip事始め
Gossip事始め
ノンプログラマのためのウェブサーバ入門
ノンプログラマのためのウェブサーバ入門
Redisいれてみた
Redisいれてみた
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
MongoDB2.2の新機能
MongoDB2.2の新機能
Itamae-Serverspec入門
Itamae-Serverspec入門
tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)
tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)
社内勉強会02 シリアライズ[公開用]
社内勉強会02 シリアライズ[公開用]
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207
中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング
Varnishのログの眺め方
Varnishのログの眺め方
OpenIndiana vWire Demo (Japanese)
OpenIndiana vWire Demo (Japanese)
OpenStack + Common Lisp
OpenStack + Common Lisp
Serverspecの活用tips紹介
Serverspecの活用tips紹介
MongoDB Configパラメータ解説
MongoDB Configパラメータ解説
Ruby Postgres 2009
Ruby Postgres 2009
Webサーバのチューニング
Webサーバのチューニング
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
Ähnlich wie Mongo dbのgridfsについて
シラサギハンズオン 東京
シラサギハンズオン 東京
Yu Ito
シラサギハンズオン 大阪
シラサギハンズオン 大阪
Yu Ito
Ansible入門
Ansible入門
Akira Otsuka
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016
Yu Ito
恋に落ちるデプロイツール
恋に落ちるデプロイツール
totty jp
web server
web server
soestudio
Hadoop on LXC
Hadoop on LXC
俊夫 森
TripleOの光と闇
TripleOの光と闇
Manabu Ori
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
靖 小田島
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
Masahiro Nagano
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistrano
kumachang_LL
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
Mina 20130417
Mina 20130417
Naotoshi Seo
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例
Koichi Shimozono
Snowflake on AWSのターゲットエンドポイントとしての利用
Snowflake on AWSのターゲットエンドポイントとしての利用
QlikPresalesJapan
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターン
seiichi arai
ザ・ドキュメント~うまくいかないNoSQL~
ザ・ドキュメント~うまくいかないNoSQL~
Akihiro Kuwano
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7
Sea Mountain
いまさら聞けないRake入門
いまさら聞けないRake入門
Tomoya Kawanishi
Inside mobage platform
Inside mobage platform
Toru Yamaguchi
Ähnlich wie Mongo dbのgridfsについて
(20)
シラサギハンズオン 東京
シラサギハンズオン 東京
シラサギハンズオン 大阪
シラサギハンズオン 大阪
Ansible入門
Ansible入門
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016
恋に落ちるデプロイツール
恋に落ちるデプロイツール
web server
web server
Hadoop on LXC
Hadoop on LXC
TripleOの光と闇
TripleOの光と闇
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistrano
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Mina 20130417
Mina 20130417
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例
Snowflake on AWSのターゲットエンドポイントとしての利用
Snowflake on AWSのターゲットエンドポイントとしての利用
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターン
ザ・ドキュメント~うまくいかないNoSQL~
ザ・ドキュメント~うまくいかないNoSQL~
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7
いまさら聞けないRake入門
いまさら聞けないRake入門
Inside mobage platform
Inside mobage platform
Mongo dbのgridfsについて
1.
MongoDB GridFS についてもろもろ
@camelmasa
2.
・自己紹介 ・今回何故 GridFS
を調べたのか? ・ GridFS って何なのか? - ドライバー群 ・環境構築について - 検証環境 ・ ReplicaSet,Sharding での挙動 ・ mongofiles コマンド ・躓いた部分 ・もっと GridFS ! ・全体通したまとめ アジェンダ
3.
・ @camelmasa( 道産子の
86 世代 ) ・ 旭川高専 ・ Livlis (kamado, inc.) ・元バリスタ (paul bassett etc.) 自己紹介
4.
・ Livlis へのフィードバック
・ Lithium + MongoDB の新サービス ( 画像を沢山ストレージする系サービス ) 何故 GridFS を調べたのか?
5.
MongoDB に巨大なファイルを格納するための仕様です。 MongoDB
は、バイナリデータの格納を BSON でサポートしています。 しかし、 MongoDB で、 BSON オブジェクトは 4MB のサイズに制限されているが… GridFS って何なのか?
6.
この GridFS の仕様は、大きいファイルを複数のドキュメントに透過的に分割する方法を提供します。
http://www.mongodb.org/display/DOCSJP/GridFS GridFS って何なのか?
7.
ドライバー群 PHP, Java,
Python, Ruby, Perl,earlang(github) GridFS って何なのか?
8.
検証環境 ・ Amazon
EC2 micro Instance Basic 64-bit Amazon Linux AMI 2011.02.1 Beta (1 core CPU, 613MB) 検証だけなら Large とかにすれば良かった…。 環境構築について
9.
検証環境 ReplicaSet ReplicaSet
Sharding1 Sharding2 環境構築について
10.
Config の設定方法 通常の設定方法と変わらない!
[/mongo/mongo-config.conf] configsvr=true dbpath=/mongo/db/config logpath=/mongo/log/config/mongo.log logappend=true fork=true [ 起動 ]mongod -f /mongo/mongo-config.conf 環境構築について
11.
Mongos の設定方法 通常の設定方法と変わらない!
[/mongo/mongos.conf] logpath=/mongo/log/mongos/mongos.log configdb=localhost:27019 port=27021 fork=true [ 起動 ]mongos -f /mongo/mongos.conf 環境構築について
12.
ReplicaSet の設定方法 通常の設定方法と変わらない!
[/mongo/mongo-s1r1.conf] dbpath=/mongo/db/s1_r1 port=28201 logpath=/mongo/log/s1_r1.log logappend=true rest=true replSet=s1 journal=true fork=true [ 起動 ]mongo -f /mongo/mongo-s1r1.conf 環境構築について
13.
ReplicaSet の設定方法 通常の設定方法と変わらない!
[ コマンド ] config = {_id: 's1', members: [{_id: 0, host: 'localhost:28201'},{_id: 1, host: 'localhost:28202'},{_id: 2, host: 'localhost:28203'}]} rs.initiate(config); 環境構築について
14.
Sharding の設定方法 通常の設定方法と変わらない!
[/mongo/mongo-s1r1.conf] dbpath=/mongo/db/s1_r1 port=28201 logpath=/mongo/log/s1_r1.log logappend=true rest=true replSet=s1 journal=true fork=true [ 起動 ]mongo -f /mongo/mongo-s1r1.conf 環境構築について
15.
Sharding の設定方法 通常の設定方法と変わらない!
[ コマンド ] db.runCommand( { enablesharding : "test" }); db.fs.chunks.ensureIndex({'files_id':1}); db.runCommand( { shardcollection : "test.fs.chunks", key : { files_id : 1 } } ) 環境構築について
16.
ReplicaSet の挙動 [mongos]mongofiles
--host localhost:27021 put replica.set connected to: localhost:27021 added file: { _id: ObjectId('4e3368d3c629125977fed2b7'), filename: "replica.set", chunkSize: 262144, uploadDate: new Date(1311992019116), md5: "d41d8cd98f00b204e9800998ecf8427e", length: 0 } Done! ReplicaSet,Sharding での挙動
17.
ReplicaSet の挙動 [mongos]
> db.fs.files.find({'filename':'replica.set'}) { "_id" : ObjectId("4e3368d3c629125977fed2b7"), "filename" : "replica.set", "chunkSize" : 262144, "uploadDate" : ISODate("2011-07-30T02:13:39.116Z"), "md5" : "d41d8cd98f00b204e9800998ecf8427e", "length" : 0 } [sharding1 の master] > db.fs.files.find({'filename':'replica.set'}) { "_id" : ObjectId("4e3368d3c629125977fed2b7"), "filename" : "replica.set", "chunkSize" : 262144, "uploadDate" : ISODate("2011-07-30T02:13:39.116Z"), "md5" : "d41d8cd98f00b204e9800998ecf8427e", "length" : 0 } [sharding1 の slave1] > db.fs.files.find({'filename':'replica.set'}) { "_id" : ObjectId("4e3368d3c629125977fed2b7"), "filename" : "replica.set", "chunkSize" : 262144, "uploadDate" : ISODate("2011-07-30T02:13:39.116Z"), "md5" : "d41d8cd98f00b204e9800998ecf8427e", "length" : 0 } [sharding1 の slave2] > db.fs.files.find({'filename':'replica.set'}) { "_id" : ObjectId("4e3368d3c629125977fed2b7"), "filename" : "replica.set", "chunkSize" : 262144, "uploadDate" : ISODate("2011-07-30T02:13:39.116Z"), "md5" : "d41d8cd98f00b204e9800998ecf8427e", "length" : 0 } ReplicaSet,Sharding での挙動
18.
ReplicaSet の挙動 [sharding2
の master] > db.fs.files.find({'filename':'replica.set'}) [sharding2 の slave1] > db.fs.files.find({'filename':'replica.set'}) [sharding2 の slave2] > db.fs.files.find({'filename':'replica.set'}) ReplicaSet,Sharding での挙動
19.
Sharding の挙動 >
db.printShardingStatus() --- Sharding Status --- sharding version: { "_id" : 1, "version" : 3 } shards: { "_id" : "s1", "host" : "s1/localhost:28201,localhost:28202,localhost:28203" } { "_id" : "s2", "host" : "s2/localhost:28204,localhost:28205,localhost:28206" } databases: { "_id" : "admin", "partitioned" : false, "primary" : "config" } { "_id" : "test", "partitioned" : true, "primary" : "s2" } test.fs.chunks chunks: s1 10 s2 10 too many chunksn to print, use verbose if you want to force print { "_id" : "fs", "partitioned" : false, "primary" : "s2" } ReplicaSet,Sharding での挙動
20.
Sharding の挙動 >
db.printShardingStatus() --- Sharding Status --- sharding version: { "_id" : 1, "version" : 3 } shards: { "_id" : "s1", "host" : "s1/localhost:28201,localhost:28202,localhost:28203" } { "_id" : "s2", "host" : "s2/localhost:28204,localhost:28205,localhost:28206" } databases: { "_id" : "admin", "partitioned" : false, "primary" : "config" } { "_id" : "test", "partitioned" : true, "primary" : "s2" } test.fs.chunks chunks: s1 10 s2 10 too many chunksn to print, use verbose if you want to force print { "_id" : "fs", "partitioned" : false, "primary" : "s2" } ReplicaSet,Sharding での挙動
21.
[PUT]… ファイルの新規登録 mongofiles
--host localhost:27021 put a.txt connected to: localhost:27021 added file: { _id: ObjectId('4e3349480eed7346d277d523'), filename: "a.txt", chunkSize: 262144, uploadDate: new Date(1311983944316), md5: "d41d8cd98f00b204e9800998ecf8427e", length: 0 } Done! ※ 同じファイル名で登録すると削除時に一緒に削除される mongofiles コマンド
22.
[PUT]… ファイルの上書き登録 mongofiles
--host localhost:27021 -r put a.txt connected to: localhost:27021 added file: { _id: ObjectId('4e3349480eed7346d277d523'), filename: "a.txt", chunkSize: 262144, uploadDate: new Date(1311983944316), md5: "d41d8cd98f00b204e9800998ecf8427e", length: 0 } done! mongofiles コマンド
23.
[GET]… ファイルの取得 mongofiles
--host localhost:27021 get a.txt connected to: localhost:27021 done write to: a.txt mongofiles コマンド
24.
[LIST]… ファイルをリスト表示 mongofiles
--host localhost:27021 list a.txt 1000 … ( ファイル名 ,byte 数 ) mongofiles コマンド
25.
[SEARCH]… ファイル検索 mongofiles
--host localhost:27021 search a.txt connected to: localhost:27021 a.txt 0 mongofiles --host localhost:27021 search txt connected to: localhost:27021 a.txt 0 -> 完全一致じゃなくて良い。 mongofiles コマンド
26.
[DELETE]… ファイルの削除 mongofiles
--host localhost:27021 delete a.txt connected to: localhost:27021 Done! ※ 同じファイル名は全て削除されます! mongofiles コマンド
27.
・ ReplicaSet が設定出来ない!
EC2 の root device の容量が通常 8GB しかない。 ReplicaSet の設定をすると、 8GB が直ぐ埋まります。 ファイルを vim で開く度に .swp ファイル作れないという、エラーが出て気づきました。 100GB の Volumes を追加して mount し解決。 ->100G 中 48G 程埋まる。 今回の躓いた所
28.
・ Sharding されない!
完全に僕の勘違いでした。 sharding1,sharding2 を使って検証していたのですが、ファイルを追加しても sharding2 に偏って保存されてしまっていました。 しかし、これでもかと言う程ファイルを追加したら、 sharding された。 今回の躓いた所
29.
ReplicaSet の挙動の確認の際、 mongofies
の挙動が微妙。 ・ mongofiles –host [master server] search test.txt -> ファイルが表示される。 ・ mongofiles –host [slave server] search test.txt -> ファイルが表示されない、エラーも出ない。 しかし、 db.test.fs.files.find({'filename':'test.txt'}) のコマンドは master,slave にもあるのは確認出来る。 (db.getMongo().setSlaveOk() 実行済み ) 今回の躓いた所
30.
・ nginx-gridfs nginx
の拡張モジュール。 スクリプトを介さず、 web サーバーから gridfs のファイルのレスポンスを返す。 [github] https://github.com/mdirolf/nginx-gridfs [ 参考 ] http://mybikejp.blogspot.com/2011/01/nginxgridfs.html もっと GridFS!
31.
・ rack-gridfs 先程の
nginx-gridfs の rack 版 。 [github] https://github.com/skinandbones/rack-gridfs もっと GridFS!
32.
GridFS を用いるのに特別な設定・使用方法等は必要無し。 通常の
ReplicaSet,Sharding 設定・使用方法と変わらない! (GridFS はあくまで仕様である為、当たり前と言われれば当たり前。 ) 気軽に分散ファイルシステムが出来ると考えると嬉しいですね。 ( 運用時に潜む罠は除く ) スクリプトからの実行では無く、 web サーバーとの連携の事例が出てくるのは面白いと思います。 全体を通したまとめ
33.
ご清聴有り難うございました。
Jetzt herunterladen