SlideShare a Scribd company logo
噂のMongoDB
その用途は?
About me
{
名前:
会社:
肩書:
趣味:
悩み:

窪田博昭
Cookpad.Inc
  MongoDBJP代表
Golf,フットサル
30代は体が・・・

twitter:@crumbjp
github: github.com/crumbjp
}
We're hiring !!
-5 -
-6 -
-7 -
-8 -
-9 -
-10 -
DB tech showcase: 噂のMongoDBその用途は?
DB tech showcase: 噂のMongoDBその用途は?
-13 -
DB tech showcase: 噂のMongoDBその用途は?
NoSQL全般

 RDBMSから機能を削り
 スループットや並列性を確保している

 比較的低機能ではあるが一点豪華主義で
 部分的にRDBMSを凌駕する機能を持つ

 大抵は速度重視
-16 -
MongoDBの特徴
1. スキーマレス
  2. 高機能Index
  3. 高速
  4. 並列性(& automatic failover)
 
・耐障害性
 
・スケーラビリティー
  5.トランザクション無し
   ・代わりのAtomic処理
  6.JOIN無し
Index

-18 -
MongoDBのIndex
商品名
ボールペン

タグ

値段

日用品, 筆記用具

198

包丁

日用品, 刃物, キッチン

2980

バナナ

食料品, 果物

348

ほうれん草

食料品, 野菜

98

牛乳

食料品,

148

    食料品で200以下の商品を取得
MongoDBのIndex
商品名

タグ

値段

ボールペン

日用品, 筆記用具

198

包丁

日用品, 刃物, キッチン

2980

バナナ

食料品, 果物

348

ほうれん草

食料品, 野菜

98

牛乳

食料品,

148

商品・テーブル
CREATE TABLE 商品 (
  id INT PRIMARY,
  商品名 VARCHAR(100)
);
タグ・テーブル
CREATE TABLE タグ (
  商品id INT,
  タグ名 VARCHAR(100),
  値段 INT,
 KEY(タグ名,値段)
);

食料品で200以下の商品
商品投入
■RDBMS
INSERT INTO 商品 VALUES (1,'ボールペン');
INSERT INTO タグ VALUES (1,'日用品',198),
   (1,'筆記用具',198);
 苦手な処理
     :
クエリー
 ・Index用のテーブルを
SELECT * FROM
 商品 INNER JOIN タグ
  ON タグ.商品id = 商品.id
  別途用意しJOIN
WHERE タグ名 = '食料品'
AND &#20516;&#27573; <= 200;
&#12288;&#20516;&#27573;&#12364;&#37325;&#35079;&#31649;&#29702;&#12391;&#31563;&#12364;&#24746;&#12356;&#12290;&#12290;
MongoDB&#12398;Index
&#21830;&#21697;&#21517;

&#12479;&#12464;

&#20516;&#27573;

&#12508;&#12540;&#12523;&#12506;&#12531;

&#26085;&#29992;&#21697;, &#31558;&#35352;&#29992;&#20855;

198

&#21253;&#19969;

&#26085;&#29992;&#21697;, &#20995;&#29289;, &#12461;&#12483;&#12481;&#12531;

2980

&#12496;&#12490;&#12490;

&#39135;&#26009;&#21697;, &#26524;&#29289;

348

&#12411;&#12358;&#12428;&#12435;&#33609;

&#39135;&#26009;&#21697;, &#37326;&#33756;

98

&#29275;&#20083;

&#39135;&#26009;&#21697;,

148

&#21830;&#21697;&#25237;&#20837;
db.&#21830;&#21697;.save({
&#12288;'&#21830;&#21697;&#21517;' : '&#12508;&#12540;&#12523;&#12506;&#12531;',
&#12288;'&#12479;&#12464;': ['&#26085;&#29992;&#21697;', '&#31558;&#35352;&#29992;&#20855;'],
&#12288;'&#20516;&#27573;':198 }
);
&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#65306;
&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#65306;

&#39135;&#26009;&#21697;&#12391;200&#20197;&#19979;&#12398;&#21830;&#21697;&#12434;&#21462;&#24471;
&#12452;&#12531;&#12487;&#12483;&#12463;&#12473;
&#9632;MongoDB
db.&#21830;&#21697;.ensureIndex({
&#12288;'&#12479;&#12464;':1, '&#20516;&#27573;':1
});
&#12288;&#12288;&#12487;&#12540;&#12479;&#24418;&#24335;&#12289;Index&#20849;&#12395;
&#12463;&#12456;&#12522;&#12540;
&#12288;&#12288;&#23436;&#20840;&#12395;&#12469;&#12509;&#12540;&#12488;&#65281;
db.&#21830;&#21697;.find({
&#12288;&#12288;&#12479;&#12464;&#27083;&#36896;&#12395;&#12418;&#12387;&#12390;&#12371;&#12356;&#65281;&#65281;

&#12288;'&#12479;&#12464;':'&#39135;&#26009;&#21697;',
&#12288;'&#20516;&#27573;': { $lte : 200 }
});
MongoDB&#12398;Index
&#21830;&#21697;&#21517;
&#12508;&#12540;&#12523;&#12506;&#12531;

&#12479;&#12464;

&#20516;&#27573;

&#26085;&#29992;&#21697;, &#31558;&#35352;&#29992;&#20855;

198

&#21253;&#19969;

&#26085;&#29992;&#21697;, &#20995;&#29289;, &#12461;&#12483;&#12481;&#12531;

2980

&#12496;&#12490;&#12490;

&#39135;&#26009;&#21697;, &#26524;&#29289;

348

&#12411;&#12358;&#12428;&#12435;&#33609;

&#39135;&#26009;&#21697;, &#37326;&#33756;

98

&#29275;&#20083;

&#39135;&#26009;&#21697;,

148

&#12288;&#12288;&#12288; &#39135;&#26009;&#21697;&#12391;&#26524;&#29289;&#12398;&#21830;&#21697;&#12434;&#21462;&#24471;
MongoDB&#12398;Index
&#21830;&#21697;&#21517;

&#12479;&#12464;

&#20516;&#27573;

&#12508;&#12540;&#12523;&#12506;&#12531;

&#26085;&#29992;&#21697;, &#31558;&#35352;&#29992;&#20855;

198

&#21253;&#19969;

&#26085;&#29992;&#21697;, &#20995;&#29289;, &#12461;&#12483;&#12481;&#12531;

2980

&#12496;&#12490;&#12490;

&#39135;&#26009;&#21697;, &#26524;&#29289;

348

&#12411;&#12358;&#12428;&#12435;&#33609;

&#39135;&#26009;&#21697;, &#37326;&#33756;

98

&#29275;&#20083;

&#39135;&#26009;&#21697;,

148

&#39135;&#26009;&#21697;&#12391;&#26524;&#29289;&#12398;&#21830;&#21697;
&#9632;RDBMS
&#12288;SQL&#12391;&#12398;&#34920;&#29694;&#12399;&#22256;&#38627;
&#12288;&#12288;self join &#12377;&#12427;?

&#12463;&#12456;&#12522;&#12540;&#65288;2&#12479;&#12464;&#38480;&#23450;&#29256;&#65289;
SELECT
&#12288;*
FROM
&#12288;&#12479;&#12464; a
&#12288;INNER JOIN
&#12288;&#12479;&#12464; b
&#12288;ON
&#12288;&#12288;a.&#21830;&#21697;id = b.&#21830;&#21697;id
&#12288;&#12288;AND
&#12288;&#12288;a.&#12479;&#12464;&#21517; != b.&#12479;&#12464;&#21517;
&#12288;INNER JOIN &#21830;&#21697; c
&#12288;ON
&#12288;&#12288;a.&#21830;&#21697;id = c.id
WHERE
&#12288;a.&#12479;&#12464;&#21517; = '&#39135;&#26009;&#21697;'
&#12288;AND
&#12288;b.&#12479;&#12464;&#21517; = '&#26524;&#29289;'
GROUP BY
&#12288;a.&#21830;&#21697;id;
MongoDB&#12398;Index
&#21830;&#21697;&#21517;

&#12479;&#12464;

&#20516;&#27573;

&#12508;&#12540;&#12523;&#12506;&#12531;

&#26085;&#29992;&#21697;, &#31558;&#35352;&#29992;&#20855;

198

&#21253;&#19969;

&#26085;&#29992;&#21697;, &#20995;&#29289;, &#12461;&#12483;&#12481;&#12531;

2980

&#12496;&#12490;&#12490;

&#39135;&#26009;&#21697;, &#26524;&#29289;

348

&#12411;&#12358;&#12428;&#12435;&#33609;

&#39135;&#26009;&#21697;, &#37326;&#33756;

98

&#29275;&#20083;

&#39135;&#26009;&#21697;,

148

&#39135;&#26009;&#21697;&#12391;&#26524;&#29289;&#12398;&#21830;&#21697;
&#9632;MongoDB
&#12288;$all &#12364;&#20351;&#12360;&#12427;
&#12288;&#12288;&#20170;&#12398;&#23455;&#35013;&#12391;&#12399;&#26368;&#21021;&#12398;
&#12288;&#12288;&#35201;&#32032;&#12398;&#12415;Index scan

&#12463;&#12456;&#12522;&#12540;
db.&#21830;&#21697;.find({
&#12288;'&#12479;&#12464;': { $all : ['&#39135;&#26009;&#21697;', '&#26524;&#29289;']}
});
MongoDB&#12398;Index
&#12288;&#20027;&#12394;Index
&#12288;&#12539;&#37197;&#21015;&#12408;&#12398;Index&#65288;tag&#65289;
&#12288;&#12539;&#35079;&#21512;Index
&#12288;&#12539;&#24179;&#38754;&#65295;&#29699;&#38754;&#24231;&#27161;Index
&#12288;&#12539;&#22259;&#24418;Index&#65288;&#20132;&#28857;,&#20869;&#21253;,&#36817;&#20621;&#12394;&#12393;&#21508;&#31278;&#26908;&#32034;&#65289;
&#12288;&#12288;&#12539;&#20870;, &#32218;, &#22810;&#35282;&#24418;, etc
&#12288;covered indexes&#12418;&#25645;&#36617;
&#12288;NoSQL&#12398;&#24369;&#28857;&#12434;&#22810;&#27231;&#33021;&#12394;Index&#12391;&#35036;&#12358;&#25126;&#30053;
&#39640;&#12473;&#12523;&#12540;&#12503;&#12483;&#12488;

&#65293;26 &#65293;
MongoDB&#12398;&#12473;&#12523;&#12540;&#12503;&#12483;&#12488;
&#35336;&#28204;&#26465;&#20214;

&#12539;3 core 3GB memory
&#12288;&#12288;&#12539;&#27083;&#25991;&#35299;&#26512;&#36796;&#12415;&#65288;SQL, JS&#65289;
&#12288;&#12288;&#12539;lo&#32076;&#30001;&#36890;&#20449; (localhost)
int(11)
&#12288;&#12288;&#12539;1&#12524;&#12467;&#12540;&#12489;&#12289;4kb&#31243;&#24230; id int(11) PRI
value0
value1 int(11)
&#12288;&#12288;&#12539;1,000,000 &#12524;&#12467;&#12540;&#12489; value2 int(11)
value3 varchar(50)
value4 varchar(50)
&#12288;&#12288;&#12288; = 4GB
value5 varchar(50)
value6 varchar(50)
value7 varchar(255)
&#12288;&#12288;&#12539;11 column
value8 int(11)
value9 text
&#12288;&#12288;&#12539;MySQL&#12399;InnoDB&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;
MongoDB&#12398;&#12473;&#12523;&#12540;&#12503;&#12483;&#12488;
Insert
&#12539;MySQL
: 345 sec (5m 45s)
&#12288;&#12539;MongoDB : 123 sec (2m 03s)
&#12288;&#12539;(MyIsam ) : 240 sec (4m 00s)
MongoDB&#12398;&#12473;&#12523;&#12540;&#12503;&#12483;&#12488;
&#12288;Range fetch (10,000&#20214; x 100)
SELECT
&#12539;MySQL
: 202 sec
*
FROM
&#12288;&#12539;MongoDB : 3.7 sec
mytbl
WHERE
id BETWEEN 0 AND 9999;

&#12288;Range count (10,000&#20214; x 100)
&#12539;MySQL
: 37 sec
SELECT
COUNT(*)
&#12288;&#12539;MongoDB : 0.4 sec
FROM
mytbl
&#12288;&#12288;&#12288;&#12288;&#12288;
WHERE

id BETWEEN 0 AND 9999;
MongoDB&#12398;&#12473;&#12523;&#12540;&#12503;&#12483;&#12488;
&#12288;MongoDB &#31684;&#22258;&#26908;&#32034;&#12399;&#29305;&#12395;&#36895;&#12356;&#65281;
&#12288;&#12288;&#12539;B-tree&#23455;&#35013;&#12364;&#33391;&#12356;
&#12288;Count&#12364;&#36895;&#12356;&#65281;
&#12288;&#12288;&#12539;&#12459;&#12540;&#12477;&#12523;&#12398;&#20001;&#31471;&#12434;&#20808;&#12395;&#35211;&#12427;
Read >>> Write
&#12394;
WEB&#12471;&#12473;&#12486;&#12512;&#12395;&#26368;&#36969;
&#12288;&#12288;&#12288;&#12288;&#12288;
&#20006;&#21015;&#24615;

&#65293;31 &#65293;
MongoDB&#12398;&#20006;&#21015;&#24615;
&#12288;MongoDB&#12399;&#65298;&#12388;&#12398;&#12473;&#12465;&#12540;&#12523;&#12450;&#12454;&#12488;&#26041;&#24335;
&#12288;&#12288;&#12364;&#29992;&#24847;&#12373;&#12428;&#12390;&#12356;&#12427;
&#12288;&#12539;Replica-set&#65288;&#12511;&#12521;&#12540;&#12522;&#12531;&#12464;&#65289;
Read&#31995;&#12398;&#20006;&#21015;&#21270;&#12289;&#23550;&#38556;&#23475;&#24615;
&#12288;&#12539;Sharding&#65288;&#12497;&#12540;&#12486;&#12451;&#12471;&#12519;&#12491;&#12531;&#12464;&#65289;
&#12288;&#12288;&#12288;Write&#31995;&#12398;&#20006;&#21015;&#21270;&#12289;&#22823;&#37327;&#12487;&#12540;&#12479;&#23550;&#31574;
Replica-set

&#65293;33 &#65293;
replica-set
Primary:
&#26360;&#12365;&#36796;&#12415;&#21487;&#33021;&#12494;&#12540;&#12489;
Secondary: &#12288;&#35501;&#12415;&#21462;&#12426;&#23554;&#29992;&#12494;&#12540;&#12489;
&#20840;&#12390;&#12398;&#12494;&#12540;&#12489;&#12399;&#21516;&#12376;&#12487;&#12540;&#12479;&#12434;&#25345;&#12387;&#12390;&#12356;&#12427;

Primary
&#21516;&#26399;

Secondary Secondary Secondary Secondary
&#65293;34 &#65293;
replica-set
Primary:
&#26360;&#12365;&#36796;&#12415;&#21487;&#33021;&#12494;&#12540;&#12489;
Secondary: &#12288;&#35501;&#12415;&#21462;&#12426;&#23554;&#29992;&#12494;&#12540;&#12489;
Primary&#12364;&#27515;&#12435;&#12391;&#12418;&#33258;&#21205;Failover

Primary

Primary
&#26119;&#26684;

&#21516;&#26399;

Secondary Secondary Secondary Secondary
&#65293;35 &#65293;
replica-set
Primary:
&#26360;&#12365;&#36796;&#12415;&#21487;&#33021;&#12494;&#12540;&#12489;
Secondary: &#12288;&#35501;&#12415;&#21462;&#12426;&#23554;&#29992;&#12494;&#12540;&#12489;
&#33258;&#21205;Failover&#12391;&#12399;split brain&#12364;&#24598;&#12356;&#12398;&#12391;voting&#12391;&#23550;&#31574;
&#65288;&#20197;&#19979;&#12398;&#20363;&#12391;&#12399;4/5 &#12391;&#24403;&#36984;&#65289;

Primary

Primary
&#25237;&#31080;

Secondary Secondary Secondary Secondary
&#65293;36 &#65293;
replica-set
www.mongodb.jp
httpd
PHP

mongo A

mongo B

mongod
secondary

mongod
primary

replica-set
replica-set
www.mongodb.jp

www.mongodb.jp

httpd

httpd

PHP

PHP

mongo A

mongo B

mongo C

mongod
secondary

mongod
primary

mongod
secondary

replica-set
Sharding

&#65293;39 &#65293;
Sharding
mongos&#65306;&#12463;&#12456;&#12522;&#12540;&#12466;&#12540;&#12488;&#12454;&#12455;&#12452;
&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;mapping&#24773;&#22577;&#12395;&#22522;&#12389;&#12365;&#25391;&#12426;&#20998;&#12369;&#12427;
config&#65306;&#12288;mapping&#24773;&#22577;&#12434;&#20445;&#25345;

key = 'abc'

key = 'xyz'

mongos

config
config
config

key => replicaset map
a.. ~ hz.. => Replica-set1
ia.. ~ rc.. => Replica-set2
rd..~ z.. => Replica-set3

Replica-set1 Replica-set2 Replica-set3
&#65293;40 &#65293;
Sharding
&#12288;RDBMS&#12398;&#12497;&#12540;&#12486;&#12451;&#12471;&#12519;&#12491;&#12531;&#12464;&#12392;&#21516;&#12376;&#30330;&#24819;
&#12288;&#35079;&#25968;&#12398;Replica-set&#12434;&#26463;&#12397;&#12427;&#12452;&#12513;&#12540;&#12472;
&#12288;&#20006;&#21015;&#24615;&#12420;&#20887;&#38263;&#24615;&#12399;Replica-set&#12395;&#20219;&#12379;&#12427;
&#12288;Sharding&#12461;&#12540;&#12398;&#36984;&#25246;&#12373;&#12360;&#36969;&#20999;&#12394;&#12425;&#12400;
&#12288;Auto migration&#12391;&#12487;&#12540;&#12479;&#12434;&#36969;&#24230;&#12395;&#20998;&#25955;
&#12288;
&#12288;&#35443;&#32048;&#12399;&#12467;&#12481;&#12521;

Sharding
MongoDB&#12398;&#20006;&#21015;&#24615;
&#12288;Read&#36000;&#33655;&#12364;&#39640;&#12356;&#12394;&#12425;Replica-set
&#12288;&#12288;MongoDB&#12399;&#20803;&#12293;&#39640;&#36895;&#12394;&#12398;&#12391;&#27526;&#12393;&#12398;&#21839;&#38988;&#12399;
&#12288;&#12288;Secondary&#12434;&#22679;&#12420;&#12379;&#12400;&#35299;&#27770;&#12377;&#12427;
&#12288;Write&#36000;&#33655;&#12420;&#12487;&#12540;&#12479;&#37327;&#12398;&#21839;&#38988;&#12399;Sharding
&#12288;&#12288;Write&#36000;&#33655; &#65306;&#38750;&#26178;&#31995;&#21015;&#12398;Shard-key
&#12288;&#12288;&#12487;&#12540;&#12479;&#37327; &#65306;&#26178;&#31995;&#21015;Shard-key
&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#65288;&#25201;&#12356;&#12420;&#12377;&#12356;&#12363;&#12425;&#65289;
&#12488;&#12521;&#12531;&#12470;&#12463;&#12471;&#12519;&#12531;&#12364;&#28961;&#12356;

&#65293;44 &#65293;
MongoDB&#12398;&#25490;&#20182;
&#12288;Web&#12471;&#12473;&#12486;&#12512;&#12391;&#12399;&#12289;&#27526;&#12393;&#12398;&#22580;&#21512;
&#12288;&#12288;&#12488;&#12521;&#12531;&#12470;&#12463;&#12471;&#12519;&#12531;&#12434;&#20351;&#12431;&#12394;&#12356;&#12290;&#20351;&#12360;&#12394;&#12356;&#12290;
&#12288;HTTP&#12399;stateless&#12394;&#12503;&#12525;&#12488;&#12467;&#12523;&#12391;
&#12288;stateful&#12394;&#12488;&#12521;&#12531;&#12470;&#12463;&#12471;&#12519;&#12531;&#12392;&#30456;&#24615;&#12364;&#24746;&#12356;&#12290;
&#12288;&#12288;&#25499;&#12369;&#12383;&#12414;&#12414;&#24112;&#12387;&#12385;&#12419;&#12358;&#65281;
&#12288;&#12288;&#12356;&#12388;&#25147;&#12387;&#12390;&#26469;&#12427;&#12398;&#12363;&#65311;
&#12288;&#12288;&#12418;&#12358;&#26469;&#12394;&#12356;&#12398;&#12363;&#65311;
&#12288;&#12288;&#12288;&#12288;&#19981;&#26126;&#65281;&#65281;
MongoDB&#12398;&#25490;&#20182;
&#12288;&#12392;&#12399;&#12356;&#12360;&#12289;&#12354;&#12427;&#31243;&#24230;&#12398;&#25490;&#20182;&#20966;&#29702;&#12399;&#24517;&#35201;
&#12288;NoSQL&#12391;&#12399;&#27005;&#35251;&#12525;&#12483;&#12463;&#12364;&#20027;&#27969;
&#12288;&#12288;&#20006;&#21015;&#21270;&#12434;&#30446;&#25351;&#12377;&#12392;&#24754;&#35251;&#12525;&#12483;&#12463;&#12399;&#27231;&#33021;&#12375;&#12394;&#12356;
&#12288;
&#12288;memcached &#12398; CAS&#12364;&#26377;&#21517;
&#12288;&#12288;(Check and Set)
MongoDB&#12398;&#25490;&#20182;
&#65315;&#65313;&#65331;
&#12288;1. a&#12364;&#12487;&#12540;&#12479;A&#12434;get
&#65313; (cas=1)
&#12288;

memcached
&#65313; (cas=1)
MongoDB&#12398;&#25490;&#20182;
&#65315;&#65313;&#65331;
&#12288;1. a&#12364;&#12487;&#12540;&#12479;A&#12434;get
&#65313; (cas=1)
&#12288;2. &#12411;&#12412;&#21516;&#26178;&#12395;b&#12364;&#12487;&#12540;&#12479;A&#12434;get
&#12288; &#65313; (cas=1)
&#12288; &#27005;&#35251;&#12525;&#12483;&#12463;&#12394;&#12398;&#12391;
&#21462;&#12428;&#12390;&#33391;&#12356;

memcached
&#65313; (cas=1)
MongoDB&#12398;&#25490;&#20182;
&#65315;&#65313;&#65331;
&#12288;1. a&#12364;&#12487;&#12540;&#12479;A&#12434;get
&#65313; (cas=1)
&#12288;2. &#12411;&#12412;&#21516;&#26178;&#12395;b&#12364;&#12487;&#12540;&#12479;A&#12434;get
&#12288; &#65313; (cas=1)
&#12288;3. a&#12364;&#12487;&#12540;&#12479;A&#12434;&#26356;&#26032;
&#12288;

&#65313;' (cas=1)

memcached
cas&#20516;&#12364;&#19968;&#33268;&#12377;&#12427;
&#12398;&#12391;&#26356;&#26032;&#25104;&#21151;

&#65313; (cas=1)

&#65313;' (cas=2)
MongoDB&#12398;&#25490;&#20182;
&#65315;&#65313;&#65331;
&#12288;1. a&#12364;&#12487;&#12540;&#12479;A&#12434;get
&#12288;2. &#12411;&#12412;&#21516;&#26178;&#12395;b&#12364;&#12487;&#12540;&#12479;A&#12434;get
&#12288; &#65313; (cas=1)
&#12288;3. a&#12364;&#12487;&#12540;&#12479;A&#12434;&#26356;&#26032;
&#12288;4. b&#12364;&#12487;&#12540;&#12479;A&#12434;&#26356;&#26032;
&#65313;''(cas=1)

memcached

&#65313;' (cas=2)
cas&#20516;&#12364;&#19981;&#19968;&#33268;&#12391;
&#26356;&#26032;&#22833;&#25943;
atomic&#25805;&#20316;

&#65293;51 &#65293;
atomic&#25805;&#20316;
&#12288;MongoDB&#12395;&#12399;CAS&#12364;&#28961;&#12356;
&#12288;&#12288;&#12418;&#12387;&#12392;&#24375;&#21147;&#12394;atomic&#25805;&#20316;&#12364;&#12354;&#12427;
&#12288;&#29305;&#12395;&#20415;&#21033;&#12394;atomic&#25805;&#20316;
&#12288;$inc
&#12288;&#12288;&#12501;&#12451;&#12540;&#12523;&#12489;&#12434;&#12452;&#12531;&#12463;&#12522;&#12513;&#12531;&#12488;&#12377;&#12427;
&#12288;$setOnInsert
&#12288;&#12288;upsert&#12398;&#38555;&#12289;insert&#26178;&#12384;&#12369;&#20516;&#12434;&#35373;&#23450;&#12377;&#12427;
&#31777;&#26131;CAS
GET
data1 = db.myData.findOne({
_id : 'FOO'
});

PUT
db.myData.update({
_id: data1._id,
&#12288;cas: data1.cas
},{
$inc : { cas : 1 },
$set { field1 : 'updated' }
});

CAS&#12398;&#23455;&#35013;&#12399;&#31777;&#21336;
&#12288;&#12539;update&#26178;&#12395;&#24120;&#12395;cas&#20516;&#12434;1&#12388;&#22679;&#21152;&#12373;&#12379;&#12427;&#12290;
&#12288;&#12539;update&#26178;&#12398;&#12463;&#12456;&#12522;&#12395;&#12489;&#12461;&#12517;&#12513;&#12531;&#12488;&#12398;cas&#20516;&#12434;&#20351;&#12360;&#12400;
&#12288;&#12288;&#34909;&#31361;&#12375;&#12383;&#38555;&#12395;&#12399;cas&#20516;&#12364;&#21512;&#12431;&#12378;update&#12364;&#22833;&#25943;&#12377;&#12427;

&#65293;53 &#65293;
atomic&#25805;&#20316;
&#12288;&#37197;&#21015;&#31995;&#12398;atomic&#25805;&#20316;
&#12288;$pop / $pullAll / $pull
&#12288;&#12288;&#37197;&#21015;&#12501;&#12451;&#12540;&#12523;&#12489;&#12363;&#12425;&#20516;&#12434;&#21066;&#38500;
&#12288;$pushAll / $push
&#12288;&#12288;&#37197;&#21015;&#12501;&#12451;&#12540;&#12523;&#12489;&#12395;&#20516;&#12434;&#36861;&#21152;
&#12288;capped array
&#12288;&#12288;&#37197;&#21015;&#12501;&#12451;&#12540;&#12523;&#12489;&#12395;&#20516;&#12434;&#36861;&#21152;&#12377;&#12427;&#38555;
&#12288;&#12288;&#12288;&#20219;&#24847;&#12398;&#37197;&#21015;&#38263;&#12395;&#20445;&#12388;&#12424;&#12358;&#20999;&#12426;&#25448;&#12390;&#12427;&#27231;&#33021;
findAndModify

&#65293;55 &#65293;
atomic&#25805;&#20316;

&#12288;MongoDB&#12395;&#12399;findAndModify&#12364;&#12354;&#12427;
&#12288;findAndModify
&#12288;&#12288;atomic&#12395;&#12487;&#12540;&#12479;&#21462;&#24471;&#12392;&#26356;&#26032;&#12364;&#20986;&#26469;&#12427;
&#12288;&#12288;&#8786; SELECT ~ FOR UPDATE
&#12288;&#12288;&#12288;&#65291;UPDATE
&#12288;&#12288;&#12288;&#65291;COMMIT or ROLLBACK
&#31777;&#26131;MQ
&#12452;&#12531;&#12487;&#12483;&#12463;&#12473;
db.myMQ.ensureIndex({
tm: 1
});
&#25237;&#20837;&#65288;&#12450;&#12503;&#12522;&#65289;&#20596;
db.myMQ.save({
&#12288;tm: 0,
&#12288;Job&#12487;&#12540;&#12479;
});

&#12527;&#12540;&#12459;&#12540;&#20596;
db.myMQ.findAndModify({
query: {
tm : 0 },
&#12288;update: { $set : {
tm : 1
}}
});

tm = 0 &#12398;&#12489;&#12461;&#12517;&#12513;&#12531;&#12488;&#12434;&#25342;&#12358;&#12392;&#21516;&#26178;&#12395;tm = 1 &#12395;&#26356;&#26032;&#12375;&#12390;&#12375;&#12414;&#12358;&#12290;
&#20182;&#12398;&#12527;&#12540;&#12459;&#12395;&#25342;&#12431;&#12428;&#12394;&#12356;&#12392;&#12356;&#12358;&#23544;&#27861;&#65281;
&#65293;57 &#65293;
&#31777;&#26131;Job&#12473;&#12465;&#12472;&#12517;&#12540;&#12521;
&#12452;&#12531;&#12487;&#12483;&#12463;&#12473;
db.myMQ.ensureIndex({
tm:1
});
&#25237;&#20837;&#65288;&#12450;&#12503;&#12522;&#65289;&#20596;
db.myMQ.save({
&#12288;tm: Number(ISODate())+3600,
&#12288;Job&#12487;&#12540;&#12479;
});

&#12527;&#12540;&#12459;&#12540;&#20596;
db.myMQ.findAndModify({
query: {
tm : { $lte :Number(ISODate())}},
&#12288;update: { $set : {
tm : Number.MAX_VALUE
}}
});

tm &#12395;&#26178;&#21051;&#65288;3600&#31186;&#24460;&#65289;&#12434;&#20837;&#12428;&#12428;&#12400;&#12289;&#29401;&#12387;&#12383;&#26178;&#38291;&#12395;Fire&#12391;&#12365;&#12427;&#12290;
$inc : 3600&#12398;&#27096;&#12395;&#12377;&#12428;&#12400;&#23450;&#26399;&#30340;&#12394;Job&#12395;&#12418;&#20986;&#26469;&#12427;&#12290;
&#32080;&#27083;&#33258;&#30001;&#33258;&#22312;&#65281;
&#65293;58 &#65293;
&#31777;&#26131;MapReduce
&#9632;&#21336;&#32020;&#12394;Job&#12461;&#12517;&#12540;

&#9632;MapReduce

&#65293;59 &#65293;
Monmo&#12385;&#12419;&#12435;

&#65293;60 &#65293;
Monmo&#12385;&#12419;&#12435;

&#12288;findAndModify&#12434;&#19978;&#25163;&#12367;&#20351;&#12387;&#12390;
&#12288;&#12288;MapReduce&#29872;&#22659;&#12434;&#20316;&#12387;&#12390;&#12415;&#12383;&#12290;
&#12288;V8 &#12364;&#20778;&#31168;&#12391;&#24605;&#12387;&#12383;&#12424;&#12426;&#20351;&#12360;&#12427;&#65281;
&#12288;
&#12288;MongoDB &#20197;&#22806;&#20309;&#12418;&#35201;&#12425;&#12394;&#12356;
&#12288;&#12288;&#65288;&#12525;&#12472;&#12483;&#12463;&#12399;DB&#12398;&#22806;&#12391;&#21205;&#20316;&#65289;
&#12388;&#12356;&#12391;&#12395;

&#65293;62 &#65293;
MapReduce
MongoDB&#20184;&#23646;&#12398;MapReduce&#12399;&#21361;&#38522;
Primary&#12391;&#20966;&#29702;&#12364;&#36208;&#12427;

&#9679;

&#12302;&#65316;&#65314;&#12391;&#12525;&#12472;&#12483;&#12463;&#12364;&#36208;&#12427;&#12303;&#12387;&#12390;&#12393;&#12358;&#12394;&#12398;&#65311;
&#20006;&#21015;&#21270;&#12364;&#20986;&#26469;&#12394;&#12356;

&#9679;

NaN&#31561;&#12391;&#19979;&#25163;&#25171;&#12388;&#12392;DB&#12364;&#27515;&#12396;

&#9679;

&#21407;&#21063;noscript&#12364;&#22522;&#26412;&#65281;&#65281;
&#65293;63 &#65293;
Join&#12364;&#20986;&#26469;&#12394;&#12356;

&#65293;64 &#65293;
Join
&#12354;&#12365;&#12425;&#12417;&#12424;&#12358;&#12539;&#12539;&#12539;

&#65293;65 &#65293;
MongoDB
&#20309;&#12395;&#20351;&#12362;&#12358;&#65311;
&#65293;66 &#65293;
&#12414;&#12392;&#12417;
&#12288;&#12539;Read&#12364;&#38750;&#24120;&#12395;&#39640;&#36895;
&#12288;&#12539;&#22810;&#27231;&#33021;&#12394;Index
&#12288;&#12539;&#39640;&#12356;&#20006;&#21015;&#24615;&#65288;&#65286;&#23550;&#38556;&#23475;&#24615;&#65289;
&#12288;&#12539;&#39640;&#12356;&#25313;&#24373;&#24615;
&#12288;&#12288;WEB&#12471;&#12473;&#12486;&#12512;&#12398;&#12496;&#12483;&#12463;&#12456;&#12531;&#12489;&#65316;&#65314;&#12395;&#26368;&#36969;
&#12288;&#12288;&#12288;&#65316;&#65314;&#12461;&#12515;&#12483;&#12471;&#12517;&#23652;&#12434;&#30465;&#30053;&#12375;
&#12288;&#12288;&#12288;&#12471;&#12473;&#12486;&#12512;&#12434;&#31777;&#30053;&#21270;&#12391;&#12365;&#12427;
&#12414;&#12392;&#12417;
&#12288;&#12539;&#22810;&#27231;&#33021;&#12394;Index
&#12288;&#12288;&#12288;&#37197;&#21015;Index&#65288;&#12479;&#12464;&#12381;&#12398;&#12418;&#12398;&#65289;
&#12288;&#12288;&#12479;&#12464;&#27231;&#33021;
&#12288;&#12288;&#12288;&#65316;&#65314;&#33258;&#20307;&#12395;&#27231;&#33021;&#12364;&#12354;&#12427;&#12398;&#12391;
&#12288;&#12288;&#12288;&#29305;&#21029;&#12394;&#12467;&#12540;&#12489;&#12364;&#24517;&#35201;&#12394;&#12356;
&#12414;&#12392;&#12417;
&#12288;&#12539;&#22810;&#27231;&#33021;&#12394;Index
&#12288;&#12288;&#12288;geohash
&#65306;&#65298;&#27425;&#20803;&#24231;&#27161;Index
&#12288;&#12288;&#12288;3dsphere &#65306;&#29699;&#38754;&#24231;&#27161;Index
&#12288;&#12288;&#22320;&#22259;&#27231;&#33021;
&#36817;&#38563;&#12398;&#26045;&#35373;&#26908;&#32034;&#12394;&#12393;&#12364;&#65316;&#65314;&#12391;&#23436;&#32080;
&#12414;&#12392;&#12417;
&#12288;&#12539;&#24375;&#21147;&#12394;Atomic&#25805;&#20316;&#27231;&#33021;
&#12288;&#12539;&#23550;&#38556;&#23475;&#24615;
&#12288;&#12288;MQ&#12394;&#12393;&#38750;&#21516;&#26399;&#31995;&#12398;&#12496;&#12483;&#12463;&#12456;&#12531;&#12489;&#12395;&#12418;&#33391;&#12356;
&#12288;&#12288;&#12288;&#12471;&#12473;&#12486;&#12512;&#38291;&#12398;&#12475;&#12510;&#12501;&#12457;&#30340;&#12394;&#20351;&#12356;&#26041;&#12364;&#12391;&#12365;&#12427;
&#12288;&#12288;&#12288;&#38750;Java&#12408;&#12398;&#35242;&#21644;&#24615;&#12418;&#36020;&#37325;
&#12288;&#12288;
&#26368;&#24460;&#12395;&#22320;&#38647;&#12398;&#35441;

&#65293;71 &#65293;
&#22320;&#38647;&#12398;&#35441;
&#12288;&#9632;&#24517;&#38920;&#12458;&#12503;&#12471;&#12519;&#12531;
&#12288;&#12288;&#12539;notablescan
&#12288;&#12288;&#12539;noscript

&#12288;&#9632;&#38627;&#26131;&#24230;&#12364;&#39640;&#12356;&#27231;&#33021;
&#12288;&#12288;&#12539;Sharding

&#12288;&#9632;&#22320;&#38647;&#27231;&#33021;
&#12288;&#12288;&#12539;MapReduce
&#12288;&#12288;&#12539;Aggregate
&#12288;&#12288;&#12539;Text&#12469;&#12540;&#12481;
&#12288;&#12288;&#12539;Background indexing

&#12288;&#9632;&#12481;&#12517;&#12540;&#12491;&#12531;&#12464;&#12509;&#12452;&#12531;&#12488;
&#12288;&#12288;&#12539;oplog
&#12288;&#12288;&#12539;migration (Sharding)
&#12288;&#12288;&#12539;&#12467;&#12493;&#12463;&#12471;&#12519;&#12531;&#25968;
&#22320;&#38647;&#12398;&#35441;
&#12288;&#30906;&#12363;&#12395;MongoDB&#12395;&#12399;&#24190;&#12388;&#12363;&#22320;&#38647;&#12364;&#12354;&#12427;
&#12288;&#12288;&#65288;&#12381;&#12375;&#12390;&#36367;&#12415;&#26131;&#12356;&#65289;
&#12288;&#24055;&#12395;&#12354;&#12427;&#12493;&#12460;&#12486;&#12451;&#12502;&#12394;&#24773;&#22577;&#12399;
&#12288;&#12288;&#22320;&#38647;&#12398;&#29190;&#30330;&#12375;&#12383;&#36321;&#12288;
&#12288;
&#12288;&#27491;&#12375;&#12356;&#20351;&#12356;&#26041;&#12434;&#12377;&#12428;&#12400;&#27231;&#33021;&#30340;&#12395;&#12418;&#24615;&#33021;&#30340;&#12395;&#12418;
&#12288;&#12288;&#38750;&#24120;&#12395;&#20778;&#31168;&#12394;&#12503;&#12525;&#12480;&#12463;&#12488;
&#12362;&#12375;&#12414;&#12356;
&#12288;

&#26377;&#38627;&#12358;&#24481;&#24231;&#12356;&#12414;&#12375;&#12383;&#12290;

More Related Content

What's hot (20)

MongoDB&#12374;&#12387;&#12367;&#12426;&#35299;&#35500; by &#30693;&#25945; &#26412;&#38291;, has 29 slides with 3609 views.
MongoDB&#12374;&#12387;&#12367;&#12426;&#35299;&#35500;MongoDB&#12374;&#12387;&#12367;&#12426;&#35299;&#35500;
MongoDB&#12374;&#12387;&#12367;&#12426;&#35299;&#35500;
&#30693;&#25945; &#26412;&#38291;
29 slides•3.6K views
MongoDB World 2014&#12395;&#34892;&#12387;&#12390;&#12365;&#12383;&#65281; by Tetsutaro Watanabe, has 20 slides with 2584 views.
MongoDB World 2014&#12395;&#34892;&#12387;&#12390;&#12365;&#12383;&#65281;MongoDB World 2014&#12395;&#34892;&#12387;&#12390;&#12365;&#12383;&#65281;
MongoDB World 2014&#12395;&#34892;&#12387;&#12390;&#12365;&#12383;&#65281;
Tetsutaro Watanabe
20 slides•2.6K views
&#24460;&#24724;&#12375;&#12394;&#12356;&#12418;&#12435;&#12372;&#12418;&#12435;&#12372;&#12398;&#20351;&#12356;&#26041; &#12316;&#12450;&#12503;&#12522;&#32232;&#12316; by Masakazu Matsushita, has 58 slides with 10536 views.
&#24460;&#24724;&#12375;&#12394;&#12356;&#12418;&#12435;&#12372;&#12418;&#12435;&#12372;&#12398;&#20351;&#12356;&#26041; &#12316;&#12450;&#12503;&#12522;&#32232;&#12316;&#24460;&#24724;&#12375;&#12394;&#12356;&#12418;&#12435;&#12372;&#12418;&#12435;&#12372;&#12398;&#20351;&#12356;&#26041; &#12316;&#12450;&#12503;&#12522;&#32232;&#12316;
&#24460;&#24724;&#12375;&#12394;&#12356;&#12418;&#12435;&#12372;&#12418;&#12435;&#12372;&#12398;&#20351;&#12356;&#26041; &#12316;&#12450;&#12503;&#12522;&#32232;&#12316;
Masakazu Matsushita
58 slides•10.5K views
Mongo db&#12434;&#30693;&#12429;&#12358; by CROOZ, inc., has 52 slides with 29918 views.
Mongo db&#12434;&#30693;&#12429;&#12358;Mongo db&#12434;&#30693;&#12429;&#12358;
Mongo db&#12434;&#30693;&#12429;&#12358;
CROOZ, inc.
52 slides•29.9K views
Case study to use MongoDB in middle-class SIer / (&#20013;&#35215;&#27169;) SIer&#12384;&#12387;&#12390;MongoDB&#12391;&#12365;&#12383;&#12424;&#65281; by Naruhiko Ogasawara, has 23 slides with 8663 views.
Case study to use MongoDB in middle-class SIer / (&#20013;&#35215;&#27169;) SIer&#12384;&#12387;&#12390;MongoDB&#12391;&#12365;&#12383;&#12424;&#65281;Case study to use MongoDB in middle-class SIer / (&#20013;&#35215;&#27169;) SIer&#12384;&#12387;&#12390;MongoDB&#12391;&#12365;&#12383;&#12424;&#65281;
Case study to use MongoDB in middle-class SIer / (&#20013;&#35215;&#27169;) SIer&#12384;&#12387;&#12390;MongoDB&#12391;&#12365;&#12383;&#12424;&#65281;
Naruhiko Ogasawara
23 slides•8.7K views
MongoDB&#12398;&#30435;&#35222; by Tetsutaro Watanabe, has 24 slides with 11975 views.
MongoDB&#12398;&#30435;&#35222;MongoDB&#12398;&#30435;&#35222;
MongoDB&#12398;&#30435;&#35222;
Tetsutaro Watanabe
24 slides•12K views
MongoDB very basic (Japanese) / MongoDB&#22522;&#30990;&#12398;&#22522;&#30990; by Naruhiko Ogasawara, has 52 slides with 4368 views.
MongoDB very basic (Japanese) / MongoDB&#22522;&#30990;&#12398;&#22522;&#30990;MongoDB very basic (Japanese) / MongoDB&#22522;&#30990;&#12398;&#22522;&#30990;
MongoDB very basic (Japanese) / MongoDB&#22522;&#30990;&#12398;&#22522;&#30990;
Naruhiko Ogasawara
52 slides•4.4K views
Mongo db&#21193;&#24375;&#20250;&#12398;&#35036;&#36275; by CROOZ, inc., has 17 slides with 5432 views.
Mongo db&#21193;&#24375;&#20250;&#12398;&#35036;&#36275;Mongo db&#21193;&#24375;&#20250;&#12398;&#35036;&#36275;
Mongo db&#21193;&#24375;&#20250;&#12398;&#35036;&#36275;
CROOZ, inc.
17 slides•5.4K views
MongoDB World 2014&#12395;&#34892;&#12387;&#12390;&#12365;&#12383;&#65281; by Tetsutaro Watanabe, has 20 slides with 2584 views.
MongoDB World 2014&#12395;&#34892;&#12387;&#12390;&#12365;&#12383;&#65281;MongoDB World 2014&#12395;&#34892;&#12387;&#12390;&#12365;&#12383;&#65281;
MongoDB World 2014&#12395;&#34892;&#12387;&#12390;&#12365;&#12383;&#65281;
Tetsutaro Watanabe
20 slides•2.6K views
&#24460;&#24724;&#12375;&#12394;&#12356;&#12418;&#12435;&#12372;&#12418;&#12435;&#12372;&#12398;&#20351;&#12356;&#26041; &#12316;&#12450;&#12503;&#12522;&#32232;&#12316; by Masakazu Matsushita, has 58 slides with 10536 views.
&#24460;&#24724;&#12375;&#12394;&#12356;&#12418;&#12435;&#12372;&#12418;&#12435;&#12372;&#12398;&#20351;&#12356;&#26041; &#12316;&#12450;&#12503;&#12522;&#32232;&#12316;&#24460;&#24724;&#12375;&#12394;&#12356;&#12418;&#12435;&#12372;&#12418;&#12435;&#12372;&#12398;&#20351;&#12356;&#26041; &#12316;&#12450;&#12503;&#12522;&#32232;&#12316;
&#24460;&#24724;&#12375;&#12394;&#12356;&#12418;&#12435;&#12372;&#12418;&#12435;&#12372;&#12398;&#20351;&#12356;&#26041; &#12316;&#12450;&#12503;&#12522;&#32232;&#12316;
Masakazu Matsushita
58 slides•10.5K views
Mongo db&#12434;&#30693;&#12429;&#12358; by CROOZ, inc., has 52 slides with 29918 views.
Mongo db&#12434;&#30693;&#12429;&#12358;Mongo db&#12434;&#30693;&#12429;&#12358;
Mongo db&#12434;&#30693;&#12429;&#12358;
CROOZ, inc.
52 slides•29.9K views
Case study to use MongoDB in middle-class SIer / (&#20013;&#35215;&#27169;) SIer&#12384;&#12387;&#12390;MongoDB&#12391;&#12365;&#12383;&#12424;&#65281; by Naruhiko Ogasawara, has 23 slides with 8663 views.
Case study to use MongoDB in middle-class SIer / (&#20013;&#35215;&#27169;) SIer&#12384;&#12387;&#12390;MongoDB&#12391;&#12365;&#12383;&#12424;&#65281;Case study to use MongoDB in middle-class SIer / (&#20013;&#35215;&#27169;) SIer&#12384;&#12387;&#12390;MongoDB&#12391;&#12365;&#12383;&#12424;&#65281;
Case study to use MongoDB in middle-class SIer / (&#20013;&#35215;&#27169;) SIer&#12384;&#12387;&#12390;MongoDB&#12391;&#12365;&#12383;&#12424;&#65281;
Naruhiko Ogasawara
23 slides•8.7K views
MongoDB very basic (Japanese) / MongoDB&#22522;&#30990;&#12398;&#22522;&#30990; by Naruhiko Ogasawara, has 52 slides with 4368 views.
MongoDB very basic (Japanese) / MongoDB&#22522;&#30990;&#12398;&#22522;&#30990;MongoDB very basic (Japanese) / MongoDB&#22522;&#30990;&#12398;&#22522;&#30990;
MongoDB very basic (Japanese) / MongoDB&#22522;&#30990;&#12398;&#22522;&#30990;
Naruhiko Ogasawara
52 slides•4.4K views
Mongo db&#21193;&#24375;&#20250;&#12398;&#35036;&#36275; by CROOZ, inc., has 17 slides with 5432 views.
Mongo db&#21193;&#24375;&#20250;&#12398;&#35036;&#36275;Mongo db&#21193;&#24375;&#20250;&#12398;&#35036;&#36275;
Mongo db&#21193;&#24375;&#20250;&#12398;&#35036;&#36275;
CROOZ, inc.
17 slides•5.4K views

Similar to DB tech showcase&#65306; &#22082;&#12398;MongoDB&#12381;&#12398;&#29992;&#36884;&#12399;&#65311; (20)

Casual Compression on MongoDB by moai kids, has 46 slides with 11070 views.
Casual Compression on MongoDBCasual Compression on MongoDB
Casual Compression on MongoDB
moai kids
46 slides•11.1K views
&#22823;&#35215;&#27169;&#21270;&#12377;&#12427;&#12500;&#12464;&#12521;&#12452;&#12501;&#12434;&#25903;&#12360;&#12427;&#12452;&#12531;&#12501;&#12521; &#65374;MongoDB&#12392;Chef&#12395;&#12388;&#12356;&#12390;&#65374; (&#21069;&#32232;) by Akihiro Kuwano, has 44 slides with 16069 views.
&#22823;&#35215;&#27169;&#21270;&#12377;&#12427;&#12500;&#12464;&#12521;&#12452;&#12501;&#12434;&#25903;&#12360;&#12427;&#12452;&#12531;&#12501;&#12521; &#65374;MongoDB&#12392;Chef&#12395;&#12388;&#12356;&#12390;&#65374; (&#21069;&#32232;)&#22823;&#35215;&#27169;&#21270;&#12377;&#12427;&#12500;&#12464;&#12521;&#12452;&#12501;&#12434;&#25903;&#12360;&#12427;&#12452;&#12531;&#12501;&#12521; &#65374;MongoDB&#12392;Chef&#12395;&#12388;&#12356;&#12390;&#65374; (&#21069;&#32232;)
&#22823;&#35215;&#27169;&#21270;&#12377;&#12427;&#12500;&#12464;&#12521;&#12452;&#12501;&#12434;&#25903;&#12360;&#12427;&#12452;&#12531;&#12501;&#12521; &#65374;MongoDB&#12392;Chef&#12395;&#12388;&#12356;&#12390;&#65374; (&#21069;&#32232;)
Akihiro Kuwano
44 slides•16.1K views
MongoDBJP &#32013;&#28092;&#12418;&#12435;&#12372;&#31085;&#12426; by Hiroaki Kubota, has 47 slides with 1317 views.
MongoDBJP &#32013;&#28092;&#12418;&#12435;&#12372;&#31085;&#12426;MongoDBJP &#32013;&#28092;&#12418;&#12435;&#12372;&#31085;&#12426;
MongoDBJP &#32013;&#28092;&#12418;&#12435;&#12372;&#31085;&#12426;
Hiroaki Kubota
47 slides•1.3K views
Mongo db&#12434;&#30693;&#12429;&#12358; devlove&#38306;&#35199; by Ryuji Tamagawa, has 49 slides with 2512 views.
Mongo db&#12434;&#30693;&#12429;&#12358;   devlove&#38306;&#35199;Mongo db&#12434;&#30693;&#12429;&#12358;   devlove&#38306;&#35199;
Mongo db&#12434;&#30693;&#12429;&#12358; devlove&#38306;&#35199;
Ryuji Tamagawa
49 slides•2.5K views
MongoDB&#21193;&#24375;&#20250;&#36039;&#26009; by Hiromune Shishido, has 29 slides with 2842 views.
MongoDB&#21193;&#24375;&#20250;&#36039;&#26009;MongoDB&#21193;&#24375;&#20250;&#36039;&#26009;
MongoDB&#21193;&#24375;&#20250;&#36039;&#26009;
Hiromune Shishido
29 slides•2.8K views
&#27604;&#12408;&#12441;&#12390;&#12415;&#12424;&#12358; &#12522;&#12524;&#12540;&#12471;&#12519;&#12490;&#12523; vs &#12488;&#12441;&#12461;&#12517;&#12513;&#12531;&#12488;.pptx by MariMurotani, has 10 slides with 48 views.
&#27604;&#12408;&#12441;&#12390;&#12415;&#12424;&#12358; &#12522;&#12524;&#12540;&#12471;&#12519;&#12490;&#12523; vs &#12488;&#12441;&#12461;&#12517;&#12513;&#12531;&#12488;.pptx&#27604;&#12408;&#12441;&#12390;&#12415;&#12424;&#12358; &#12522;&#12524;&#12540;&#12471;&#12519;&#12490;&#12523; vs &#12488;&#12441;&#12461;&#12517;&#12513;&#12531;&#12488;.pptx
&#27604;&#12408;&#12441;&#12390;&#12415;&#12424;&#12358; &#12522;&#12524;&#12540;&#12471;&#12519;&#12490;&#12523; vs &#12488;&#12441;&#12461;&#12517;&#12513;&#12531;&#12488;.pptx
MariMurotani
10 slides•48 views
&#12477;&#12540;&#12471;&#12515;&#12523;&#12466;&#12540;&#12512;&#12525;&#12464;&#35299;&#26512;&#22522;&#30436;&#12398;MongoDB&#27963;&#29992;&#20107;&#20363; by &#30693;&#25945; &#26412;&#38291;, has 19 slides with 4864 views.
&#12477;&#12540;&#12471;&#12515;&#12523;&#12466;&#12540;&#12512;&#12525;&#12464;&#35299;&#26512;&#22522;&#30436;&#12398;MongoDB&#27963;&#29992;&#20107;&#20363;&#12477;&#12540;&#12471;&#12515;&#12523;&#12466;&#12540;&#12512;&#12525;&#12464;&#35299;&#26512;&#22522;&#30436;&#12398;MongoDB&#27963;&#29992;&#20107;&#20363;
&#12477;&#12540;&#12471;&#12515;&#12523;&#12466;&#12540;&#12512;&#12525;&#12464;&#35299;&#26512;&#22522;&#30436;&#12398;MongoDB&#27963;&#29992;&#20107;&#20363;
&#30693;&#25945; &#26412;&#38291;
19 slides•4.9K views
Casual Compression on MongoDB by moai kids, has 46 slides with 11070 views.
Casual Compression on MongoDBCasual Compression on MongoDB
Casual Compression on MongoDB
moai kids
46 slides•11.1K views
&#22823;&#35215;&#27169;&#21270;&#12377;&#12427;&#12500;&#12464;&#12521;&#12452;&#12501;&#12434;&#25903;&#12360;&#12427;&#12452;&#12531;&#12501;&#12521; &#65374;MongoDB&#12392;Chef&#12395;&#12388;&#12356;&#12390;&#65374; (&#21069;&#32232;) by Akihiro Kuwano, has 44 slides with 16069 views.
&#22823;&#35215;&#27169;&#21270;&#12377;&#12427;&#12500;&#12464;&#12521;&#12452;&#12501;&#12434;&#25903;&#12360;&#12427;&#12452;&#12531;&#12501;&#12521; &#65374;MongoDB&#12392;Chef&#12395;&#12388;&#12356;&#12390;&#65374; (&#21069;&#32232;)&#22823;&#35215;&#27169;&#21270;&#12377;&#12427;&#12500;&#12464;&#12521;&#12452;&#12501;&#12434;&#25903;&#12360;&#12427;&#12452;&#12531;&#12501;&#12521; &#65374;MongoDB&#12392;Chef&#12395;&#12388;&#12356;&#12390;&#65374; (&#21069;&#32232;)
&#22823;&#35215;&#27169;&#21270;&#12377;&#12427;&#12500;&#12464;&#12521;&#12452;&#12501;&#12434;&#25903;&#12360;&#12427;&#12452;&#12531;&#12501;&#12521; &#65374;MongoDB&#12392;Chef&#12395;&#12388;&#12356;&#12390;&#65374; (&#21069;&#32232;)
Akihiro Kuwano
44 slides•16.1K views
MongoDBJP &#32013;&#28092;&#12418;&#12435;&#12372;&#31085;&#12426; by Hiroaki Kubota, has 47 slides with 1317 views.
MongoDBJP &#32013;&#28092;&#12418;&#12435;&#12372;&#31085;&#12426;MongoDBJP &#32013;&#28092;&#12418;&#12435;&#12372;&#31085;&#12426;
MongoDBJP &#32013;&#28092;&#12418;&#12435;&#12372;&#31085;&#12426;
Hiroaki Kubota
47 slides•1.3K views
Mongo db&#12434;&#30693;&#12429;&#12358; devlove&#38306;&#35199; by Ryuji Tamagawa, has 49 slides with 2512 views.
Mongo db&#12434;&#30693;&#12429;&#12358;   devlove&#38306;&#35199;Mongo db&#12434;&#30693;&#12429;&#12358;   devlove&#38306;&#35199;
Mongo db&#12434;&#30693;&#12429;&#12358; devlove&#38306;&#35199;
Ryuji Tamagawa
49 slides•2.5K views
&#27604;&#12408;&#12441;&#12390;&#12415;&#12424;&#12358; &#12522;&#12524;&#12540;&#12471;&#12519;&#12490;&#12523; vs &#12488;&#12441;&#12461;&#12517;&#12513;&#12531;&#12488;.pptx by MariMurotani, has 10 slides with 48 views.
&#27604;&#12408;&#12441;&#12390;&#12415;&#12424;&#12358; &#12522;&#12524;&#12540;&#12471;&#12519;&#12490;&#12523; vs &#12488;&#12441;&#12461;&#12517;&#12513;&#12531;&#12488;.pptx&#27604;&#12408;&#12441;&#12390;&#12415;&#12424;&#12358; &#12522;&#12524;&#12540;&#12471;&#12519;&#12490;&#12523; vs &#12488;&#12441;&#12461;&#12517;&#12513;&#12531;&#12488;.pptx
&#27604;&#12408;&#12441;&#12390;&#12415;&#12424;&#12358; &#12522;&#12524;&#12540;&#12471;&#12519;&#12490;&#12523; vs &#12488;&#12441;&#12461;&#12517;&#12513;&#12531;&#12488;.pptx
MariMurotani
10 slides•48 views
&#12477;&#12540;&#12471;&#12515;&#12523;&#12466;&#12540;&#12512;&#12525;&#12464;&#35299;&#26512;&#22522;&#30436;&#12398;MongoDB&#27963;&#29992;&#20107;&#20363; by &#30693;&#25945; &#26412;&#38291;, has 19 slides with 4864 views.
&#12477;&#12540;&#12471;&#12515;&#12523;&#12466;&#12540;&#12512;&#12525;&#12464;&#35299;&#26512;&#22522;&#30436;&#12398;MongoDB&#27963;&#29992;&#20107;&#20363;&#12477;&#12540;&#12471;&#12515;&#12523;&#12466;&#12540;&#12512;&#12525;&#12464;&#35299;&#26512;&#22522;&#30436;&#12398;MongoDB&#27963;&#29992;&#20107;&#20363;
&#12477;&#12540;&#12471;&#12515;&#12523;&#12466;&#12540;&#12512;&#12525;&#12464;&#35299;&#26512;&#22522;&#30436;&#12398;MongoDB&#27963;&#29992;&#20107;&#20363;
&#30693;&#25945; &#26412;&#38291;
19 slides•4.9K views

More from Hiroaki Kubota (8)

MongoDB&#12391;&#33258;&#28982;&#35328;&#35486;&#20966;&#29702; by Hiroaki Kubota, has 24 slides with 3229 views.
MongoDB&#12391;&#33258;&#28982;&#35328;&#35486;&#20966;&#29702;MongoDB&#12391;&#33258;&#28982;&#35328;&#35486;&#20966;&#29702;
MongoDB&#12391;&#33258;&#28982;&#35328;&#35486;&#20966;&#29702;
Hiroaki Kubota
24 slides•3.2K views
Why mincore() returns different value of stat ? by Hiroaki Kubota, has 25 slides with 1749 views.
Why mincore() returns different value of stat ?Why mincore() returns different value of stat ?
Why mincore() returns different value of stat ?
Hiroaki Kubota
25 slides•1.7K views
Mongo ghostsync and slaveDelay by Hiroaki Kubota, has 43 slides with 2440 views.
Mongo ghostsync and slaveDelayMongo ghostsync and slaveDelay
Mongo ghostsync and slaveDelay
Hiroaki Kubota
43 slides•2.4K views
Cockatoo by Hiroaki Kubota, has 84 slides with 2573 views.
CockatooCockatoo
Cockatoo
Hiroaki Kubota
84 slides•2.6K views
MongoTokyo by Hiroaki Kubota, has 145 slides with 3033 views.
MongoTokyoMongoTokyo
MongoTokyo
Hiroaki Kubota
145 slides•3K views
Albatross by Hiroaki Kubota, has 113 slides with 1702 views.
AlbatrossAlbatross
Albatross
Hiroaki Kubota
113 slides•1.7K views

DB tech showcase&#65306; &#22082;&#12398;MongoDB&#12381;&#12398;&#29992;&#36884;&#12399;&#65311;