SlideShare ist ein Scribd-Unternehmen logo
1 von 61
Downloaden Sie, um offline zu lesen
日本 OSS 推進フォーラム
クラウド技術部会

MongoDB
〜その性質と利用場面〜
2014 年 2 月 7 日(金)
株式会社ミライト情報システム
オープンソリューション技術本部

小笠原 徳彦

ogasawara.naruhiko@miraitsystems.jp
内容
自己紹介
NoSQL と MongoDB
MongoDB の性質
ドキュメント指向
性能とインデックス
レプリカセット
オートシャーディング

レプリカセットによる可用性デモ
MongoDB の生きるケース、難しいケース
日本OSS推進フォーラム クラウド技術部会

2/61
内容
自己紹介
NoSQL と MongoDB
MongoDB の性質
ドキュメント指向
性能とインデックス
レプリカセット
オートシャーディング

レプリカセットによる可用性デモ
MongoDB の生きるケース、難しいケース
日本OSS推進フォーラム クラウド技術部会

3/61
自己紹介
小笠原 徳彦
(株)ミライト情報システム
オープンソリューション技術本部
応用システム技術部 所属
MongoDB 日本ユーザー会 MongoDB JP メンバー
MongoDB University Certified Engineer

日本OSS推進フォーラム クラウド技術部会

4/61
ミライト情報システムについて
2012 年 7 月 1 日発足
ミライト・
ホールディングス

「ミライト」は Mirai + IT の
造語
IT と技術で作る未来の
通信、未来の暮らし。

企業スローガン
「 OPEN THE NEXT! 」
私たちは、オープンシス
テムでお客様の「次」を
拓きます

2012 年 10 月 1 日〜
ミライト・テクノロジーズ

2012 年 7 月 1 日〜

株式会社ミライト情報システム

日本OSS推進フォーラム クラウド技術部会

5/61
オープンソリューション技術本部
オープンスタンダード、オープンソースを活用して
低コストで高品位なソリューションを提供する

http://www.miraitsystems.jp/opensource/nosql.html
日本OSS推進フォーラム クラウド技術部会

6/61
内容
自己紹介
NoSQL と MongoDB
MongoDB の性質
ドキュメント指向
性能とインデックス
レプリカセット
オートシャーディング

レプリカセットによる可用性デモ
MongoDB の生きるケース、難しいケース
日本OSS推進フォーラム クラウド技術部会

7/61
RDBMS と NoSQL(1)
RDBMS (Relational Database Management System)
関係モデルに基づいたデータベース管理システム
SQL (Standard Query Language) による宣言的な操作
オプティマイザにより「どうデータを格納し」「どうデータを得
る」かは最適化されて高速に実行される

アトミックなデータ操作
データの一貫性保持が重要

日本OSS推進フォーラム クラウド技術部会

8/61
RDBMS と NoSQL(2)
しかしクラウド時代においては、データの一貫性保
持はコストが高い……こともある
Tokyo

Tokyo

App

US

App

DB

US

App

EU

DB

App

DB

App

DB

EU

App

一貫性保持は常に必要なのか?
例: EC サイトの在庫状況はリアルタイムでなくてもよい
決済時に一貫性が担保されていればよい

一貫性の完全な保持を諦めれば水平にスケールできる
日本OSS推進フォーラム クラウド技術部会

9/61
RDBMS と NoSQL(3)
クラウドに必要な要件を持つストレージエンジンを
RDBMS と使いわける
シンプルな機能
高速
スケーラブル

Not Only SQL = NoSQL (SQL に NO! ではない )
Key Value Store (KVS) Apache Cassandra, Tokyo Cabinet,
Rakuten ROMA, Redis, Riak
グラフ指向 DB

Neo4j, HyperGraphDB

列指向 DB

Apache HBase

ドキュメント指向 DB

CouchDB, MongoDB

日本OSS推進フォーラム クラウド技術部会

10/61
NoSQL の一つとしての MongoDB(1)
ドキュメント指向データベース
スケーラビリティ&パフォーマンス

バランスの良い NoSQL を目指す
memcached
key/value
store

MongoDB

RDBMS

機能の豊富さ
https://wiki.mongodb.com/pages/viewpage.action?pageId=20743144
日本OSS推進フォーラム クラウド技術部会

11/61
MongoDB の強み
ドキュメント指向

{

}

"_id" : ObjectId("524406662caf1cab1f000001"),
"title" : "MongoDB is fun!",
"body" : "I love MongoDB very much.",
"author" : "naruoga@example.com",
"created" : ISODate("2013-09-26T10:03:18.825Z"),
"comment" : [
{ "author" : "foo@example.com",
"content" : "I also love it!" }
]

多彩なクエリー
文字列としてのマッチ、範囲検索、正規表現など
論理演算で複数の条件の組み合わせも可
B-Tree インデックスによる検索・ソートも使える

ほぼオンメモリで動作するため非常に高速
日本OSS推進フォーラム クラウド技術部会

12/61
MongoDB の割り切り
トランザクションを持たない
複数の操作をくるんで、途中で失敗したらロールバック
……といった機能はない
一つ一つのデータ操作はアトミック

JOIN がない
複数のドキュメントを DB 側で結合はできない
アプリケーションで結合する必要があるがアトミックな操
作ではない

…… でも、なくても構わない状況は多いよね? と
いう割り切りがポイント
日本OSS推進フォーラム クラウド技術部会

13/61
MongoDB/NoSQL と RDBMS
NoSQL とは一般に「使い方にクセがある」「どこか
割り切ったことがある」「その代わりにとても得意な
ところがある」もの
速度

100

クエリーの種類

スケーラビリティ
50
RDBMS
MongoDB

0

トランザクション

ディスク使用量

メモリ使用量

このグラフは
例であり
実際の評価では
ありません

事前に「不得意なところが許容できるか」を判断で
きないなら、素直に RDBMS を使ったほうが良い
日本OSS推進フォーラム クラウド技術部会

14/61
内容
自己紹介
NoSQL と MongoDB
MongoDB の性質
ドキュメント指向
性能とインデックス
レプリカセット
オートシャーディング

レプリカセットによる可用性デモ
MongoDB の生きるケース、難しいケース
日本OSS推進フォーラム クラウド技術部会

15/61
内容
自己紹介
NoSQL と MongoDB
MongoDB の性質
ドキュメント指向
性能とインデックス
レプリカセット
オートシャーディング

レプリカセットによる可用性デモ
MongoDB の生きるケース、難しいケース
日本OSS推進フォーラム クラウド技術部会

16/61
MongoDB = ドキュメント指向
RDBMS: 関係(表)

Entries
ID

TITLE

1
...

BODY

もんごた
ん楽しい!

MongoDB いいです
ね!好きです!

...

...

MongoDB: ドキュメント
{

A_ID
1
...

CommentsLink
ID

ARTIC
LE_ID

ID

Users

COMM
ENT_ID

NAME

EMAIL

1

1

1

Naruhiko
Ogasawara

naruoga@exam
ple.com

2

1

2

2

Ichiro
Tanaka

tanaka.ichiro@e
xample.com

3

Taro
Yamada

taroy@example.
com

1

...

...

...

}

Comments
ID

CONTENT

A_ID

1

ぼくもお気に入り!
使い所難しいです
けどね。

↑JSON
(JavaScript Object Notation)

2

2

"_id" : ObjectId("52440666..."),
"title" : " もんごたん楽しい! ",
"body" : "MongoDB いいですね!好きです! ",
"author" : "Naruhiko Ogasawara",
"email" : "naruoga@example.com",
"comment" : [
{ "author" : "Ichiro Tanaka",
"email" : "tanaka.ichiro@example.com",
"content" : " ぼくもお気に入り! " },
{ "author" : "Taro Yamada",
"email" : "taroy@example.com",
"content" : " 使い所難しいですけどね。 " }
]

3

...

日本OSS推進フォーラム クラウド技術部会

...

...

17/61
DEMO: 文書挿入
mongo shell に接続して、 db test の collection foo
に適当な値を突っ込みます
$ mongo
MongoDB shell version: 2.4.6
connecting to: test
> use test
switched to db test
> db.foo.find()
> db.foo.insert({name: "Naruhiko Ogasawara",
email : "naruoga@example.com", city: "Sakura"})
> db.foo.find()
{ "_id" : ObjectId("52e20ebeb5b6beeb03b2074e"),
"name" : "Naruhiko Ogasawara", "email" : "naruoga@example.com",
"city" : "Sakura" }

日本OSS推進フォーラム クラウド技術部会

18/61
ドキュメント指向と動的スキーマ (1)
RDBMS: 表

{

各列の型は一致してい
る必要あり

MongoDB: ドキュメント
それぞれの文書の構造
は異なっていても構わ
ない
検索その他では存在す
る部分だけが対象

ドキュメントの集まりを
「コレクション」と呼ぶ
日本OSS推進フォーラム クラウド技術部会

}
{

}

"_id" : ObjectId("52440666..."),
"title" : " もんごたん楽しい! ",
"body" : "MongoDB いいですね!好きです! ",
"author" : "Naruhiko Ogasawara",
"email" : "naruoga@example.com",
"comment" : [
{ "author" : "Ichiro Tanaka",
"email" : "tanaka.ichiro@example.com",
"content" : " ぼくもお気に入り! " },
{ "author" : "Taro Yamada",
"email" : "taroy@example.com",
"content" : " 使い所難しいですけどね。 " },
]

"_id" : ObjectId("52440666..."),
"title" : " もんごたん楽しい! ",
"body" : "MongoDB いいですね!好きです! ",
"author" : "Naruhiko Ogasawara",
"email" : "naruoga@example.com",
"created" : ISODate("2013-09-26T10:03:18.825Z"),

19/61
ドキュメント指向と動的スキーマ (2)
アプリケーションの設計の段階で、スキーマ定義を
厳密に考えないでも大丈夫
すぐに開発に取り掛かれる
カジュアルにスキーマ定義を変更できる
スピード感のあるアプリ開発

パフォーマンスを得るにはスキーマに対する十分な
理解が必要なので「スキーマレス」は厳密には NO
作りながらスキーマを定義していく
動的スキーマ

日本OSS推進フォーラム クラウド技術部会

20/61
スキーマ定義の例:ブログ
blog.example.com
もんごたん楽しい!

by Naruhiko Ogasawara
MongoDB いいですね!好きです!
2014/01/23 13:13
comment (2)

ラーメン食べたい

by Taro Yamada
なんだかラーメンな気分。どこかで食べ
ていこうかな。
2014/01/22 20:13
comment (2)

blog.example.com/permalink

Click

もんごたん楽しい!

by Naruhiko Ogasawara
MongoDB いいですね!好きです!
2014/01/23 13:13

新着
10 件

ぼくもお気に入り!
by Ichiro Tanaka
使い所難しいですけどね。
by Taro Yamada

コメ
ント

...

大雑把な仕様
記事が持つのはタイトル、内容、著者、記事が書かれた
日時、コメント、 permalink
コメントが持つのは内容、著者
日本OSS推進フォーラム クラウド技術部会

21/61
ブログのスキーマ例 (1)
RDBMS 的にはこう

Collection: authors
{

Collection: posts
{

}

"_id" : ObjectId("52440666..."),
"title" : " もんごたん楽しい! ",
"body" : "MongoDB いいですね!好きです! ",
"author_id" : ObjectId("52e1ee36..."),
"created_at” :
ISODate("2014-01-24T06:13:54.240Z")
"permalink" : "mongo_tan_is_fun",
"comment" : [
ObjectId("52e1f310..."),
ObjectId("52e1f310...")
]

}
{

}
{

}

"_id" : ObjectId("52e1ee36..."),
"author" : "Naruhiko Ogasawara",
"email" : "naruoga@example.com",
"_id" : ObjectId("52e1f2d3..."),
"author" : "Ichiro Tanaka",
"email" : "ichiro.tanaka@example.com",
"_id" : ObjectId("52e1f2e6..."),
"author" : "Taro Yamada",
"email" : "taroy@example.com",

Collection: comments
{

}
{

}

"_id" : ObjectId("52e1f310..."),
"author_id" : ObjectId("52e1f2d3..."),
"content" : " ぼくもお気に入り! ",
"_id" : ObjectId("52e1f310..."),
"author_id" : ObjectId("52e1f2e6..."),
"content" : " 使い所難しいですけどね。 ",

日本OSS推進フォーラム クラウド技術部会

正規化のためにコレク
正規化のためにコレク
ションを分割
ションを分割
●
ちょっと煩雑
●
ちょっと煩雑
● アプリケーション JOIN
● アプリケーション JOIN
が必要になる
が必要になる
22/61
ブログのスキーマ例 (2)
投稿とコメントは似た項目が多いのでまとめられる
Collection: posts
{

}
{

}
{

}

"_id" : ObjectId("52440666..."),
"title" : " もんごたん楽しい! ",
"body" : "MongoDB いいですね!好きです! ",
"author_id" : ObjectId("52e1ee36..."),
"created_at” :
ISODate("2014-01-24T06:13:54.240Z")
"permalink" : "mongo_tan_is_fun",
"comment" : [
ObjectId("52e1f310..."),
ObjectId("52e1f310...")
]
"_id" : ObjectId("52e1f310..."),
"author_id" : ObjectId("52e1f2d3..."),
"content" : " ぼくもお気に入り! ",
"_id" : ObjectId("52e1f310..."),
"author_id" : ObjectId("52e1f2e6..."),
"content" : " 使い所難しいですけどね。 ",

日本OSS推進フォーラム クラウド技術部会

Collection: authors
{

}
{

}
{

}

"_id" : ObjectId("52e1ee36..."),
"author" : "Naruhiko Ogasawara",
"email" : "naruoga@example.com",
"_id" : ObjectId("52e1f2d3..."),
"author" : "Ichiro Tanaka",
"email" : "ichiro.tanaka@example.com",
"_id" : ObjectId("52e1f2e6..."),
"author" : "Taro Yamada",
"email" : "taroy@example.com",

動的スキーマの利点を用いる
動的スキーマの利点を用いる
●
扱うコレクションが一個減ってスッ
●
扱うコレクションが一個減ってスッ
キリした
キリした
●
アプリケーション JOIN が必要にな
●
アプリケーション JOIN が必要にな
る点は変わらない
る点は変わらない
23/61
ブログのスキーマ例 (3)
いっそのこと全部埋め込んでしまおう!
Collection: posts
{

}

"_id" : ObjectId("52440666..."),
"title" : " もんごたん楽しい! ",
"body" : "MongoDB いいですね!好きです! ",
"author" : "Naruhiko Ogasawara",
"email" : "naruoga@example.com",
"created_at” :
ISODate("2014-01-24T06:13:54.240Z")
"permalink" : "mongo_tan_is_fun",
"comment" : [
{
"author" : "Ichiro Tanaka",
"email" : "ichiro.tanaka@example.com",
"content" : " ぼくもお気に入り! ",
},
{
"author" : "Taro Yamada",
"email" : "taroy@example.com",
"content" : " 使い所難しいですけどね。 ",
},
]

日本OSS推進フォーラム クラウド技術部会

JSON においては配列の要素内には
JSON においては配列の要素内には
任意の JSON オブジェクトをとれるの
任意の JSON オブジェクトをとれるの
で、この中にコメントの情報を直接埋
で、この中にコメントの情報を直接埋
め込んでしまう( embedded ))
め込んでしまう( embedded
MongoDB の強力な文書操作機能
MongoDB の強力な文書操作機能
により、配列内部にデータを押し込
により、配列内部にデータを押し込
んでも柔軟に操作可能!
んでも柔軟に操作可能!
● あれ、 author 正規化しなくていい
● あれ、 author 正規化しなくていい
の?
の?
●
考えてみれば、ユーザー名とかパ
●
考えてみれば、ユーザー名とかパ
スワードのたぐいはブログアプリ側
スワードのたぐいはブログアプリ側
でセッションで管理しているはずな
でセッションで管理しているはずな
ので、 DB 側でユニーク性を保証す
ので、 DB 側でユニーク性を保証す
る必要はない!と割り切れる
る必要はない!と割り切れる
●
迷ったら埋め込み文書、が
●
迷ったら埋め込み文書、が
MongoDB 的スキーマ設計
MongoDB 的スキーマ設計
●

●

24/61
内容
自己紹介
NoSQL と MongoDB
MongoDB の性質
ドキュメント指向
性能とインデックス
レプリカセット
オートシャーディング

レプリカセットによる可用性デモ
MongoDB の生きるケース、難しいケース
日本OSS推進フォーラム クラウド技術部会

25/61
MongoDB の性能の秘密

●

MongoDB はファイルシステムに展開されているコレ
クションを mmap している
P. mem
V. mem
Storage

ローカリティがある READ アクセスについてはオンメモリ
でアクセスするので高速
要は「ディスクにスワップアウトできるオンメモリ DB 」

逆に言うと全データアクセスをするような処理は
page in/out が多発するので性能が出ない
日本OSS推進フォーラム クラウド技術部会

26/61
データアクセスとインデックス
MongoDB のデータアクセスはとても素朴
頭から順に舐めているだけ(線形探索)=検索 O(n)
ついでにいうとドキュメントの順序は保証されない
Doc1

Doc2

Doc3

…

DocN

update Doc2 (サイズ拡大)
Doc1

(隙間)

Doc3

…

DocN

Doc2

インデックス
あるキーに着目した B-Tree インデックス=検索 O(log n)
検索・ソートに利用可
日本OSS推進フォーラム クラウド技術部会

27/61
インデックス詳細
インデックスはコレクション自体と同じファイル
どんどん張っているとデータサイズが肥大化する

インデックスを後から張るとデータ量に比例した時
間がかかる(当然)
昇順・降順でインデックスは張れる
複数キーのインデックスも利用可能
db.posts.ensureIndex({created_at:-1, author:1})
部分的に使うことも可能

キーの存在はドキュメントによるが、それでもイン
デックスは張れる
日本OSS推進フォーラム クラウド技術部会

28/61
インデックス _id の節約
先ほどのブログのスキーマを少し改良
Collection: posts
{

}

"_id" : "mongo_tan_is_fun",
"title" : " もんごたん楽しい! ",
"body" : "MongoDB いいですね!好きです! ",
"author" : "Naruhiko Ogasawara",
"email" : "naruoga@example.com",
"created_at” :
ISODate("2014-01-24T06:13:54.240Z")
"permalink" : "mongo_tan_is_fun",
"comment" : [
{
"author" : "Ichiro Tanaka",
"email" : "ichiro.tanaka@example.com",
"content" : " ぼくもお気に入り! ",
},
{
"author" : "Taro Yamada",
"email" : "taroy@example.com",
"content" : " 使い所難しいですけどね。 ",
},
]

日本OSS推進フォーラム クラウド技術部会

_id は必ずインデックスが張られるの
_id は必ずインデックスが張られるの
で、メモリ・ストレージを余計に消費
で、メモリ・ストレージを余計に消費
する
する
●
文書作成時に指定しない場合は
●
文書作成時に指定しない場合は
自動的に生成される( 12 バイトの
自動的に生成される( 12 バイトの
バイト列)
バイト列)
●
インデックスを張ったほうが良く、一
●
インデックスを張ったほうが良く、一
意性が保証される値が別にあるな
意性が保証される値が別にあるな
ら、それを _id にするとよい
ら、それを _id にするとよい
● ブログにおいては permalink は当
● ブログにおいては permalink は当
然リンクとしてユニークなものだと
然リンクとしてユニークなものだと
いうアプリ要件があるから、これを
いうアプリ要件があるから、これを
_id にすると便利
_id にすると便利

29/61
内容
自己紹介
NoSQL と MongoDB
MongoDB の性質
ドキュメント指向
性能とインデックス
レプリカセット
オートシャーディング

レプリカセットによる可用性デモ
MongoDB の生きるケース、難しいケース
日本OSS推進フォーラム クラウド技術部会

30/61
レプリカセット基礎 (1)
レプリカセット:簡単な仕組みで高可用性を実現
最低 3 台のノードをセットにして動かす
アプリケーションに応答するプライマリノードは自動的に
決定される(明示的なマスターノードは存在しない)
Replication

Secondary 1

Heartbeat
Driver

Application

Read
Write

Secondary 2

Primary
Replication

日本OSS推進フォーラム クラウド技術部会

31/61
レプリカセット基礎 (2)
プライマリノードがダウンした場合
残ったノード間で投票を行い次のプライマリを決める
この場合は「どこまでレプリケーションが終わっている
か」で決まる
Secondary 1

ぼくは 5 分前の
処理まで
レプリカもらったよ

Heartbeat
Driver

Application

Primary

Secondary 2
ぼくは 10 分前
までだなぁ

日本OSS推進フォーラム クラウド技術部会

32/61
レプリカセット基礎 (3)
選ばれたノードが次のプライマリになる
この時点でノードがダウンすると、 1 台では投票ができ
ないためレプリカセットがダウンする
1/3 冗長
Primary
EAD
R
E
RIT
W

Driver

Application

日本OSS推進フォーラム クラウド技術部会

Heartbeat

Primary

じゃあぼくが
プライマリーやるね
Re
pl
ica
tio
n

Secondary 2

33/61
レプリカセット基礎 (4)
ダウンしていたノードが復活するとセカンダリノード
に復帰
ただしダウンタイムが長いと自動復帰は不可
動いているセカンダリノードからリストアするのが無難
Primary
EAD
R
E
RIT
W

Driver

Application

日本OSS推進フォーラム クラウド技術部会

Secondary 2

Heartbeat

Re
pl
ica
tio
n

Secondary 2

34/61
レプリカセット基礎 (5)
Heartbeat:
ノード間の死活監視

OPLOG:
プライマリノードの操作をセカンダリにレプリケーション
するために、操作を保存するコレクション
有限サイズのコレクション( Capped collection )
セカンダリが長時間停止していると溢れてレプリカセットが機
能不全を起こす

日本OSS推進フォーラム クラウド技術部会

35/61
レプリカセット応用 (1)
Arbiter: 投票権のみ持ち、データを持たないノード
システム構成のコストを下げることが可能
ただし冗長性は下がる(トレードオフ)

Primary

Secondary

日本OSS推進フォーラム クラウド技術部会

Arbiter

36/61
レプリカセット応用 (2)
Delayed Node: オペレーションミス対策
レプリケーションを意図的に遅らせたノード
オペミスしてデータを失ったときにすぐに Delayed Node
から巻き戻せば復帰可能
Primary

Secondary

日本OSS推進フォーラム クラウド技術部会

Secondary

30 分遅れ

Delayed
Secondary

slaveDelay=1800
priority=0
hidden=true

37/61
レプリカセット応用 (3)
セカンダリノードに対するアクセス
Write Concern
データの書き込みがどこまで波及
するまで待つかを設定する値

P

j:1
w:2
S

S

基本は即座に戻る

セカンダリノードの数も指定可

Read Prefence

RY

日本OSS推進フォーラム クラウド技術部会

A
ND
CO
SE

セカンダリノードからの読み込みを
許可してプライマリの負荷を下げる
レプリケーション前の値を掴んでも
大丈夫なときに用いる

PRIMARY

S

P

S

38/61
レプリカセット応用 (4)
Disaster Recovery (災害復旧)対策
データセンタをまたいでレプリカセットを構築することで、
DC がまるごと死んだとしてもサービス提供可能
Datacenter 1

Datacenter 2

Primary

Secondary

Secondary

Secondary

Secondary

日本OSS推進フォーラム クラウド技術部会

Arbiter

39/61
レプリカセットの魅力
仕組み自体はとてもシンプル
高可用性を容易に実現できる
高いシステム構成の自由度
DR 対策やバックアップ対策などにも対応可能
水平展開、 DC をまたいだ運用が容易なクラウド時
代にふさわしい仕組み

日本OSS推進フォーラム クラウド技術部会

40/61
内容
自己紹介
NoSQL と MongoDB
MongoDB の性質
ドキュメント指向
性能とインデックス
レプリカセット
オートシャーディング

レプリカセットによる可用性デモ
MongoDB の生きるケース、難しいケース
日本OSS推進フォーラム クラウド技術部会

41/61
シャーディングとは
sharding: 一般的なデータベース用語
スケールアップ

DB 負荷を分散させるためにスケールアウトさせること
DBMS
DBMS
DBMS

DBMS
DBMS DBMS

DBMS DBMS

DBMS DBMS

DBMS DBMS

スケールアウト

RDBMS の場合、同時にアクセスする必要のあるデータ
は一つのサーバで処理するように注意深く配置する
非常に難しい
日本OSS推進フォーラム クラウド技術部会

42/61
MongoDB のオートシャーディング
MongoDB はスケールアウト(=シャーディング)で
パフォーマンスを稼ぐ戦略
シャーディングを簡単に行う仕組みが組み込まれている
=オートシャーディング

日本OSS推進フォーラム クラウド技術部会

43/61
オートシャーディングの仕組み (1)
シャードキー
オートシャーディングの
動作を規定するキー(複
合可)
シャードキーの範囲に
よってコレクションを塊
(チャンク)に分割する

Shard key: username
-∞

akio

rakutaro

naruhiko

< 64MB

< 64MB

+∞
< 64MB

Shard 1
A

Chunk

B

C

チャンク
サイズは 64MB (標準)
DB の操作によりサイズ
超過した場合は分割さ
れる
日本OSS推進フォーラム クラウド技術部会

44/61
オートシャーディングの仕組み (1)
シャードキー
オートシャーディングの
動作を規定するキー(複
合可)
シャードキーの範囲に
よってコレクションを塊
(チャンク)に分割する

Shard key: username
-∞

akio

rakutaro

naruhiko

< 64MB

< 64MB

+∞
< 64MB

Shard 1
A

Chunk

B

C

db.foo.insert({username: "osamu", ....})

チャンク
サイズは 64MB (標準)
DB の操作によりサイズ
超過した場合は分割さ
れる
日本OSS推進フォーラム クラウド技術部会

45/61
オートシャーディングの仕組み (1)
シャードキー
オートシャーディングの
動作を規定するキー(複
合可)
シャードキーの範囲に
よってコレクションを塊
(チャンク)に分割する

チャンク
サイズは 64MB (標準)
DB の操作によりサイズ
超過した場合は分割さ
れる
日本OSS推進フォーラム クラウド技術部会

Shard key: username
-∞

akio

rakutaro

naruhiko

< 64MB

< 64MB

+∞
< 64MB

Shard 1
A

Chunk

B

C

db.foo.insert({username: "osamu", ....})
Shard key: username
-∞

akio

naruhiko osamu
< 64MB

< 64MB

rakutaro
< 64MB

+∞
< 64MB

Shard 1
A
C

B
D

B から
分割

46/61
オートシャーディングの仕組み (2)
リバランシング
各シャードにおいて、最大のチャンク数を持つシャードと
最小のチャンク数を持つシャードの差が規定値を超えた
場合、バランスを取るためチャンクが移動する
Shard 1 Shard 2
A

新規にシャードを追加した場合も同様にリバランシング
が起きる
日本OSS推進フォーラム クラウド技術部会

47/61
オートシャーディングの仕組み (2)
リバランシング
各シャードにおいて、最大のチャンク数を持つシャードと
最小のチャンク数を持つシャードの差が規定値を超えた
場合、バランスを取るためチャンクが移動する
Shard 1 Shard 2

Shard 1 Shard 2

A

A
B

新規にシャードを追加した場合も同様にリバランシング
が起きる
日本OSS推進フォーラム クラウド技術部会

48/61
オートシャーディングの仕組み (2)
リバランシング
各シャードにおいて、最大のチャンク数を持つシャードと
最小のチャンク数を持つシャードの差が規定値を超えた
場合、バランスを取るためチャンクが移動する
Shard 1 Shard 2

Shard 1 Shard 2

A

Shard 1 Shard 2

A

A

B

B
C

新規にシャードを追加した場合も同様にリバランシング
が起きる
日本OSS推進フォーラム クラウド技術部会

49/61
オートシャーディングの仕組み (2)
リバランシング
各シャードにおいて、最大のチャンク数を持つシャードと
最小のチャンク数を持つシャードの差が規定値を超えた
場合、バランスを取るためチャンクが移動する
Shard 1 Shard 2

Shard 1 Shard 2

A

Shard 1 Shard 2

Shard 1 Shard 2

A

A

A

B

B

B

C

C

C

新規にシャードを追加した場合も同様にリバランシング
が起きる
日本OSS推進フォーラム クラウド技術部会

50/61
シャードキーに求められる性質
適度なランダムネス
ある程度チャンク分割が進んだあとは、シャード内にまん
べんなくチャンクが分配されるようになること
シャードキーの -∞ 〜 +∞ まで概ね均等にデータが配
置されること

適度なローカリティ
あるひとまとまりの処理が数個のチャンク内で完結する
シャーディングでは mmap がチャンク単位になるため、
うまくいくと各シャードでオンメモリで処理が可能になる

日本OSS推進フォーラム クラウド技術部会

51/61
オートシャーディングは万能か?
シャードキーをうまく選定できるか?が肝
シャードキーの選定ミスはパフォーマンスの劣化(と、場
合によっては OPLOG 溢れによるデータ喪失)を招く
シャードキーは一度決めたら変更は不可能なので、パイ
ロットプロジェクトなどで慎重にデータの性質を見極め
る必要がある
最初から超大規模なデータを扱うことだけが分かって
おり、データの性質が不明確な案件だとリスクがある

日本OSS推進フォーラム クラウド技術部会

52/61
内容
自己紹介
NoSQL と MongoDB
MongoDB の性質
ドキュメント指向
性能とインデックス
レプリカセット
オートシャーディング

レプリカセットによる可用性デモ
MongoDB の生きるケース、難しいケース
日本OSS推進フォーラム クラウド技術部会

53/61
デモの内容
AWS に構築したレプリカセットに Ruby スクリプトか
らデータを投入
AWS 上でプライマリノード A をダウンさせる
自動フェイルオーバで別のノード B がプライマリに
昇格し、書き込みが継続することを確認
A を再度起動する
A がセカンダリノードとして復旧することを確認

日本OSS推進フォーラム クラウド技術部会

54/61
内容
自己紹介
NoSQL と MongoDB
MongoDB の性質
ドキュメント指向
性能とインデックス
レプリカセット
オートシャーディング

レプリカセットによる可用性デモ
MongoDB の生きるケース、難しいケース
日本OSS推進フォーラム クラウド技術部会

55/61
MongoDB が生きるケース
アプリケーションを作りながらスキーマ設計やサイ
ジング設計を行うことができるケース
ダウンタイムレスの可用性が求められ、そのための
投資が許容されるケース
パブリッククラウドなどで、水平スケールが容易に可
能なケース

アプリケーションサイドに
自由度を与えたいケース
日本OSS推進フォーラム クラウド技術部会

56/61
MongoDB が難しいケース
一番最初にシステム構築、予算割り当てを明確に
求められるケース
データの総量だけ分かっており、データの構造その
他について情報が一切ないケース
処理能力に応じた水平スケールが難しいケース

事前見積もり・構築・運用について
制限が強いケース
日本OSS推進フォーラム クラウド技術部会

57/61
MongoDB が難しいケース
一番最初にシステム構築、予算割り当てを明確に
求められるケース
データの総量だけ分かっており、データの構造その
他について情報が一切ないケース
処理能力に応じた水平スケールが難しいケース

事前見積もり・構築・運用について
制限が強いケース

言い換えれば、
SIer 的案件では
MongoDB は難しい
ところもある

日本OSS推進フォーラム クラウド技術部会

58/61
まとめ
MongoDB はクラウド時代に必要な種々の要素を備
えた、 RDBMS を補完する優れた DB である
ただし嵌まりパターンに使った場合
これは MongoDB に限らず NoSQL に共通

アプリケーションを開発しながらスキーマをデザイン
していく動的スキーマ
シンプルな仕組みで高可用性を実現し、なおかつさ
まざまなバリエーションを作れるレプリカセット
同じマシンを並べてパフォーマンスを稼ぐ水平ス
ケーリングを支援するオートシャーディング
日本OSS推進フォーラム クラウド技術部会

59/61
参考図書
MongoDB イン・アクション
http://www.amazon.co.jp/dp/4873115906
Kyle Banker ( 著 ), Sky 株式会社 玉川 竜司 ( 翻訳 )
オライリー・ジャパン

データベースエンジニア養成読本 [DB を自由自在
に活用するための知識とノウハウ満載 !]
http://www.amazon.co.jp/dp/4774158062
データベースエンジニア養成読本編集部
技術評論社

日本OSS推進フォーラム クラウド技術部会

60/61
著作権とライセンス・免責事項
本スライドの著作者は(株)ミライト情報システムと
いたします。
本スライドはクリエイティブ コモンズ 表示 継承 4.0
国際ライセンスのもとに提供されています。
http://creativecommons.org/licenses/by-sa/4.0/deed.ja

本スライドの内容は小笠原徳彦の個人的見解によ
るものであり、(株)ミライト情報システムその他所
属組織などの見解を代表するものではありません。

日本OSS推進フォーラム クラウド技術部会

61/61

Weitere ähnliche Inhalte

Was ist angesagt?

君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?Teppei Sato
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
MongoDB Configパラメータ解説
MongoDB Configパラメータ解説MongoDB Configパラメータ解説
MongoDB Configパラメータ解説Shoken Fujisaki
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~Miki Shimogai
 
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRecruit Technologies
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersSeiya Mizuno
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...NTT DATA Technology & Innovation
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
今さらだけどMySQLとライセンス
今さらだけどMySQLとライセンス今さらだけどMySQLとライセンス
今さらだけどMySQLとライセンスHidenori Ishii
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンKentaro Yoshida
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 

Was ist angesagt? (20)

君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
MongoDB Configパラメータ解説
MongoDB Configパラメータ解説MongoDB Configパラメータ解説
MongoDB Configパラメータ解説
 
MongoDBの監視
MongoDBの監視MongoDBの監視
MongoDBの監視
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
 
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
今さらだけどMySQLとライセンス
今さらだけどMySQLとライセンス今さらだけどMySQLとライセンス
今さらだけどMySQLとライセンス
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 

Ähnlich wie MongoDB〜その性質と利用場面〜

MongoDB very basic (Japanese) / MongoDB基礎の基礎
MongoDB very basic (Japanese) / MongoDB基礎の基礎MongoDB very basic (Japanese) / MongoDB基礎の基礎
MongoDB very basic (Japanese) / MongoDB基礎の基礎Naruhiko Ogasawara
 
Do postgres-dream-of-graph-database
Do postgres-dream-of-graph-databaseDo postgres-dream-of-graph-database
Do postgres-dream-of-graph-databaseToshi Harada
 
ARC-009_RDB 技術者のための NoSQL ガイド
ARC-009_RDB 技術者のための NoSQL ガイドARC-009_RDB 技術者のための NoSQL ガイド
ARC-009_RDB 技術者のための NoSQL ガイドdecode2016
 
Xcode4 project template (slide)
Xcode4 project template (slide)Xcode4 project template (slide)
Xcode4 project template (slide)Wataru Kimura
 
Osc2012.dbに行ってきました
Osc2012.dbに行ってきましたOsc2012.dbに行ってきました
Osc2012.dbに行ってきましたMasaru Kobashigawa
 
Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Base DDD(ドメイン駆動設計) 参考文献を巡る旅Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Base DDD(ドメイン駆動設計) 参考文献を巡る旅Takuya Kawabe
 
Osc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-databaseOsc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-databaseToshi Harada
 
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"Kentaro Yoshida
 
A-Framで始めるWebAR (Blenderハンズオンの続きver.)
A-Framで始めるWebAR (Blenderハンズオンの続きver.)A-Framで始めるWebAR (Blenderハンズオンの続きver.)
A-Framで始めるWebAR (Blenderハンズオンの続きver.)Takashi Yoshinaga
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計Tadayoshi Sato
 
Terraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as CodeTerraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as CodeTakahisa Iwamoto
 
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DOWebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DOKohei Noda
 
DynamoDBのテーブル設計手法.pptx
DynamoDBのテーブル設計手法.pptxDynamoDBのテーブル設計手法.pptx
DynamoDBのテーブル設計手法.pptxTetsuya Wada
 
Firefox Add-on SDK 入門
Firefox Add-on SDK 入門Firefox Add-on SDK 入門
Firefox Add-on SDK 入門Shoot Morii
 
とある制作会社の目次索引作成技法
とある制作会社の目次索引作成技法とある制作会社の目次索引作成技法
とある制作会社の目次索引作成技法Kenshi Muto
 
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Hiro Yoshioka
 

Ähnlich wie MongoDB〜その性質と利用場面〜 (20)

MongoDB very basic (Japanese) / MongoDB基礎の基礎
MongoDB very basic (Japanese) / MongoDB基礎の基礎MongoDB very basic (Japanese) / MongoDB基礎の基礎
MongoDB very basic (Japanese) / MongoDB基礎の基礎
 
Do postgres-dream-of-graph-database
Do postgres-dream-of-graph-databaseDo postgres-dream-of-graph-database
Do postgres-dream-of-graph-database
 
WiredTigerを詳しく説明
WiredTigerを詳しく説明WiredTigerを詳しく説明
WiredTigerを詳しく説明
 
ARC-009_RDB 技術者のための NoSQL ガイド
ARC-009_RDB 技術者のための NoSQL ガイドARC-009_RDB 技術者のための NoSQL ガイド
ARC-009_RDB 技術者のための NoSQL ガイド
 
Xcode4 project template (slide)
Xcode4 project template (slide)Xcode4 project template (slide)
Xcode4 project template (slide)
 
はじめてのMongoDB
はじめてのMongoDBはじめてのMongoDB
はじめてのMongoDB
 
Osc2012.dbに行ってきました
Osc2012.dbに行ってきましたOsc2012.dbに行ってきました
Osc2012.dbに行ってきました
 
Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Base DDD(ドメイン駆動設計) 参考文献を巡る旅Base DDD(ドメイン駆動設計) 参考文献を巡る旅
Base DDD(ドメイン駆動設計) 参考文献を巡る旅
 
Osc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-databaseOsc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-database
 
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
 
MongoDB勉強会資料
MongoDB勉強会資料MongoDB勉強会資料
MongoDB勉強会資料
 
A-Framで始めるWebAR (Blenderハンズオンの続きver.)
A-Framで始めるWebAR (Blenderハンズオンの続きver.)A-Framで始めるWebAR (Blenderハンズオンの続きver.)
A-Framで始めるWebAR (Blenderハンズオンの続きver.)
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
 
Terraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as CodeTerraformで始めるInfrastructure as Code
Terraformで始めるInfrastructure as Code
 
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DOWebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
 
DynamoDBのテーブル設計手法.pptx
DynamoDBのテーブル設計手法.pptxDynamoDBのテーブル設計手法.pptx
DynamoDBのテーブル設計手法.pptx
 
Firefox Add-on SDK 入門
Firefox Add-on SDK 入門Firefox Add-on SDK 入門
Firefox Add-on SDK 入門
 
JSDoc ToolKit
JSDoc ToolKitJSDoc ToolKit
JSDoc ToolKit
 
とある制作会社の目次索引作成技法
とある制作会社の目次索引作成技法とある制作会社の目次索引作成技法
とある制作会社の目次索引作成技法
 
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
 

Mehr von Naruhiko Ogasawara

さらばデスクトップ?モバイル・クラウド時代のLibreOfficeの挑戦/LibreOffice current status, or the chall...
さらばデスクトップ?モバイル・クラウド時代のLibreOfficeの挑戦/LibreOffice current status, or the chall...さらばデスクトップ?モバイル・クラウド時代のLibreOfficeの挑戦/LibreOffice current status, or the chall...
さらばデスクトップ?モバイル・クラウド時代のLibreOfficeの挑戦/LibreOffice current status, or the chall...Naruhiko Ogasawara
 
最新のデスクトップアプリを使おう:Snap, Flatpak, AppImage
最新のデスクトップアプリを使おう:Snap, Flatpak, AppImage最新のデスクトップアプリを使おう:Snap, Flatpak, AppImage
最新のデスクトップアプリを使おう:Snap, Flatpak, AppImageNaruhiko Ogasawara
 
LibreOffice Asia Conference 2019 Tokyo; what we had achieved, and what's next
LibreOffice Asia Conference 2019 Tokyo; what we had achieved, and what's nextLibreOffice Asia Conference 2019 Tokyo; what we had achieved, and what's next
LibreOffice Asia Conference 2019 Tokyo; what we had achieved, and what's nextNaruhiko Ogasawara
 
The Document Foundationについて / About The Document Foundation
The Document Foundationについて / About The Document FoundationThe Document Foundationについて / About The Document Foundation
The Document Foundationについて / About The Document FoundationNaruhiko Ogasawara
 
TDFと寄付、メンバーシップ、認定制度 / TDF and donation, membership and certification
TDFと寄付、メンバーシップ、認定制度 / TDF and donation, membership and certificationTDFと寄付、メンバーシップ、認定制度 / TDF and donation, membership and certification
TDFと寄付、メンバーシップ、認定制度 / TDF and donation, membership and certificationNaruhiko Ogasawara
 
Building a bridge between Japanese LibreOffice community and the world
Building a bridge between Japanese LibreOffice community and the worldBuilding a bridge between Japanese LibreOffice community and the world
Building a bridge between Japanese LibreOffice community and the worldNaruhiko Ogasawara
 
Happy Software Freedom Day! (Koedo Linux Users Group, Tokyo, Japan)
Happy Software Freedom Day! (Koedo Linux Users Group, Tokyo, Japan)Happy Software Freedom Day! (Koedo Linux Users Group, Tokyo, Japan)
Happy Software Freedom Day! (Koedo Linux Users Group, Tokyo, Japan)Naruhiko Ogasawara
 
宣伝:SeleniumConf Tokyo 2019やりますよ!
宣伝:SeleniumConf Tokyo 2019やりますよ!宣伝:SeleniumConf Tokyo 2019やりますよ!
宣伝:SeleniumConf Tokyo 2019やりますよ!Naruhiko Ogasawara
 
Using latest LibreOffice on openSUSE Leap 15 - by modern packaging systems
Using latest LibreOffice on openSUSE Leap 15 - by modern packaging systemsUsing latest LibreOffice on openSUSE Leap 15 - by modern packaging systems
Using latest LibreOffice on openSUSE Leap 15 - by modern packaging systemsNaruhiko Ogasawara
 
The Document Foundationについて
The Document FoundationについてThe Document Foundationについて
The Document FoundationについてNaruhiko Ogasawara
 
LibreOffice: The Office Suite with Mixing Bowl Culture
LibreOffice: The Office Suite with Mixing Bowl CultureLibreOffice: The Office Suite with Mixing Bowl Culture
LibreOffice: The Office Suite with Mixing Bowl CultureNaruhiko Ogasawara
 
Make It Better Together: コミュニティを主体としたLibreOffice翻訳 / : Community-centered Lib...
Make It Better Together: コミュニティを主体としたLibreOffice翻訳 / : Community-centered Lib...Make It Better Together: コミュニティを主体としたLibreOffice翻訳 / : Community-centered Lib...
Make It Better Together: コミュニティを主体としたLibreOffice翻訳 / : Community-centered Lib...Naruhiko Ogasawara
 
Hospital days in czech / チェコで入院した話
Hospital days in czech / チェコで入院した話Hospital days in czech / チェコで入院した話
Hospital days in czech / チェコで入院した話Naruhiko Ogasawara
 
openSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE users
openSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE usersopenSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE users
openSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE usersNaruhiko Ogasawara
 
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...Naruhiko Ogasawara
 
LibreOfficeの最新動向 / LibreOffice current status
LibreOfficeの最新動向 / LibreOffice current statusLibreOfficeの最新動向 / LibreOffice current status
LibreOfficeの最新動向 / LibreOffice current statusNaruhiko Ogasawara
 
Vertical Writing: typical use-cases and current status in LibreOffice
Vertical Writing: typical use-cases and current status in LibreOfficeVertical Writing: typical use-cases and current status in LibreOffice
Vertical Writing: typical use-cases and current status in LibreOfficeNaruhiko Ogasawara
 
LibreOffice, the free office productive suite and it's status of accessibilit...
LibreOffice, the free office productive suite and it's status of accessibilit...LibreOffice, the free office productive suite and it's status of accessibilit...
LibreOffice, the free office productive suite and it's status of accessibilit...Naruhiko Ogasawara
 

Mehr von Naruhiko Ogasawara (20)

さらばデスクトップ?モバイル・クラウド時代のLibreOfficeの挑戦/LibreOffice current status, or the chall...
さらばデスクトップ?モバイル・クラウド時代のLibreOfficeの挑戦/LibreOffice current status, or the chall...さらばデスクトップ?モバイル・クラウド時代のLibreOfficeの挑戦/LibreOffice current status, or the chall...
さらばデスクトップ?モバイル・クラウド時代のLibreOfficeの挑戦/LibreOffice current status, or the chall...
 
最新のデスクトップアプリを使おう:Snap, Flatpak, AppImage
最新のデスクトップアプリを使おう:Snap, Flatpak, AppImage最新のデスクトップアプリを使おう:Snap, Flatpak, AppImage
最新のデスクトップアプリを使おう:Snap, Flatpak, AppImage
 
LibreOffice Asia Conference 2019 Tokyo; what we had achieved, and what's next
LibreOffice Asia Conference 2019 Tokyo; what we had achieved, and what's nextLibreOffice Asia Conference 2019 Tokyo; what we had achieved, and what's next
LibreOffice Asia Conference 2019 Tokyo; what we had achieved, and what's next
 
小江戸らぐBBQ 2019
小江戸らぐBBQ 2019小江戸らぐBBQ 2019
小江戸らぐBBQ 2019
 
The Document Foundationについて / About The Document Foundation
The Document Foundationについて / About The Document FoundationThe Document Foundationについて / About The Document Foundation
The Document Foundationについて / About The Document Foundation
 
TDFと寄付、メンバーシップ、認定制度 / TDF and donation, membership and certification
TDFと寄付、メンバーシップ、認定制度 / TDF and donation, membership and certificationTDFと寄付、メンバーシップ、認定制度 / TDF and donation, membership and certification
TDFと寄付、メンバーシップ、認定制度 / TDF and donation, membership and certification
 
Building a bridge between Japanese LibreOffice community and the world
Building a bridge between Japanese LibreOffice community and the worldBuilding a bridge between Japanese LibreOffice community and the world
Building a bridge between Japanese LibreOffice community and the world
 
Happy Software Freedom Day! (Koedo Linux Users Group, Tokyo, Japan)
Happy Software Freedom Day! (Koedo Linux Users Group, Tokyo, Japan)Happy Software Freedom Day! (Koedo Linux Users Group, Tokyo, Japan)
Happy Software Freedom Day! (Koedo Linux Users Group, Tokyo, Japan)
 
宣伝:SeleniumConf Tokyo 2019やりますよ!
宣伝:SeleniumConf Tokyo 2019やりますよ!宣伝:SeleniumConf Tokyo 2019やりますよ!
宣伝:SeleniumConf Tokyo 2019やりますよ!
 
Using latest LibreOffice on openSUSE Leap 15 - by modern packaging systems
Using latest LibreOffice on openSUSE Leap 15 - by modern packaging systemsUsing latest LibreOffice on openSUSE Leap 15 - by modern packaging systems
Using latest LibreOffice on openSUSE Leap 15 - by modern packaging systems
 
The Document Foundationについて
The Document FoundationについてThe Document Foundationについて
The Document Foundationについて
 
告知 ー OSnuC Kawagoe 2018
告知 ー OSnuC Kawagoe 2018告知 ー OSnuC Kawagoe 2018
告知 ー OSnuC Kawagoe 2018
 
LibreOffice: The Office Suite with Mixing Bowl Culture
LibreOffice: The Office Suite with Mixing Bowl CultureLibreOffice: The Office Suite with Mixing Bowl Culture
LibreOffice: The Office Suite with Mixing Bowl Culture
 
Make It Better Together: コミュニティを主体としたLibreOffice翻訳 / : Community-centered Lib...
Make It Better Together: コミュニティを主体としたLibreOffice翻訳 / : Community-centered Lib...Make It Better Together: コミュニティを主体としたLibreOffice翻訳 / : Community-centered Lib...
Make It Better Together: コミュニティを主体としたLibreOffice翻訳 / : Community-centered Lib...
 
Hospital days in czech / チェコで入院した話
Hospital days in czech / チェコで入院した話Hospital days in czech / チェコで入院した話
Hospital days in czech / チェコで入院した話
 
openSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE users
openSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE usersopenSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE users
openSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE users
 
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
 
LibreOfficeの最新動向 / LibreOffice current status
LibreOfficeの最新動向 / LibreOffice current statusLibreOfficeの最新動向 / LibreOffice current status
LibreOfficeの最新動向 / LibreOffice current status
 
Vertical Writing: typical use-cases and current status in LibreOffice
Vertical Writing: typical use-cases and current status in LibreOfficeVertical Writing: typical use-cases and current status in LibreOffice
Vertical Writing: typical use-cases and current status in LibreOffice
 
LibreOffice, the free office productive suite and it's status of accessibilit...
LibreOffice, the free office productive suite and it's status of accessibilit...LibreOffice, the free office productive suite and it's status of accessibilit...
LibreOffice, the free office productive suite and it's status of accessibilit...
 

Kürzlich hochgeladen

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Kürzlich hochgeladen (11)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

MongoDB〜その性質と利用場面〜