Recommended
PPTX
PPTX
PDF
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
PDF
PPT
PDF
PDF
Db tech showcase2015 how to replicate between clusters
PDF
PPTX
PPTX
PDF
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
PDF
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
PDF
PPTX
Node.js×mongo dbで3年間サービス運用してみた話
PDF
PDF
PPTX
日本語:Mongo dbに於けるシャーディングについて
PDF
PPTX
PPT
PPTX
PPTX
ODP
PPTX
MongoDB on EC2 #mongodbcasual
PDF
MongoDB very basic (Japanese) / MongoDB基礎の基礎
PPTX
MongoDB World 2014に行ってきた!
PDF
PDF
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
PDF
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
PPTX
比べてみよう リレーショナル vs ドキュメント.pptx
More Related Content
PPTX
PPTX
PDF
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
PDF
PPT
PDF
PDF
Db tech showcase2015 how to replicate between clusters
PDF
What's hot
PPTX
PPTX
PDF
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
PDF
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
PDF
PPTX
Node.js×mongo dbで3年間サービス運用してみた話
PDF
PDF
PPTX
日本語:Mongo dbに於けるシャーディングについて
PDF
PPTX
PPT
PPTX
PPTX
ODP
PPTX
MongoDB on EC2 #mongodbcasual
PDF
MongoDB very basic (Japanese) / MongoDB基礎の基礎
PPTX
MongoDB World 2014に行ってきた!
PDF
PDF
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Similar to DB tech showcase: 噂のMongoDBその用途は?
PDF
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
PPTX
比べてみよう リレーショナル vs ドキュメント.pptx
PDF
PDF
ソーシャルゲームにおけるAWS/MongoDB利用事例
PDF
データベース勉強会 In 広島 mongodb
ODP
PDF
PDF
PDF
PPT
mongoDB: OSC Tokyo2010 spring
PDF
PPT
PDF
PDF
PPTX
DOC
DOC
PDF
PPTX
MongoDB: システム可用性を拡張するインデクス戦略
PDF
More from Hiroaki Kubota
PDF
PPT
PPT
PPT
PDF
PDF
PDF
Mongo ghostsync and slaveDelay
PDF
Mongo ghostsync and slaveDelay (Japanease)
PDF
Why mincore() returns different value of stat ?
Recently uploaded
PDF
基礎から学ぶ PostgreSQL の性能監視 (PostgreSQL Conference Japan 2025 発表資料)
PDF
安価な ロジック・アナライザを アナライズ(?),Analyze report of some cheap logic analyzers
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):東京大学情報基盤センター テーマ1/2/3「Society5.0の実現を目指す『計算・データ・学習...
PDF
visionOS TC「新しいマイホームで過ごすApple Vision Proとの新生活」
PDF
第25回FA設備技術勉強会_自宅で勉強するROS・フィジカルAIアイテム.pdf
PPTX
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.