SlideShare a Scribd company logo
第12回 中国地方DB勉強会 in 出雲
DbmFsのご紹介
Fenrir.inc
岩瀬 高博
@okuyamaoo
ta.okuyamaoo@gmail.com
自己紹介
・岩瀬 高博(@okuyamaoo)
・フェンリル (株) 所属
・仕事と趣味
仕事>Web系開発全般のプロマネ
趣味>OSS開発・車の草レース
本日のお話
• DbmFsとは?
• 仕組みと構造
• データ構造
• 機能のご紹介
• デモ(時間のあるかぎり)
DbmFsとは?
DbmFsとは?
DbmFsとは?
データベースをマウントするファイルシステム
DbmFsとは?
データベースをマウントするファイルシステム
?
データベースがファイルシステムをマウントするのではなく??
DbmFsとは?
そもそもファイルシステムとは?
DbmFsとは?
コンピュータのリソースを操作するための、
オペレーティングシステム (OS) が持つ機能の一つ。
Wikipedia(ファイルシステム)より
Wikipedia(ファイルシステム)より
DbmFsとは?
身近なファイルシステムはローカルに搭載する
HDDやSSDなどにデータを保存している
DbmFsとは?
DbmFsは保存先をデータベースにしたファイルシステム
DbmFs データベース
仕組みと構造
仕組みと構造
ファイルシステムを実装する
仕組みと構造
ファイルシステムを実装するにはカーネルへの
深い知識と
高い技術力が必要
仕組みと構造
Linux用のファイルシステム実装用のFuseを利用
Wikipediaより
仕組みと構造
ファイルシステムへの操作は
Fuseを経由しDbmFsへ送られる
Wikipediaより
DbmFs
データベース
DbmFsは受け取った操作
命令をSQLへ変換しDBへ
仕組みと構造
・実装言語
Java + Fuse Java binding (Fuse-J)
・対応環境
CentOSとRedHatの6系にてテスト
基本的にFuseとJavaが稼働すれば問題なし
・対応データベース
MySQL5.6系とPostgreSQL8.4系にてテスト
・リポジトリ – ライセンス
Version – 0.0.7
GitHub (https://github.com/okuyamaoo/DbmFs)
Apache License, Version 2.0
データの扱い
データの扱い
DbmFsはどのようにデータベースを
ファイルシステムとして扱うか?
データベースの構造は?
データの扱い
データベースの構造は?
user_id mail zip addr tel
テーブル
データの扱い
データベースの構造は?
user_id mail zip addr tel
1 aaaa@bb.cc 111-
2222
XXX県 11-22-3333
2 bbbb@bb.cc 333-
4444
YYY市 00-11-2222
3 cccc@bb.cc 555-
6666
ZZZ町 55-44-6666
4 dddd@bb.cc 777-
8888
LLLL県 66-77-8888
レコード
テーブル
データの扱い
ファイルシステムの構造は?
フォルダ
データの扱い
ファイルシステムの構造は?
ファイル
データの扱い
それぞれをマッピング
テーブルをフォルダへ
データの扱い
それぞれをマッピング
レコードをファイルへ
データの扱い
ファイルの中身はJsonフォーマットでレコードを表現
[ {
"user_id" : 1,
"mail" : "aaa@bb.cc",
"zip" : "111-2222",
"addr" : "XXX県",
"tel" : "11-22-3333",
"__DBMFS_TABLE_META_INFOMATION" : "column_name:user_id,~~~~"
} ]
データの扱い
機能について
参照系
機能
・参照系機能
全てのテーブル、レコードをファイルシステム上で
扱えるためLinuxのコマンドで扱うことが可能
・ファイル名での検索
ファイル名はテーブルの主キーの連結文字列
主キーで検索するのであれば find コマンドで可能
[root@okuyamaoo fusemnt]# find ./user -name [1-2].json
./user/1.json
./user/2.json
機能
・参照系機能
全てのテーブル、レコードをファイルシステム上で
扱えるためLinuxのコマンドで扱うことが可能
・ファイル内容の検索
ファイルの内容はレコーのJson表記なので
grepコマンドを使えば列指定で検索可能
[root@okuyamaoo fusemnt]# grep '"addr"' -r ./user/ | grep 'XXX’
./user/1.json: "addr" : "XXX県",
機能
・参照系機能
・もちろんテキストエディタ等でも開けます
[root@okuyamaoo fusemnt]# vi user/1.json
[ {
"user_id" : 1,
"mail" : "aaa@bb.cc",
"zip" : "111-2222",
"addr" : "XXX県",
"tel" : "11-22-3333",
"__DBMFS_TABLE_META_INFOMATION" :
"column_name:user_id,type_name:INT,column_size:10,null_type:NO,seq_type:NO,javaTypeName:java.lang.I
nteger____column_name:mail,type_name:VARCHAR,column_size:255,null_type:YES,seq_type:NO,javaTypeN
ame:java.lang.String____column_name:zip,type_name:VARCHAR,column_size:10,null_type:YES,seq_type:N
O,javaTypeName:java.lang.String____column_name:addr,type_name:VARCHAR,column_size:255,null_type:Y
ES,seq_type:NO,javaTypeName:java.lang.String____column_name:tel,type_name:VARCHAR,column_size:20,
null_type:YES,seq_type:NO,javaTypeName:java.lang.String____pkey_columns_name:user_id"
} ]
機能
・0.0.7で追加した参照機能
機能
・0.0.7で追加した参照機能
> 任意の参照クエリの結果をマウントする機能
> Readonlyでのマウント
機能
・0.0.7で追加した参照機能
> 任意の参照クエリの結果をマウントする機能
> Readonlyでのマウント
機能
・0.0.6まではテーブルをマウントするだけだった
DbmFs
機能
・0.0.7からはSELECTクエリをマウント可能に
SELECT ・・・・
FROM ・・・・INNDER JOIN ・・・
WHERE ・・・・
SELECTクエリ
クエリ結果がフォルダに
更新系
機能
・更新系機能
テキストエディタなどによるファイル更新
[root@okuyamaoo fusemnt]# vi user/1.json
[ {
"user_id" : 1,
"mail" : "aaa@bb.cc",
"zip" : "111-2222",
"addr" : "XXX県",
"tel" : "11-22-3333",
"__DBMFS_TABLE_META_INFOMATION" :
"column_name:user_id,type_name:INT,column_size:10,null_type:NO,seq_type:NO,javaTypeName:java.lang.I
nteger____column_name:mail,type_name:VARCHAR,column_size:255,null_type:YES,seq_type:NO,javaTypeN
ame:java.lang.String____column_name:zip,type_name:VARCHAR,column_size:10,null_type:YES,seq_type:N
O,javaTypeName:java.lang.String____column_name:addr,type_name:VARCHAR,column_size:255,null_type:Y
ES,seq_type:NO,javaTypeName:java.lang.String____column_name:tel,type_name:VARCHAR,column_size:20,
null_type:YES,seq_type:NO,javaTypeName:java.lang.String____pkey_columns_name:user_id"
} ]
機能
・更新系機能
ファイルコピーによるデータ複製
[root@okuyamaoo fusemnt]# cp user/1.json /var/tmp
ファイルペーストによるデータ復元、更新
[root@okuyamaoo fusemnt]# cp /var/tmp/1.json user/
ファイルペーストによるテーブル複製
[root@okuyamaoo fusemnt]# cp /var/tmp/1.json user_tmp/
機能
・更新系機能
別DB間でのコピーによるデータ移行
mount mount
MySQL PostgreSQL
機能
テーブルを異なるDBへ移行可能
テーブル定義なども全て移行されます
MySQL <-> PostgreSQL間も可能です
MySQL PostgreSQL
mount mount
デモ
まとめ
・DbmFsはファイルシステムをインターフェースとした
DB操作用のソフトウェア
・開発時にSQLに精通していない方によるDB操作の補助
・データバックアップやデータ移行の簡略化
・現在パスフレーズからクエリを動的に変更しデータを
返却する仕組みを開発中
20151205 中国地方db勉強会 dbm_fs
20151205 中国地方db勉強会 dbm_fs
20151205 中国地方db勉強会 dbm_fs
20151205 中国地方db勉強会 dbm_fs
20151205 中国地方db勉強会 dbm_fs
20151205 中国地方db勉強会 dbm_fs
20151205 中国地方db勉強会 dbm_fs
Thank you

More Related Content

PDF
便利なHerokuと active recordの 速度改善tips
PDF
DDDハンズオン
PDF
すぐ始めれるクラウド
PDF
ActiveRecord::Enumのススメ
PDF
Web エンジニアが postgre sql を選ぶ 3 つの理由
PDF
Osh2014
PDF
実務で役立つデータベースの活用法
PDF
中国地方Db勉強会
便利なHerokuと active recordの 速度改善tips
DDDハンズオン
すぐ始めれるクラウド
ActiveRecord::Enumのススメ
Web エンジニアが postgre sql を選ぶ 3 つの理由
Osh2014
実務で役立つデータベースの活用法
中国地方Db勉強会

What's hot (20)

PDF
PostgreSQLの冗長化について
PDF
今すぐ使えるクラウドとPostgreSQL
PDF
職場で使用しているOSSの開発に参加してみた!
PDF
利益はデータベースの中にあった!
PDF
サーバーのおしごと
PDF
Postgre sqlから見るnosql
PDF
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PDF
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
PDF
レガシーな環境からモダンへの挑戦
PPT
大ヒットソーシャルアプリの裏側
PDF
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
PDF
株式会社インフィニットループ紹介資料
PDF
データベース技術の羅針盤
PDF
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
PDF
地方における勉強会事情
PDF
ソーシャルゲーム開発における運用とそのツール
PDF
知って得するWebで便利なpostgre sqlの3つの機能
PDF
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
PDF
Oratopostgres-hiroshima
PDF
I pv6 studygroup20121103
PostgreSQLの冗長化について
今すぐ使えるクラウドとPostgreSQL
職場で使用しているOSSの開発に参加してみた!
利益はデータベースの中にあった!
サーバーのおしごと
Postgre sqlから見るnosql
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
レガシーな環境からモダンへの挑戦
大ヒットソーシャルアプリの裏側
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
株式会社インフィニットループ紹介資料
データベース技術の羅針盤
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
地方における勉強会事情
ソーシャルゲーム開発における運用とそのツール
知って得するWebで便利なpostgre sqlの3つの機能
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Oratopostgres-hiroshima
I pv6 studygroup20121103
Ad

Viewers also liked (20)

PPTX
オープンデータ超入門
PPT
意外と知らないFilemakerの世界
PDF
Chugoku db 17th-lt-kly
PDF
Chugoku db 17th-postgresql-9.6
PDF
Chugokudb study-20150131
PDF
Webで役立つRDBの使い方
PDF
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
PPTX
Viewを使って開発を楽にする話
PPTX
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
PDF
中国地方Db勉強会
PDF
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
PDF
InnoDB Table Compression
PPT
意外と知らないFilemakerの世界
PDF
MyNA JPUG study 20160220-postgresql-json-datatype
PDF
Amazon Redshiftを使ったデータ分析
PDF
20150131 ChugokuDB-Shimane-MySQL
PDF
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
PDF
Chugokudb18_2
PDF
20150920 中国地方db勉強会
PDF
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
オープンデータ超入門
意外と知らないFilemakerの世界
Chugoku db 17th-lt-kly
Chugoku db 17th-postgresql-9.6
Chugokudb study-20150131
Webで役立つRDBの使い方
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
Viewを使って開発を楽にする話
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
中国地方Db勉強会
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
InnoDB Table Compression
意外と知らないFilemakerの世界
MyNA JPUG study 20160220-postgresql-json-datatype
Amazon Redshiftを使ったデータ分析
20150131 ChugokuDB-Shimane-MySQL
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
Chugokudb18_2
20150920 中国地方db勉強会
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
Ad

More from Takahiro Iwase (14)

PPTX
Re port aws_reinvent_161213_slideshare
PDF
20140418 info talkセミナー資料
PDF
20131113_mysql_on_分散fsセミナー資料
PDF
20121205 nosql(okuyama fs)セミナー資料
PDF
20120913 nosql@hikarie(okuyama fuse)
PDF
20120405 setsunaセミナー
PDF
20120317 IT系勉強会 in 神戸
PPTX
Okuyama説明資料 20120119 ss
PDF
Kvs okuyama-20110818
PDF
20110708 dist_study okuyama
PDF
20110519 okuyama tokyo_linuxstudy
PDF
20110517 okuyama ソーシャルメディアが育てた技術勉強会
PDF
okuyama_20101101_nosqlafternoon
PDF
2010/07/09 osc kansai-kvsokuyama
Re port aws_reinvent_161213_slideshare
20140418 info talkセミナー資料
20131113_mysql_on_分散fsセミナー資料
20121205 nosql(okuyama fs)セミナー資料
20120913 nosql@hikarie(okuyama fuse)
20120405 setsunaセミナー
20120317 IT系勉強会 in 神戸
Okuyama説明資料 20120119 ss
Kvs okuyama-20110818
20110708 dist_study okuyama
20110519 okuyama tokyo_linuxstudy
20110517 okuyama ソーシャルメディアが育てた技術勉強会
okuyama_20101101_nosqlafternoon
2010/07/09 osc kansai-kvsokuyama

20151205 中国地方db勉強会 dbm_fs