狠狠撸

狠狠撸Share a Scribd company logo
Filesystem via MySQL
T
omoya KABE@DeNA

2014/02/20 Web若手の会#7@CROOZ
自己紹介
Operation Engineer
Social Game Servers
2年目@DeNA
500+ servers
Web若手の会 皆勤
おことわり

本発表は発表者の組織を代表するものではあ
りません
制限時間にはおさまらないと思います
今回の発表ネタ
ネタ候補
HTTP監視のNagios Plugin
Perl HTTPモジュールのtimeout
unicorn+Server::Starter
…ちょっと古いので新しいのを作成
今回の発表
DBをbackendにもつ
?lesystemの実装
どうしてこうなった
ネタに困った自分
大学の后辈から
何に使うのか知らないが

とりあえず作ってみる
どうせ碌なことに使わないんだろうけど
仕様を决める
仕様詳細
DBのBLOBカラムをファイルの中身とする
テーブル名やカラム名はマウント時指定
面倒なのでreadonly
面倒なのでディレクトリ構造なし
MySQLでテストする
つかいかた
dbfs [OPTS] mountpoint
OPTS
—dsn
—user
—password
—table
—?lename-column
[—?lesize-column]
—content-column
デモ
動けばいいでしょ?
つくりかた/必要になったもの
大したことないシンプル
Client
Fuse
libmysqlclient (devel)
Perl
Fuse
DBI
DBD::mysql
Server
MySQL
実装
簡潔!
!

$ wc -l dbfs Dbfs.pm
101 dbfs
108 Dbfs.pm
209 total

含pod
実装が小さな理由
DSN指定を引数に丸投げした
手抜き
最小限機能しか実装しない
実装したAPI
getattr (stat)
getdir (opendir, readdir)
read (open, read, close)
ユースケース

画像をBLOBで管理していくのは運用として
キツいのでは
使用時の注意
別に?lesystemのせいではないけど
BLOBのサイズ
TINYBLOB - 255 bytes
BLOB - 65535 bytes
MEDIUMBLOB - 16,777,215 bytes (2^24 - 1)
LONGBLOB - 4G bytes (2^32 – 1)
以上
質疑は懇親会で!

More Related Content

Filesystem via MySQL