Recommended
PDF
Db tech showcase2015 how to replicate between clusters
PDF
PPT
PPTX
PDF
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
PPTX
PDF
PDF
PDF
PPTX
MongoDB World 2014に行ってきた!
PDF
PPTX
PDF
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
PPTX
PDF
MongoDB very basic (Japanese) / MongoDB基礎の基礎
PPTX
PPTX
PPT
PPTX
日本語:Mongo dbに於けるシャーディングについて
PPTX
Node.js×mongo dbで3年間サービス運用してみた話
PDF
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
PDF
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
PDF
PPTX
ODP
PDF
PPTX
MongoDB on EC2 #mongodbcasual
PDF
PPT
PDF
More Related Content
PDF
Db tech showcase2015 how to replicate between clusters
PDF
PPT
PPTX
PDF
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
PPTX
PDF
PDF
What's hot
PDF
PPTX
MongoDB World 2014に行ってきた!
PDF
PPTX
PDF
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
PPTX
PDF
MongoDB very basic (Japanese) / MongoDB基礎の基礎
PPTX
PPTX
PPT
PPTX
日本語:Mongo dbに於けるシャーディングについて
PPTX
Node.js×mongo dbで3年間サービス運用してみた話
PDF
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
PDF
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
PDF
PPTX
ODP
PDF
PPTX
MongoDB on EC2 #mongodbcasual
PDF
Similar to DB tech showcase: 噂のMongoDBその用途は?
PPT
PDF
PDF
PPTX
ODP
PDF
PDF
PDF
PDF
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
PDF
データベース勉強会 In 広島 mongodb
PDF
PDF
ソーシャルゲームにおけるAWS/MongoDB利用事例
PDF
PPTX
MongoDB: システム可用性を拡張するインデクス戦略
DOC
DOC
PDF
PPT
mongoDB: OSC Tokyo2010 spring
PPTX
比べてみよう リレーショナル vs ドキュメント.pptx
PDF
More from Hiroaki Kubota
PDF
PDF
PDF
Why mincore() returns different value of stat ?
PDF
Mongo ghostsync and slaveDelay (Japanease)
PDF
Mongo ghostsync and slaveDelay
PDF
PPT
PPT
PPT
DB tech showcase: 噂のMongoDBその用途は? 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 13. 15. 16. 17. 18. 19. 20. 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 値段 <= 200;
値段が重複管理で筋が悪い。。
21. MongoDBのIndex
商品名
タグ
値段
ボールペン
日用品, 筆記用具
198
包丁
日用品, 刃物, キッチン
2980
バナナ
食料品, 果物
348
ほうれん草
食料品, 野菜
98
牛乳
食料品,
148
商品投入
db.商品.save({
'商品名' : 'ボールペン',
'タグ': ['日用品', '筆記用具'],
'値段':198 }
);
:
:
食料品で200以下の商品を取得
インデックス
■MongoDB
db.商品.ensureIndex({
'タグ':1, '値段':1
});
データ形式、Index共に
クエリー
完全にサポート!
db.商品.find({
タグ構造にもってこい!!
'タグ':'食料品',
'値段': { $lte : 200 }
});
22. 23. MongoDBのIndex
商品名
タグ
値段
ボールペン
日用品, 筆記用具
198
包丁
日用品, 刃物, キッチン
2980
バナナ
食料品, 果物
348
ほうれん草
食料品, 野菜
98
牛乳
食料品,
148
食料品で果物の商品
■RDBMS
SQLでの表現は困難
self join する?
クエリー(2タグ限定版)
SELECT
*
FROM
タグ a
INNER JOIN
タグ b
ON
a.商品id = b.商品id
AND
a.タグ名 != b.タグ名
INNER JOIN 商品 c
ON
a.商品id = c.id
WHERE
a.タグ名 = '食料品'
AND
b.タグ名 = '果物'
GROUP BY
a.商品id;
24. 25. 26. 27. MongoDBのスループット
計測条件
・3 core 3GB memory
・構文解析込み(SQL, JS)
・lo経由通信 (localhost)
int(11)
・1レコード、4kb程度 id int(11) PRI
value0
value1 int(11)
・1,000,000 レコード value2 int(11)
value3 varchar(50)
value4 varchar(50)
= 4GB
value5 varchar(50)
value6 varchar(50)
value7 varchar(255)
・11 column
value8 int(11)
value9 text
・MySQLはInnoDB
28. 29. MongoDBのスループット
Range fetch (10,000件 x 100)
SELECT
・MySQL
: 202 sec
*
FROM
・MongoDB : 3.7 sec
mytbl
WHERE
id BETWEEN 0 AND 9999;
Range count (10,000件 x 100)
・MySQL
: 37 sec
SELECT
COUNT(*)
・MongoDB : 0.4 sec
FROM
mytbl
WHERE
id BETWEEN 0 AND 9999;
30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 簡易CAS
GET
data1 = db.myData.findOne({
_id : 'FOO'
});
PUT
db.myData.update({
_id: data1._id,
cas: data1.cas
},{
$inc : { cas : 1 },
$set { field1 : 'updated' }
});
CASの実装は簡単
・update時に常にcas値を1つ増加させる。
・update時のクエリにドキュメントのcas値を使えば
衝突した際にはcas値が合わずupdateが失敗する
-53 -
54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74.